好吧,所以基本上我只需要计算一行中每个数字的数量。例如:
3 2 9 4 3 3 4 3 4 3 3 4 4 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 4 3 3 4 13 13 4 3 3 13 3 13 13 13 13 13 13 13 13 13 9 4 4 4 4 3 5 3 9 10 3 4 8 10 4 3 4 13 13 13 13 4 2 5 5 13 13 13 13 13 4 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 9 13
这些是数字,全部在一行中。我需要计算这行中有多少2,3,4等。我该怎么做呢?
这些函数使用的是SQL,更具体地说,我正在使用Klipfolio服务。
答案 0 :(得分:0)
基本思想是拆分字符串(用逗号分隔)并从拆分结果(表)中计算/聚合行。另请参阅T-SQL split string以获得更有效的分割字符串的方法。
示例:
DECLARE @String varchar(100) = '3 2 9 4 3 3 4 3 4 3 3 4 4 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 4 3 3 4 13 13 4 3 3 13 3 13'
-- To change ',' to any other delimeter, just change ',' to your desired one
DECLARE @Delimiter CHAR = ' '
SELECT Num, Count(Num) ct
FROM (
SELECT LTRIM(RTRIM(Split.a.value('.', 'VARCHAR(100)'))) 'Num'
FROM
(
SELECT CAST ('<M>' + REPLACE(@String, @Delimiter, '</M><M>') + '</M>' AS XML) AS Data
) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)
) A GROUP BY Num
产地:
Num ct
--- ---
13 4
2 2
3 29
4 8
9 1