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

MySQL vyberte součet s hodnotami seskupit podle a prázdnými hodnotami

Můžete použít toto:

SELECT b.store_id, b.group_hour, IFNULL(sales_sum, 0) AS sales_sum
FROM 
(
 SELECT store_id, HOUR(sales_date) as group_hour, sum(sales_amount) as sales_sum 
 FROM sales 
 GROUP BY store_id, group_hour
) a
RIGHT OUTER JOIN 
(
  SELECT *
  FROM
  (
   SELECT DISTINCT store_id
   FROM sales
  ) all_stores
  CROSS JOIN
  (
   SELECT 10 as group_hour
   UNION ALL
   SELECT 11
   UNION ALL
   SELECT 12
   UNION ALL
   SELECT 13
   UNION ALL
   SELECT 14
   UNION ALL
   SELECT 15
  ) all_hours
) b
ON a.store_id = b.store_id AND a.group_hour = b.group_hour
ORDER BY 1, 2

Používám RIGHT OUTER JOIN s tabulkou, která obsahuje všechny obchody a všechny hodiny (od 10 do 15).




  1. Jak resetuji sekvenci v Oracle?

  2. Problémy s duplicitními daty a jak je opravit

  3. Připojení Linuxu a UNIXu k Azure SQL Data Warehouse

  4. Jak pomocí psql zobrazím seznam rozšíření nainstalovaných v databázi?