簡體   English   中英

SQL查詢以統計每個不同值的出現

[英]SQL Query to count occurrences of each distinct value

我有一個包含2個字段的表: useridvalue 可以有多個具有相同userid的行 列可以是5個不同值之一。

我想為每個userid輸出一個摘要行,並計算每個不同出現在輸入中的次數。 也就是說,摘要行包含以下列: userid值1的 計數,值2的 計數,值3的 計數,值4的 計數和值5的計數

1,4

1,3

2,1

3,5

4,1

5,2

輸出將是

1,0,0,1,1,0

2,1,0,0,0,0

3,0,0,0,0,5

4,1,0,0,0,0

5,0,1,0,0,0

有什么建議么?

select userid, 
    sum(case value when 1 then [occurs] else 0 end) as countOf1,
    sum(case value when 2 then [occurs] else 0 end) as countOf2,
    sum(case value when 3 then [occurs] else 0 end) as countOf3,
    sum(case value when 4 then [occurs] else 0 end) as countOf4,
    sum(case value when 5 then [occurs] else 0 end) as countOf5
    from
(
    select userid, [value], count(*) as [occurs]
    from inputTable
    group by userid, [value]
) t
group by userid
order by userid

假設

從您的問題中我收集到相同的輸入行值可能會出現多次,盡管您的示例數據沒有顯示這種可能性。 但是,如果每個不同的行只能出現一次,則可以使用更簡單/更短的解決方案。

警告

您聲明輸入中的[值]列可以是5個不同值之一。 我的解決方案基於該“要求”。 它為每個不同的值包括一行代碼。 但是,如果不同值的數量可以隨時間增長或不受限制,則將需要使用動態SQL的其他方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM