我有下表:
+------+------+
|userID|Name |
+------+------+
|1 |sport |
+------+------+
|2 |it |
+------+------+
|3 |game |
+------+------+
|1 |sport |
+------+------+
|1 |game |
+------+------+
|3 |it |
+------+------+
|3 |sport |
+------+------+
|2 |it |
+------+------+我希望计算每个UserID的总记录数,如果所有这些记录都是唯一的/具有相同的名称。示例:
我应该得到:
发布于 2018-05-21 00:17:28
每个UserID的总行数很简单,您只需使用COUNT(*)即可。至于另一列,假设Name不能为null,则需要计数不同的Name值,并将结果与1进行比较。要解释:如果所有名称相同,COUNT(DISTINCT Name))将返回1,否则将返回不同的数字。因此,通过将结果与1进行比较,您将确定是否所有名称都是唯一的。
这就是我在SQL中实现它的方式:
SELECT
UserID,
COUNT(*) AS TotalRows,
(COUNT(DISTINCT Name) = 1) AS AllNamesUnique
FROM
YourTable
GROUP BY
UserID
;请随意使用此解决方案在dbfiddle.uk。
https://dba.stackexchange.com/questions/207342
复制相似问题