获取列的最大值所在的行

本教程将介绍获取列的最大值所在的行的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

获取列的最大值所在的行 教程 第1张

问题描述

表:

UserId, Value, Date.

我想获取每个 UserId 的用户 ID,最大值(日期)的值.即,每个具有最新日期的 UserId 的值.有什么办法简单地在 SQL 中做到这一点?(最好是甲骨文)

更新:对任何含糊之处表示歉意:我需要获取所有用户 ID.但是对于每个 UserId,只有该用户具有最新日期的那一行.

推荐答案

这将检索 my_date 列值等于该用户 ID 的 my_date 最大值的所有行.这可能会为用户 ID 检索多行,其中最大日期在多行上.

select userid,
 my_date,
 ...
from
(
select userid,
 my_date,
 ...
 max(my_date) over (partition by userid) max_my_date
fromusers
)
where my_date = max_my_date

分析函数摇滚"

关于第一条评论...

使用分析查询和自联接违背了分析查询的目的"

此代码中没有自联接.相反,在包含分析函数的内联视图的结果上放置了一个谓词——这是一个非常不同的问题,并且是完全标准的做法.

"Oracle中默认窗口是从分区的第一行到当前行"

windowing 子句仅适用于存在 order by 子句的情况.没有order by子句,默认不应用windowing子句,也不能显式指定.

代码有效.

好了关于获取列的最大值所在的行的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。