У меня есть таблица ниже:
SELECT * FROM dashboard.reports WHERE date='2020-04-06';
+------+--------------+----------+----------+----------+
| # id | date | type | quantity | vendor |
+------+--------------+----------+----------+----------+
| '11' | '2020-04-06' | '2520' | '150' | 'vendor1' |
| '12' | '2020-04-06' | 'HG851' | '200' | 'vendor2' |
| '13' | '2020-04-06' | 'HG851' | '200' | 'vendor2' |
| '14' | '2020-04-06' | 'HG851A' | '400' | 'vendor2' |
+------+--------------+----------+----------+----------+
Мне нужно вычислить сумму столбца количества по поставщику GROUP BY для конкретного дня. Ниже приведен мой запрос:
SELECT a.date, a.vendor, a.type, a.quantity, b.total FROM dashboard.reports a
INNER JOIN
(
SELECT vendor, SUM(quantity) as total FROM dashboard.reports WHERE date = '2020-04-06' GROUP BY vendor
) b
ON b.vendor = a.vendor WHERE date = '2020-04-06'
Результат: (Здесь общая сумма за дату '2020-04-06')
+--------------+----------+----------+----------+-------+
| # date | vendor | type | quantity | total |
+--------------+----------+----------+----------+-------+
| '2020-04-0' | 'vendor1' | '2520' | '150' | '150' |
| '2020-04-06' | 'vendor2' | 'HG851' | '200' | '800' |
| '2020-04-06' | 'vendor2' | 'HG851' | '200' | '800' |
| '2020-04-06' | 'vendor2' | 'HG851A' | '400' | '800' |
+--------------+----------+----------+----------+-------+
vendor1 Всего ---> 150 vendor2 Итого (200 + 200 + 400) ----> 800
Приведенный выше результат работает, как и ожидалось, для одного конкретного дня. Однако, если я хочу получить записи между двумя датами ... Я не уверен, как написать запрос. Я попробовал ниже одного, но общее количество я получаю за все дни. Я хочу получить общее количество столбцов для каждого дня отдельно.
SELECT a.date, a.vendor, a.type, a.quantity, b.total FROM dashboard.reports a
INNER JOIN
(
SELECT vendor, SUM(quantity) as total FROM dashboard.reports WHERE date >= '2020-04-06' AND date <= '2020-04-08' GROUP BY vendor
) b
ON b.vendor = a.vendor WHERE date >= '2020-04-06' AND date <= '2020-04-08'
+--------------+----------+-------------+----------+---------+
| # date | vendor | type | quantity | total |
+--------------+----------+-------------+----------+---------+
| '2020-04-06' | 'vendor1' | '2520' | '150' | '1250' |
| '2020-04-06' | 'vendor2' | 'HG851' | '200' | '1400' |
| '2020-04-06' | 'vendor2' | 'HG851' | '200' | '1400' |
| '2020-04-06' | 'vendor2' | 'HG851A' | '400' | '1400' |
| '2020-04-07' | 'vendor1' | '2511' | '200' | '1250' |
| '2020-04-07' | 'vendor1' | '5120' | '350' | '1250' |
| '2020-04-07' | 'vendor1' | '2520' | '150' | '1250' |
| '2020-04-07' | 'vendor1' | '5114' | '400' | '1250' |
| '2020-04-07' | 'vendor3' | 'G-440G-A' | '200' | '20750' |
| '2020-04-07' | 'vendor3' | '1240GA' | '400' | '20750' |
| '2020-04-07' | 'vendor3' | '1440GP' | '9000' | '20750' |
| '2020-04-07' | 'vendor3' | 'B-0404G-B' | '7000' | '20750' |
| '2020-04-07' | 'vendor3' | 'B2404GP' | '2000' | '20750' |
| '2020-04-07' | 'vendor3' | 'G-881G-A' | '2000' | '20750' |
| '2020-04-08' | 'vendor3' | 'G-881G-B' | '150' | '20750' |
| '2020-04-08' | 'vendor2' | 'HG851' | '200' | '1400' |
| '2020-04-08' | 'vendor2' | 'HG851A' | '400' | '1400' |
+--------------+----------+-------------+----------+---------+
Может кто-нибудь помочь мне с этим? Если запросы, которые я написал выше, полностью неверны, пожалуйста, сообщите мне, как действовать дальше.