sql >> Database >  >> RDS >> Mysql

Groeperen op moet 0 retourneren bij groeperen op uren. Hoe doe je dit?

Je hebt een tabel nodig die 24 uur bevat, dan JOIN ernaar toe. Als u geen tabel kunt maken, kunt u deze in uw query maken. Bekijk deze demo .

SELECT a.hr, IFNULL(b.hourCount, 0) hourCount
FROM 
  (SELECT 1 AS hr
  UNION ALL
  SELECT 2
  UNION ALL
  SELECT 3
  UNION ALL
  SELECT 4
  UNION ALL
  SELECT 5
  UNION ALL
  SELECT 6
  UNION ALL
  SELECT 7
  UNION ALL
  SELECT 8
  UNION ALL
  SELECT 9
  UNION ALL
  SELECT 10
  UNION ALL
  SELECT 11
  UNION ALL
  SELECT 12
  UNION ALL
  SELECT 13
  UNION ALL
  SELECT 14
  UNION ALL
  SELECT 15
  UNION ALL
  SELECT 16
  UNION ALL
  SELECT 17
  UNION ALL
  SELECT 18
  UNION ALL
  SELECT 19
  UNION ALL
  SELECT 20
  UNION ALL
  SELECT 21
  UNION ALL
  SELECT 22
  UNION ALL
  SELECT 23
  UNION ALL
  SELECT 0) a
LEFT JOIN
  (SELECT COUNT(id) AS hourCount, HOUR(date) AS hr
   FROM `testing`
   GROUP BY HOUR(date)) b ON b.hr = a.hr


  1. Een paar snelle dingen over PASS-feedback

  2. Ondersteunt uw ODBC-stuurprogramma gebruikersgegevensbronnen?

  3. Hoe kan ik deelnemen met een afgeleide tabel?

  4. fout met oci_fetch_array, kan gegevens ophalen van oracle door php