如何找到每个城市的最大天数?

时间:2018-04-24 09:56:13

标签: sql-server sql-server-2016

如下所示,有许多城市和日子(下雨天数)。 即使天数相同,我也希望找到max天。 例如,如果最大天数是3,并且有两天3天,那么我想打印出两行。

可能的输出是:

Auckland     2013-11-30 2013-11-30 5
Christchurch 2013-11-10 2013-11-50 4

如果只有5个城市,则可能有5行到10行,具体取决于相同的天数值。

我想使用SELECTIFCASEMAXCount函数,因为此部分是完整复杂的代码之一。

谢谢。

enter image description here

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);

1 个答案:

答案 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)