我有如下的sql:
select a.dept, a.name
from students a
group by dept, name
order by dept, name
Run Code Online (Sandbox Code Playgroud)
得到结果:
dept name
-----+---------
CS | Aarthi
CS | Hansan
EE | S.F
EE | Nikke2
Run Code Online (Sandbox Code Playgroud)
我想总结每个部门的学生人数如下:
dept name count
-----+-----------+------
CS | Aarthi | 2
CS | Hansan | 2
EE | S.F | 2
EE | Nikke2 | 2
Math | Joel | 1
Run Code Online (Sandbox Code Playgroud)
我该怎么写sql?
DRa*_*app 18
虽然看起来你没有显示所有表格,但我只能假设每个学生还有另一张实际入学表格
select a.Dept, count(*) as TotalStudents
from students a
group by a.Dept
Run Code Online (Sandbox Code Playgroud)
如果你想要与每个学生相关的每个部门的总数(这没有意义),你可能必须这样做......
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
Run Code Online (Sandbox Code Playgroud)
我对你的"名字"栏的解释是学生的名字,而不是班级的实际讲师,因此我的子选择/加入.否则,就像其他人一样,只需使用COUNT(*)作为第三列即可.
select a.dept, a.name,
(SELECT count(*)
FROM students
WHERE dept = a.dept)
from students a
group by dept, name
order by dept, name
Run Code Online (Sandbox Code Playgroud)
这是一个有点可疑的查询,因为您获得了部门计数的重复副本.获取学生列表更加清晰,部门计算为单独的结果.当然,出于另一种方式可能有实际的理由,所以这不是绝对的规则.
| 归档时间: |
|
| 查看次数: |
25127 次 |
| 最近记录: |