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

MySQL wybierz sumę z grupowaniem według i pustymi wartościami

Możesz użyć tego:

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

Używam RIGHT OUTER JOIN z tabelą zawierającą wszystkie sklepy i wszystkie godziny (od 10 do 15).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Powrót do dat bez weekendów

  2. Błąd importowania Pythona MySQLdb — Mac 10.6

  3. Dynamicznie filtruj DataGrid pod kątem nazwy za pomocą TextBox

  4. Kreator zapytań Laravel - Jak grupować według aliasów lub tworzyć surowe groupBy?

  5. Połączenie bazy danych z MySQL wygasa nawet po ustawieniu c3p0.testConnectionOnCheckout=true