Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Grupuj według powinno zwrócić 0 podczas grupowania według godzin. Jak to zrobić?

Będziesz potrzebować tabeli zawierającej 24 godziny, a następnie JOIN do niego. Jeśli nie możesz utworzyć tabeli, możesz ją utworzyć w zapytaniu. Zobacz tę prezentację .

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jaki jest najlepszy sposób na utworzenie losowego identyfikatora mysql za pomocą PHP?

  2. Uzyskaj dostęp do wartości w wierszu zestawu wyników, w którym wartość pochodzi z wywołania funkcji MySQL

  3. Spring Hibernate pobierz wybrane kolumny

  4. Jak zaimportować dane z pliku tekstowego do bazy mysql

  5. Błąd SQL:1064, SQLState:42000 podczas tworzenia nowej encji