Come faccio a contare valori nulli mentre faccio una query in una tabella incrociata?Conteggio valori Null in MYSQL
Ho una tabella con tre colonne [id, nome, risposta]
ho seguenti record:
ID NAME ANS
1 ABC 1
1 ABC 0
1 ABC NULL
2 XYZ 1
2 XYZ NULL
2 XYZ NULL
2 XYZ 1
2 XYZ 0
1 ABC 0
ora vorrei ottenere il mio risultato:
ID Name NULLCOUNT TRUE COUNT FALSE COUNT
1 ABC 1 1 2
2 XYZ 2 2 1
Sto usando la seguente dichiarazione SQL:
select ID, NAME,
sum(case ANS when null then 1 else 0 end) as NULLCOUNT,
sum(case ANS when 1 then 1 else 0 end) as TRUECOUNT,
sum(case ANS when 0 then 1 else 0 end) as FALSECOUNT
from
TBL1
Group By ID, Name
Ottenere il mio risultato:
ID Name NULLCOUNT TRUE COUNT FALSE COUNT
1 ABC 0 1 2
2 XYZ 0 2 1
Il conte NULL sta ottenendo l'errore. Perché e come posso risolvere questo?
thnx ha funzionato, ma vuole chiedersi perché è diverso da truecount e falsecount. Non dovrebbe essere lo stesso per truecount e falsecount? Quale è corretto per riposare anche gli altri – KoolKabin
null è come undefined. Non definito! = Indefinito. – foret
@KoolKabin: poiché si sta confrontando implicitamente ANS e NULL nel costrutto 'case'. Tuttavia, NULL non equivale a nulla, nemmeno a se stesso: 'NULL! = NULL' (restituisce true). È necessario utilizzare il costrutto speciale "IS NULL": 'NULL IS NULL' (restituisce true). Ingannevole, si. Utile, anche sì. – Piskvor