【问题标题】:Return Max Value Date for each group in Netezza SQL返回 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 |

非常感谢任何帮助!

【问题讨论】:

    标签: sql netezza


    【解决方案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 子句与相关子查询一起使用,但我不确定联系,所以我就离开了。

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2021-12-24
      • 2015-10-12
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多