SQL:用count求group by分组的个数

1、求每一分组内的个数

  • 查询选修了全部课程的学生姓名
    SQL:用count求group by分组的个数_第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
    	)
    );
    

【SQL】查询选修了全部课程的学生姓名

2、求分组的个数

select count(*) from (select count(*) num,sid from person group by sid )

你可能感兴趣的:(MySQL,sql,数据库,mysql)