LINUX.ORG.RU

PostgreSQL и агрегация данных

 , , ,


0

3

Приветствую, ЛОР!

Помогите, пжлста, составить запрос.

Есть таблица, вида:

id: pk
some_id: integer
clicks: integer
...

Нужно посчитать для каждого some_id (т.е. сгруппировать по some_id) сумму первых 10 clicks если количество clicks для some_id > 10;

Сложная для меня агрегация получается, уже битый час сижу, не могу допетрить...

ПоможИте, чем можИте, бывалые SQL-щики. С меня лучи бобра.


select t.id, t_r.some_id, sum(t.clicks) as sum_clicks
(
  select t1.some_id, max(t2.id) as id, count(t2.id) as rows_count
  from table as t1
  left join table as t2
  on t2.id <= t1.id
  group by t1.some_id
  having count(t2.id) <= 10
) as t_r
inner join table as t
on t_r.some_id = t.some_id
  and t.id <= t_r.id
group by t.id, t_r.some_id
bvn13 ★★★★★ ()