如下所示,有许多城市和日子(下雨天数)。
即使天数相同,我也希望找到max
天。
例如,如果最大天数是3,并且有两天3天,那么我想打印出两行。
可能的输出是:
Auckland 2013-11-30 2013-11-30 5
Christchurch 2013-11-10 2013-11-50 4
如果只有5个城市,则可能有5行到10行,具体取决于相同的天数值。
我想使用SELECT
,IF
或CASE
,MAX
或Count
函数,因为此部分是完整复杂的代码之一。
谢谢。
SQL版本:
Microsoft SQL Server 2016(RTM-GDR)(KB4019088) - 13.0.1742.0(X64)2017年7月5日23:41:17版权所有(c)Windows Server 2012 R2 Standard 6.3上的Microsoft Corporation Developer Edition(64位) (Build 9600:)(管理程序)
这是示例数据:
create TABLE practice10 (
station VARCHAR(50),
start_date DATE,
end_date DATE,
days INT,
)
INSERT INTO practice10 values ('Auckland','2013-10-5','2013-10-10', 5),
('Auckland','2013-10-15','2013-10-17', 2),
('Auckland','2013-10-20','2013-10-23', 3),
('Manchester','2015-9-1','2013-9-4', 3),
('Manchester','2013-10-3','2013-10-3', 0),
('Manchester','2013-10-20','2013-10-29', 9);
答案 0 :(得分:2)
使用dense_rank()
订购天数。然后使用top 1
获取具有最高值的日期
select
top 1 with ties *
from
myTable
order by dense_rank() over (partition by station order by days desc)