У меня есть следующая таблица:
CREATE TABLE table1
("id" int, "day" varchar(8), "customer" varchar(1), "amount" int)
;
INSERT INTO Table1
("id", "day", "customer", "amount")
VALUES
(1, 'Thursday', 'a', 10),
(2, 'Thursday', 'a', 11),
(3, 'Thursday', 'b', 12),
(4, 'Friday', 'c', 13),
(5, 'Friday', 'c', 14),
(6, 'Saturday', 'c', 15),
(7, 'Saturday', 'a', 16),
(8, 'Saturday', 'c', 17),
(9, 'Saturday', 'c', 18),
(10, 'Saturday', 'a', 19)
;
И мне нужно иметь среднюю сумму для каждой комбинации день-клиент (3x3 = 9 строк). Однако, когда я использую этот следующий простой запрос, дни, когда конкретный клиент не потратил деньги, не отображаются. Я хотел бы, чтобы они были включены и показывали в среднем ноль.
Запрос:
Select day, customer, avg(amount)
FROM table1
GROUP BY day, customer
Результат:
+-----------+-----------+---------------------+
| day | customer | avg |
+-----------+-----------+---------------------+
| Friday | c | 13.5000000000000000 |
| Saturday | c | 16.6666666666666667 |
| Thursday | b | 12.0000000000000000 |
| Thursday | a | 10.5000000000000000 |
| Saturday | a | 17.5000000000000000 |
+-----------+-----------+---------------------+
Желаемый результат:
+----------+----------+------------------+
| day | customer | avg |
+----------+----------+------------------+
| Friday | a | 0 |
| Friday | b | 0 |
| Friday | c | 13.5 |
| Saturday | a | 17.5 |
| Saturday | b | 0 |
| Saturday | c | 16.6666666666667 |
| Thursday | a | 10.5 |
| Thursday | b | 12 |
| Thursday | c | 0 |
+----------+----------+------------------+
Fiddle: [https://www.db -fiddle.com / f / gT5FoFbvC951CHdFXBsfYH / 0] [1]
Буду признателен за любую оказанную помощь.