基于同一组中其他值的 PostgreSQL Case 语句

PostgreSQL Case statement based on other values in same Group

我有以下 table 并且想写一个 SELECT(在 PostgreSQL 中),它将在它下面生成 table。它应该 GROUPtimestamp 并且有一个 'X' 和一个 'Y' 具有相同的 timestamp,它应该被归类为 'Standard',否则'Premium' 如果同一时间戳中只有 'X'。

|         timestamp       | data |
|--------------------------------|
| 2018-08-13 09:26:10.872 |  X   |
| 2018-08-13 09:26:10.872 |  Y   |
| 2018-08-13 09:26:11.125 |  X   |
| 2018-08-13 09:26:11.125 |  X   |

|        timestamp        |   type   |
|-------------------------|----------|
| 2018-08-13 09:26:10.872 | Standard |
| 2018-08-13 09:26:11.125 | Premium  |

我已经写了以下内容:

SELECT 
    timestamp,
    CASE
        WHEN -- ??
        THEN 'Standard'
        ELSE 'Premium'
    END AS type
FROM my_table
GROUP BY timestamp, type; 

您将只想按 timestamp 分组,并计算不同的 data 条目。要从此计数中获取布尔值(case when 需要),您可以将其与 1:

进行比较
SELECT 
    timestamp,
    CASE
        WHEN count(distinct data) > 1
        THEN 'Standard'
        ELSE 'Premium'
    END AS type
FROM my_table
GROUP BY timestamp;