1、求每一分组内的个数
-
查询选修了全部课程的学生姓名
思路
- 查询一个学生的姓名,该学生选修课的门数等于所有课程的门数
逆推:查询一个学生的姓名,姓名怎么来? - 通过Student的学号得到,学号怎么得到?
- 通过在SC表中Sno分组判断该学生的选修的课程门数是否等于所有课程的门数得到,所有课程门数如何得到?
- 通过在Course表中COUNT(*)得到
SELECT Sname FROM Student WHERE Sno in ( SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) = ( /*该学生的选修的课程门数 = 所有课程的门数*/ SELECT COUNT(*) /*所有课程的门数*/ FROM Course ) );
- 查询一个学生的姓名,该学生选修课的门数等于所有课程的门数
2、求分组的个数
select count(*) from (select count(*) num,sid from person group by sid )