Skip to content

Commit

Permalink
Minor: Improve aggregate test coverage more (#6952)
Browse files Browse the repository at this point in the history
  • Loading branch information
alamb authored Jul 19, 2023
1 parent 1810a15 commit 44008d7
Showing 1 changed file with 50 additions and 18 deletions.
68 changes: 50 additions & 18 deletions datafusion/core/tests/sqllogictests/test_files/aggregate.slt
Original file line number Diff line number Diff line change
Expand Up @@ -2048,69 +2048,101 @@ CREATE TABLE test_table (c1 INT, c2 INT, c3 INT)

# Inserting data
statement ok
INSERT INTO test_table VALUES (1, 10, 50), (1, 20, 60), (2, 10, 70), (2, 20, 80), (3, 10, NULL)
INSERT INTO test_table VALUES
(1, 10, 50),
(1, 20, 60),
(2, 10, 70),
(2, 20, 80),
(3, 10, NULL)

# query_group_by_with_filter
query II rowsort
SELECT c1, SUM(c2) FILTER (WHERE c2 >= 20) as result FROM test_table GROUP BY c1
query III rowsort
SELECT
c1,
SUM(c2) FILTER (WHERE c2 >= 20),
SUM(c2) FILTER (WHERE c2 < 1) -- no rows pass filter, so the output should be NULL
FROM test_table GROUP BY c1
----
1 20
2 20
3 NULL
1 20 NULL
2 20 NULL
3 NULL NULL

# query_group_by_avg_with_filter
query IR rowsort
SELECT c1, AVG(c2) FILTER (WHERE c2 >= 20) AS avg_c2 FROM test_table GROUP BY c1
query IRR rowsort
SELECT
c1,
AVG(c2) FILTER (WHERE c2 >= 20),
AVG(c2) FILTER (WHERE c2 < 1) -- no rows pass filter, so output should be null
FROM test_table GROUP BY c1
----
1 20
2 20
3 NULL
1 20 NULL
2 20 NULL
3 NULL NULL

# query_group_by_with_multiple_filters
query IIR rowsort
SELECT c1, SUM(c2) FILTER (WHERE c2 >= 20) AS sum_c2, AVG(c3) FILTER (WHERE c3 <= 70) AS avg_c3 FROM test_table GROUP BY c1
SELECT
c1,
SUM(c2) FILTER (WHERE c2 >= 20) AS sum_c2,
AVG(c3) FILTER (WHERE c3 <= 70) AS avg_c3
FROM test_table GROUP BY c1
----
1 20 55
2 20 70
3 NULL NULL

# query_group_by_distinct_with_filter
query II rowsort
SELECT c1, COUNT(DISTINCT c2) FILTER (WHERE c2 >= 20) AS distinct_c2_count FROM test_table GROUP BY c1
SELECT
c1,
COUNT(DISTINCT c2) FILTER (WHERE c2 >= 20) AS distinct_c2_count
FROM test_table GROUP BY c1
----
1 1
2 1
3 0

# query_without_group_by_with_filter
query I rowsort
SELECT SUM(c2) FILTER (WHERE c2 >= 20) AS sum_c2 FROM test_table
SELECT
SUM(c2) FILTER (WHERE c2 >= 20) AS sum_c2
FROM test_table
----
40

# count_without_group_by_with_filter
query I rowsort
SELECT COUNT(c2) FILTER (WHERE c2 >= 20) AS count_c2 FROM test_table
SELECT
COUNT(c2) FILTER (WHERE c2 >= 20) AS count_c2
FROM test_table
----
2

# query_with_and_without_filter
query III rowsort
SELECT c1, SUM(c2) FILTER (WHERE c2 >= 20) as result, SUM(c2) as result_no_filter FROM test_table GROUP BY c1;
SELECT
c1,
SUM(c2) FILTER (WHERE c2 >= 20) as result,
SUM(c2) as result_no_filter
FROM test_table GROUP BY c1;
----
1 20 30
2 20 30
3 NULL 10

# query_filter_on_different_column_than_aggregate
query I rowsort
select sum(c1) FILTER (WHERE c2 < 30) from test_table;
select
sum(c1) FILTER (WHERE c2 < 30)
FROM test_table;
----
9

# query_test_empty_filter
query I rowsort
SELECT SUM(c2) FILTER (WHERE c2 >= 20000000) AS sum_c2 FROM test_table;
SELECT
SUM(c2) FILTER (WHERE c2 >= 20000000) AS sum_c2
FROM test_table;
----
NULL

Expand Down

0 comments on commit 44008d7

Please sign in to comment.