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

标签 sql-server sql-server-2016

如下所示,有很多城市和日子(下雨天的时期)。 我想找到最大天数,即使天数相同。 例如,如果最大天数为 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) Jul 5 2017 23:41:17 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 (Build 9600: ) (Hypervisor)

这是示例数据:

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

最佳答案

使用dense_rank()订购天数。然后使用 top 1 获取最高值的日期

select
    top 1 with ties *
from
    myTable
order by dense_rank() over (partition by station order by days desc)

关于sql-server - 如何找到每个城市的最大天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49998659/

相关文章:

sql-server - 70 个数据库的 SQL Server 复制,并在短时间窗口内进行转换

sql - 从无限的层次结构中选择 child

sql - 删除约束不起作用

mysql - 所有数据库的通用数据类型应该是什么

c# - 如何将子 JSON 结构转换为 C# 对象图

sql-server - MS SQL 时态表更新失败

Java keystore - 当 varbinary 存储为 0x 时无法加载 keystore

sql-server - 统计数据库SQL Server中所有表的总行数

arrays - 在 SQL Server 中返回一个基本的 JSON 字符串数组

sql-server-2016 - 值中的特殊字符不能与 like 运算符一起使用,而在 SQL Server 中与 = 运算符一起使用