SQL QUERY - 计算男生人数和女生人数。学生是指有入学记录的人[重复]

问题描述 投票:0回答:1

我正在为一个班级解决这个SQL问题 - “请计算一下男生的人数和女生的人数。学生是指有入学记录的人。”

预期的结果应该是这样的

但是我一直无法得到以这种格式返回的结果,此时我被困在这里

使用此代码

SELECT 
COUNT(Distinct enrollment.personID) as male
FROM dbo.enrollment
RIGHT JOIN dbo.person ON person.personID=enrollment.personID
WHERE person.gender='male'
UNION
SELECT
COUNT(Distinct enrollment.personID) as female
FROM dbo.enrollment
RIGHT JOIN dbo.person ON person.personID=enrollment.personID
WHERE person.gender='female'; 

任何帮助我指出正确格式的帮助将不胜感激。

sql mysql syntax mysql-workbench resultset
1个回答
0
投票

实际上使用

UNION
运行两个单独的查询来获取 malefemale 计数。 在单个查询中使用
conditional aggregation
,这样可以提高效率并减少两次单独查询的需要:

SELECT
  COUNT(DISTINCT CASE WHEN person.gender = 'male' THEN enrollment.personID END) as male,
  COUNT(DISTINCT CASE WHEN person.gender = 'female' THEN enrollment.personID END) as female
FROM dbo.enrollment
RIGHT JOIN dbo.person ON person.personID = enrollment.personID;
© www.soinside.com 2019 - 2024. All rights reserved.