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 )

版权声明:本文为qq_35091353原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。