You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support unparsing plans with both Aggregation and Window functions (#12705)
* Support unparsing plans with both Aggregation and Window functions (#35)
* Fix unparsing for aggregation grouping sets
* Add test for grouping set unparsing
* Update datafusion/sql/src/unparser/utils.rs
Co-authored-by: Jax Liu <[email protected]>
* Update datafusion/sql/src/unparser/utils.rs
Co-authored-by: Jax Liu <[email protected]>
* Update
* More tests
---------
Co-authored-by: Jax Liu <[email protected]>
"WITH w1 AS (SELECT 'a' as col), w2 AS (SELECT 'b' as col), w3 as (SELECT 'c' as col) SELECT * FROM w1 UNION ALL SELECT * FROM w2 UNION ALL SELECT * FROM w3",
150
150
"WITH w1 AS (SELECT 'a' as col), w2 AS (SELECT 'b' as col), w3 as (SELECT 'c' as col), w4 as (SELECT 'd' as col) SELECT * FROM w1 UNION ALL SELECT * FROM w2 UNION ALL SELECT * FROM w3 UNION ALL SELECT * FROM w4",
151
151
"WITH w1 AS (SELECT 'a' as col), w2 AS (SELECT 'b' as col) SELECT * FROM w1 JOIN w2 ON w1.col = w2.col UNION ALL SELECT * FROM w1 JOIN w2 ON w1.col = w2.col UNION ALL SELECT * FROM w1 JOIN w2 ON w1.col = w2.col",
152
+
r#"SELECT id, first_name,
153
+
SUM(id) AS total_sum,
154
+
SUM(id) OVER (PARTITION BY first_name ROWS BETWEEN 5 PRECEDING AND 2 FOLLOWING) AS moving_sum,
155
+
MAX(SUM(id)) OVER (PARTITION BY first_name ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS max_total
156
+
FROM person JOIN orders ON person.id = orders.customer_id GROUP BY id, first_name"#,
157
+
r#"SELECT id, first_name,
158
+
SUM(id) AS total_sum,
159
+
SUM(id) OVER (PARTITION BY first_name ROWS BETWEEN 5 PRECEDING AND 2 FOLLOWING) AS moving_sum,
160
+
MAX(SUM(id)) OVER (PARTITION BY first_name ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS max_total
161
+
FROM (SELECT id, first_name from person) person JOIN (SELECT customer_id FROM orders) orders ON person.id = orders.customer_id GROUP BY id, first_name"#,
162
+
r#"SELECT id, first_name, last_name, customer_id, SUM(id) AS total_sum
163
+
FROM person
164
+
JOIN orders ON person.id = orders.customer_id
165
+
GROUP BY ROLLUP(id, first_name, last_name, customer_id)"#,
166
+
r#"SELECT id, first_name, last_name,
167
+
SUM(id) AS total_sum,
168
+
COUNT(*) AS total_count,
169
+
SUM(id) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total
170
+
FROM person
171
+
GROUP BY GROUPING SETS ((id, first_name, last_name), (first_name, last_name), (last_name))"#,
152
172
];
153
173
154
174
// For each test sql string, we transform as follows:
0 commit comments