sql >> Databáze >  >> RDS >> Mysql

Seskupit podle by při seskupování podle hodin měla vrátit 0. Jak to udělat?

Budete potřebovat tabulku, která obsahuje 24 hodin, poté JOIN k tomu. Pokud nejste schopni vytvořit tabulku, můžete ji vytvořit v dotazu. Podívejte se na tuto ukázku .

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. Aktualizační kód PHP/MySQL

  2. Laravel 5 + PostgreSQL:Databáze [postgres] není nakonfigurována. Chyba

  3. Detekce, zda se STARÁ hodnota nerovná NEW hodnotě a STARÁ hodnota byla NULL

  4. Funkce SQL group_concat na serveru SQL Server