簡體   English   中英

SELECT CASE SQL中的DISTINCT COUNT

[英]DISTINCT COUNT in SELECT CASE SQL

我有一份報告表,其中包括Case (唯一編號), ISR (個人安全報告 - 唯一編號)和YearsOld

每個案例可以有多個ISR。 我想計算年齡組中唯一案例的數量。

這個SQL給了我一個ISR數量的計數:

SELECT  
COUNT(CASE WHEN `YearsOld` = -2) THEN 1 END) `No Report`,
COUNT(CASE WHEN `YearsOld` BETWEEN 0 AND 5) THEN 1 END) `0 to 5`
COUNT(CASE WHEN `YearsOld` BETWEEN 6 AND 12) THEN 1 END) `6 to 12`
FROM `Demographics`

有沒有辦法修改這個來計算這些年齡組的DISTINCT Cases

如果您的“case”變量是唯一的,您當然可以直接將distinct關鍵字放在SQL CASE語法中:

Count(distinct CASE when yearsold between 6 and 12 then case else null end)

這樣,case變量的每個唯一值只計算一次。

只是關於列命名的注釋,如果你有選擇的話,我建議不要使用在SQL中有意義的單詞(即使用'case_num'而不是case)。

您可以使用子查詢來過濾每個案例的單個YearsOld字段的人口統計表,但如果這種情況可能與不同ISR差異年齡相關,那么它最終只會被計入一個括號中(也許這就是您想要的?):

SELECT
  ... -- as you currently have
FROM (
  SELECT `Case`, `YearsOld` from `Demographics` GROUP BY `Case`
) t;

或者,為了“計算”每個括號內的每個“不同”“案例”,您確實按字面意思:

SELECT
  COUNT(DISTINCT CASE WHEN `YearsOld` = -2 THEN 1 END) `No Report`,
  COUNT(DISTINCT CASE WHEN `YearsOld` BETWEEN 0 AND  5 THEN `Case` END) `0 to 5`,
  COUNT(DISTINCT CASE WHEN `YearsOld` BETWEEN 6 AND 12 THEN `Case` END) `6 to 12`
FROM Demographics;

暫無
暫無

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

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