OneCompiler

ivideon

Составьте запрос для получения списка клиентов с возрастом выше среднего

ID FirstName Age
1 Alexey 40
2 Sergey 30
3 Vladimir null
4 Oleg 50

;with customer as 
(
select 1 as id, 'Alexey' as first_name, 40 as age
union all 
select 2 as id, 'Sergey' as first_name, 30 as age
union all 
select 3 as id, 'Vladimir' as first_name, null as age
union all 
select 4 as id, 'Oleg' as first_name, 50 as age
), cte as
(
select avg(age) middle, sum(age), count(age)
from customer
)
select *
from customer, cte
where age > middle

Есть таблица t1, с полями:

  • id – идентификатор клиента,
  • data – дата транзакции,
  • tran – сумма транзакций клиента за день.
Iddatatran
514201.10.202487 505
514202.10.202416 556
514203.10.202431 794
464401.10.20241 601
464402.10.202415 151
464403.10.202478 421
464404.10.202419 676
585201.10.202492 020
585202.10.202424 202
381901.10.202469 589
381902.10.20244 614
381903.10.202453 346

Вывести:

  1. Трех клиентов, имеющих максимальные дневные транзакции (id, data, tran)
with cte as
(
select *, row_number() over (partition by data order by tran desc) rn
from t1
)
select *
from cte
where rn <= 3
  1. Трех клиентов с максимальным ростом транзакций по отношению к предыдущему дню.
with cte as
(
select *, lag(tran) over (partition by Id order by tran desc) lag_tran
from t1
)
select top 3 with ties *
from cte
order by (tran - lag_tran) desc