如何在最小月份获得 MAX Hike?

Posted

技术标签:

【中文标题】如何在最小月份获得 MAX Hike?【英文标题】:How to get MAX Hike in Min month? 【发布时间】:2019-05-07 07:40:26 【问题描述】:

下表:

姓名 |加息% |月
----------------------
一个 7 1
一个 6 2
一个 8 3
乙 4 1
b 7 2
b 7 3

结果应该是:

姓名 |加息% |月 ---------------------- 一个 8 3 b 7 2

【问题讨论】:

其 Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) 2017 年 8 月 22 日 17:04:49 版权所有 (C) 2017 Microsoft Corporation Express Edition (64-bit) o​​n Windows 10 Home Single语言 10.0 (内部版本 17134:) 【参考方案1】:

这是执行此操作的一种方法:

SELECT Name, [Hike%], Month
FROM
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY [Hike%] DESC, Month) rn
    FROM yourTable
) t
WHERE rn = 1
ORDER BY Name;

如果您想为每个名称返回多条记录,在两条或多条记录可能与最大的加息百分比并列的情况下,请将ROW_NUMBER 替换为RANK

【讨论】:

mysql 是否支持名称中的 [] 括号? @fa06,最新消息说 OP 正在使用 SQL Server。【参考方案2】:

使用相关子查询

select   Name,min(Hike) as Hike,min(Month) as Month  
from
(
   select * from tablename a
        where Hike in (select max(Hike) from tablename b where a.name=b.name)
)A group by Name

【讨论】:

我刚刚编辑了表格,如果 2 个月内有相同的 Hile%,那么我们应该得到如上预期的最小月份。 我确实喜欢这样:with t as (select * from HIKEData a where hikePer in (select max(hikePer) from HIKEData b where a.name=b.name)) 选择名称,分钟(月) ), max(hikePer) hikePer from t group by Name @SubodhAgrawal,这里 max(hikePer) 或 min(hikePer) 会做同样的事情,因为它只有一个值:)【参考方案3】:

你可以使用类似下面的东西:

SELECT Name, MAX(Hike), Month
FROM table
GROUP BY Name, Month

希望这会有所帮助:)

【讨论】:

以上是关于如何在最小月份获得 MAX Hike?的主要内容,如果未能解决你的问题,请参考以下文章

如何在组中获得最小值?

如何获得向量中的最大值或最小值?

如何获得向量中的最大值或最小值?

如何从我的应用程序发送应用程序邀请(通过whatsapp、hike、消息)

如何在 PromQL 中获得两个指标中的最小值?

在java中如何通过一个月份,获得该月份的第一天的日期?