powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как найти день, когда за 24 часа была потрачена определенная сумма
13 сообщений из 13, страница 1 из 1
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020327
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

есть таблица с датами и суммами транзакций.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create table #tr (RequestDate DateTime, Amount float)  
insert into #tr
values ( '8/31/2010 7:29',  20),
('8/31/2010 7:59',  25),
('9/1/2010 14:36',  40),
('9/1/2010 19:11',  40),
('9/2/2010 5:36',  40),
('9/6/2010 17:46',  25)



Как можно найти день, когда за 24 часа было сделано транзакций на сумму больше чем 100? То есть в данном примере есть такой день - 9.02.2010, так как с 5:36 9.01.2010 до 5.36 9.02.2010 в сумме транзакций на 120

Пока приходит в голову только группировка по дням, но нужно найти 24 часа не только с 00:00 до 00:00

Код: sql
1.
2.
3.
4.
select convert (varchar(10), RequestDate,121) as Date, sum(Amount) as Sum
from #tr
group by convert (varchar(10), RequestDate,121)
having sum(Amount)>=100
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020337
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Luna17,

самоджойн с sum
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020338
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Luna17,

Так день или интервал в 24 часа?

упд. Однажды и в sql server сделают наконец-то нормальный range between interval ...
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020351
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,
мне нужно знать день, когда было в течение 24 достигнута граница 100. Т.е 24 часа могут начинаться в любой момент, а день нужно знать для статистики, чтобы посмотреть когда больше достигают этой черты
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020352
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, в общем неважно, мне главное найти вот эти 24 часа, сколько таких было
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020353
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Luna17
найти день

Luna17
найти 24 часа не только с 00:00 до 00:00

Ты уж определись. Если у тебя 24 часа это с полудня среды до полудня четверга - то это какой "день" будет?
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020354
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик,

можете подробней написать, как это с sum?
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020356
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat, четверг
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020361
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Luna17,

для каждой записи джойните в интервале 24 часа назад или вперед (сами смотрите),
для наджойненного считаете sum,
применяете условие в having

всё, куда уж подробнее...
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020363
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Luna17,
начиная с этой записи, в течении 24 часов было 120
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select 
t2.RequestDate, t2.Amount, tp.suma from #tr t2
cross apply ( 
	select sum(t3.Amount) as suma 
		from #tr t3 
			where t3.RequestDate>=t2.RequestDate and t3.RequestDate<= dateadd(hh,24,t2.RequestDate)
		) tp
where tp.suma =120
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020370
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Luna17
можете подробней написать, как это с sum?

Можем.

Код: 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.
declare @trans table (
  dt datetime not null,
  amount money not null
)

insert @trans
  select '1/1/2020 10:43', 10.23
  union
  select '1/1/2020 23:07', 100
  union
  select '1/2/2020 9:19', 980
  union
  select '1/3/2020 15:13', 100500
  union
  select '9/8/1973 9:00', 777

;with
time_points as (select distinct dt from @trans),
aggregated_sums as (
select time_points.dt, sum(t.amount) amount from
  time_points cross join @trans t
  where t.dt between dateadd(HH, -24, time_points.dt) and time_points.dt
  group by time_points.dt
  having sum(t.amount) > 1000
)
select cast(dt as date) from aggregated_sums

...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020399
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик, спасибо, получилось)
...
Рейтинг: 0 / 0
Как найти день, когда за 24 часа была потрачена определенная сумма
    #40020400
Luna17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,
спасибо!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как найти день, когда за 24 часа была потрачена определенная сумма
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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