【发布时间】:2020-10-26 14:33:58
【问题描述】:
我有一张看起来像这样的表
+-----------+-----------+---------------------+
| Report_id | Status | Date |
+-----------+-----------+---------------------+
| 1 | Completed | 2020-06-07 12:20:00 |
| 1 | Completed | 2020-06-07 12:22:00 |
| 2 | Running | 2020-06-07 13:02:00 |
| 2 | Completed | 2020-06-07 13:10:00 |
| 3 | Completed | 2020-06-07 14:10:00 |
| 3 | Failed | 2020-06-07 14:04:00 |
+-----------+-----------+---------------------+
我需要按 Report_id 对这些数据进行分组。因此,如果组内的所有状态值都等于 Completed,则 Status 是 Completed 并且 Date 是组内的最大值。但是,如果组内有一个 Running 或 Failed 值,则 Status 需要分别等于 Running 和 Failed 并且 Date 应该匹配此值。
输出将如下所示。
+-----------+-----------+---------------------+
| Report_id | Status | Date |
+-----------+-----------+---------------------+
| 1 | Completed | 2020-06-07 12:22:00 |
| 2 | Running | 2020-06-07 13:02:00 |
| 3 | Failed | 2020-06-07 14:04:00 |
+-----------+-----------+---------------------+
我怀疑我需要在某处使用 Case 语句来获得此输出,但我不知道如何。请帮忙。
【问题讨论】:
-
你能告诉我们你到目前为止做了什么吗?另外请你标记你的数据库吗?
-
@VBoka 我还没有成功。我正在使用 postgresql
-
嗨@DenisKudriavtsev 请也检查一下:stackoverflow.com/help/someone-answers
标签: sql postgresql group-by greatest-n-per-group