[英]SQL count certain values in multiple columns
我有一個帶有3個可能值(1,0,NA)的表
Customers | Answer1 | Answer2 | Answer3
-----------------------------------
John | 1 | 0 | NA
Dave | NA | 0 | NA
Jane | 0 | 1 | 1
Tom | 1 | 0 | 0
我試圖僅將1和0作為值。
我試圖實現的查詢結果是:
Customers | Total_Score
-----------------------
John | 2
Dave | 1
Jane | 3
Tom | 3
對數據庫使用MySQL。
我嘗試使用: SELECT Customers, COUNT(Answer1 + Answer2 + Answer3) AS Total_Score FROM exam
。 SQL查詢僅對值求和,而不對值1和0進行計數。感謝您的所有幫助。 我一直被困住並一直在尋找,但沒有運氣。
如果您有同一位客戶的多條記錄,請執行
SELECT Customers,
sum((Answer1 <> 'NA') + (Answer2 <> 'NA') + (Answer3 <> 'NA')) AS Total_Score
FROM exam
group by Customers
或者如果每個客戶只有一個
SELECT Customers,
(Answer1 <> 'NA') + (Answer2 <> 'NA') + (Answer3 <> 'NA') AS Total_Score
FROM exam
有幾種查詢模式將返回指定的結果。 我的偏好是顯式檢查該列是否包含0
或1
,如果包含則返回1
,否則返回0,然后將它們加在一起。
例如,使用MySQL IF()
函數:
SELECT e.Customers
, IF(e.Answer1 IN ('0','1'), 1, 0)
+ IF(e.Answer2 IN ('0','1'), 1, 0)
+ IF(e.Answer3 IN ('0','1'), 1, 0)
AS Total_Score
FROM exam e
相當於ANSI的將使用CASE
表達式代替IF()
:
SELECT e.Customers
, CASE WHEN e.Answer1 IN ('0','1') THEN 1 ELSE 0 END
+ CASE WHEN e.Answer2 IN ('0','1') THEN 1 ELSE 0 END
+ CASE WHEN e.Answer3 IN ('0','1') THEN 1 ELSE 0 END
AS Total_Score
FROM exam e
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.