相关疑难解决方法(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万
查看次数

Oracle中KEEP FIRST/LAST的解释

问题

请解释一下KEEP到底是什么以及有/没有它的效果。

寻找解释但找不到明确的解释。

Oracle 中带和不带 KEEP 的 PARTITION BY

“KEEP”的真正意义/力量是当您对不同列进行聚合和排序时。

保留条款

不幸的是,当您开始搜索“keep”子句时,您将在 Oracle 文档中找不到任何内容(希望通过这篇博文,人们现在可以获得参考)。当然,Oracle 记录了这些功能。您只需知道它们在 SQL 语言参考中被称为 FIRST 和 LAST 即可。

# However, you can do even better by just adding three "keep clause" functions to the original query:
SELECT
    ra.relation_id,
    MAX(ra.startdate) startdate,
    MAX(ra.address) KEEP(DENSE_RANK LAST ORDER BY ra.startdate) address,
    MAX(ra.postal_code) KEEP(DENSE_RANK LAST ORDER BY ra.startdate) postal_code,
    MAX(ra.city) KEEP(DENSE_RANK LAST ORDER BY ra.startdate) city
FROM
    relation_addresses ra
WHERE
    ra.startdate <= to_date(:reference_date, 'yyyy-mm-dd')
GROUP BY
    ra.relation_id
Run Code Online (Sandbox Code Playgroud)

sql oracle

13
推荐指数
1
解决办法
4万
查看次数

标签 统计

oracle ×2

sql ×2

greatest-n-per-group ×1