我有一个简单的表格,可以存储各个城市每天的高温。表包含3个字段:city_id
,date
,high_temp
。(唯一是city_id和日期的组合)
我正在寻找SQL Server的高效查询,这将使我能够为每个城市拉出3个最近的最高记录。因此,结果将包括列出3次的每个城市ID。
什么是额外的挑战(至少对我来说)是高临时工不记录每一天的每一个城市,所以我不能被过滤(getdate()-1
,getdate()-2
,等)
没有循环功能,有没有办法做到这一点?非常感激。干杯。
对于SQL 2005及更高版本,请使用ROW_NUMBER
:
WITH temps as
(
SELECT city_id, date, high_temp,
ROW_NUMBER() OVER (PARTITION BY city_id ORDER BY date DESC) RowNum
FROM TemperatureHistory <-- use the real table name here
)
SELECT city_id, date, high_temp FROM temps WHERE RowNum <= 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句