sql - 计算列分组依据

标签 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怎么写?

最佳答案

尽管您似乎没有显示所有表格,但我只能假设每个学生还有另一个实际入学表格

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

我对您的“姓名”列的解释是学生的姓名,而不是类(class)实际教师的姓名,因此我的子选择/加入。否则,与其他人一样,只需使用 COUNT(*) 作为第三列即可。

关于sql - 计算列分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698108/

相关文章:

mysql - 不显示拥有多个实例的用户的平均值

sql - 更改要计算的列 SQL SERVER

php - 无法根据时间戳从一组消息中获取最后一条消息,其中名称作为查询字符串传递

c# - 将 Null 值插入到 SQL 表中

sql - T-SQL 中的 Split 函数等效吗?

sql - 使用 COUNT 的多重选择语句

php - 单表还是双表 - 性能更好?

sql - Prestosql 将 UTC 时间戳转换为本地?

mysql - SugarCRM 7 SugarQuery() 连接语句与自定义模块

c# - 使用 C# 从 DBMS_OUTPUT.GET_LINES() 获取输出