Как можно написать SQL-запрос для группировки ежемесячных значений по годам?

Как реализовать запрос, чтобы получить сумму продаж за 2018, 2019 и 2020 годы в виде трех строк? Я начал с запроса, но не знаю, что делать дальше:

SELECT
   SUM(cost) AS total_sales,
   EXTRACT(YEAR FROM time) AS sales_year
FROM
   dep
   INNER JOIN prod ON prod.id = dep.id
   INNER JOIN sales ON prod.id = sales.prod_id
WHERE time >= '2018-01-01 00:00:00'
   AND city = 'town1'
GROUP BY sales_year
ORDER BY sales_year ASC;
  • 18 сентября 2023 г. 11:47
Ответы на вопрос 2
Ваш запрос уже хорошо начат. Чтобы получить сумму продаж за каждый год (2018, 2019, 2020) в виде трех строк, вы можете добавить условие `sales_year IN ('2018', '2019', '2020')` в вашем запросе. Вот как может выглядеть полный запрос:

SELECT
   SUM(cost) AS total_sales,
   EXTRACT(YEAR FROM time) AS sales_year
FROM
   dep
   INNER JOIN prod ON prod.id = dep.id
   INNER JOIN sales ON prod.id = sales.prod_id
WHERE time >= '2018-01-01 00:00:00'
   AND city = 'town1'
   AND sales_year IN ('2018', '2019', '2020')
GROUP BY sales_year
ORDER BY sales_year ASC;

Этот запрос вернет сумму продаж за каждый из трех годов (2018, 2019, 2020) в виде трех строк. Каждая строка будет содержать сумму продаж (`total_sales`) и год (`sales_year`).

Надеюсь, это поможет вам решить вашу задачу!
SUM() - функция, которая суммирует значения колонки в таблице и возвращает общую сумму.
GROUP BY - оператор, который группирует строки в таблице по указанной колонке или колонкам.
YEAR() - функция, которая извлекает год из значения даты или времени.
Похожие вопросы