powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Группировка по неделям
16 сообщений из 16, страница 1 из 1
Группировка по неделям
    #39739935
Troinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите пожалуйста, как сделать такое:
Есть выборка с данными о продажах, сумма за каждую неделю.

Данные такие

1 201847 2018-11-24 00:00:00.000 86445.29105300
2 201846 2018-11-17 00:00:00.000 84884.60365000
3 201845 2018-11-10 00:00:00.000 113753.04355800
4 201844 2018-11-03 00:00:00.000 91600.51662300
5 201843 2018-10-27 00:00:00.000 125485.59366200
6 201842 2018-10-20 00:00:00.000 121193.76589100
7 201841 2018-10-13 00:00:00.000 111237.67063200
8 201840 2018-10-06 00:00:00.000 119599.89593200

Нужна сумма за 52 недели.
Как это лучше всего реализовать? Пока придумал только сгруппировать по ROW_Number() по 52 и присвоить число, например первые 52 записи 1, вторые 52 2 и т.д. и потом сумировать через Partition. Как присвоить эти номерки?

Или я вообще велосипед изобретаю и есть решение получше? ))

Код: sql
1.
2.
3.
4.
5.
6.
select
row_number() over(order by data desc) as rownumber
,YEAR(data) * 100 + DATEPART(WEEK, data) AS [week]
 ,data,sum(saleseur) as saleseur
from Sales
group by [data]
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739951
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troinat,

для начала надо понять, какие недели вы имеете в виду.
Например, 1 января принадлежит какой неделе? И всегда ли одной и той же?
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739962
Troinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap, как правило недель в году 52, т.е. 1 января это будет 1 неделя. Разделяются они через datepart(week,data). Но по неделям уже разделено, т.е. в таблице 1 строка = 1 неделе. Нужно, чтобы при сортировке по уменьшению, для каждой строки суммировалась сумма последних 52 строк (включая текущую).
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739971
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troinat , т.е. 1 января это будет 1 неделя. .
не факт ;) есть американская и наша системы
(гугл в помощь)
если не заморачиваться то просто группировать по
Код: sql
1.
DATEPART(WEEK, [поле_даты]) 
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739976
Troinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StarikNavy,
Это совсем не то, что нужно((
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739994
SerGrr1898
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что-то типа того
select
sum(saleseur) over(order by data DESC ROWS BETWEEN CURRENT ROW AND 52 FOLLOWING ) saleseur
,[data]
from Sales
group by [data]
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739996
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerGrr1898что-то типа того
select
sum(saleseur) over(order by data DESC ROWS BETWEEN CURRENT ROW AND 52 FOLLOWING ) saleseur
,[data]
from Sales
group by [data]
фантастика :)
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739997
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troinat,

SUM + OVER + RANGE BETWEEN CURRENT ROW AND 52 FOLLOWING
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739998
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если в одну из недель данных не будет?
...
Рейтинг: 0 / 0
Группировка по неделям
    #39739999
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarAntTroinat,

SUM + OVER + RANGE BETWEEN CURRENT ROW AND 52 FOLLOWING
фантастика часть два :)
...
Рейтинг: 0 / 0
Группировка по неделям
    #39740003
Troinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SerGrr1898что-то типа того
select
sum(saleseur) over(order by data DESC ROWS BETWEEN CURRENT ROW AND 52 FOLLOWING ) saleseur
,[data]
from Sales
group by [data]

Да! Только 51 FOLLOWING а не 52 :) Т.к если 52 то считает 53 недели. Спасибо большое!
...
Рейтинг: 0 / 0
Группировка по неделям
    #39740006
SerGrr1898
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Troinat,

Как тут выше сказали, это будет корректно работать только если нет пропусков.
...
Рейтинг: 0 / 0
Группировка по неделям
    #39740009
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerGrr1898,

т.е. в каждой строке будет какая-то сумма за следующие 52 недели, что совсем не то что просит ТС
...
Рейтинг: 0 / 0
Группировка по неделям
    #39740014
SerGrr1898
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
ну сортировку поменять, вроде, не проблема. Я скинул концепт)
...
Рейтинг: 0 / 0
Группировка по неделям
    #39740015
SerGrr1898
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
ну сортировку поменять, вроде, не проблема. Я скинул концепт)
...
Рейтинг: 0 / 0
Группировка по неделям
    #39740016
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SerGrr1898TaPaK,
ну сортировку поменять, вроде, не проблема. Я скинул концепт)
печально...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Группировка по неделям
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]