distinct_over_window.sql 659 B

1234567891011121314151617181920
  1. /* syntax version 1 */
  2. /* postgres can not */
  3. USE plato;
  4. PRAGMA DistinctOverWindow;
  5. $input = (SELECT cast(key AS Int32) AS key, cast(subkey AS Int32) AS subkey, value FROM Input);
  6. SELECT
  7. subkey,
  8. key,
  9. value,
  10. -- assuming ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
  11. count(DISTINCT key) OVER (PARTITION BY subkey ORDER BY key) AS count_by_key,
  12. count(DISTINCT value || "force_preagg") OVER (PARTITION BY subkey ORDER BY key) AS count_by_value,
  13. sum(DISTINCT key) OVER (PARTITION BY subkey ORDER BY key) AS sum,
  14. median(DISTINCT key) OVER (PARTITION BY subkey ORDER BY key) AS median,
  15. FROM $input
  16. ORDER BY subkey, key, value;