基于同一组中其他值的 PostgreSQL Case 语句
PostgreSQL Case statement based on other values in same Group
我有以下 table 并且想写一个 SELECT
(在 PostgreSQL 中),它将在它下面生成 table。它应该 GROUP
由 timestamp
并且有一个 '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;
我有以下 table 并且想写一个 SELECT
(在 PostgreSQL 中),它将在它下面生成 table。它应该 GROUP
由 timestamp
并且有一个 '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;