回答

收藏

获得具有列最大值的行

技术问答 技术问答 193 人阅读 | 0 人回复 | 2023-09-13

表:
* r/ D9 ^6 Q4 Y/ i% rUserId,Value,Date.我想获取UserId,每个UserId的max(Date)值。也就是说,每个最新日期UserId值。有没有简单的方法?SQL这样做最好?Oracle)
: }* M* n* e" @更新:我们为任何歧义道歉:我需要得到一切UserIds。但对每一个UserId,只有用户有最新日期。
: Q) |0 h0 c# _8 V" t  ]- }                                                                0 A0 R# K+ Q' z" r5 A& q) K
    解决方案:                                                                1 i9 s, e( n& i# A4 t# v
                                                                这将检索其my_date列值等于用户ID的my_date所有最大值的行。这可能是用户的ID检索多行,最大日期在多行。
* j% N0 Y! y4 E& h& u: c2 T$ H# Oselect userid,      my_date,      ...from(select userid,      my_date,      ...       max(my_date) over (partition by userid) max_my_datefrom   users)where my_date = max_my_date分析功能摇滚
3 a' `4 z3 [0 q& J4 h+ ?" V编辑:关于第一个评论…
. J( F/ |7 G! ]1 \$ `- H* n: M使用分析查询和自联会破坏分析查询的目的$ ]* D( r7 ^/ f5 I# }
这个代码没有自连接。相反,在包含分析功能的内联视图的结果上放置一个谓词-一个完全不同的问题,一个完全标准的实践。
( z; p1 F7 M2 r, z, o& Z9 l: g' X“ Oracle默认窗口从分区的第一行到当前窗口。1 f( ~2 L& w1 i% O
windowing子句仅在order by适用于子句存在的情况。如果没有,order by子句,则默认情况下不应用任何窗口子句,并且不能明确指定任何子句。
; r) ]# a& N7 |+ B: O该代码有效。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则