sql - 在另一列中查找最高行号的对应行值
问题描述
我有一张类似于下面这张的表格。我想创建 New_Column 来查找所选日期的最大数字,并返回日期,同时为所有其他数字返回 null。我正在考虑添加一个案例,但不知道如何合并它。
Date Number New_Column
2021-03-18 1 null
2021-03-18 8 null
2021-03-18 20 2021-03-18
2021-04-18 1 null
2021-04-18 7 null
2021-04-18 11 2021-04-18
解决方案
您可以使用窗口函数:
select t.*,
(case when number = max(number) over (partition by date)
then date
end) as new_column
from t;
注意:如果有最高值的平局并且您只想标记一个
select t.*,
(case when row_number() over (partition by date order by number desc) = 1
then date
end) as new_column
from t;
推荐阅读
- java - 在片段布局中创建动态视图的问题
- javascript - 如何在事件侦听器中为回调设置流类型
- elixir - 长生不老药中的多个条件修改变量
- mongodb - Mongodb 不承认该字段存在
- javascript - confirmjs 弹出背景关闭动画在 Firefox 中不起作用
- c# - 发布时控制台应用程序中的 WebClient 请求未命中方法
- python - 哪些字符在字典键中有效?
- c# - 找不到方法:'Serilog.LoggerConfiguration Serilog.LoggerConfigurationLogentriesExtensions.Logentries
- flutter - 在 Flutter 中的页面之间传递数据。空错误
- mysql - 多次使用 ANY_VALUE 时的 MySQL 行为