Window.sql 1.3 KB

123456789101112131415161718192021222324252627282930
  1. /* syntax version 1 */
  2. USE plato;
  3. $src = [
  4. <|x:1, idx:1|>,
  5. <|x:7, idx:2|>,
  6. <|x:5, idx:3|>,
  7. <|x:4, idx:4|>,
  8. <|x:3, idx:5|>,
  9. <|x:11, idx:6|>,
  10. <|x:2, idx:7|>,
  11. <|x:11, idx:8|>,
  12. <|x:0, idx:9|>,
  13. <|x:6, idx:10|>,
  14. ];
  15. INSERT INTO @src
  16. SELECT * FROM AS_TABLE($src) ORDER BY idx;
  17. COMMIT;
  18. SELECT idx, x, TOP(x, 3) OVER (ORDER BY idx ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as upcr_top FROM @src ORDER BY idx;
  19. SELECT idx, x, TOP(x, 3) OVER () as upuf_top FROM @src ORDER BY idx;
  20. SELECT idx, x, TOP(x, 3) OVER (ORDER BY idx ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as cruf_top FROM @src ORDER BY idx;
  21. SELECT idx, x, TOP(x, 3) OVER (ORDER BY idx ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) as cr22_top FROM @src ORDER BY idx;
  22. SELECT idx, x, BOTTOM(x, 3) OVER (ORDER BY idx ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as upcr_bottom FROM @src ORDER BY idx;
  23. SELECT idx, x, BOTTOM(x, 3) OVER () as upuf_bottom FROM @src ORDER BY idx;
  24. SELECT idx, x, BOTTOM(x, 3) OVER (ORDER BY idx ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as cruf_bottom FROM @src ORDER BY idx;
  25. SELECT idx, x, BOTTOM(x, 3) OVER (ORDER BY idx ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) as cr22_botto FROM @src ORDER BY idx;