I'm migrate some BigQuery code to snowflake, and I'm having a little trouble to using Window function with range. This is because on Snowflake range sliding window frames is not supported. I need to use "RANGE BETWEEN 2 PRECEDING AND CURRENT ROW" logic any thoughts on how we can replicate this logic on snowflake?
WITH base AS (
SELECT * FROM (
SELECT 7 AS num
UNION ALL SELECT 2 AS num
UNION ALL SELECT 2 AS num
UNION ALL SELECT 5 AS num
UNION ALL SELECT 3 AS num
UNION ALL SELECT 7 AS num
UNION ALL SELECT 7 AS num
))
SELECT
num,
COUNT(*) OVER (ORDER BY num ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS row_count,
COUNT(*) OVER (ORDER BY num RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) AS range_count,
SUM(num) OVER (ORDER BY num ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS row_sum,
SUM(num) OVER (ORDER BY num RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) AS range_sum
FROM base
ORDER BY num
Expecting result:enter image description here
