我正在为一个班级解决这个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';
任何帮助我指出正确格式的帮助将不胜感激。
实际上使用
UNION
运行两个单独的查询来获取 male 和 female 计数。
在单个查询中使用 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;