Files
email-tracker/external/duckdb/test/sql/pivot/pivot_bigquery.test
2025-10-24 19:21:19 -05:00

99 lines
2.3 KiB
SQL

# name: test/sql/pivot/pivot_bigquery.test
# description: Tests from the bigquery docs
# group: [pivot]
# https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#pivot_operator
# https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#unpivot_operator
# pivot
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE Produce AS
SELECT 'Kale' as product, 51 as sales, 'Q1' as quarter, 2020 as year UNION ALL
SELECT 'Kale', 23, 'Q2', 2020 UNION ALL
SELECT 'Kale', 45, 'Q3', 2020 UNION ALL
SELECT 'Kale', 3, 'Q4', 2020 UNION ALL
SELECT 'Kale', 70, 'Q1', 2021 UNION ALL
SELECT 'Kale', 85, 'Q2', 2021 UNION ALL
SELECT 'Apple', 77, 'Q1', 2020 UNION ALL
SELECT 'Apple', 0, 'Q2', 2020 UNION ALL
SELECT 'Apple', 1, 'Q1', 2021
query IIIIII
SELECT * FROM Produce
PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4'))
ORDER BY ALL
----
Apple 2020 77 0 NULL NULL
Apple 2021 1 NULL NULL NULL
Kale 2020 51 23 45 3
Kale 2021 70 85 NULL NULL
query IIIII
SELECT * FROM
(SELECT product, sales, quarter FROM Produce)
PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4'))
ORDER BY ALL
----
Apple 78 0 NULL NULL
Kale 121 108 45 3
query IIII
SELECT * FROM
(SELECT product, sales, quarter FROM Produce)
PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3'))
ORDER BY ALL
----
Apple 78 0 NULL
Kale 121 108 45
query III
SELECT * FROM
(SELECT sales, quarter FROM Produce)
PIVOT(SUM(sales) FOR quarter IN ('Q1', 'Q2', 'Q3'))
ORDER BY ALL
----
199 108 45
query IIIII
SELECT * FROM
(SELECT product, sales, quarter FROM Produce)
PIVOT(SUM(sales) total_sales, COUNT(*) num_records FOR quarter IN ('Q1', 'Q2'))
ORDER BY ALL
----
Apple 78 2 0 1
Kale 121 2 108 2
statement ok
CREATE OR REPLACE TABLE Produce AS
SELECT 'Kale' as product, 51 as Q1, 23 as Q2, 45 as Q3, 3 as Q4 UNION ALL
SELECT 'Apple', 77, 0, 25, 2
query III
SELECT * FROM Produce
UNPIVOT(sales FOR quarter IN (Q1, Q2, Q3, Q4))
ORDER BY ALL
----
Apple Q1 77
Apple Q2 0
Apple Q3 25
Apple Q4 2
Kale Q1 51
Kale Q2 23
Kale Q3 45
Kale Q4 3
query IIII
SELECT product, first_half_sales, second_half_sales, semesters FROM Produce
UNPIVOT(
(first_half_sales, second_half_sales)
FOR semesters
IN ((Q1, Q2) AS 'semester_1', (Q3, Q4) AS 'semester_2'))
----
Kale 51 23 semester_1
Kale 45 3 semester_2
Apple 77 0 semester_1
Apple 25 2 semester_2