Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сделать подсчет через оконную функцию / 10 сообщений из 10, страница 1 из 1
07.12.2021, 14:25
    #40118114
Romanov-krd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT	t2.Month , t2.Category1, t2.Segment, t2.Scheme, '' as Churn , GMV
FROM 
	(
	select	Month, Category1, Segment,  Scheme,  ParentID, sum(GMV) GMV
	from	(
			select toYYYYMM(Date) Month, ParentID, GMV, Category1, SupplierSegment as Segment, Scheme
			from DP_GMV_Forecast.test
			where GMV=0 and ParentID=35535000 and Category1='Miscellaneous accessories' and Scheme='FBS'
			) t1
	group by ParentID, Month, Category1, Segment,  Scheme
	) t2
	order by t2.Month, t2.Category1


выводит как во вложении. Как сделать с помощью оконной функции чтобы если идет 2 месяца подряд в gmv 0 то на третий ставилось 1, и далее опять 0 во всех случаях
...
Рейтинг: 0 / 0
07.12.2021, 15:12
    #40118136
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
...
Рейтинг: 0 / 0
07.12.2021, 15:45
    #40118151
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
Romanov-krd

выводит как во вложении. Как сделать с помощью оконной функции чтобы если идет 2 месяца подряд в gmv 0 то на третий ставилось 1, и далее опять 0 во всех случаях


Не нада те "оконной функции". Разучи уже exists.
...
Рейтинг: 0 / 0
07.12.2021, 16:35
    #40118187
Romanov-krd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
aleks222,

я уже почти сделал
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	SELECT	t2.Month , t2.Category1, t2.Segment, t2.Scheme, GMV, ParentID,
	count(*) over (partition by ParentID order by Month asc) as Churn 
	FROM 
		(
			select toYYYYMM(Date) Month, ParentID, GMV, Category1, SupplierSegment as Segment, Scheme
			from DP_GMV_Forecast.test
			where GMV=0 and ParentID=1228517030000 --and Category1='Miscellaneous accessories' and Scheme='FBS'
			group by toYYYYMM(Date), ParentID,Category1, SupplierSegment, Scheme, GMV
		) t2
	group by t2.Month , t2.Category1, t2.Segment, t2.Scheme, GMV, ParentID  settings  allow_experimental_window_functions = 1;



только как сделать чтобы месяцы по порядку разбивало т.е.
201801 -1
201802 - 2

201808 - 1
201812 - 1
...
Рейтинг: 0 / 0
07.12.2021, 16:38
    #40118190
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
судя по "settings allow_experimental_window_functions = 1" это Кликхаус
...
Рейтинг: 0 / 0
07.12.2021, 16:42
    #40118192
Romanov-krd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
komrad,

та одно и то же что mssql
...
Рейтинг: 0 / 0
07.12.2021, 17:15
    #40118204
Romanov-krd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
aleks222,

так он проверяет на вхождение, а мне надо чтобы по порядку месяцев сумма нулевая была
...
Рейтинг: 0 / 0
07.12.2021, 19:06
    #40118243
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
Romanov-krd
aleks222,

так он проверяет на вхождение, а мне надо чтобы по порядку месяцев сумма нулевая была

Наивный чукотский юноша, ежели нет вхождений за три месяца => сумма=0.
ВашЪ КО.
...
Рейтинг: 0 / 0
07.12.2021, 19:47
    #40118259
Romanov-krd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
aleks222
Romanov-krd
aleks222,

так он проверяет на вхождение, а мне надо чтобы по порядку месяцев сумма нулевая была

Наивный чукотский юноша, ежели нет вхождений за три месяца => сумма=0.
ВашЪ КО.


вообще не понятно как это в коде написать
...
Рейтинг: 0 / 0
07.12.2021, 20:14
    #40118265
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать подсчет через оконную функцию
Romanov-krd
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT	t2.Month , t2.Category1, t2.Segment, t2.Scheme, '' as Churn , GMV
FROM 
	(
	select	Month, Category1, Segment,  Scheme,  ParentID, sum(GMV) GMV
	from	(
			select toYYYYMM(Date) Month, ParentID, GMV, Category1, SupplierSegment as Segment, Scheme
			from DP_GMV_Forecast.test
			where GMV=0 and ParentID=35535000 and Category1='Miscellaneous accessories' and Scheme='FBS'
			) t1
	group by ParentID, Month, Category1, Segment,  Scheme
	) t2
	order by t2.Month, t2.Category1


выводит как во вложении. Как сделать с помощью оконной функции чтобы если идет 2 месяца подряд в gmv 0 то на третий ставилось 1, и далее опять 0 во всех случаях


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
declare @t table (
ym int,
gmv int
);


insert into @t values 
(201801, 0),
(201802, 0),
(201803, 0),
(201804, 1),
(201805, 0),
(201806, 0),
(201807, 1),
(201808, 0),
(201809, 0),
(201810, 0),
(201811, 1),
(201812, 1)

select
      case when sum(abs([gmv])) over (order by [ym] rows between 2 preceding and current row) = 0 and
                count(1) over (order by [ym] rows between 2 preceding and current row) = 3 then 1
           else 0
       end as [result],
      [ym],
      [gmv]

from @t
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сделать подсчет через оконную функцию / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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