Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Продажи / 3 сообщений из 3, страница 1 из 1
20.02.2022, 22:56
    #40135435
Anturaj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продажи
Здравствуйте!
Есть таблица в которой есть атрибуты: date(дата продаж) и qnt(количество продаж).
Как определить средние количества продаж за предыдущие 14 дней у каждой даты?
...
Рейтинг: 0 / 0
20.02.2022, 23:19
    #40135437
3unknown
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продажи
Код: 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.
DROP TABLE IF EXISTS #Sales;
CREATE TABLE #Sales (
  [t_date]    datetime,
  [quant] float
  )
;

insert #Sales
values('20210101',10),
('20210102',25),
('20210103',15),
('20210104',18),
('20210105',14),
('20210106',10),
('20210107',6),
('20210108',20),
('20210109',10),
('20210110',13),
('20210111',19),
('20210112',12),
('20210113',25),
('20210114',23),
('20210115',6)


select *,
avg(quant) over(order by t_date desc rows BETWEEN 14 PRECEDING and CURRENT ROW) AVG_QUANT
from #Sales
...
Рейтинг: 0 / 0
21.02.2022, 00:51
    #40135447
ValK412
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продажи
3unknown,
медленнее, думаю, чем вариант 3unknown. Подходит для календарных дней
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
DROP TABLE  #Sales;
CREATE TABLE #Sales (  [t_date]    datetime,  [quant] float  );

insert #Sales
values('20210101',10),
--('20210102',25),
--('20210103',15),
('20210104',18),('20210105',14),('20210106',10),('20210107',6),('20210108',20),
--('20210109',10),
--('20210110',13),
('20210111',19),('20210112',12),('20210113',25),('20210114',23),('20210115',23),
--('20210116',23),
--('20210117',23),
('20210118',25),('20210119',23),('20210120',23),('20210121',25),('20210122',23),
--('20210123',23),
--('20210124',6)
('20210123',23)


select *
   , (select avg(quant) from #Sales s2 where  s2.t_date<=#Sales.t_date and datediff(d,s2.t_date,#Sales.t_date)<14) as avg14_v1 -- включая текущий день
   , (select avg(quant) from #Sales s2 where s2.t_date<#Sales.t_date and datediff(d,s2.t_date,#Sales.t_date)<=14) as avg14_v2 -- не включая текущий день
from #Sales
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Продажи / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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