仅用子查询实现各辖区最高发案类型及数量的SQL查询问题
解决方案
修正后的SQL语句(仅使用子查询)
SELECT DISTRICT AS 辖区, COUNT(*) AS 数量, OFFENSE_CODE_GROUP AS 案件类型 FROM dbo.crime GROUP BY DISTRICT, OFFENSE_CODE_GROUP HAVING COUNT(*) = ( SELECT MAX(cnt) FROM ( SELECT COUNT(*) AS cnt FROM dbo.crime c2 WHERE c2.DISTRICT = crime.DISTRICT GROUP BY c2.OFFENSE_CODE_GROUP ) t )
说明
- 最内层子查询负责统计当前辖区下各案件类型的案发数
- 中间层子查询提取当前辖区的最高案发量
- 通过
HAVING条件筛选出每个辖区内案发量等于最高值的案件类型及对应数量,最终输出包含辖区、数量、案件类型三列的结果
内容的提问来源于stack exchange,提问作者Tejasvi Kommuri
相关产品推荐
相关产品推荐

