powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / запрос по неделям инкрементальный
10 сообщений из 10, страница 1 из 1
запрос по неделям инкрементальный
    #39883280
Casper2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется следующая таблица вида
senderID | EventDate | eWEEK | eYEAR
dfsdafsd | 2019-10-3017:25:08.873 | 44 | 2019
dfsdafsd | 2019-10-30 16:36:18.713 | 45 | 2019
dfsdafsd| 2019-10-30 16:21:45.420 | 46 | 2019
xcvxcv | 2019-10-30 16:04:44.993 | 44 | 2019
fsdfsdffsdf | 2019-10-30 15:18:35.527 | 44 | 2019
fsdfsdffsdf | 2019-10-30 15:12:45.033 | 49 | 2019
dfd | 2019-10-30 15:07:42.527 | 49 | 2019
xxxl | 2019-10-30 15:04:23.830 | 49 | 2019


Необходимо вывести количество senderID по неделям так чтобы количество senderID увеличивалось в зависимости от значений предыдущей недели. Для данного примера должно полечиться:
eYear,eWeek,SendeIDCount
2019 | 44 | 3
2019 | 45 | 4 (3+1)
2019 | 46 | 5 (4+1)
2019 | 49 | 8 (5+3)
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883282
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casper2002,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select 
    eWEEK 
    , eYEAR
    , sum(cnt)  over (order by eYEAR, eWEEK)
from (
  select 
    cnt = count(*)
    , eWEEK 
    , eYEAR
  from ...
  group by 
    eWEEK 
    , eYEAR

) c 
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883418
Casper2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.

я по другому сам сделал:

Код: sql
1.
select count(a1.senderID)+(select count(senderID) from a where (eWeek<a1.eWEEK and eYear=a1.eYear) OR (eYear<a1.eYear)),a1.eWEEK,a1.eYear from a as a1 group by a1.eWEEK,a1.eYear



Так тоже правильно, но медленнее?
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883438
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casper2002,

Да это медленнее и позорнее.

Если нарастать должно внутри года и с началом года начинаться по новой, то вот так.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select 
    eWEEK 
    , eYEAR
    , sum(cnt)  over (PARTITION BY eYEAR order by eWEEK)
from (
  select 
    cnt = count(*)
    , eYEAR
    , eWEEK 
  from ...
  group by 
    eWEEK 
    , eYEAR
order by eYEAR, eWEEK 

) c  
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883440
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casper2002,

А вообще можно и без подзапроса
Код: sql
1.
2.
3.
4.
5.
6.
select 
    eYEAR, eWEEK 
    ,sum(count(*)  over (PARTITION BY eYEAR order by eWEEK)
from ...
group by eYEAR, eWEEK 
order by eYEAR, eWEEK 
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883445
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninCasper2002,

А вообще можно и без подзапроса
Код: sql
1.
2.
3.
4.
5.
6.
select 
    eYEAR, eWEEK 
    ,sum(count(*)  over (PARTITION BY eYEAR order by eWEEK)
from ...
group by eYEAR, eWEEK 
order by eYEAR, eWEEK 


точно?
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883451
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

скобку одну забыл
Код: sql
1.
2.
3.
4.
5.
6.
select 
    eYEAR, eWEEK 
    ,sum(count(*))  over (PARTITION BY eYEAR order by eWEEK)
from ...
group by eYEAR, eWEEK 
order by eYEAR, eWEEK 
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883472
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninЕсли нарастать должно внутри года и с началом года начинаться по новой, то вот так.
вот же написано, нарастающий итог за все время
Код: sql
1.
select count(senderID) from a where (eWeek<a1.eWEEK and eYear=a1.eYear) OR (eYear<a1.eYear))
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883589
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

вот так внутри года

Код: sql
1.
sum(count(*))  over (PARTITION BY eYEAR order by eWEEK)



вот так за все время
Код: sql
1.
sum(count(*))  over (order by eYEAR,  eWEEK)
...
Рейтинг: 0 / 0
запрос по неделям инкрементальный
    #39883685
Casper2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, разобрался.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / запрос по неделям инкрементальный
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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