首页 > 解决方案 > 使用多个但相同的聚合函数

问题描述

我正在尝试使用两个相同的聚合函数是 SQL Server,我在其中使用COUNT(A)某些条件和COUNT(A)另一种条件。

例如我想统计所有参加课程 ABC 的学生,第二次统计我想统计所有成绩为 A 并且参加过同一课程 ABC 的学生。

但是结果COUNT将在同一张表上但在不同的列上,是否可以这样做以及如何实现它。谢谢。

在此处输入图像描述

在此处输入图像描述

我想要结果表

在此处输入图像描述

标签: sqlsql-serveraggregate-functions

解决方案


利用conditional aggregation

select name, count(*) as all_student,
       count(case when grade='A' then 1 end) as cnt_A,
       count(case when grade='B' then 1 end) as cnt_B
from course_table c inner join student_table s on c.name=s.course
group by name

推荐阅读