我有下表,并想要编写一个SELECT
(在PostgreSQL中),它将产生下面的表。应该用GROUP
timestamp
加上timestamp
的'X'和'Y'来代替,应该将其归类为'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;
答案 0 :(得分:0)
您将只希望按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;