返回 Netezza SQL 中每个组的最大值日期
Posted
技术标签:
【中文标题】返回 Netezza SQL 中每个组的最大值日期【英文标题】:Return Max Value Date for each group in Netezza SQL 【发布时间】:2018-08-24 17:09:21 【问题描述】:+--------+---------+----------+------------+------------+
| CASEID | USER ID | TYPE | OPEN_DT | CLOSED_DT |
+--------+---------+----------+------------+------------+
| 1 | 1000 | MA | 2017-01-01 | 2017-01-07 |
| 2 | 1000 | MB | 2017-07-15 | 2017-07-22 |
| 3 | 1000 | MA | 2018-02-20 | NULL |
| 8 | 1001 | MB | 2017-05-18 | 2018-02-18 |
| 9 | 1001 | MA | 2018-03-05 | 2018-04-01 |
| 7 | 1002 | MA | 2018-06-01 | 2018-07-01 |
+--------+---------+----------+------------+------------+
这是我的数据集的一个 sn-p。我需要一个查询,它只返回 Netezza SQL 中每个 USER_ID 的 max(OPEN_DT) 行。
所以鉴于上述结果将是:
| CASEID | USERID | TYPE | OPEN_DT | CLOSED_DT |
| 3 | 1000 | MA | 2018-02-20 | NULL |
| 9 | 1001 | MA | 2018-03-05 | 2018-04-01 |
| 7 | 1002 | MA | 2018-06-01 | 2018-07-01 |
非常感谢任何帮助!
【问题讨论】:
【参考方案1】:您可以使用相关子查询:
select t.*
from table t
where open_dt = (select max(t1.open_dt) from table t1 where t1.user_id = t.user_id);
你也可以row_number()
:
select t.*
from (select *, row_number() over (partition by user_id order by open_dt desc) as seq
from table t
) t
where seq = 1;
但是,如果您与 open_dt
有联系,那么您需要将 limit
子句与相关子查询一起使用,但我不确定联系,所以我就离开了。
【讨论】:
以上是关于返回 Netezza SQL 中每个组的最大值日期的主要内容,如果未能解决你的问题,请参考以下文章