Добрый день, подскажите, правильно ли я на это условие написал запрос
В Базе данных есть 2 таблицы:
Sales (MonthId int, RTN int, sales_rub float)
Plans (MonthId int, RTN int, plan_rub float)
Где MonthId - Id месяца, вида 202101, где первые 4 цифры год, 2 последних – номер месяца
, RTN – Id рук-ля товарного направления (РТН)
Написать скрипт.
Который выведет сумму фактических продаж и плановых продаж по месяцам(MonthId) за 2021 год. При этом план может быть не по всем РТН, а продажи есть у всех РТН, по которым есть план.
SELECT s.Monthid,SUM(s.sales_rub), SUM(p.planes_rub)
FROM sales AS s
LEFT JOIN Plans AS p
ON s.Monthid = p.Monthid
AND s.Rtn = p.Rtn
WHERE s.Monthid LIKE'2021%'
GROUP BY Monthid
;
В Базе данных есть 2 таблицы:
Sales (MonthId int, RTN int, sales_rub float)
Plans (MonthId int, RTN int, plan_rub float)
Где MonthId - Id месяца, вида 202101, где первые 4 цифры год, 2 последних – номер месяца
, RTN – Id рук-ля товарного направления (РТН)
Написать скрипт.
Который выведет сумму фактических продаж и плановых продаж по месяцам(MonthId) за 2021 год. При этом план может быть не по всем РТН, а продажи есть у всех РТН, по которым есть план.
SELECT s.Monthid,SUM(s.sales_rub), SUM(p.planes_rub)
FROM sales AS s
LEFT JOIN Plans AS p
ON s.Monthid = p.Monthid
AND s.Rtn = p.Rtn
WHERE s.Monthid LIKE'2021%'
GROUP BY Monthid
;
раскрыть ветку (4)
Добрый день!
Соединение по РТН не нужно, так как группировка делается в разрезе месяца.
Тут вопрос: если продаж и планов нет на какой-нибудь месяц, то его надо выводить или нет? Если нет, то такое решение подойдёт, если надо - то придётся усложнять.
Так как факт всегда есть, когда есть план, то можно использовать простое соединение - JOIN, а не левое соединение.
раскрыть ветку (3)
таблица:
Sales (MonthId int, RTN int, sales_rub float)
Где MonthId - Id месяца, вида 202101, где первые 4 цифры год, 2 последних – номер месяца
, RTN – Id рук-ля товарного направления (РТН)
Написать скрипт.
Добавить столбец, где будет рассчитана разница между среднемесячным (за квартал) значением продаж и текущим значением продаж в месяце
Можете ещё подсказать, как такой запрос выполнить? Хотя бы с чего начать.
Sales (MonthId int, RTN int, sales_rub float)
Где MonthId - Id месяца, вида 202101, где первые 4 цифры год, 2 последних – номер месяца
, RTN – Id рук-ля товарного направления (РТН)
Написать скрипт.
Добавить столбец, где будет рассчитана разница между среднемесячным (за квартал) значением продаж и текущим значением продаж в месяце
Можете ещё подсказать, как такой запрос выполнить? Хотя бы с чего начать.
раскрыть ветку (1)
AVG - агрегатная функция, которая возвращает среднее значение.
Сначала надо найти средние значения за квартал, а потом эту таблицу присоединить выборке с группировкой по месяцам. Соединять по номеру квартала + год.
Помощники
243 поста785 подписчиков
Правила сообщества
Нельзя обсуждать Политику.
Ругаться и оскорблять.