如何在最小月份获得 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) on Windows 10 Home Single语言 10.0这是执行此操作的一种方法:
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?的主要内容,如果未能解决你的问题,请参考以下文章