Bạn có thể sử dụng cái này:
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
Tôi đang sử dụng RIGHT OUTER JOIN với bảng chứa tất cả các cửa hàng và tất cả các giờ (từ 10 đến 15).