sql server实验8 单表查询
1、① 查询平均成绩大于60 分的同学的学号和平均成绩(思路按学号分组计算学生的平均成绩,用having子句筛选出平均成绩大于60的学生);
select sno as 学号,avg(score) AS 平均成绩
from sc
GROUP BY SNO
HAVING AVG(SCORE)>60

2、① 查询姓“刘”的老师的个数
select count(*) as 姓刘教师个数
from teacher
where tname like '刘%'

3、① 查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
select cno as 课程ID,max(score) as 最高分,min(score) as 最低分
from sc
group by cno

4、① 按各科平均成绩从低到高和及格率的百分数从高到低顺序,效果如下(思路:可以通过case when..then..else..end统计人数)):
select cno as 课程ID,avg(score) as 平均成绩,sum(case when score>60 then 1 else 0 end)*100/count(*) as '及格率%'
from sc
group by cno
order by avg(score) desc

5、① 查询每门课程被选修的学生数
select cno,count(*) as 选课人数
from sc
group by cno

6、① 查询男生、女生人数
方法一:
select sum(case when ssex='男' then 1 else 0 end) as 男生总人数,sum(case when ssex='女' then 1 else 0 end) as 女生总人数
from student

7、方法二:
select ssex,count(*) as 人数
from student
group by ssex
