powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Продажи
3 сообщений из 3, страница 1 из 1
Продажи
    #40135435
Anturaj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть таблица в которой есть атрибуты: date(дата продаж) и qnt(количество продаж).
Как определить средние количества продаж за предыдущие 14 дней у каждой даты?
...
Рейтинг: 0 / 0
Продажи
    #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
Продажи
    #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
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Продажи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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