小编典典

计数列分组依据

sql

我有如下的SQL:

select a.dept, a.name
  from students a
 group by dept, name
 order by dept, name

并得到结果:

dept   name
-----+---------
CS   | Aarthi
CS   | Hansan
EE   | S.F
EE   | Nikke2

我想总结每个部门的学生人数,如下所示:

dept   name        count
-----+-----------+------  
CS   | Aarthi    |  2
CS   | Hansan    |  2
EE   | S.F       |  2
EE   | Nikke2    |  2
Math | Joel      |  1

我该如何编写sql?


阅读 196

收藏
2021-03-23

共1个答案

小编典典

尽管您似乎并未显示所有表格,但我只能假设还有每位学生的实际入学表格

select a.Dept, count(*) as TotalStudents
  from students a
  group by a.Dept

如果您想要与每个学生相关联的每个部门的总数(这没有意义),则可能必须这样做…

select a.Dept, a.Name, b.TotalStudents
    from students a,
        ( select Dept, count(*) TotalStudents
             from students
             group by Dept ) b
    where a.Dept = b.Dept

我对“姓名”列的解释是学生的姓名,而不是班级实际讲师的姓名,因此,我进行子选择/加入。否则,就像其他人一样,只需要使用COUNT(*)作为第三列即可。

2021-03-23