SQL计算一种值的数量

时间:2016-09-21 16:30:22

标签: sql variables count

好吧,所以基本上我只需要计算一行中每个数字的数量。例如:

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服务。

1 个答案:

答案 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