Sql 通过两次返回第一列值进行分组
我有如下数据:Sql 通过两次返回第一列值进行分组,sql,Sql,我有如下数据: ACC311 Female 3 ACC311 Female 1 ACC311 Female 4 ACC311 Male 4 ACC501 Male 4 ACC501 Male 4 ACC501 Male 4 ACC501 Male 4 . . . 现在我使用下面的查询来获得结果 Select distinct coursecode, gender, Count(CQ) as CQ from Table1 group by Co
ACC311 Female 3
ACC311 Female 1
ACC311 Female 4
ACC311 Male 4
ACC501 Male 4
ACC501 Male 4
ACC501 Male 4
ACC501 Male 4
.
.
.
现在我使用下面的查询来获得结果
Select distinct coursecode, gender, Count(CQ) as CQ from Table1
group by Coursecode, gender
order by Coursecode
它返回的结果如下,这显然是不正确的
按照要求输出的方式(见下文)
我需要获得以下信息:
CourseCode Total Male Female CQ
ACC311 67 45 22 11
ACC501 713 485 228 111
您的查询返回行“两次”,因为您按Coursecode,gender
分组DISTINCT
也不会有帮助
获得所需结果的最简单方法是使用条件聚合:
SELECT Coursecode,
Count(CQ) AS CQ,
COUNT(gender) AS Total,
COUNT(CASE WHEN gender = 'Male' THEN 1 END) AS Male,
COUNT(CASE WHEN gender = 'Female' THEN 1 END) AS Female
FROM Table1
GROUP BY Coursecode
SELECT Coursecode,
Count(CQ) AS CQ,
COUNT(gender) AS Total,
COUNT(CASE WHEN gender = 'Male' THEN 1 END) AS Male,
COUNT(CASE WHEN gender = 'Female' THEN 1 END) AS Female
FROM Table1
GROUP BY Coursecode