【发布时间】:2018-05-01 15:07:38
【问题描述】:
我试图计算一个值在一列中出现的次数,按 ID 分组。这是一个示例数据集:
ID Yes_or_No
1 Yes
1 No
2 Yes
3 Yes
4 Yes
4 No
5 Yes
一般的想法是,如果我计算某个 ID 的不同值,如果该计数大于 1,那么我可以创建一个新列,将其称为“可能”,例如当某个 ID 同时出现“是”和“否”值。这是我最初写的,但不起作用:
SELECT ID,
CASE WHEN COUNT(DISTINCT Yes_or_No)>1 AS 'Maybe'
ELSE Yes_or_No
END AS YesNoMaybe
FROM db
GROUP BY 1;
这是一个更大的整体查询的一部分,因此,理想情况下,我希望能够在 Case 语句中使用 Count,而不是在 FROM 语句中使用子查询,以节省内存。欢迎使用其他解决方法。
【问题讨论】:
-
您使用的是哪个 dbms? (该查询尝试包含特定于产品的内容。)
-
我在 Vertica 中使用 SQL。