Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ich muss eine sehr interessante Abfrage schreiben, die Nullwerte und Zeilen mit Werten berechnet

Angepasst von Oracle:How to count Null- und Nicht-Null-Zeilen :

SELECT
  COUNT(Col1)+COUNT(Col2)+COUNT(Col3)+
  COUNT(Col4)+COUNT(Col5)+COUNT(Col6) AS ValuesCount,

  6*COUNT(*)-COUNT(Col1)-COUNT(Col2)-COUNT(Col3)-
  COUNT(Col4)-COUNT(Col5)-COUNT(Col6) AS NullCount
FROM data
GROUP BY id

COUNT(ColX) zählt nur NOT NULL Werte. Das Hinzufügen dieser Werte für alle sechs Spalten ergibt natürlich ValuesCount.
COUNT(*) zählt alle Zeilen, auch wenn alle Spalten innerhalb einer Zeile NULL waren . Multiplizieren Sie mit 6 für die Gesamtzahl der Zellen und subtrahieren Sie dann alle NOT NULL Werte, um den NULL zu erhalten zählen.