win_aggregate_check01.sqlx 681 B

123456789101112131415161718192021222324
  1. /* postgres can not */
  2. use plato;
  3. $data = (select cast(key as uint32) as age, cast(subkey as uint32) as region, value as name from Input);
  4. --insert into Output
  5. select
  6. prefix,
  7. region,
  8. region + 2 as region_2,
  9. age, -- use direct value in aggregation impossible
  10. avg(age) as avg_age,
  11. sum(age) as sum_age,
  12. sum(avg(age)) over w1 as sum_by_avg_age,
  13. lag(region) over w1 as prev_region,
  14. some(prefix) over w1 as prefix_list,
  15. lag(prefix) over w1 as prev_prefix_list,
  16. lag(some(name)) over w1 as prev_region_list,
  17. 'test'
  18. from $data
  19. group by region, SUBSTRING(name,0,1) as prefix
  20. window w1 as (partition by region order by avg(age) desc)
  21. order by region, avg_age desc
  22. ;