如何计算多行和同一列中的每个值?

How to count each value in multiple rows and same column?

我无法计算每个标签的数量。

例如:

    tags
0  a,b,c,d
1  a,b
2  c,d
3  a,c

我的预期结果:

tags   count
  a      3
  b      2
  c      3
  d      2

欢迎来到 Whosebug!

你有代码示例吗?您的标签显示 "SQL",所以这就是我的假设。由于您没有给我们提供足够的信息来提供帮助,因此我现在无法从您的问题中获知太多信息。对于您已经尝试做的事情添加更多详细信息对于以后的问题会很好。

不过,我发现这个 post 是关于计算列值的出现次数的,因此它可以回答您的问题。如果需要,您可以随时编辑您的问题以使其清晰明了!

您可以使用 STRING_SPLIT 来实现此目的

SELECT
value, count(*) as countOfTags
FROM
(
VALUES
(0,  'a,b,c,d')
,(1,  'a,b'    )
,(2,  'c,d'    )
,(3,  'a,c'    )
) as t(id, tags)
CROSS APPLY 
string_split(tags,',')
GROUP BY value;

结果集

+-------+-------------+
| value | countOfTags |
+-------+-------------+
| a     |           3 |
| b     |           2 |
| c     |           3 |
| d     |           2 |
+-------+-------------+