SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Нарастающий итог SQL c учетом фильтра по дате
Нарастающий итог SQL c учетом фильтра по дате [сообщение #3206] Fri, 29 September 2023 15:12 Переход к следующему сообщению
Мария1212 в настоящее время не в онлайне  Мария1212
Сообщений: 3
Зарегистрирован: September 2023
Junior Member
Есть две таблицы:

календарь и база со всеми магазинами ( содержит данные по датам открытия, закрытия магазина , площадь магазина)

Необходимо создать запрос при котором будет рассчитываться суммарная площадь и количество магазинов на выбранную дату , нарастающим итогом.
Когда
Чтобы  при выборе 2023 года и недели 36 - выводилась сумма всех площадей до недели 36 включительно, а так же кол-во магазинов.

Я прописываю код, мне считается итог только по указанному фильтру, помогите, пожалуйста.
------------------------------------------------------------ --------------------------------------------
SELECT

YEAR(dbo.D_Calendar.START_DATE) AS "Год",
dbo.D_Calendar.new_week  AS "Неделя",
vt_warehouse_cube.st_name3 ,

coalesce(sum(vt_warehouse_cube.st_area) over (order by vt_warehouse_cube.open_date rows between unbounded preceding and current row),0)
as 'Вход площадь',
vt_warehouse_cube.st_area

FROM
vt_warehouse_cube,
dbo.D_Calendar

WHERE
vt_warehouse_cube.status  = 'Действует'
AND vt_warehouse_cube.open_date_descr NOT IN ('01.01.3000','01.01.1980')
AND vt_warehouse_cube.sales_yesterday = 'Продажи были'
and dbo.D_Calendar.START_DATE =vt_warehouse_cube.open_date
and YEAR(dbo.D_Calendar.START_DATE) = 2023
AND dbo.D_Calendar.new_week = 37

order by vt_warehouse_cube.open_date
  • Вложение: 1.PNG
    (Размер: 29.84KB, Загружено 767 раз)
  • Вложение: 2.PNG
    (Размер: 10.92KB, Загружено 773 раза)

[Обновления: Fri, 29 September 2023 15:18]

Известить модератора

Re: Нарастающий итог SQL c учетом фильтра по дате [сообщение #3208 является ответом на сообщение #3206] Fri, 29 September 2023 15:48 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SUM(vt_warehouse_cube.st_area) OVER(PARTITION BY ...)
Re: Нарастающий итог SQL c учетом фильтра по дате [сообщение #3209 является ответом на сообщение #3208] Fri, 29 September 2023 15:57 Переход к предыдущему сообщениюПереход к следующему сообщению
Мария1212 в настоящее время не в онлайне  Мария1212
Сообщений: 3
Зарегистрирован: September 2023
Junior Member
ДД, подскажите, что необходимо прописывать после partition by ?
Группировка по какой метрики ? и для чего ? если мне необходимо просуммировать все площадь по дату фильтра?
Re: Нарастающий итог SQL c учетом фильтра по дате [сообщение #3210 является ответом на сообщение #3208] Fri, 29 September 2023 16:31 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
МП
SUM(vt_warehouse_cube.st_area) OVER(PARTITION BY ...)
Ты хотел написать ORDER BY... ?
Re: Нарастающий итог SQL c учетом фильтра по дате [сообщение #3213 является ответом на сообщение #3210] Fri, 29 September 2023 16:52 Переход к предыдущему сообщениюПереход к следующему сообщению
Мария1212 в настоящее время не в онлайне  Мария1212
Сообщений: 3
Зарегистрирован: September 2023
Junior Member
Добрый день.

Прошу помочь правильно прописать запрос ( я новичок)

У меня есть две таблицы:

календарь ( с датами) и база со всеми магазинами ( содержит данные по датам открытия, закрытия магазина , площадь магазина)

Мне необходимо создать запрос при котором будет рассчитываться суммарная площадь и количество магазинов на выбранную дату ,
То есть допустим я хочу посмотреть суммарное кол-во магазинов и площадей которые были на 38 недели в 2023 и 2022 годах, нарастающим итогом. ( для понимания сеть развивается и каждый год открывается новые магазины, но при этом открытия не каждый месц)

У меня пока только вот что вышло, я прописываю код, мне считается итог только по указанному фильтру, суммируется только год и неделя , указанная в фильтре.
------------------------------------------------------------ --------------------------------------------
SELECT

YEAR(dbo.D_Calendar.START_DATE) AS "Год",
dbo.D_Calendar.new_week AS "Неделя",
vt_warehouse_cube.st_name3 ,

coalesce(sum(vt_warehouse_cube.st_a rea) over (order by vt_warehouse_cube.open_date rows between unbounded preceding and current row),0)
as 'Вход площадь',
vt_warehouse_cube.st_area

FROM
vt_warehouse_cube,
dbo.D_Calendar

WHERE
vt_warehouse_cube.status = 'Действует'
AND vt_warehouse_cube.open_date_descr NOT IN ('01.01.3000','01.01.1980')
AND vt_warehouse_cube.sales_yesterday = 'Продажи были'
and dbo.D_Calendar.START_DATE =vt_warehouse_cube.open_date
and YEAR(dbo.D_Calendar.START_DATE) = 2023
AND dbo.D_Calendar.new_week = 37
Re: Нарастающий итог SQL c учетом фильтра по дате [сообщение #3238 является ответом на сообщение #3213] Mon, 02 October 2023 22:22 Переход к предыдущему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
Тут нужен select from select. Сначала считаем нарастающие суммы, а уже из них фильтруем 2023 год и 37 неделю
Предыдущая тема: Выбор условия в зависимости от периода расчета
Следующая тема: Интересные статьи и полезные ссылки
Переход к форуму:
  


Текущее время: Sun Dec 22 19:02:54 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00763 секунд