top_by.sql 564 B

123456789101112131415161718192021
  1. /* syntax version 1 */
  2. /* postgres can not */
  3. $t = AsList(
  4. AsStruct(1 as key, 101 as value),
  5. AsStruct(6 as key, 34 as value),
  6. AsStruct(4 as key, 22 as value),
  7. AsStruct(2 as key, 256 as value),
  8. AsStruct(7 as key, 111 as value)
  9. );
  10. $f = AGGREGATION_FACTORY("topby", 3);
  11. select Yql::Aggregate($t, AsTuple(), AsTuple(AsTuple(AsAtom("res"),
  12. $f(ListItemType(TypeOf($t)), ($z)->{ return AsTuple($z.value, $z.key) }))));
  13. use plato;
  14. insert into @a select AsTuple(value, key) as vk from as_table($t);
  15. commit;
  16. select AGGREGATE_BY(vk, $f) from @a;