sql >> Database teknologi >  >> RDS >> Oracle

Jeg skal skrive en meget interessant forespørgsel, som beregner nulværdier og rækker med værdier

Tilpasset fra Oracle:How to count null og ikke-null rækker :

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) tæller kun NOT NULL værdier. Tilføjelse af dem for alle seks kolonner er naturligvis lig med ValuesCount.
COUNT(*) tæller alle rækker, selvom alle kolonner i en række var NULL . Multiplicer med 6 for det samlede antal celler, og træk derefter alle NOT NULL fra værdier for at få NULL tælle.



  1. Hvorfor giver mysql fejlen ER_TABLE_NOT_LOCKED, mens jeg lige har låst bordet?

  2. MySQL, hvis rækken findes, opdatering ellers indsæt

  3. Hvordan kontrollerer man, om mysql-indgangen er tom i PhP?

  4. Alternativ til PDO::lastInsertId / mysql_insert_id