我完全重写了这个问题,我就是不能破解它
IDB db2 SQL
(from芝加哥犯罪数据集)哪个社区最容易发生犯罪?
当我使用这段代码时,它确实正确地对数据进行了计数和排序
select community_area_number as community_area_number, count(community_area_number) as total_area_crime
from chicago_crime_data
group by community_area_number
order by total_area_crime desc;
问题是,它列出了所有降序的数据,但是无论我使用什么MAX语句,无论是在select还是order by语句中,它都不会只显示最大值。最大值是43,所以我想显示两个都是43的'community_area_numbers'。
而是显示整个列表。
这是
的屏幕截图
此外,是的,我知道我可以只执行LIMIT 2命令,但这将是作弊,因为我手动检查了有2个最大值,但如果此数据更改或我不知道,它不能解决任何问题
先谢了
3条答案
按热度按时间zbdgwd5y1#
您需要查找的是标准的SQL子句
FETCH WITH TIES
;但是不幸的是,DB2不支持
FETCH FIRST
中的WITH TIES
。经典的方法(即在我们有窗口函数
RANK
和DENSE_RANK
之前)是使用子查询:获取最大值,然后获取具有该最大值的所有行。我在这里使用CTE(也称为WITH
子句),以便不必将所有内容都写两次。(请注意,这只是一个
COUNT(*)
,因为我们要计算每个community_area_number的 * 行 * 数。)cedebl8k2#
就像@topsail提到的,你可以使用一个rank函数。
根据上面的表,您可以执行以下操作
db fiddle
因此,您的完整查询应如下所示:
6yoyoihd3#
原来教授 * 确实 * 希望我们使用限制命令。下面是最终答案:
感谢所有回复的人:D