Вопрос самообучения mysql, Как использовать 2 таблицы для создания 3-й таблицы, которая использует информацию из исходных 2 таблиц - PullRequest
0 голосов
/ 14 января 2019

Я задал более ранний вопрос, который помог мне создать эту таблицу ниже Как получить количество уникальных SKU на дату в таблице в MySQL (вопрос для самообучения)

SKU, COUNT, DateSold
12,     2,      1-Jan-08 
11,     1,      1-Jan-08 
11,     2,      2-Jan-08 
11,     1,      3-Jan-08 
13,     1,      3-Jan-08 
11,     1,      4-Jan-08 
13,     1,      5-Jan-08 

Используя эту существующую таблицу выше и

SKU Таблица цен ниже

SKU, PRICE
11,     5.00
12,    10.00
13,    15.00

Теперь вопрос заключается в том, как я могу использовать эти 2 таблицы для создания итогов за каждый день, не делая этого вручную, ниже приведен мой желаемый СТОЛ.

Day,       Total
1-Jan-08,    25.00
2-Jan-08,    10.00
3-Jan-08,    20.00
4-Jan-08,    05.00
5-Jan-08,    15.00

У меня есть кое-что подобное в файле Excel, который я создал (сводная таблица), но я надеюсь, что mysql поможет мне сделать это эффективно и быстрее. Опять же, я новичок в этом, и это очень помогло бы мне понять sql. Это не задание, я снова пытаюсь улучшить свои навыки.

Спасибо

1 Ответ

0 голосов
/ 14 января 2019

Предполагая, что вы начинаете с данных о продажах из исходного вопроса, вы можете получить желаемые результаты, JOIN подставив эту таблицу в таблицу price (чтобы получить цену каждого товара), а затем просто сложив PRICE каждого проданного предмета (поскольку в строке только один предмет). Мы GROUP BY Day получаем результаты ежедневно:

SELECT s.DateSold AS Day, SUM(p.PRICE) AS Total
FROM sales s
JOIN price p ON p.SKU = s.SKU
GROUP BY Day

Если вы хотите начать с уже собранных данных, вы бы немного изменили запрос. В этом случае у вас есть COUNT предметов, которые продаются каждый день, поэтому вам нужно SUM, которые умножаются на цену предмета.

SELECT d.DateSold AS Day, SUM(d.COUNT * p.PRICE) AS Total
FROM daysales d
JOIN price p ON p.SKU = d.SKU
GROUP BY Day

Вывод (для обоих запросов):

Day         Total
1-Jan-08    25
2-Jan-08    10
3-Jan-08    20
4-Jan-08    5
5-Jan-08    15

Демонстрация на dbfiddle

...