相关疑难解决方法(0)

获取具有列的最大值的行

表:

UserId, Value, Date.
Run Code Online (Sandbox Code Playgroud)

我想得到UserId,每个UserId的max(Date)值.也就是说,具有最新日期的每个UserId的值.有没有办法在SQL中执行此操作?(最好是Oracle)

更新:对任何含糊不清的道歉:我需要获取所有UserIds.但对于每个UserId,只有该用户具有最新日期的那一行.

sql oracle greatest-n-per-group

556
推荐指数
10
解决办法
56万
查看次数

返回每组最大值为一列的行

我很难在没有搜索同一个表至少两次以获取最大行的情况下执行此操作,然后获取该行的值.有问题的表格很大,所以这是不可接受的.

这是我的表可能是这样的:

SCORES
ID    ROUND    SCORE
1     1        3
1     2        6
1     3        2
2     1        10
2     2        12
3     1        6
Run Code Online (Sandbox Code Playgroud)

我需要返回每个ID在最近一轮中获得的分数.也就是说,行具有最大(圆形),但不是最大分数.

OUTPUT:
ID   ROUND   SCORE
1    3       2
2    2       12
3    1       6
Run Code Online (Sandbox Code Playgroud)

现在我有:

SELECT * FROM 
(SELECT id, round,
CASE WHEN (MAX(round) OVER (PARTITION BY id)) = round THEN score ELSE NULL END score
 FROM
 SCORES
 where id in (1,2,3)
) scorevals
WHERE
scorevals.round is not null;
Run Code Online (Sandbox Code Playgroud)

这是有效的,但效率很低(我必须手动过滤掉所有这些行,当我应该首先不能抓住那些行时.)

我能做些什么来获得正确的价值观?

sql oracle max greatest-n-per-group

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

greatest-n-per-group ×2

oracle ×2

sql ×2

max ×1