我在做一些SQL练习题,发现一个问题,其中一个备选方案让我很困惑
问题简化如下:
显示被识别为“M”的患者多于“F”的省份 ID。
名为“patients”的表具有相关列 patient_id、province_id 和性别(“M”或“F”)。
我不明白这个给定的解决方案,即使它在运行 SQL 的网站上运行(网站上的版本未知,这是 www.sql-practice.com 供参考)。
SELECT province_id
FROM patients
GROUP BY province_id
HAVING SUM(gender = 'M') > SUM(gender = 'F')
在解的
HAVING
部分,为什么这个程序允许你在聚合的括号内指定一个条件?这是我不习惯的特定 SQL 版本吗?我尝试在我的桌面应用程序 SQL Server 上使用不同的数据集进行这种构造,但出现语法错误,如果您尝试在聚合函数中设置条件,我认为会发生这种情况。
由于我的问题的性质,解决这个问题的尝试不适用,因为我正在寻求一个明显可行但没有任何文档的替代解决方案的清晰度,我也找不到任何人在 StackOverflow 上询问它。