From 6abec1186823ca577e9881c88350517b2a99bea9 Mon Sep 17 00:00:00 2001 From: knassre-bodo Date: Tue, 17 Jun 2025 12:22:40 -0400 Subject: [PATCH 01/46] Enable de-correlation of pure semi/anti joins, including pullup for pure semi --- pydough/conversion/hybrid_decorrelater.py | 35 ++-- tests/test_plan_refsols/correl_10.txt | 12 +- tests/test_plan_refsols/correl_11.txt | 13 +- tests/test_plan_refsols/correl_12.txt | 20 +- tests/test_plan_refsols/correl_13.txt | 9 +- tests/test_plan_refsols/correl_14.txt | 31 +-- tests/test_plan_refsols/correl_15.txt | 37 ++-- tests/test_plan_refsols/correl_16.txt | 15 +- tests/test_plan_refsols/correl_3.txt | 17 +- tests/test_plan_refsols/correl_4.txt | 16 +- tests/test_plan_refsols/correl_5.txt | 17 +- tests/test_plan_refsols/correl_7.txt | 12 +- .../epoch_num_predawn_cold_war.txt | 12 +- .../epoch_users_most_cold_war_searches.txt | 13 +- tests/test_plan_refsols/tpch_q21.txt | 31 +-- .../defog_dealership_adv12_ansi.sql | 60 ++---- .../defog_dealership_adv12_sqlite.sql | 60 ++---- .../epoch_num_predawn_cold_war_ansi.sql | 39 ++-- .../epoch_num_predawn_cold_war_sqlite.sql | 39 ++-- ...poch_users_most_cold_war_searches_ansi.sql | 69 ++----- ...ch_users_most_cold_war_searches_sqlite.sql | 71 ++----- tests/test_sql_refsols/tpch_q21_ansi.sql | 177 ++++++++++++------ tests/test_sql_refsols/tpch_q21_sqlite.sql | 177 ++++++++++++------ 23 files changed, 519 insertions(+), 463 deletions(-) diff --git a/pydough/conversion/hybrid_decorrelater.py b/pydough/conversion/hybrid_decorrelater.py index 1d388594e..0600234bf 100644 --- a/pydough/conversion/hybrid_decorrelater.py +++ b/pydough/conversion/hybrid_decorrelater.py @@ -338,7 +338,11 @@ def decorrelate_child( child.subtree.join_keys = new_join_keys child.subtree.general_join_condition = None # If aggregating, update the aggregation keys accordingly. - if child.connection_type.is_aggregation: + is_faux_agg: bool = ( + child.connection_type in (ConnectionType.SEMI, ConnectionType.ANTI) + and not child.subtree.is_singular() + ) + if child.connection_type.is_aggregation or is_faux_agg: child.subtree.agg_keys = new_agg_keys # If the child is such that we don't need to keep rows from the parent # without a match, replace the parent & its ancestors with a @@ -348,6 +352,12 @@ def decorrelate_child( if child.connection_type.is_semi and child_idx == min( old_parent.correlated_children ): + if child.connection_type == ConnectionType.SEMI: + child.connection_type = ( + ConnectionType.AGGREGATION_ONLY_MATCH + if is_faux_agg + else ConnectionType.SINGULAR_ONLY_MATCH + ) old_parent._parent = None old_parent.pipeline[0] = HybridChildPullUp( old_parent, child_idx, child_height - skipped_levels @@ -392,9 +402,14 @@ def decorrelate_hybrid_tree(self, hybrid: HybridTree) -> HybridTree: match child.connection_type: case ( ConnectionType.SINGULAR - | ConnectionType.SINGULAR_ONLY_MATCH | ConnectionType.AGGREGATION + | ConnectionType.SEMI | ConnectionType.AGGREGATION_ONLY_MATCH + | ConnectionType.SINGULAR_ONLY_MATCH + | ConnectionType.ANTI + | ConnectionType.NO_MATCH_SINGULAR + | ConnectionType.NO_MATCH_AGGREGATION + | ConnectionType.NO_MATCH_NDISTINCT ): if original_parent is None: original_parent = copy.deepcopy(hybrid) @@ -413,20 +428,14 @@ def decorrelate_hybrid_tree(self, hybrid: HybridTree) -> HybridTree: skipped_levels, preserved_steps, ) - case ConnectionType.NDISTINCT | ConnectionType.NDISTINCT_ONLY_MATCH: - raise NotImplementedError( - f"PyDough does not yet support correlated references with the {child.connection_type.name} pattern." - ) case ( - ConnectionType.SEMI - | ConnectionType.ANTI + ConnectionType.NDISTINCT + | ConnectionType.NDISTINCT_ONLY_MATCH | ConnectionType.NO_MATCH_SINGULAR - | ConnectionType.NO_MATCH_AGGREGATION - | ConnectionType.NO_MATCH_NDISTINCT ): - # These patterns do not require decorrelation since they - # are supported via correlated SEMI/ANTI joins. - pass + raise NotImplementedError( + f"PyDough does not yet support correlated references with the {child.connection_type.name} pattern." + ) child_idx -= 1 # Iterate across all the children and recursively decorrelate them. for child in hybrid.children: diff --git a/tests/test_plan_refsols/correl_10.txt b/tests/test_plan_refsols/correl_10.txt index 3c77f6387..7968893ea 100644 --- a/tests/test_plan_refsols/correl_10.txt +++ b/tests/test_plan_refsols/correl_10.txt @@ -1,5 +1,7 @@ -ROOT(columns=[('name', name), ('rname', NULL_2)], orderings=[(name):asc_first]) - JOIN(conditions=[t0.region_key == t1.key], types=['anti'], columns={'NULL_2': None:unknown, 'name': t0.name}, correl_name='corr1') - SCAN(table=tpch.NATION, columns={'name': n_name, 'nation_name': n_name, 'region_key': n_regionkey}) - FILTER(condition=SLICE(name, None:unknown, 1:numeric, None:unknown) == SLICE(corr1.nation_name, None:unknown, 1:numeric, None:unknown), columns={'key': key}) - SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'name': r_name}) +ROOT(columns=[('name', name), ('rname', NULL_4)], orderings=[(name):asc_first]) + JOIN(conditions=[t0.key == t1.key], types=['anti'], columns={'NULL_4': None:unknown, 'name': t0.name}) + SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'name': n_name}) + FILTER(condition=SLICE(name_3, None:unknown, 1:numeric, None:unknown) == SLICE(nation_name, None:unknown, 1:numeric, None:unknown), columns={'key': key}) + JOIN(conditions=[t0.region_key == t1.key], types=['inner'], columns={'key': t0.key, 'name_3': t1.name, 'nation_name': t0.nation_name}) + SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'nation_name': n_name, 'region_key': n_regionkey}) + SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'name': r_name}) diff --git a/tests/test_plan_refsols/correl_11.txt b/tests/test_plan_refsols/correl_11.txt index f754526d0..c77e0421c 100644 --- a/tests/test_plan_refsols/correl_11.txt +++ b/tests/test_plan_refsols/correl_11.txt @@ -1,6 +1,7 @@ -ROOT(columns=[('brand', brand)], orderings=[(brand):asc_first]) - JOIN(conditions=[t0.brand == t1.brand], types=['semi'], columns={'brand': t0.brand}, correl_name='corr1') - AGGREGATE(keys={'brand': brand}, aggregations={'avg_price': AVG(retail_price)}) - SCAN(table=tpch.PART, columns={'brand': p_brand, 'retail_price': p_retailprice}) - FILTER(condition=retail_price > 1.4:numeric * corr1.avg_price, columns={'brand': brand}) - SCAN(table=tpch.PART, columns={'brand': p_brand, 'retail_price': p_retailprice}) +ROOT(columns=[('brand', brand_4)], orderings=[(brand_4):asc_first]) + AGGREGATE(keys={'brand': brand}, aggregations={'brand_4': ANYTHING(brand)}) + FILTER(condition=retail_price > 1.4:numeric * avg_price, columns={'brand': brand}) + JOIN(conditions=[t0.brand == t1.brand], types=['inner'], columns={'avg_price': t0.avg_price, 'brand': t0.brand, 'retail_price': t1.retail_price}) + AGGREGATE(keys={'brand': brand}, aggregations={'avg_price': AVG(retail_price)}) + SCAN(table=tpch.PART, columns={'brand': p_brand, 'retail_price': p_retailprice}) + SCAN(table=tpch.PART, columns={'brand': p_brand, 'retail_price': p_retailprice}) diff --git a/tests/test_plan_refsols/correl_12.txt b/tests/test_plan_refsols/correl_12.txt index d51698fef..a2df01384 100644 --- a/tests/test_plan_refsols/correl_12.txt +++ b/tests/test_plan_refsols/correl_12.txt @@ -1,9 +1,11 @@ -ROOT(columns=[('brand', brand)], orderings=[(brand):asc_first]) - JOIN(conditions=[t0.brand == t1.brand], types=['semi'], columns={'brand': t0.brand}, correl_name='corr1') - JOIN(conditions=[True:bool], types=['inner'], columns={'brand': t1.brand, 'brand_avg_price': t1.brand_avg_price, 'global_avg_price': t0.global_avg_price}) - AGGREGATE(keys={}, aggregations={'global_avg_price': AVG(retail_price)}) - SCAN(table=tpch.PART, columns={'retail_price': p_retailprice}) - AGGREGATE(keys={'brand': brand}, aggregations={'brand_avg_price': AVG(retail_price)}) - SCAN(table=tpch.PART, columns={'brand': p_brand, 'retail_price': p_retailprice}) - FILTER(condition=retail_price < corr1.global_avg_price & size < 3:numeric & retail_price > corr1.brand_avg_price, columns={'brand': brand}) - SCAN(table=tpch.PART, columns={'brand': p_brand, 'retail_price': p_retailprice, 'size': p_size}) +ROOT(columns=[('brand', brand_4)], orderings=[(brand_4):asc_first]) + AGGREGATE(keys={'brand': brand}, aggregations={'brand_4': ANYTHING(brand)}) + FILTER(condition=retail_price < global_avg_price & retail_price > brand_avg_price, columns={'brand': brand}) + JOIN(conditions=[t0.brand == t1.brand], types=['inner'], columns={'brand': t0.brand, 'brand_avg_price': t0.brand_avg_price, 'global_avg_price': t0.global_avg_price, 'retail_price': t1.retail_price}) + JOIN(conditions=[True:bool], types=['inner'], columns={'brand': t1.brand, 'brand_avg_price': t1.brand_avg_price, 'global_avg_price': t0.global_avg_price}) + AGGREGATE(keys={}, aggregations={'global_avg_price': AVG(retail_price)}) + SCAN(table=tpch.PART, columns={'retail_price': p_retailprice}) + AGGREGATE(keys={'brand': brand}, aggregations={'brand_avg_price': AVG(retail_price)}) + SCAN(table=tpch.PART, columns={'brand': p_brand, 'retail_price': p_retailprice}) + FILTER(condition=size < 3:numeric, columns={'brand': brand, 'retail_price': retail_price}) + SCAN(table=tpch.PART, columns={'brand': p_brand, 'retail_price': p_retailprice, 'size': p_size}) diff --git a/tests/test_plan_refsols/correl_13.txt b/tests/test_plan_refsols/correl_13.txt index 0a3b8c3d2..3321a1cf7 100644 --- a/tests/test_plan_refsols/correl_13.txt +++ b/tests/test_plan_refsols/correl_13.txt @@ -5,7 +5,8 @@ ROOT(columns=[('n', n)], orderings=[]) FILTER(condition=nation_key <= 3:numeric, columns={'key': key}) SCAN(table=tpch.SUPPLIER, columns={'key': s_suppkey, 'nation_key': s_nationkey}) AGGREGATE(keys={'supplier_key': supplier_key}, aggregations={'agg_1': COUNT()}) - JOIN(conditions=[t0.part_key == t1.key], types=['semi'], columns={'supplier_key': t0.supplier_key}, correl_name='corr2') - SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey, 'supply_cost': ps_supplycost}) - FILTER(condition=retail_price < corr2.supply_cost * 1.5:numeric & STARTSWITH(container, 'SM':string), columns={'key': key}) - SCAN(table=tpch.PART, columns={'container': p_container, 'key': p_partkey, 'retail_price': p_retailprice}) + FILTER(condition=retail_price < supply_cost * 1.5:numeric, columns={'supplier_key': supplier_key}) + JOIN(conditions=[t0.part_key == t1.key], types=['inner'], columns={'retail_price': t1.retail_price, 'supplier_key': t0.supplier_key, 'supply_cost': t0.supply_cost}) + SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey, 'supply_cost': ps_supplycost}) + FILTER(condition=STARTSWITH(container, 'SM':string), columns={'key': key, 'retail_price': retail_price}) + SCAN(table=tpch.PART, columns={'container': p_container, 'key': p_partkey, 'retail_price': p_retailprice}) diff --git a/tests/test_plan_refsols/correl_14.txt b/tests/test_plan_refsols/correl_14.txt index b6b386830..98a93b545 100644 --- a/tests/test_plan_refsols/correl_14.txt +++ b/tests/test_plan_refsols/correl_14.txt @@ -1,16 +1,19 @@ ROOT(columns=[('n', n)], orderings=[]) AGGREGATE(keys={}, aggregations={'n': COUNT()}) - JOIN(conditions=[t0.key == t1.supplier_key], types=['semi'], columns={}, correl_name='corr3') - JOIN(conditions=[t0.key == t1.supplier_key], types=['inner'], columns={'key': t0.key, 'supplier_avg_price': t1.supplier_avg_price}) - FILTER(condition=account_balance < 1000:numeric & nation_key == 19:numeric, columns={'key': key}) - SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal, 'key': s_suppkey, 'nation_key': s_nationkey}) - PROJECT(columns={'supplier_avg_price': expr_0 / expr_1, 'supplier_key': supplier_key}) - AGGREGATE(keys={'supplier_key': supplier_key}, aggregations={'expr_0': SUM(expr_0), 'expr_1': SUM(expr_1)}) - JOIN(conditions=[t0.part_key == t1.key], types=['inner'], columns={'expr_0': t1.expr_0, 'expr_1': t1.expr_1, 'supplier_key': t0.supplier_key}) - SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey}) - PROJECT(columns={'expr_0': retail_price, 'expr_1': IFF(PRESENT(retail_price), 1:numeric, 0:numeric), 'key': key}) - SCAN(table=tpch.PART, columns={'key': p_partkey, 'retail_price': p_retailprice}) - JOIN(conditions=[t0.part_key == t1.key], types=['semi'], columns={'supplier_key': t0.supplier_key}, correl_name='corr2') - SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey, 'supply_cost': ps_supplycost}) - FILTER(condition=retail_price < corr2.supply_cost * 1.5:numeric & retail_price < corr3.supplier_avg_price & container == 'LG DRUM':string, columns={'key': key}) - SCAN(table=tpch.PART, columns={'container': p_container, 'key': p_partkey, 'retail_price': p_retailprice}) + AGGREGATE(keys={'agg_8': agg_8}, aggregations={}) + AGGREGATE(keys={'key': key, 'part_key': part_key, 'supplier_key': supplier_key}, aggregations={'agg_8': ANYTHING(key)}) + FILTER(condition=retail_price < supply_cost * 1.5:numeric & retail_price < supplier_avg_price, columns={'key': key, 'part_key': part_key, 'supplier_key': supplier_key}) + JOIN(conditions=[t0.part_key == t1.key], types=['inner'], columns={'key': t0.key, 'part_key': t0.part_key, 'retail_price': t1.retail_price, 'supplier_avg_price': t0.supplier_avg_price, 'supplier_key': t0.supplier_key, 'supply_cost': t0.supply_cost}) + JOIN(conditions=[t0.key == t1.supplier_key], types=['inner'], columns={'key': t0.key, 'part_key': t1.part_key, 'supplier_avg_price': t0.supplier_avg_price, 'supplier_key': t1.supplier_key, 'supply_cost': t1.supply_cost}) + JOIN(conditions=[t0.key == t1.supplier_key], types=['inner'], columns={'key': t0.key, 'supplier_avg_price': t1.supplier_avg_price}) + FILTER(condition=account_balance < 1000:numeric & nation_key == 19:numeric, columns={'key': key}) + SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal, 'key': s_suppkey, 'nation_key': s_nationkey}) + PROJECT(columns={'supplier_avg_price': expr_0 / expr_1, 'supplier_key': supplier_key}) + AGGREGATE(keys={'supplier_key': supplier_key}, aggregations={'expr_0': SUM(expr_0), 'expr_1': SUM(expr_1)}) + JOIN(conditions=[t0.part_key == t1.key], types=['inner'], columns={'expr_0': t1.expr_0, 'expr_1': t1.expr_1, 'supplier_key': t0.supplier_key}) + SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey}) + PROJECT(columns={'expr_0': retail_price, 'expr_1': IFF(PRESENT(retail_price), 1:numeric, 0:numeric), 'key': key}) + SCAN(table=tpch.PART, columns={'key': p_partkey, 'retail_price': p_retailprice}) + SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey, 'supply_cost': ps_supplycost}) + FILTER(condition=container == 'LG DRUM':string, columns={'key': key, 'retail_price': retail_price}) + SCAN(table=tpch.PART, columns={'container': p_container, 'key': p_partkey, 'retail_price': p_retailprice}) diff --git a/tests/test_plan_refsols/correl_15.txt b/tests/test_plan_refsols/correl_15.txt index c33fcfe7c..f20ae7375 100644 --- a/tests/test_plan_refsols/correl_15.txt +++ b/tests/test_plan_refsols/correl_15.txt @@ -1,19 +1,22 @@ ROOT(columns=[('n', agg_1)], orderings=[]) AGGREGATE(keys={}, aggregations={'agg_1': COUNT()}) - JOIN(conditions=[t0.key == t1.supplier_key], types=['semi'], columns={}, correl_name='corr4') - JOIN(conditions=[t0.key == t1.supplier_key], types=['inner'], columns={'global_avg_price': t0.global_avg_price, 'key': t0.key, 'supplier_avg_price': t1.supplier_avg_price}) - JOIN(conditions=[True:bool], types=['inner'], columns={'global_avg_price': t0.global_avg_price, 'key': t1.key}) - AGGREGATE(keys={}, aggregations={'global_avg_price': AVG(retail_price)}) - SCAN(table=tpch.PART, columns={'retail_price': p_retailprice}) - FILTER(condition=account_balance < 1000:numeric & nation_key == 19:numeric, columns={'key': key}) - SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal, 'key': s_suppkey, 'nation_key': s_nationkey}) - PROJECT(columns={'supplier_avg_price': expr_0 / expr_1, 'supplier_key': supplier_key}) - AGGREGATE(keys={'supplier_key': supplier_key}, aggregations={'expr_0': SUM(expr_0), 'expr_1': SUM(expr_1)}) - JOIN(conditions=[t0.part_key == t1.key], types=['inner'], columns={'expr_0': t1.expr_0, 'expr_1': t1.expr_1, 'supplier_key': t0.supplier_key}) - SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey}) - PROJECT(columns={'expr_0': retail_price, 'expr_1': IFF(PRESENT(retail_price), 1:numeric, 0:numeric), 'key': key}) - SCAN(table=tpch.PART, columns={'key': p_partkey, 'retail_price': p_retailprice}) - JOIN(conditions=[t0.part_key == t1.key], types=['semi'], columns={'supplier_key': t0.supplier_key}, correl_name='corr3') - SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey, 'supply_cost': ps_supplycost}) - FILTER(condition=retail_price < corr4.global_avg_price * 0.85:numeric & retail_price < corr3.supply_cost * 1.5:numeric & retail_price < corr4.supplier_avg_price & container == 'LG DRUM':string, columns={'key': key}) - SCAN(table=tpch.PART, columns={'container': p_container, 'key': p_partkey, 'retail_price': p_retailprice}) + AGGREGATE(keys={'agg_8': agg_8}, aggregations={}) + AGGREGATE(keys={'key': key, 'part_key': part_key, 'supplier_key': supplier_key}, aggregations={'agg_8': ANYTHING(key)}) + FILTER(condition=retail_price < global_avg_price * 0.85:numeric & retail_price < supply_cost * 1.5:numeric & retail_price < supplier_avg_price, columns={'key': key, 'part_key': part_key, 'supplier_key': supplier_key}) + JOIN(conditions=[t0.part_key == t1.key], types=['inner'], columns={'global_avg_price': t0.global_avg_price, 'key': t0.key, 'part_key': t0.part_key, 'retail_price': t1.retail_price, 'supplier_avg_price': t0.supplier_avg_price, 'supplier_key': t0.supplier_key, 'supply_cost': t0.supply_cost}) + JOIN(conditions=[t0.key == t1.supplier_key], types=['inner'], columns={'global_avg_price': t0.global_avg_price, 'key': t0.key, 'part_key': t1.part_key, 'supplier_avg_price': t0.supplier_avg_price, 'supplier_key': t1.supplier_key, 'supply_cost': t1.supply_cost}) + JOIN(conditions=[t0.key == t1.supplier_key], types=['inner'], columns={'global_avg_price': t0.global_avg_price, 'key': t0.key, 'supplier_avg_price': t1.supplier_avg_price}) + JOIN(conditions=[True:bool], types=['inner'], columns={'global_avg_price': t0.global_avg_price, 'key': t1.key}) + AGGREGATE(keys={}, aggregations={'global_avg_price': AVG(retail_price)}) + SCAN(table=tpch.PART, columns={'retail_price': p_retailprice}) + FILTER(condition=account_balance < 1000:numeric & nation_key == 19:numeric, columns={'key': key}) + SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal, 'key': s_suppkey, 'nation_key': s_nationkey}) + PROJECT(columns={'supplier_avg_price': expr_0 / expr_1, 'supplier_key': supplier_key}) + AGGREGATE(keys={'supplier_key': supplier_key}, aggregations={'expr_0': SUM(expr_0), 'expr_1': SUM(expr_1)}) + JOIN(conditions=[t0.part_key == t1.key], types=['inner'], columns={'expr_0': t1.expr_0, 'expr_1': t1.expr_1, 'supplier_key': t0.supplier_key}) + SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey}) + PROJECT(columns={'expr_0': retail_price, 'expr_1': IFF(PRESENT(retail_price), 1:numeric, 0:numeric), 'key': key}) + SCAN(table=tpch.PART, columns={'key': p_partkey, 'retail_price': p_retailprice}) + SCAN(table=tpch.PARTSUPP, columns={'part_key': ps_partkey, 'supplier_key': ps_suppkey, 'supply_cost': ps_supplycost}) + FILTER(condition=container == 'LG DRUM':string, columns={'key': key, 'retail_price': retail_price}) + SCAN(table=tpch.PART, columns={'container': p_container, 'key': p_partkey, 'retail_price': p_retailprice}) diff --git a/tests/test_plan_refsols/correl_16.txt b/tests/test_plan_refsols/correl_16.txt index 8344c7e3e..dedc506a7 100644 --- a/tests/test_plan_refsols/correl_16.txt +++ b/tests/test_plan_refsols/correl_16.txt @@ -1,11 +1,12 @@ ROOT(columns=[('n', n)], orderings=[]) AGGREGATE(keys={}, aggregations={'n': COUNT()}) - JOIN(conditions=[t0.nation_key == t1.key], types=['semi'], columns={}, correl_name='corr7') - PROJECT(columns={'nation_key': nation_key, 'tile': PERCENTILE(args=[], partition=[], order=[(account_balance):asc_last, (key):asc_last], n_buckets=10000)}) - SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal, 'key': s_suppkey, 'nation_key': s_nationkey}) - FILTER(condition=rname == 'EUROPE':string & PERCENTILE(args=[], partition=[], order=[(account_balance):asc_last, (key_5):asc_last], n_buckets=10000) == corr7.tile, columns={'key': key}) - JOIN(conditions=[t0.key == t1.nation_key], types=['inner'], columns={'account_balance': t1.account_balance, 'key': t0.key, 'key_5': t1.key, 'rname': t0.rname}) - JOIN(conditions=[t0.region_key == t1.key], types=['inner'], columns={'key': t0.key, 'rname': t1.rname}) - SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'region_key': n_regionkey}) + AGGREGATE(keys={'key': key}, aggregations={}) + FILTER(condition=rname == 'EUROPE':string & PERCENTILE(args=[], partition=[], order=[(account_balance_7):asc_last, (key_10):asc_last], n_buckets=10000) == tile, columns={'key': key}) + JOIN(conditions=[t0.key_2 == t1.nation_key], types=['inner'], columns={'account_balance_7': t1.account_balance, 'key': t0.key, 'key_10': t1.key, 'rname': t0.rname, 'tile': t0.tile}) + JOIN(conditions=[t0.region_key == t1.key], types=['inner'], columns={'key': t0.key, 'key_2': t0.key_2, 'rname': t1.rname, 'tile': t0.tile}) + JOIN(conditions=[t0.nation_key == t1.key], types=['inner'], columns={'key': t0.key, 'key_2': t1.key_2, 'region_key': t1.region_key, 'tile': t0.tile}) + PROJECT(columns={'key': key, 'nation_key': nation_key, 'tile': PERCENTILE(args=[], partition=[], order=[(account_balance):asc_last, (key):asc_last], n_buckets=10000)}) + SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal, 'key': s_suppkey, 'nation_key': s_nationkey}) + SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'key_2': n_nationkey, 'region_key': n_regionkey}) SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'rname': r_name}) SCAN(table=tpch.CUSTOMER, columns={'account_balance': c_acctbal, 'key': c_custkey, 'nation_key': c_nationkey}) diff --git a/tests/test_plan_refsols/correl_3.txt b/tests/test_plan_refsols/correl_3.txt index be0f4b9fe..5863f9de3 100644 --- a/tests/test_plan_refsols/correl_3.txt +++ b/tests/test_plan_refsols/correl_3.txt @@ -1,11 +1,12 @@ ROOT(columns=[('region_name', region_name), ('n_nations', n_nations)], orderings=[(name):asc_first]) PROJECT(columns={'n_nations': DEFAULT_TO(agg_0, 0:numeric), 'name': name, 'region_name': region_name}) - JOIN(conditions=[t0.key == t1.key], types=['left'], columns={'agg_0': t1.agg_0, 'name': t0.name, 'region_name': t0.region_name}) + JOIN(conditions=[t0.key == t1.agg_5], types=['left'], columns={'agg_0': t1.agg_0, 'name': t0.name, 'region_name': t0.region_name}) SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'name': r_name, 'region_name': r_name}) - AGGREGATE(keys={'key': key}, aggregations={'agg_0': COUNT()}) - JOIN(conditions=[t0.key_2 == t1.nation_key], types=['semi'], columns={'key': t0.key}, correl_name='corr4') - JOIN(conditions=[t0.key == t1.region_key], types=['inner'], columns={'key': t0.key, 'key_2': t1.key, 'region_name': t0.region_name}) - SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'region_name': r_name}) - SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'region_key': n_regionkey}) - FILTER(condition=SLICE(comment, None:unknown, 2:numeric, None:unknown) == LOWER(SLICE(corr4.region_name, None:unknown, 2:numeric, None:unknown)), columns={'nation_key': nation_key}) - SCAN(table=tpch.CUSTOMER, columns={'comment': c_comment, 'nation_key': c_nationkey}) + AGGREGATE(keys={'agg_5': agg_5}, aggregations={'agg_0': COUNT()}) + AGGREGATE(keys={'key': key, 'key_2': key_2}, aggregations={'agg_5': ANYTHING(key)}) + FILTER(condition=SLICE(comment_4, None:unknown, 2:numeric, None:unknown) == LOWER(SLICE(region_name, None:unknown, 2:numeric, None:unknown)), columns={'key': key, 'key_2': key_2}) + JOIN(conditions=[t0.key_2 == t1.nation_key], types=['inner'], columns={'comment_4': t1.comment, 'key': t0.key, 'key_2': t0.key_2, 'region_name': t0.region_name}) + JOIN(conditions=[t0.key == t1.region_key], types=['inner'], columns={'key': t0.key, 'key_2': t1.key, 'region_name': t0.region_name}) + SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'region_name': r_name}) + SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'region_key': n_regionkey}) + SCAN(table=tpch.CUSTOMER, columns={'comment': c_comment, 'nation_key': c_nationkey}) diff --git a/tests/test_plan_refsols/correl_4.txt b/tests/test_plan_refsols/correl_4.txt index c12ec81e3..ca8f1ca23 100644 --- a/tests/test_plan_refsols/correl_4.txt +++ b/tests/test_plan_refsols/correl_4.txt @@ -1,8 +1,10 @@ ROOT(columns=[('name', name)], orderings=[(name):asc_first]) - JOIN(conditions=[t0.key == t1.nation_key], types=['anti'], columns={'name': t0.name}, correl_name='corr1') - JOIN(conditions=[True:bool], types=['inner'], columns={'key': t1.key, 'name': t1.name, 'smallest_bal': t0.smallest_bal}) - AGGREGATE(keys={}, aggregations={'smallest_bal': MIN(account_balance)}) - SCAN(table=tpch.CUSTOMER, columns={'account_balance': c_acctbal}) - SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'name': n_name}) - FILTER(condition=account_balance <= corr1.smallest_bal + 5.0:numeric, columns={'nation_key': nation_key}) - SCAN(table=tpch.CUSTOMER, columns={'account_balance': c_acctbal, 'nation_key': c_nationkey}) + JOIN(conditions=[t0.key == t1.key], types=['anti'], columns={'name': t0.name}) + SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'name': n_name}) + FILTER(condition=account_balance <= smallest_bal + 5.0:numeric, columns={'key': key}) + JOIN(conditions=[t0.key == t1.nation_key], types=['inner'], columns={'account_balance': t1.account_balance, 'key': t0.key, 'smallest_bal': t0.smallest_bal}) + JOIN(conditions=[True:bool], types=['inner'], columns={'key': t1.key, 'smallest_bal': t0.smallest_bal}) + AGGREGATE(keys={}, aggregations={'smallest_bal': MIN(account_balance)}) + SCAN(table=tpch.CUSTOMER, columns={'account_balance': c_acctbal}) + SCAN(table=tpch.NATION, columns={'key': n_nationkey}) + SCAN(table=tpch.CUSTOMER, columns={'account_balance': c_acctbal, 'nation_key': c_nationkey}) diff --git a/tests/test_plan_refsols/correl_5.txt b/tests/test_plan_refsols/correl_5.txt index 68a7a2ee1..a255ba06f 100644 --- a/tests/test_plan_refsols/correl_5.txt +++ b/tests/test_plan_refsols/correl_5.txt @@ -1,10 +1,11 @@ ROOT(columns=[('name', name)], orderings=[(name):asc_first]) - JOIN(conditions=[t0.key == t1.region_key], types=['semi'], columns={'name': t0.name}, correl_name='corr4') - JOIN(conditions=[True:bool], types=['inner'], columns={'key': t1.key, 'name': t1.name, 'smallest_bal': t0.smallest_bal}) - AGGREGATE(keys={}, aggregations={'smallest_bal': MIN(account_balance)}) - SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal}) - SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'name': r_name}) - JOIN(conditions=[t0.key == t1.nation_key], types=['inner'], columns={'region_key': t0.region_key}) - SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'region_key': n_regionkey}) - FILTER(condition=account_balance <= corr4.smallest_bal + 4.0:numeric, columns={'nation_key': nation_key}) + AGGREGATE(keys={'key': key}, aggregations={'name': ANYTHING(name)}) + FILTER(condition=account_balance <= smallest_bal + 4.0:numeric, columns={'key': key, 'name': name}) + JOIN(conditions=[t0.key_2 == t1.nation_key], types=['inner'], columns={'account_balance': t1.account_balance, 'key': t0.key, 'name': t0.name, 'smallest_bal': t0.smallest_bal}) + JOIN(conditions=[t0.key == t1.region_key], types=['inner'], columns={'key': t0.key, 'key_2': t1.key, 'name': t0.name, 'smallest_bal': t0.smallest_bal}) + JOIN(conditions=[True:bool], types=['inner'], columns={'key': t1.key, 'name': t1.name, 'smallest_bal': t0.smallest_bal}) + AGGREGATE(keys={}, aggregations={'smallest_bal': MIN(account_balance)}) + SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal}) + SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'name': r_name}) + SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'region_key': n_regionkey}) SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal, 'nation_key': s_nationkey}) diff --git a/tests/test_plan_refsols/correl_7.txt b/tests/test_plan_refsols/correl_7.txt index 13b76f0d9..b1595d18d 100644 --- a/tests/test_plan_refsols/correl_7.txt +++ b/tests/test_plan_refsols/correl_7.txt @@ -1,5 +1,7 @@ -ROOT(columns=[('name', name), ('n_prefix_nations', DEFAULT_TO(NULL_2, 0:numeric))], orderings=[]) - JOIN(conditions=[t0.key == t1.region_key], types=['anti'], columns={'NULL_2': None:unknown, 'name': t0.name}, correl_name='corr1') - SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'name': r_name, 'region_name': r_name}) - FILTER(condition=SLICE(name, None:unknown, 1:numeric, None:unknown) == SLICE(corr1.region_name, None:unknown, 1:numeric, None:unknown), columns={'region_key': region_key}) - SCAN(table=tpch.NATION, columns={'name': n_name, 'region_key': n_regionkey}) +ROOT(columns=[('name', name), ('n_prefix_nations', DEFAULT_TO(NULL_4, 0:numeric))], orderings=[]) + JOIN(conditions=[t0.key == t1.key], types=['anti'], columns={'NULL_4': None:unknown, 'name': t0.name}) + SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'name': r_name}) + FILTER(condition=SLICE(name_3, None:unknown, 1:numeric, None:unknown) == SLICE(region_name, None:unknown, 1:numeric, None:unknown), columns={'key': key}) + JOIN(conditions=[t0.key == t1.region_key], types=['inner'], columns={'key': t0.key, 'name_3': t1.name, 'region_name': t0.region_name}) + SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'region_name': r_name}) + SCAN(table=tpch.NATION, columns={'name': n_name, 'region_key': n_regionkey}) diff --git a/tests/test_plan_refsols/epoch_num_predawn_cold_war.txt b/tests/test_plan_refsols/epoch_num_predawn_cold_war.txt index 98bb0a535..5423507e6 100644 --- a/tests/test_plan_refsols/epoch_num_predawn_cold_war.txt +++ b/tests/test_plan_refsols/epoch_num_predawn_cold_war.txt @@ -1,9 +1,11 @@ ROOT(columns=[('n_events', n_events)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_events': COUNT()}) - JOIN(conditions=[t1.start_year <= YEAR(t0.date_time) & YEAR(t0.date_time) < t1.end_year], types=['semi'], columns={}, correl_name='corr2') - JOIN(conditions=[t1.start_hour <= HOUR(t0.date_time) & HOUR(t0.date_time) < t1.end_hour], types=['semi'], columns={'date_time': t0.date_time}, correl_name='corr1') - SCAN(table=EVENTS, columns={'date_time': ev_dt}) + JOIN(conditions=[t0.key == t1.key], types=['semi'], columns={}) + JOIN(conditions=[t1.start_hour <= HOUR(t0.date_time) & HOUR(t0.date_time) < t1.end_hour], types=['inner'], columns={'key': t0.key}) + SCAN(table=EVENTS, columns={'date_time': ev_dt, 'key': ev_key}) FILTER(condition=name == 'Pre-Dawn':string, columns={'end_hour': end_hour, 'start_hour': start_hour}) SCAN(table=TIMES, columns={'end_hour': t_end_hour, 'name': t_name, 'start_hour': t_start_hour}) - FILTER(condition=name == 'Cold War':string, columns={'end_year': end_year, 'start_year': start_year}) - SCAN(table=ERAS, columns={'end_year': er_end_year, 'name': er_name, 'start_year': er_start_year}) + JOIN(conditions=[t1.start_year <= YEAR(t0.date_time) & YEAR(t0.date_time) < t1.end_year], types=['inner'], columns={'key': t0.key}) + SCAN(table=EVENTS, columns={'date_time': ev_dt, 'key': ev_key}) + FILTER(condition=name == 'Cold War':string, columns={'end_year': end_year, 'start_year': start_year}) + SCAN(table=ERAS, columns={'end_year': er_end_year, 'name': er_name, 'start_year': er_start_year}) diff --git a/tests/test_plan_refsols/epoch_users_most_cold_war_searches.txt b/tests/test_plan_refsols/epoch_users_most_cold_war_searches.txt index b2d8c7735..6615fcccd 100644 --- a/tests/test_plan_refsols/epoch_users_most_cold_war_searches.txt +++ b/tests/test_plan_refsols/epoch_users_most_cold_war_searches.txt @@ -1,11 +1,12 @@ ROOT(columns=[('user_name', user_name), ('n_cold_war_searches', n_cold_war_searches)], orderings=[(n_cold_war_searches):desc_last, (user_name):asc_first]) LIMIT(limit=Literal(value=3, type=NumericType()), columns={'n_cold_war_searches': n_cold_war_searches, 'user_name': user_name}, orderings=[(n_cold_war_searches):desc_last, (user_name):asc_first]) - JOIN(conditions=[t0.user_id == t1.user_id], types=['inner'], columns={'n_cold_war_searches': t1.n_cold_war_searches, 'user_name': t0.user_name}) + JOIN(conditions=[t0.user_id == t1.agg_5], types=['inner'], columns={'n_cold_war_searches': t1.n_cold_war_searches, 'user_name': t0.user_name}) SCAN(table=USERS, columns={'user_id': user_id, 'user_name': user_name}) - AGGREGATE(keys={'user_id': user_id, 'user_id_3': user_id}, aggregations={'n_cold_war_searches': COUNT()}) - JOIN(conditions=[CONTAINS(LOWER(t0.search_string), LOWER(t1.name))], types=['semi'], columns={'user_id': t0.user_id}, correl_name='corr1') - SCAN(table=SEARCHES, columns={'search_string': search_string, 'user_id': search_user_id}) - JOIN(conditions=[t1.start_year <= YEAR(t0.date_time) & YEAR(t0.date_time) < t1.end_year], types=['inner'], columns={'name': t0.name}) - SCAN(table=EVENTS, columns={'date_time': ev_dt, 'name': ev_name}) + AGGREGATE(keys={'agg_5': agg_5}, aggregations={'n_cold_war_searches': COUNT()}) + AGGREGATE(keys={'search_id': search_id}, aggregations={'agg_5': ANYTHING(user_id)}) + JOIN(conditions=[t1.start_year <= YEAR(t0.date_time) & YEAR(t0.date_time) < t1.end_year], types=['inner'], columns={'search_id': t0.search_id, 'user_id': t0.user_id}) + JOIN(conditions=[CONTAINS(LOWER(t0.search_string), LOWER(t1.name))], types=['inner'], columns={'date_time': t1.date_time, 'search_id': t0.search_id, 'user_id': t0.user_id}) + SCAN(table=SEARCHES, columns={'search_id': search_id, 'search_string': search_string, 'user_id': search_user_id}) + SCAN(table=EVENTS, columns={'date_time': ev_dt, 'name': ev_name}) FILTER(condition=name == 'Cold War':string, columns={'end_year': end_year, 'start_year': start_year}) SCAN(table=ERAS, columns={'end_year': er_end_year, 'name': er_name, 'start_year': er_start_year}) diff --git a/tests/test_plan_refsols/tpch_q21.txt b/tests/test_plan_refsols/tpch_q21.txt index 63b4f507e..a58b5f68d 100644 --- a/tests/test_plan_refsols/tpch_q21.txt +++ b/tests/test_plan_refsols/tpch_q21.txt @@ -1,20 +1,27 @@ ROOT(columns=[('S_NAME', S_NAME), ('NUMWAIT', NUMWAIT)], orderings=[(NUMWAIT):desc_last, (S_NAME):asc_first]) LIMIT(limit=Literal(value=10, type=NumericType()), columns={'NUMWAIT': NUMWAIT, 'S_NAME': S_NAME}, orderings=[(NUMWAIT):desc_last, (S_NAME):asc_first]) PROJECT(columns={'NUMWAIT': DEFAULT_TO(agg_0, 0:numeric), 'S_NAME': name}) - JOIN(conditions=[t0.key == t1.supplier_key], types=['left'], columns={'agg_0': t1.agg_0, 'name': t0.name}) + JOIN(conditions=[t0.key == t1.agg_24], types=['left'], columns={'agg_0': t1.agg_0, 'name': t0.name}) JOIN(conditions=[t0.nation_key == t1.key], types=['inner'], columns={'key': t0.key, 'name': t0.name}) SCAN(table=tpch.SUPPLIER, columns={'key': s_suppkey, 'name': s_name, 'nation_key': s_nationkey}) FILTER(condition=name == 'SAUDI ARABIA':string, columns={'key': key}) SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'name': n_name}) - AGGREGATE(keys={'supplier_key': supplier_key}, aggregations={'agg_0': COUNT()}) - JOIN(conditions=[t0.key == t1.order_key], types=['anti'], columns={'supplier_key': t0.supplier_key}, correl_name='corr6') - JOIN(conditions=[t0.key == t1.order_key], types=['semi'], columns={'key': t0.key, 'original_key': t0.original_key, 'supplier_key': t0.supplier_key}, correl_name='corr5') - JOIN(conditions=[t0.order_key == t1.key], types=['inner'], columns={'key': t1.key, 'original_key': t0.original_key, 'supplier_key': t0.supplier_key}) - FILTER(condition=receipt_date > commit_date, columns={'order_key': order_key, 'original_key': supplier_key, 'supplier_key': supplier_key}) + AGGREGATE(keys={'agg_24': agg_24}, aggregations={'agg_0': COUNT()}) + JOIN(conditions=[t0.agg_13 == t1.line_number & t0.agg_14 == t1.order_key & t0.agg_3 == t1.key], types=['anti'], columns={'agg_24': t0.agg_24}) + FILTER(condition=agg_6 == 'F':string, columns={'agg_13': agg_13, 'agg_14': agg_14, 'agg_24': agg_24, 'agg_3': agg_3}) + AGGREGATE(keys={'key': key, 'line_number': line_number, 'order_key': order_key}, aggregations={'agg_13': ANYTHING(line_number), 'agg_14': ANYTHING(order_key), 'agg_24': ANYTHING(supplier_key), 'agg_3': ANYTHING(key), 'agg_6': ANYTHING(order_status)}) + FILTER(condition=supplier_key_19 != original_key, columns={'key': key, 'line_number': line_number, 'order_key': order_key, 'order_status': order_status, 'supplier_key': supplier_key}) + JOIN(conditions=[t0.key == t1.order_key], types=['inner'], columns={'key': t0.key, 'line_number': t0.line_number, 'order_key': t0.order_key, 'order_status': t0.order_status, 'original_key': t0.original_key, 'supplier_key': t0.supplier_key, 'supplier_key_19': t1.supplier_key}) + JOIN(conditions=[t0.order_key == t1.key], types=['inner'], columns={'key': t1.key, 'line_number': t0.line_number, 'order_key': t0.order_key, 'order_status': t1.order_status, 'original_key': t0.original_key, 'supplier_key': t0.supplier_key}) + FILTER(condition=receipt_date > commit_date, columns={'line_number': line_number, 'order_key': order_key, 'original_key': supplier_key, 'supplier_key': supplier_key}) + SCAN(table=tpch.LINEITEM, columns={'commit_date': l_commitdate, 'line_number': l_linenumber, 'order_key': l_orderkey, 'receipt_date': l_receiptdate, 'supplier_key': l_suppkey}) + SCAN(table=tpch.ORDERS, columns={'key': o_orderkey, 'order_status': o_orderstatus}) + SCAN(table=tpch.LINEITEM, columns={'order_key': l_orderkey, 'supplier_key': l_suppkey}) + FILTER(condition=supplier_key_36 != original_key, columns={'key': key, 'line_number': line_number, 'order_key': order_key}) + JOIN(conditions=[t0.key == t1.order_key], types=['inner'], columns={'key': t0.key, 'line_number': t0.line_number, 'order_key': t0.order_key, 'original_key': t0.original_key, 'supplier_key_36': t1.supplier_key}) + JOIN(conditions=[t0.order_key == t1.key], types=['inner'], columns={'key': t1.key, 'line_number': t0.line_number, 'order_key': t0.order_key, 'original_key': t0.original_key}) + FILTER(condition=receipt_date > commit_date, columns={'line_number': line_number, 'order_key': order_key, 'original_key': supplier_key}) + SCAN(table=tpch.LINEITEM, columns={'commit_date': l_commitdate, 'line_number': l_linenumber, 'order_key': l_orderkey, 'receipt_date': l_receiptdate, 'supplier_key': l_suppkey}) + SCAN(table=tpch.ORDERS, columns={'key': o_orderkey}) + FILTER(condition=receipt_date > commit_date, columns={'order_key': order_key, 'supplier_key': supplier_key}) SCAN(table=tpch.LINEITEM, columns={'commit_date': l_commitdate, 'order_key': l_orderkey, 'receipt_date': l_receiptdate, 'supplier_key': l_suppkey}) - FILTER(condition=order_status == 'F':string, columns={'key': key}) - SCAN(table=tpch.ORDERS, columns={'key': o_orderkey, 'order_status': o_orderstatus}) - FILTER(condition=supplier_key != corr5.original_key, columns={'order_key': order_key}) - SCAN(table=tpch.LINEITEM, columns={'order_key': l_orderkey, 'supplier_key': l_suppkey}) - FILTER(condition=supplier_key != corr6.original_key & receipt_date > commit_date, columns={'order_key': order_key}) - SCAN(table=tpch.LINEITEM, columns={'commit_date': l_commitdate, 'order_key': l_orderkey, 'receipt_date': l_receiptdate, 'supplier_key': l_suppkey}) diff --git a/tests/test_sql_refsols/defog_dealership_adv12_ansi.sql b/tests/test_sql_refsols/defog_dealership_adv12_ansi.sql index 2d19076ec..c06123b96 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_ansi.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_ansi.sql @@ -1,52 +1,24 @@ WITH _t0 AS ( SELECT - inventory_snapshots.car_id AS car_id, - inventory_snapshots.is_in_inventory AS is_in_inventory, - inventory_snapshots.snapshot_date AS snapshot_date - FROM main.inventory_snapshots AS inventory_snapshots -), _s3 AS ( - SELECT - _t0.car_id AS car_id - FROM _t0 AS _t0 - WHERE - _s0.sale_date = _t0.snapshot_date AND _t0.is_in_inventory = 0 -), _s1 AS ( - SELECT - sales.car_id AS car_id, - sales.sale_date AS sale_date, - sales.sale_price AS sale_price + ANY_VALUE(cars.make) AS make, + ANY_VALUE(cars.model) AS model, + ANY_VALUE(sales.sale_price) AS sale_price FROM main.sales AS sales -), _s2 AS ( - SELECT - cars._id AS _id, - cars._id AS _id_1, - cars.make AS make, - cars.model AS model - FROM main.cars AS cars -), _s0 AS ( - SELECT - _s2._id_1 AS _id_1, - _s2.make AS make, - _s2.model AS model, - _s1.sale_date AS sale_date, - _s1.sale_price AS sale_price - FROM _s1 AS _s1 - JOIN _s2 AS _s2 - ON _s1.car_id = _s2._id + JOIN main.cars AS cars + ON cars._id = sales.car_id + JOIN main.inventory_snapshots AS inventory_snapshots + ON cars._id = inventory_snapshots.car_id AND inventory_snapshots.is_in_inventory = 0 + WHERE + inventory_snapshots.snapshot_date = sales.sale_date + GROUP BY + sales._id, + cars._id ) SELECT - _s0.make AS make, - _s0.model AS model, - _s0.sale_price AS sale_price -FROM _s0 AS _s0 -WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _s3 AS _s3 - WHERE - _s0._id_1 = _s3.car_id - ) + make, + model, + sale_price +FROM _t0 ORDER BY sale_price DESC LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv12_sqlite.sql b/tests/test_sql_refsols/defog_dealership_adv12_sqlite.sql index 2d19076ec..06dea69b4 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_sqlite.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_sqlite.sql @@ -1,52 +1,24 @@ WITH _t0 AS ( SELECT - inventory_snapshots.car_id AS car_id, - inventory_snapshots.is_in_inventory AS is_in_inventory, - inventory_snapshots.snapshot_date AS snapshot_date - FROM main.inventory_snapshots AS inventory_snapshots -), _s3 AS ( - SELECT - _t0.car_id AS car_id - FROM _t0 AS _t0 - WHERE - _s0.sale_date = _t0.snapshot_date AND _t0.is_in_inventory = 0 -), _s1 AS ( - SELECT - sales.car_id AS car_id, - sales.sale_date AS sale_date, - sales.sale_price AS sale_price + MAX(cars.make) AS make, + MAX(cars.model) AS model, + MAX(sales.sale_price) AS sale_price FROM main.sales AS sales -), _s2 AS ( - SELECT - cars._id AS _id, - cars._id AS _id_1, - cars.make AS make, - cars.model AS model - FROM main.cars AS cars -), _s0 AS ( - SELECT - _s2._id_1 AS _id_1, - _s2.make AS make, - _s2.model AS model, - _s1.sale_date AS sale_date, - _s1.sale_price AS sale_price - FROM _s1 AS _s1 - JOIN _s2 AS _s2 - ON _s1.car_id = _s2._id + JOIN main.cars AS cars + ON cars._id = sales.car_id + JOIN main.inventory_snapshots AS inventory_snapshots + ON cars._id = inventory_snapshots.car_id AND inventory_snapshots.is_in_inventory = 0 + WHERE + inventory_snapshots.snapshot_date = sales.sale_date + GROUP BY + sales._id, + cars._id ) SELECT - _s0.make AS make, - _s0.model AS model, - _s0.sale_price AS sale_price -FROM _s0 AS _s0 -WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _s3 AS _s3 - WHERE - _s0._id_1 = _s3.car_id - ) + make, + model, + sale_price +FROM _t0 ORDER BY sale_price DESC LIMIT 1 diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_ansi.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_ansi.sql index 9ee1fdbc1..881f34956 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_ansi.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_ansi.sql @@ -1,6 +1,7 @@ -WITH _s1 AS ( +WITH _s0 AS ( SELECT - events.ev_dt AS date_time + events.ev_dt AS date_time, + events.ev_key AS key FROM events AS events ), _t1 AS ( SELECT @@ -8,26 +9,20 @@ WITH _s1 AS ( times.t_name AS name, times.t_start_hour AS start_hour FROM times AS times -), _s2 AS ( +), _s1 AS ( SELECT _t1.end_hour AS end_hour, _t1.start_hour AS start_hour FROM _t1 AS _t1 WHERE _t1.name = 'Pre-Dawn' -), _s0 AS ( +), _s4 AS ( SELECT - _s1.date_time AS date_time - FROM _s1 AS _s1 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _s2 AS _s2 - WHERE - _s2.end_hour > EXTRACT(HOUR FROM _s1.date_time) - AND _s2.start_hour <= EXTRACT(HOUR FROM _s1.date_time) - ) + _s0.key AS key + FROM _s0 AS _s0 + JOIN _s1 AS _s1 + ON _s1.end_hour > EXTRACT(HOUR FROM _s0.date_time) + AND _s1.start_hour <= EXTRACT(HOUR FROM _s0.date_time) ), _t2 AS ( SELECT eras.er_end_year AS end_year, @@ -41,18 +36,24 @@ WITH _s1 AS ( FROM _t2 AS _t2 WHERE _t2.name = 'Cold War' +), _s5 AS ( + SELECT + _s2.key AS key + FROM _s0 AS _s2 + JOIN _s3 AS _s3 + ON _s3.end_year > EXTRACT(YEAR FROM _s2.date_time) + AND _s3.start_year <= EXTRACT(YEAR FROM _s2.date_time) ), _t0 AS ( SELECT 1 AS _ - FROM _s0 AS _s0 + FROM _s4 AS _s4 WHERE EXISTS( SELECT 1 AS "1" - FROM _s3 AS _s3 + FROM _s5 AS _s5 WHERE - _s3.end_year > EXTRACT(YEAR FROM _s0.date_time) - AND _s3.start_year <= EXTRACT(YEAR FROM _s0.date_time) + _s4.key = _s5.key ) ) SELECT diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_sqlite.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_sqlite.sql index d136cdfa4..423d2b830 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_sqlite.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_sqlite.sql @@ -1,6 +1,7 @@ -WITH _s1 AS ( +WITH _s0 AS ( SELECT - events.ev_dt AS date_time + events.ev_dt AS date_time, + events.ev_key AS key FROM events AS events ), _t1 AS ( SELECT @@ -8,26 +9,20 @@ WITH _s1 AS ( times.t_name AS name, times.t_start_hour AS start_hour FROM times AS times -), _s2 AS ( +), _s1 AS ( SELECT _t1.end_hour AS end_hour, _t1.start_hour AS start_hour FROM _t1 AS _t1 WHERE _t1.name = 'Pre-Dawn' -), _s0 AS ( +), _s4 AS ( SELECT - _s1.date_time AS date_time - FROM _s1 AS _s1 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _s2 AS _s2 - WHERE - _s2.end_hour > CAST(STRFTIME('%H', _s1.date_time) AS INTEGER) - AND _s2.start_hour <= CAST(STRFTIME('%H', _s1.date_time) AS INTEGER) - ) + _s0.key AS key + FROM _s0 AS _s0 + JOIN _s1 AS _s1 + ON _s1.end_hour > CAST(STRFTIME('%H', _s0.date_time) AS INTEGER) + AND _s1.start_hour <= CAST(STRFTIME('%H', _s0.date_time) AS INTEGER) ), _t2 AS ( SELECT eras.er_end_year AS end_year, @@ -41,18 +36,24 @@ WITH _s1 AS ( FROM _t2 AS _t2 WHERE _t2.name = 'Cold War' +), _s5 AS ( + SELECT + _s2.key AS key + FROM _s0 AS _s2 + JOIN _s3 AS _s3 + ON _s3.end_year > CAST(STRFTIME('%Y', _s2.date_time) AS INTEGER) + AND _s3.start_year <= CAST(STRFTIME('%Y', _s2.date_time) AS INTEGER) ), _t0 AS ( SELECT 1 AS _ - FROM _s0 AS _s0 + FROM _s4 AS _s4 WHERE EXISTS( SELECT 1 AS "1" - FROM _s3 AS _s3 + FROM _s5 AS _s5 WHERE - _s3.end_year > CAST(STRFTIME('%Y', _s0.date_time) AS INTEGER) - AND _s3.start_year <= CAST(STRFTIME('%Y', _s0.date_time) AS INTEGER) + _s4.key = _s5.key ) ) SELECT diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_ansi.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_ansi.sql index 67b84ccfc..987cd0c1e 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_ansi.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_ansi.sql @@ -1,64 +1,29 @@ -WITH _s4 AS ( +WITH _t0 AS ( SELECT - users.user_id AS user_id, - users.user_name AS user_name - FROM users AS users -), _s0 AS ( - SELECT - searches.search_string AS search_string, - searches.search_user_id AS user_id + ANY_VALUE(searches.search_user_id) AS agg_5 FROM searches AS searches -), _s1 AS ( - SELECT - events.ev_dt AS date_time, - events.ev_name AS name - FROM events AS events -), _t1 AS ( - SELECT - eras.er_end_year AS end_year, - eras.er_name AS name, - eras.er_start_year AS start_year - FROM eras AS eras -), _s2 AS ( - SELECT - _t1.end_year AS end_year, - _t1.start_year AS start_year - FROM _t1 AS _t1 - WHERE - _t1.name = 'Cold War' -), _s3 AS ( - SELECT - _s1.name AS name - FROM _s1 AS _s1 - JOIN _s2 AS _s2 - ON _s2.end_year > EXTRACT(YEAR FROM _s1.date_time) - AND _s2.start_year <= EXTRACT(YEAR FROM _s1.date_time) -), _t0 AS ( - SELECT - _s0.user_id AS user_id - FROM _s0 AS _s0 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _s3 AS _s3 - WHERE - LOWER(_s0.search_string) LIKE CONCAT('%', LOWER(_s3.name), '%') - ) + JOIN events AS events + ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') + JOIN eras AS eras + ON eras.er_end_year > EXTRACT(YEAR FROM events.ev_dt) + AND eras.er_name = 'Cold War' + AND eras.er_start_year <= EXTRACT(YEAR FROM events.ev_dt) + GROUP BY + searches.search_id ), _s5 AS ( SELECT COUNT() AS n_cold_war_searches, - _t0.user_id AS user_id - FROM _t0 AS _t0 + agg_5 + FROM _t0 GROUP BY - _t0.user_id + agg_5 ) SELECT - _s4.user_name AS user_name, - _s5.n_cold_war_searches AS n_cold_war_searches -FROM _s4 AS _s4 + users.user_name, + _s5.n_cold_war_searches +FROM users AS users JOIN _s5 AS _s5 - ON _s4.user_id = _s5.user_id + ON _s5.agg_5 = users.user_id ORDER BY n_cold_war_searches DESC, user_name diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_sqlite.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_sqlite.sql index 4c05b1b08..77be77899 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_sqlite.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_sqlite.sql @@ -1,66 +1,31 @@ -WITH _s4 AS ( +WITH _t0 AS ( SELECT - users.user_id AS user_id, - users.user_name AS user_name - FROM users AS users -), _s0 AS ( - SELECT - searches.search_string AS search_string, - searches.search_user_id AS user_id + MAX(searches.search_user_id) AS agg_5 FROM searches AS searches -), _s1 AS ( - SELECT - events.ev_dt AS date_time, - events.ev_name AS name - FROM events AS events -), _t1 AS ( - SELECT - eras.er_end_year AS end_year, - eras.er_name AS name, - eras.er_start_year AS start_year - FROM eras AS eras -), _s2 AS ( - SELECT - _t1.end_year AS end_year, - _t1.start_year AS start_year - FROM _t1 AS _t1 - WHERE - _t1.name = 'Cold War' -), _s3 AS ( - SELECT - _s1.name AS name - FROM _s1 AS _s1 - JOIN _s2 AS _s2 - ON _s2.end_year > CAST(STRFTIME('%Y', _s1.date_time) AS INTEGER) - AND _s2.start_year <= CAST(STRFTIME('%Y', _s1.date_time) AS INTEGER) -), _t0 AS ( - SELECT - _s0.user_id AS user_id - FROM _s0 AS _s0 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _s3 AS _s3 - WHERE - LOWER(_s0.search_string) LIKE ( - '%' || LOWER(_s3.name) || '%' - ) + JOIN events AS events + ON LOWER(searches.search_string) LIKE ( + '%' || LOWER(events.ev_name) || '%' ) + JOIN eras AS eras + ON eras.er_end_year > CAST(STRFTIME('%Y', events.ev_dt) AS INTEGER) + AND eras.er_name = 'Cold War' + AND eras.er_start_year <= CAST(STRFTIME('%Y', events.ev_dt) AS INTEGER) + GROUP BY + searches.search_id ), _s5 AS ( SELECT COUNT() AS n_cold_war_searches, - _t0.user_id AS user_id - FROM _t0 AS _t0 + agg_5 + FROM _t0 GROUP BY - _t0.user_id + agg_5 ) SELECT - _s4.user_name AS user_name, - _s5.n_cold_war_searches AS n_cold_war_searches -FROM _s4 AS _s4 + users.user_name, + _s5.n_cold_war_searches +FROM users AS users JOIN _s5 AS _s5 - ON _s4.user_id = _s5.user_id + ON _s5.agg_5 = users.user_id ORDER BY n_cold_war_searches DESC, user_name diff --git a/tests/test_sql_refsols/tpch_q21_ansi.sql b/tests/test_sql_refsols/tpch_q21_ansi.sql index be254fddd..fe79e5c1f 100644 --- a/tests/test_sql_refsols/tpch_q21_ansi.sql +++ b/tests/test_sql_refsols/tpch_q21_ansi.sql @@ -15,104 +15,175 @@ WITH _s0 AS ( FROM _t2 AS _t2 WHERE _t2.name = 'SAUDI ARABIA' -), _s8 AS ( +), _s12 AS ( SELECT _s0.key AS key, _s0.name AS name FROM _s0 AS _s0 JOIN _s1 AS _s1 ON _s0.nation_key = _s1.key -), _t4 AS ( +), _t7 AS ( SELECT lineitem.l_commitdate AS commit_date, + lineitem.l_linenumber AS line_number, lineitem.l_orderkey AS order_key, lineitem.l_receiptdate AS receipt_date, lineitem.l_suppkey AS supplier_key FROM tpch.lineitem AS lineitem -), _s4 AS ( +), _s2 AS ( SELECT - _t4.supplier_key AS original_key, - _t4.order_key AS order_key, - _t4.supplier_key AS supplier_key - FROM _t4 AS _t4 + _t7.supplier_key AS original_key, + _t7.line_number AS line_number, + _t7.order_key AS order_key, + _t7.supplier_key AS supplier_key + FROM _t7 AS _t7 WHERE - _t4.commit_date < _t4.receipt_date -), _t5 AS ( + _t7.commit_date < _t7.receipt_date +), _s3 AS ( SELECT orders.o_orderkey AS key, orders.o_orderstatus AS order_status FROM tpch.orders AS orders -), _s5 AS ( - SELECT - _t5.key AS key - FROM _t5 AS _t5 - WHERE - _t5.order_status = 'F' -), _s3 AS ( +), _s4 AS ( SELECT - _s5.key AS key, - _s4.original_key AS original_key, - _s4.supplier_key AS supplier_key - FROM _s4 AS _s4 - JOIN _s5 AS _s5 - ON _s4.order_key = _s5.key -), _t6 AS ( + _s3.key AS key, + _s2.line_number AS line_number, + _s2.order_key AS order_key, + _s3.order_status AS order_status, + _s2.original_key AS original_key, + _s2.supplier_key AS supplier_key + FROM _s2 AS _s2 + JOIN _s3 AS _s3 + ON _s2.order_key = _s3.key +), _s5 AS ( SELECT lineitem.l_orderkey AS order_key, lineitem.l_suppkey AS supplier_key FROM tpch.lineitem AS lineitem -), _s6 AS ( +), _t6 AS ( SELECT - _t6.order_key AS order_key + _s4.order_key AS order_key, + _s4.supplier_key AS supplier_key, + _s5.supplier_key AS supplier_key_19, + _s4.key AS key, + _s4.line_number AS line_number, + _s4.order_status AS order_status, + _s4.original_key AS original_key + FROM _s4 AS _s4 + JOIN _s5 AS _s5 + ON _s4.key = _s5.order_key +), _t5 AS ( + SELECT + _t6.key AS key, + _t6.line_number AS line_number, + _t6.order_key AS order_key, + _t6.order_status AS order_status, + _t6.supplier_key AS supplier_key FROM _t6 AS _t6 WHERE - _s3.original_key <> _t6.supplier_key -), _s2 AS ( + _t6.original_key <> _t6.supplier_key_19 +), _t4 AS ( SELECT - _s3.key AS key, - _s3.original_key AS original_key, - _s3.supplier_key AS supplier_key - FROM _s3 AS _s3 + ANY_VALUE(_t5.line_number) AS agg_13, + ANY_VALUE(_t5.order_key) AS agg_14, + ANY_VALUE(_t5.supplier_key) AS agg_24, + ANY_VALUE(_t5.key) AS agg_3, + ANY_VALUE(_t5.order_status) AS agg_6 + FROM _t5 AS _t5 + GROUP BY + _t5.key, + _t5.line_number, + _t5.order_key +), _s10 AS ( + SELECT + _t4.agg_13 AS agg_13, + _t4.agg_14 AS agg_14, + _t4.agg_24 AS agg_24, + _t4.agg_3 AS agg_3 + FROM _t4 AS _t4 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _s6 AS _s6 - WHERE - _s3.key = _s6.order_key - ) + _t4.agg_6 = 'F' +), _s6 AS ( + SELECT + _t9.supplier_key AS original_key, + _t9.line_number AS line_number, + _t9.order_key AS order_key + FROM _t7 AS _t9 + WHERE + _t9.commit_date < _t9.receipt_date ), _s7 AS ( SELECT - _t7.order_key AS order_key - FROM _t4 AS _t7 + orders.o_orderkey AS key + FROM tpch.orders AS orders +), _s8 AS ( + SELECT + _s7.key AS key, + _s6.line_number AS line_number, + _s6.order_key AS order_key, + _s6.original_key AS original_key + FROM _s6 AS _s6 + JOIN _s7 AS _s7 + ON _s6.order_key = _s7.key +), _t10 AS ( + SELECT + lineitem.l_commitdate AS commit_date, + lineitem.l_orderkey AS order_key, + lineitem.l_receiptdate AS receipt_date, + lineitem.l_suppkey AS supplier_key + FROM tpch.lineitem AS lineitem +), _s9 AS ( + SELECT + _t10.order_key AS order_key, + _t10.supplier_key AS supplier_key + FROM _t10 AS _t10 + WHERE + _t10.commit_date < _t10.receipt_date +), _t8 AS ( + SELECT + _s8.order_key AS order_key, + _s9.supplier_key AS supplier_key_36, + _s8.key AS key, + _s8.line_number AS line_number, + _s8.original_key AS original_key + FROM _s8 AS _s8 + JOIN _s9 AS _s9 + ON _s8.key = _s9.order_key +), _s11 AS ( + SELECT + _t8.key AS key, + _t8.line_number AS line_number, + _t8.order_key AS order_key + FROM _t8 AS _t8 WHERE - _s2.original_key <> _t7.supplier_key AND _t7.commit_date < _t7.receipt_date + _t8.original_key <> _t8.supplier_key_36 ), _t3 AS ( SELECT - _s2.supplier_key AS supplier_key - FROM _s2 AS _s2 + _s10.agg_24 AS agg_24 + FROM _s10 AS _s10 WHERE NOT EXISTS( SELECT 1 AS "1" - FROM _s7 AS _s7 + FROM _s11 AS _s11 WHERE - _s2.key = _s7.order_key + _s10.agg_13 = _s11.line_number + AND _s10.agg_14 = _s11.order_key + AND _s10.agg_3 = _s11.key ) -), _s9 AS ( +), _s13 AS ( SELECT COUNT() AS agg_0, - _t3.supplier_key AS supplier_key + _t3.agg_24 AS agg_24 FROM _t3 AS _t3 GROUP BY - _t3.supplier_key + _t3.agg_24 ), _t1 AS ( SELECT - _s9.agg_0 AS agg_0, - _s8.name AS name - FROM _s8 AS _s8 - LEFT JOIN _s9 AS _s9 - ON _s8.key = _s9.supplier_key + _s13.agg_0 AS agg_0, + _s12.name AS name + FROM _s12 AS _s12 + LEFT JOIN _s13 AS _s13 + ON _s12.key = _s13.agg_24 ), _t0 AS ( SELECT COALESCE(_t1.agg_0, 0) AS numwait, diff --git a/tests/test_sql_refsols/tpch_q21_sqlite.sql b/tests/test_sql_refsols/tpch_q21_sqlite.sql index be254fddd..522a71e51 100644 --- a/tests/test_sql_refsols/tpch_q21_sqlite.sql +++ b/tests/test_sql_refsols/tpch_q21_sqlite.sql @@ -15,104 +15,175 @@ WITH _s0 AS ( FROM _t2 AS _t2 WHERE _t2.name = 'SAUDI ARABIA' -), _s8 AS ( +), _s12 AS ( SELECT _s0.key AS key, _s0.name AS name FROM _s0 AS _s0 JOIN _s1 AS _s1 ON _s0.nation_key = _s1.key -), _t4 AS ( +), _t7 AS ( SELECT lineitem.l_commitdate AS commit_date, + lineitem.l_linenumber AS line_number, lineitem.l_orderkey AS order_key, lineitem.l_receiptdate AS receipt_date, lineitem.l_suppkey AS supplier_key FROM tpch.lineitem AS lineitem -), _s4 AS ( +), _s2 AS ( SELECT - _t4.supplier_key AS original_key, - _t4.order_key AS order_key, - _t4.supplier_key AS supplier_key - FROM _t4 AS _t4 + _t7.supplier_key AS original_key, + _t7.line_number AS line_number, + _t7.order_key AS order_key, + _t7.supplier_key AS supplier_key + FROM _t7 AS _t7 WHERE - _t4.commit_date < _t4.receipt_date -), _t5 AS ( + _t7.commit_date < _t7.receipt_date +), _s3 AS ( SELECT orders.o_orderkey AS key, orders.o_orderstatus AS order_status FROM tpch.orders AS orders -), _s5 AS ( - SELECT - _t5.key AS key - FROM _t5 AS _t5 - WHERE - _t5.order_status = 'F' -), _s3 AS ( +), _s4 AS ( SELECT - _s5.key AS key, - _s4.original_key AS original_key, - _s4.supplier_key AS supplier_key - FROM _s4 AS _s4 - JOIN _s5 AS _s5 - ON _s4.order_key = _s5.key -), _t6 AS ( + _s3.key AS key, + _s2.line_number AS line_number, + _s2.order_key AS order_key, + _s3.order_status AS order_status, + _s2.original_key AS original_key, + _s2.supplier_key AS supplier_key + FROM _s2 AS _s2 + JOIN _s3 AS _s3 + ON _s2.order_key = _s3.key +), _s5 AS ( SELECT lineitem.l_orderkey AS order_key, lineitem.l_suppkey AS supplier_key FROM tpch.lineitem AS lineitem -), _s6 AS ( +), _t6 AS ( SELECT - _t6.order_key AS order_key + _s4.order_key AS order_key, + _s4.supplier_key AS supplier_key, + _s5.supplier_key AS supplier_key_19, + _s4.key AS key, + _s4.line_number AS line_number, + _s4.order_status AS order_status, + _s4.original_key AS original_key + FROM _s4 AS _s4 + JOIN _s5 AS _s5 + ON _s4.key = _s5.order_key +), _t5 AS ( + SELECT + _t6.key AS key, + _t6.line_number AS line_number, + _t6.order_key AS order_key, + _t6.order_status AS order_status, + _t6.supplier_key AS supplier_key FROM _t6 AS _t6 WHERE - _s3.original_key <> _t6.supplier_key -), _s2 AS ( + _t6.original_key <> _t6.supplier_key_19 +), _t4 AS ( SELECT - _s3.key AS key, - _s3.original_key AS original_key, - _s3.supplier_key AS supplier_key - FROM _s3 AS _s3 + MAX(_t5.line_number) AS agg_13, + MAX(_t5.order_key) AS agg_14, + MAX(_t5.supplier_key) AS agg_24, + MAX(_t5.key) AS agg_3, + MAX(_t5.order_status) AS agg_6 + FROM _t5 AS _t5 + GROUP BY + _t5.key, + _t5.line_number, + _t5.order_key +), _s10 AS ( + SELECT + _t4.agg_13 AS agg_13, + _t4.agg_14 AS agg_14, + _t4.agg_24 AS agg_24, + _t4.agg_3 AS agg_3 + FROM _t4 AS _t4 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _s6 AS _s6 - WHERE - _s3.key = _s6.order_key - ) + _t4.agg_6 = 'F' +), _s6 AS ( + SELECT + _t9.supplier_key AS original_key, + _t9.line_number AS line_number, + _t9.order_key AS order_key + FROM _t7 AS _t9 + WHERE + _t9.commit_date < _t9.receipt_date ), _s7 AS ( SELECT - _t7.order_key AS order_key - FROM _t4 AS _t7 + orders.o_orderkey AS key + FROM tpch.orders AS orders +), _s8 AS ( + SELECT + _s7.key AS key, + _s6.line_number AS line_number, + _s6.order_key AS order_key, + _s6.original_key AS original_key + FROM _s6 AS _s6 + JOIN _s7 AS _s7 + ON _s6.order_key = _s7.key +), _t10 AS ( + SELECT + lineitem.l_commitdate AS commit_date, + lineitem.l_orderkey AS order_key, + lineitem.l_receiptdate AS receipt_date, + lineitem.l_suppkey AS supplier_key + FROM tpch.lineitem AS lineitem +), _s9 AS ( + SELECT + _t10.order_key AS order_key, + _t10.supplier_key AS supplier_key + FROM _t10 AS _t10 + WHERE + _t10.commit_date < _t10.receipt_date +), _t8 AS ( + SELECT + _s8.order_key AS order_key, + _s9.supplier_key AS supplier_key_36, + _s8.key AS key, + _s8.line_number AS line_number, + _s8.original_key AS original_key + FROM _s8 AS _s8 + JOIN _s9 AS _s9 + ON _s8.key = _s9.order_key +), _s11 AS ( + SELECT + _t8.key AS key, + _t8.line_number AS line_number, + _t8.order_key AS order_key + FROM _t8 AS _t8 WHERE - _s2.original_key <> _t7.supplier_key AND _t7.commit_date < _t7.receipt_date + _t8.original_key <> _t8.supplier_key_36 ), _t3 AS ( SELECT - _s2.supplier_key AS supplier_key - FROM _s2 AS _s2 + _s10.agg_24 AS agg_24 + FROM _s10 AS _s10 WHERE NOT EXISTS( SELECT 1 AS "1" - FROM _s7 AS _s7 + FROM _s11 AS _s11 WHERE - _s2.key = _s7.order_key + _s10.agg_13 = _s11.line_number + AND _s10.agg_14 = _s11.order_key + AND _s10.agg_3 = _s11.key ) -), _s9 AS ( +), _s13 AS ( SELECT COUNT() AS agg_0, - _t3.supplier_key AS supplier_key + _t3.agg_24 AS agg_24 FROM _t3 AS _t3 GROUP BY - _t3.supplier_key + _t3.agg_24 ), _t1 AS ( SELECT - _s9.agg_0 AS agg_0, - _s8.name AS name - FROM _s8 AS _s8 - LEFT JOIN _s9 AS _s9 - ON _s8.key = _s9.supplier_key + _s13.agg_0 AS agg_0, + _s12.name AS name + FROM _s12 AS _s12 + LEFT JOIN _s13 AS _s13 + ON _s12.key = _s13.agg_24 ), _t0 AS ( SELECT COALESCE(_t1.agg_0, 0) AS numwait, From 9b4fb049fd8d5ceed7ae4d4de87b070e6de3ab78 Mon Sep 17 00:00:00 2001 From: knassre-bodo Date: Tue, 17 Jun 2025 13:39:33 -0400 Subject: [PATCH 02/46] Fix correl 16 WIP --- tests/test_pipeline_correl.py | 2 +- tests/test_plan_refsols/correl_16.txt | 16 +++--- .../correlated_pydough_functions.py | 57 +++++++++++++++++-- 3 files changed, 61 insertions(+), 14 deletions(-) diff --git a/tests/test_pipeline_correl.py b/tests/test_pipeline_correl.py index c53092f3b..c1177dc9a 100644 --- a/tests/test_pipeline_correl.py +++ b/tests/test_pipeline_correl.py @@ -336,7 +336,7 @@ PyDoughPandasTest( correl_16, "TPCH", - lambda: pd.DataFrame({"n": [929]}), + lambda: pd.DataFrame({"n": [242]}), "correl_16", ), id="correl_16", diff --git a/tests/test_plan_refsols/correl_16.txt b/tests/test_plan_refsols/correl_16.txt index dedc506a7..472266dd4 100644 --- a/tests/test_plan_refsols/correl_16.txt +++ b/tests/test_plan_refsols/correl_16.txt @@ -1,12 +1,14 @@ ROOT(columns=[('n', n)], orderings=[]) AGGREGATE(keys={}, aggregations={'n': COUNT()}) AGGREGATE(keys={'key': key}, aggregations={}) - FILTER(condition=rname == 'EUROPE':string & PERCENTILE(args=[], partition=[], order=[(account_balance_7):asc_last, (key_10):asc_last], n_buckets=10000) == tile, columns={'key': key}) - JOIN(conditions=[t0.key_2 == t1.nation_key], types=['inner'], columns={'account_balance_7': t1.account_balance, 'key': t0.key, 'key_10': t1.key, 'rname': t0.rname, 'tile': t0.tile}) - JOIN(conditions=[t0.region_key == t1.key], types=['inner'], columns={'key': t0.key, 'key_2': t0.key_2, 'rname': t1.rname, 'tile': t0.tile}) - JOIN(conditions=[t0.nation_key == t1.key], types=['inner'], columns={'key': t0.key, 'key_2': t1.key_2, 'region_key': t1.region_key, 'tile': t0.tile}) + FILTER(condition=PERCENTILE(args=[], partition=[], order=[(account_balance_7):asc_last, (key_10):asc_last], n_buckets=10000) == tile, columns={'key': key}) + JOIN(conditions=[t0.key_2 == t1.nation_key], types=['inner'], columns={'account_balance_7': t1.account_balance, 'key': t0.key, 'key_10': t1.key, 'tile': t0.tile}) + JOIN(conditions=[t0.region_key == t1.key], types=['inner'], columns={'key': t0.key, 'key_2': t0.key_2, 'tile': t0.tile}) + JOIN(conditions=[t0.nation_key == t1.key], types=['inner'], columns={'key': t0.key, 'key_2': t1.key, 'region_key': t1.region_key, 'tile': t0.tile}) PROJECT(columns={'key': key, 'nation_key': nation_key, 'tile': PERCENTILE(args=[], partition=[], order=[(account_balance):asc_last, (key):asc_last], n_buckets=10000)}) SCAN(table=tpch.SUPPLIER, columns={'account_balance': s_acctbal, 'key': s_suppkey, 'nation_key': s_nationkey}) - SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'key_2': n_nationkey, 'region_key': n_regionkey}) - SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'rname': r_name}) - SCAN(table=tpch.CUSTOMER, columns={'account_balance': c_acctbal, 'key': c_custkey, 'nation_key': c_nationkey}) + SCAN(table=tpch.NATION, columns={'key': n_nationkey, 'region_key': n_regionkey}) + FILTER(condition=name == 'EUROPE':string, columns={'key': key}) + SCAN(table=tpch.REGION, columns={'key': r_regionkey, 'name': r_name}) + FILTER(condition=market_segment == 'BUILDING':string, columns={'account_balance': account_balance, 'key': key, 'nation_key': nation_key}) + SCAN(table=tpch.CUSTOMER, columns={'account_balance': c_acctbal, 'key': c_custkey, 'market_segment': c_mktsegment, 'nation_key': c_nationkey}) diff --git a/tests/test_pydough_functions/correlated_pydough_functions.py b/tests/test_pydough_functions/correlated_pydough_functions.py index 3593e6592..e4289b8fb 100644 --- a/tests/test_pydough_functions/correlated_pydough_functions.py +++ b/tests/test_pydough_functions/correlated_pydough_functions.py @@ -268,18 +268,63 @@ def correl_16(): # of account balance (relative to all other suppliers) as at least one # customer's percentile value of account balance relative to all other # customers. Percentile should be measured down to increments of 0.01%. - # (This is a correlated SEMI-joins) - selected_customers = nation.CALCULATE(rname=region.name).customers.WHERE( + # (This is a correlated SEMI-joins). Before computing the percentiles of + # customers, filter the suppliers to consider ones in Europe in the + # BUILDING market segment. + european_nation = nation.WHERE(region.name == "EUROPE") + selected_customers = european_nation.customers.WHERE( + market_segment == "BUILDING" + ).WHERE( (PERCENTILE(by=(account_balance.ASC(), key.ASC()), n_buckets=10000) == tile) - & (rname == "EUROPE") ) - supplier_info = suppliers.CALCULATE( + selected_suppliers = suppliers.CALCULATE( tile=PERCENTILE(by=(account_balance.ASC(), key.ASC()), n_buckets=10000) - ) - selected_suppliers = supplier_info.WHERE(HAS(selected_customers)) + ).WHERE(HAS(selected_customers)) return TPCH.CALCULATE(n=COUNT(selected_suppliers)) +""" +-- 242 +select COUNT(distinct s_suppkey) +FROM ( + SELECT s_suppkey, s_nationkey, NTILE(10000) OVER (ORDER BY s_acctbal ASC, s_suppkey ASC) AS s_tile + from supplier +) S1 +INNER JOIN ( + select c_custkey, c_nationkey, NTILE(10000) OVER (ORDER BY c_acctbal ASC, c_custkey ASC) AS c_tile + FROM nation + INNER JOIN region + ON n_regionkey = r_regionkey AND r_name = 'EUROPE' + INNER JOIN customer + ON c_nationkey = n_nationkey AND c_mktsegment = 'BUILDING' +) S2 +ON S1.s_nationkey = S2.c_nationkey AND S1.s_tile = S2.c_tile +; + +-- 230 +select COUNT(distinct s_suppkey) +FROM ( + select s_suppkey, s_tile, NTILE(10000) OVER (PARTITION BY s_suppkey, s_nationkey ORDER BY c_acctbal ASC, c_custkey ASC) AS c_tile + FROM ( + SELECT s_suppkey, s_nationkey, NTILE(10000) OVER (ORDER BY s_acctbal ASC, s_suppkey ASC) AS s_tile + from supplier + ) S1 + INNER JOIN ( + select c_custkey, c_acctbal, c_nationkey + FROM nation + INNER JOIN region + ON n_regionkey = r_regionkey AND r_name = 'EUROPE' + INNER JOIN customer + ON c_nationkey = n_nationkey AND c_mktsegment = 'BUILDING' + ) S2 + ON S1.s_nationkey = S2.c_nationkey +) +WHERE s_tile = c_tile +order by 1 +; +""" + + def correl_17(): # Correlated back reference example #17: hybrid tree order of operations. # An extremely roundabout way of getting each region_name-nation_name From 319797f0f3665eeff01f0bc1ae50e82d794246f5 Mon Sep 17 00:00:00 2001 From: knassre-bodo Date: Wed, 18 Jun 2025 13:49:32 -0400 Subject: [PATCH 03/46] Fixed bugs, need to deal with window squished CTEs for correl #16 --- pydough/conversion/hybrid_decorrelater.py | 69 +++++++++++++++---- pydough/conversion/hybrid_expressions.py | 4 ++ tests/test_pipeline_correl.py | 3 +- tests/test_plan_refsols/correl_16.txt | 4 +- .../correlated_pydough_functions.py | 39 +++++++++-- 5 files changed, 96 insertions(+), 23 deletions(-) diff --git a/pydough/conversion/hybrid_decorrelater.py b/pydough/conversion/hybrid_decorrelater.py index 0600234bf..357498c5d 100644 --- a/pydough/conversion/hybrid_decorrelater.py +++ b/pydough/conversion/hybrid_decorrelater.py @@ -116,6 +116,7 @@ def remove_correl_refs( parent: HybridTree, child_height: int, correl_level: int, + new_parent_uni_keys: list[HybridExpr], ) -> HybridExpr: """ Recursively & destructively removes correlated references within a @@ -134,6 +135,9 @@ def remove_correl_refs( correlated reference to be removed. This is used to ensure that only references that are at the specified level of correlation are removed, and all others are left intact. + `new_parent_uni_keys`: The unique keys of the new parent with + regards to the current level. This is used to augment window calls + that require new partition keys to remain correct. Returns: The hybrid expression with all correlated references to `parent` @@ -157,7 +161,7 @@ def remove_correl_refs( # arguments. for idx, arg in enumerate(expr.args): expr.args[idx] = self.remove_correl_refs( - arg, parent, child_height, correl_level + arg, parent, child_height, correl_level, new_parent_uni_keys ) return expr case HybridWindowExpr(): @@ -165,15 +169,31 @@ def remove_correl_refs( # arguments, partition keys, and order keys. for idx, arg in enumerate(expr.args): expr.args[idx] = self.remove_correl_refs( - arg, parent, child_height, correl_level + arg, parent, child_height, correl_level, new_parent_uni_keys ) + req_aug: bool = True for idx, arg in enumerate(expr.partition_args): + if ( + expr.partition_args[idx].count_correlated_levels() + >= correl_level + ): + req_aug = False expr.partition_args[idx] = self.remove_correl_refs( - arg, parent, child_height, correl_level + arg, parent, child_height, correl_level, new_parent_uni_keys ) for order_arg in expr.order_args: order_arg.expr = self.remove_correl_refs( - order_arg.expr, parent, child_height, correl_level + order_arg.expr, + parent, + child_height, + correl_level, + new_parent_uni_keys, + ) + # Augment the partition arguments, if needed (unless the + # partition args already contains correlated references) + if req_aug: + expr.partition_args.extend( + [expr.shift_back(child_height) for expr in new_parent_uni_keys] ) return expr case ( @@ -198,6 +218,7 @@ def correl_ref_purge( new_parent: HybridTree, child_height: int, correl_level: int, + new_parent_uni_keys: list[HybridExpr], top_level: bool = True, ) -> None: """ @@ -222,6 +243,9 @@ def correl_ref_purge( correlated reference to be removed. This is used to ensure that only references that are at the specified level of correlation nesting are removed, and all others are left intact. + `new_parent_uni_keys`: The unique keys of the new parent with + regards to the current level. This is used to augment window calls + that require new partition keys to remain correct. `top_level`: Whether this is the top level of the hybrid tree that is being de-correlated. """ @@ -235,6 +259,7 @@ def correl_ref_purge( new_parent, child_height, correl_level + 1, + [], top_level=False, ) # Then, remove any correlated references from the pipeline @@ -246,24 +271,38 @@ def correl_ref_purge( for operation in level.pipeline: for name, expr in operation.terms.items(): operation.terms[name] = self.remove_correl_refs( - expr, old_parent, child_height, correl_level + expr, + old_parent, + child_height, + correl_level, + new_parent_uni_keys, ) for ordering in operation.orderings: ordering.expr = self.remove_correl_refs( - ordering.expr, old_parent, child_height, correl_level + ordering.expr, + old_parent, + child_height, + correl_level, + new_parent_uni_keys, ) for idx, expr in enumerate(operation.unique_exprs): operation.unique_exprs[idx] = self.remove_correl_refs( - expr, old_parent, child_height, correl_level + operation.unique_exprs[idx], + old_parent, + child_height, + correl_level, + new_parent_uni_keys, ) if isinstance(operation, HybridCalculate): for str, expr in operation.new_expressions.items(): - operation.new_expressions[str] = self.remove_correl_refs( - expr, old_parent, child_height, correl_level - ) + operation.new_expressions[str] = operation.terms[name] if isinstance(operation, HybridFilter): operation.condition = self.remove_correl_refs( - operation.condition, old_parent, child_height, correl_level + operation.condition, + old_parent, + child_height, + correl_level, + new_parent_uni_keys, ) # Repeat the process on the ancestor until either loop guard # condition is no longer True. Only update the child height if we @@ -313,13 +352,12 @@ def decorrelate_child( child_root = child_root.parent # Link the top level of the child subtree to the new parent. new_parent.add_successor(child_root) - # Replace any correlated references to the original parent with BACK references. - self.correl_ref_purge(child.subtree, old_parent, new_parent, child_height, 1) # Update the join keys to join on the unique keys of all the ancestors, # and the aggregation keys along with them. new_join_keys: list[tuple[HybridExpr, HybridExpr]] = [] additional_levels: int = 0 current_level: HybridTree | None = old_parent + parent_agg_keys: list[HybridExpr] = [] new_agg_keys: list[HybridExpr] = [] rhs_shift: int = child_height - skipped_levels while current_level is not None: @@ -332,11 +370,16 @@ def decorrelate_child( rhs_key: HybridExpr = lhs_key.shift_back(rhs_shift) if not skip_join: new_join_keys.append((lhs_key, rhs_key)) + parent_agg_keys.append(lhs_key) new_agg_keys.append(rhs_key) current_level = current_level.parent additional_levels += 1 child.subtree.join_keys = new_join_keys child.subtree.general_join_condition = None + # Replace any correlated references to the original parent with BACK references. + self.correl_ref_purge( + child.subtree, old_parent, new_parent, child_height, 1, parent_agg_keys + ) # If aggregating, update the aggregation keys accordingly. is_faux_agg: bool = ( child.connection_type in (ConnectionType.SEMI, ConnectionType.ANTI) diff --git a/pydough/conversion/hybrid_expressions.py b/pydough/conversion/hybrid_expressions.py index 95a8097fd..ca4b27e8d 100644 --- a/pydough/conversion/hybrid_expressions.py +++ b/pydough/conversion/hybrid_expressions.py @@ -218,6 +218,8 @@ def to_string(self): return repr(self.column) def shift_back(self, levels: int, shift_correl: bool = True) -> HybridExpr: + if levels == 0: + return self return HybridBackRefExpr(self.column.column_property.name, levels, self.typ) @@ -275,6 +277,8 @@ def to_string(self): return f"BACK({self.back_idx}).{self.name}" def shift_back(self, levels: int, shift_correl: bool = True) -> HybridExpr: + if levels == 0: + return self return HybridBackRefExpr(self.name, self.back_idx + levels, self.typ) def squish_backrefs_into_correl( diff --git a/tests/test_pipeline_correl.py b/tests/test_pipeline_correl.py index c1177dc9a..f95b71e17 100644 --- a/tests/test_pipeline_correl.py +++ b/tests/test_pipeline_correl.py @@ -336,10 +336,11 @@ PyDoughPandasTest( correl_16, "TPCH", - lambda: pd.DataFrame({"n": [242]}), + lambda: pd.DataFrame({"n": [230]}), "correl_16", ), id="correl_16", + marks=pytest.mark.skip("TODO: fix window squishing in CTE merge step"), ), pytest.param( PyDoughPandasTest( diff --git a/tests/test_plan_refsols/correl_16.txt b/tests/test_plan_refsols/correl_16.txt index 472266dd4..6ee2bc0e8 100644 --- a/tests/test_plan_refsols/correl_16.txt +++ b/tests/test_plan_refsols/correl_16.txt @@ -1,8 +1,8 @@ ROOT(columns=[('n', n)], orderings=[]) AGGREGATE(keys={}, aggregations={'n': COUNT()}) AGGREGATE(keys={'key': key}, aggregations={}) - FILTER(condition=PERCENTILE(args=[], partition=[], order=[(account_balance_7):asc_last, (key_10):asc_last], n_buckets=10000) == tile, columns={'key': key}) - JOIN(conditions=[t0.key_2 == t1.nation_key], types=['inner'], columns={'account_balance_7': t1.account_balance, 'key': t0.key, 'key_10': t1.key, 'tile': t0.tile}) + FILTER(condition=PERCENTILE(args=[], partition=[nation_key_12, key], order=[(account_balance_7):asc_last, (key_10):asc_last], n_buckets=10000) == tile, columns={'key': key}) + JOIN(conditions=[t0.key_2 == t1.nation_key], types=['inner'], columns={'account_balance_7': t1.account_balance, 'key': t0.key, 'key_10': t1.key, 'nation_key_12': t1.nation_key, 'tile': t0.tile}) JOIN(conditions=[t0.region_key == t1.key], types=['inner'], columns={'key': t0.key, 'key_2': t0.key_2, 'tile': t0.tile}) JOIN(conditions=[t0.nation_key == t1.key], types=['inner'], columns={'key': t0.key, 'key_2': t1.key, 'region_key': t1.region_key, 'tile': t0.tile}) PROJECT(columns={'key': key, 'nation_key': nation_key, 'tile': PERCENTILE(args=[], partition=[], order=[(account_balance):asc_last, (key):asc_last], n_buckets=10000)}) diff --git a/tests/test_pydough_functions/correlated_pydough_functions.py b/tests/test_pydough_functions/correlated_pydough_functions.py index e4289b8fb..69f24e370 100644 --- a/tests/test_pydough_functions/correlated_pydough_functions.py +++ b/tests/test_pydough_functions/correlated_pydough_functions.py @@ -267,15 +267,20 @@ def correl_16(): # Count how many european suppliers have the exact same percentile value # of account balance (relative to all other suppliers) as at least one # customer's percentile value of account balance relative to all other - # customers. Percentile should be measured down to increments of 0.01%. - # (This is a correlated SEMI-joins). Before computing the percentiles of - # customers, filter the suppliers to consider ones in Europe in the - # BUILDING market segment. + # customers in the nation, int he same nation as the supplier. Percentile + # should be measured down to increments of 0.01%. Only consider European + # suppliers/customers, and customers in the building market segment. + # (This is a correlated SEMI-joins). european_nation = nation.WHERE(region.name == "EUROPE") selected_customers = european_nation.customers.WHERE( market_segment == "BUILDING" ).WHERE( - (PERCENTILE(by=(account_balance.ASC(), key.ASC()), n_buckets=10000) == tile) + ( + PERCENTILE( + by=(account_balance.ASC(), key.ASC()), n_buckets=10000, per="nation" + ) + == tile + ) ) selected_suppliers = suppliers.CALCULATE( tile=PERCENTILE(by=(account_balance.ASC(), key.ASC()), n_buckets=10000) @@ -284,14 +289,14 @@ def correl_16(): """ --- 242 +-- 230 select COUNT(distinct s_suppkey) FROM ( SELECT s_suppkey, s_nationkey, NTILE(10000) OVER (ORDER BY s_acctbal ASC, s_suppkey ASC) AS s_tile from supplier ) S1 INNER JOIN ( - select c_custkey, c_nationkey, NTILE(10000) OVER (ORDER BY c_acctbal ASC, c_custkey ASC) AS c_tile + select c_custkey, c_nationkey, NTILE(10000) OVER (PARTITION BY n_nationkey ORDER BY c_acctbal ASC, c_custkey ASC) AS c_tile FROM nation INNER JOIN region ON n_regionkey = r_regionkey AND r_name = 'EUROPE' @@ -322,6 +327,26 @@ def correl_16(): WHERE s_tile = c_tile order by 1 ; + +select distinct s_count, c_count_1, c_count_2 +FROM ( + select s_suppkey, s_count, c_count_1, COUNT(*) OVER (PARTITION BY s_nationkey) AS c_count_2 + FROM ( + SELECT s_suppkey, s_nationkey, COUNT(*) OVER () AS s_count + from supplier + ) S1 + INNER JOIN ( + select c_custkey, c_acctbal, c_nationkey, COUNT(*) OVER () AS c_count_1 + FROM nation + INNER JOIN region + ON n_regionkey = r_regionkey AND r_name = 'EUROPE' + INNER JOIN customer + ON c_nationkey = n_nationkey AND c_mktsegment = 'BUILDING' + ) S2 + ON S1.s_nationkey = S2.c_nationkey +) +order by 1, 2, 3 +; """ From e4764ca45c8421bdf6d11bc6330719e9b4ef71de Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 20 Jun 2025 07:54:22 -0700 Subject: [PATCH 04/46] Squash merge Hadia/sf changes onto kian/decor_semi_anti --- .github/workflows/pr_testing.yml | 116 ++- .github/workflows/sf_testing.yml | 60 ++ README.md | 17 + demos/notebooks/SF_TPCH_q1.ipynb | 307 +++++++ documentation/usage.md | 2 +- pydough/database_connectors/README.md | 2 + pydough/database_connectors/__init__.py | 7 +- .../database_connectors/builtin_databases.py | 45 +- .../database_connectors/database_connector.py | 45 +- pydough/database_connectors/db_types.py | 46 + pydough/sqlglot/execute_relational.py | 3 + pydough/sqlglot/transform_bindings/README.md | 1 + .../sqlglot/transform_bindings/__init__.py | 10 +- .../sf_transform_bindings.py | 52 ++ pyproject.toml | 11 +- pytest.ini | 1 + tests/conftest.py | 74 ++ .../snowflake_sample_graphs.json | 821 ++++++++++++++++++ tests/test_pipeline_tpch.py | 16 + .../cumulative_stock_analysis_snowflake.sql | 32 + tests/test_sql_refsols/datediff_snowflake.sql | 16 + .../datetime_sampler_snowflake.sql | 164 ++++ .../defog_broker_adv10_snowflake.sql | 22 + .../defog_broker_adv11_snowflake.sql | 49 ++ .../defog_broker_adv12_snowflake.sql | 8 + .../defog_broker_adv13_snowflake.sql | 8 + .../defog_broker_adv14_snowflake.sql | 9 + .../defog_broker_adv15_snowflake.sql | 15 + .../defog_broker_adv16_snowflake.sql | 23 + .../defog_broker_adv1_snowflake.sql | 17 + .../defog_broker_adv2_snowflake.sql | 20 + .../defog_broker_adv3_snowflake.sql | 21 + .../defog_broker_adv4_snowflake.sql | 20 + .../defog_broker_adv5_snowflake.sql | 63 ++ .../defog_broker_adv6_snowflake.sql | 17 + .../defog_broker_adv7_snowflake.sql | 72 ++ .../defog_broker_adv8_snowflake.sql | 47 + .../defog_broker_adv9_snowflake.sql | 24 + .../defog_broker_basic10_snowflake.sql | 22 + .../defog_broker_basic1_snowflake.sql | 26 + .../defog_broker_basic2_snowflake.sql | 20 + .../defog_broker_basic3_snowflake.sql | 19 + .../defog_broker_basic4_snowflake.sql | 40 + .../defog_broker_basic5_snowflake.sql | 27 + .../defog_broker_basic6_snowflake.sql | 27 + .../defog_broker_basic7_snowflake.sql | 15 + .../defog_broker_basic8_snowflake.sql | 15 + .../defog_broker_basic9_snowflake.sql | 22 + .../defog_broker_gen1_snowflake.sql | 8 + .../defog_broker_gen2_snowflake.sql | 6 + .../defog_broker_gen3_snowflake.sql | 14 + .../defog_broker_gen4_snowflake.sql | 22 + .../defog_broker_gen5_snowflake.sql | 12 + .../defog_dealership_adv10_snowflake.sql | 17 + .../defog_dealership_adv11_snowflake.sql | 24 + .../defog_dealership_adv12_snowflake.sql | 51 ++ .../defog_dealership_adv14_snowflake.sql | 5 + .../defog_dealership_adv15_snowflake.sql | 18 + .../defog_dealership_adv16_snowflake.sql | 19 + .../defog_dealership_adv1_snowflake.sql | 23 + .../defog_dealership_adv2_snowflake.sql | 20 + .../defog_dealership_adv3_snowflake.sql | 17 + .../defog_dealership_adv4_snowflake.sql | 25 + .../defog_dealership_adv5_snowflake.sql | 20 + .../defog_dealership_adv6_snowflake.sql | 26 + .../defog_dealership_adv7_snowflake.sql | 20 + .../defog_dealership_adv9_snowflake.sql | 5 + .../defog_dealership_basic10_snowflake.sql | 22 + .../defog_dealership_basic1_snowflake.sql | 26 + .../defog_dealership_basic2_snowflake.sql | 20 + .../defog_dealership_basic3_snowflake.sql | 39 + .../defog_dealership_basic4_snowflake.sql | 24 + .../defog_dealership_basic5_snowflake.sql | 22 + .../defog_dealership_basic6_snowflake.sql | 19 + .../defog_dealership_basic7_snowflake.sql | 17 + .../defog_dealership_basic8_snowflake.sql | 20 + .../defog_dealership_basic9_snowflake.sql | 15 + .../defog_dealership_gen1_snowflake.sql | 11 + .../defog_dealership_gen2_snowflake.sql | 10 + .../defog_dealership_gen3_snowflake.sql | 20 + .../defog_dealership_gen4_snowflake.sql | 33 + .../defog_dealership_gen5_snowflake.sql | 17 + .../defog_ewallet_adv10_snowflake.sql | 16 + .../defog_ewallet_adv11_snowflake.sql | 18 + .../defog_ewallet_adv12_snowflake.sql | 16 + .../defog_ewallet_adv13_snowflake.sql | 5 + .../defog_ewallet_adv14_snowflake.sql | 11 + .../defog_ewallet_adv15_snowflake.sql | 21 + .../defog_ewallet_adv16_snowflake.sql | 18 + .../defog_ewallet_adv1_snowflake.sql | 19 + .../defog_ewallet_adv2_snowflake.sql | 23 + .../defog_ewallet_adv3_snowflake.sql | 16 + .../defog_ewallet_adv4_snowflake.sql | 14 + .../defog_ewallet_adv5_snowflake.sql | 5 + .../defog_ewallet_adv6_snowflake.sql | 13 + .../defog_ewallet_adv7_snowflake.sql | 14 + .../defog_ewallet_adv8_snowflake.sql | 19 + .../defog_ewallet_adv9_snowflake.sql | 10 + .../defog_ewallet_basic10_snowflake.sql | 22 + .../defog_ewallet_basic1_snowflake.sql | 12 + .../defog_ewallet_basic2_snowflake.sql | 23 + .../defog_ewallet_basic3_snowflake.sql | 28 + .../defog_ewallet_basic4_snowflake.sql | 28 + .../defog_ewallet_basic5_snowflake.sql | 22 + .../defog_ewallet_basic6_snowflake.sql | 15 + .../defog_ewallet_basic7_snowflake.sql | 15 + .../defog_ewallet_basic8_snowflake.sql | 19 + .../defog_ewallet_basic9_snowflake.sql | 26 + .../defog_ewallet_gen1_snowflake.sql | 26 + .../defog_ewallet_gen2_snowflake.sql | 14 + .../defog_ewallet_gen3_snowflake.sql | 6 + .../defog_ewallet_gen4_snowflake.sql | 45 + .../defog_ewallet_gen5_snowflake.sql | 46 + .../epoch_culture_events_info_snowflake.sql | 32 + .../epoch_event_gap_per_era_snowflake.sql | 28 + .../epoch_events_per_season_snowflake.sql | 19 + .../epoch_first_event_per_era_snowflake.sql | 18 + .../epoch_intra_season_searches_snowflake.sql | 86 ++ ...opular_search_engine_per_tod_snowflake.sql | 28 + ...ost_popular_topic_per_region_snowflake.sql | 27 + .../epoch_num_predawn_cold_war_snowflake.sql | 60 ++ ..._search_other_users_per_user_snowflake.sql | 32 + ...ping_event_searches_per_user_snowflake.sql | 38 + .../epoch_pct_searches_per_tod_snowflake.sql | 26 + .../epoch_search_results_by_tod_snowflake.sql | 29 + ...epoch_summer_events_per_type_snowflake.sql | 15 + ...poch_unique_users_per_engine_snowflake.sql | 25 + ...users_most_cold_war_searches_snowflake.sql | 65 ++ .../global_acctbal_breakdown_snowflake.sql | 52 ++ .../hour_minute_day_snowflake.sql | 11 + .../nation_acctbal_breakdown_snowflake.sql | 71 ++ tests/test_sql_refsols/rank_a_snowflake.sql | 4 + tests/test_sql_refsols/rank_b_snowflake.sql | 4 + tests/test_sql_refsols/rank_c_snowflake.sql | 4 + .../region_acctbal_breakdown_snowflake.sql | 71 ++ .../simple_filter_snowflake.sql | 7 + .../simple_scan_snowflake.sql | 3 + .../simple_smallest_or_largest_snowflake.sql | 21 + .../simple_var_std_snowflake.sql | 26 + ...tion_week_sampler_friday_one_snowflake.sql | 27 + ...ion_week_sampler_friday_zero_snowflake.sql | 25 + ...tion_week_sampler_monday_one_snowflake.sql | 27 + ...ion_week_sampler_monday_zero_snowflake.sql | 25 + ...on_week_sampler_saturday_one_snowflake.sql | 27 + ...n_week_sampler_saturday_zero_snowflake.sql | 25 + ...tion_week_sampler_sunday_one_snowflake.sql | 23 + ...ion_week_sampler_sunday_zero_snowflake.sql | 23 + ...on_week_sampler_thursday_one_snowflake.sql | 27 + ...n_week_sampler_thursday_zero_snowflake.sql | 25 + ...ion_week_sampler_tuesday_one_snowflake.sql | 27 + ...on_week_sampler_tuesday_zero_snowflake.sql | 25 + ...n_week_sampler_wednesday_one_snowflake.sql | 27 + ..._week_sampler_wednesday_zero_snowflake.sql | 25 + ...tery_failure_rates_anomalies_snowflake.sql | 36 + ...ph_country_cartesian_oddball_snowflake.sql | 12 + ...country_combination_analysis_snowflake.sql | 37 + ...untry_incident_rate_analysis_snowflake.sql | 72 ++ ...percentages_sun_set_by_error_snowflake.sql | 27 + ...e_sun_set_by_factory_country_snowflake.sql | 28 + ...nograph_global_incident_rate_snowflake.sql | 13 + ...hnograph_hot_purchase_window_snowflake.sql | 27 + ...ncident_rate_by_release_year_snowflake.sql | 41 + ...raph_incident_rate_per_brand_snowflake.sql | 26 + ...ograph_monthly_incident_rate_snowflake.sql | 72 ++ ...aph_most_unreliable_products_snowflake.sql | 31 + ...incident_rate_goldcopperstar_snowflake.sql | 91 ++ ...lative_incident_rate_overall_snowflake.sql | 73 ++ .../time_threshold_reached_snowflake.sql | 24 + tests/test_sql_refsols/tpch_q10_snowflake.sql | 33 + tests/test_sql_refsols/tpch_q11_snowflake.sql | 42 + tests/test_sql_refsols/tpch_q12_snowflake.sql | 25 + tests/test_sql_refsols/tpch_q13_snowflake.sql | 27 + tests/test_sql_refsols/tpch_q14_snowflake.sql | 26 + tests/test_sql_refsols/tpch_q15_snowflake.sql | 51 ++ tests/test_sql_refsols/tpch_q16_snowflake.sql | 32 + tests/test_sql_refsols/tpch_q17_snowflake.sql | 20 + tests/test_sql_refsols/tpch_q18_snowflake.sql | 26 + tests/test_sql_refsols/tpch_q19_snowflake.sql | 41 + tests/test_sql_refsols/tpch_q1_snowflake.sql | 40 + tests/test_sql_refsols/tpch_q20_snowflake.sql | 36 + tests/test_sql_refsols/tpch_q21_snowflake.sql | 129 +++ tests/test_sql_refsols/tpch_q22_snowflake.sql | 39 + tests/test_sql_refsols/tpch_q2_snowflake.sql | 40 + tests/test_sql_refsols/tpch_q3_snowflake.sql | 32 + tests/test_sql_refsols/tpch_q4_snowflake.sql | 51 ++ tests/test_sql_refsols/tpch_q5_snowflake.sql | 56 ++ tests/test_sql_refsols/tpch_q6_snowflake.sql | 14 + tests/test_sql_refsols/tpch_q7_snowflake.sql | 53 ++ tests/test_sql_refsols/tpch_q8_snowflake.sql | 38 + tests/test_sql_refsols/tpch_q9_snowflake.sql | 34 + .../week_offset_snowflake.sql | 13 + ...window_sliding_frame_relsize_snowflake.sql | 16 + .../window_sliding_frame_relsum_snowflake.sql | 16 + tests/testing_utilities.py | 55 +- 194 files changed, 6488 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/sf_testing.yml create mode 100644 demos/notebooks/SF_TPCH_q1.ipynb create mode 100644 pydough/database_connectors/db_types.py create mode 100644 pydough/sqlglot/transform_bindings/sf_transform_bindings.py create mode 100644 tests/test_metadata/snowflake_sample_graphs.json create mode 100644 tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql create mode 100644 tests/test_sql_refsols/datediff_snowflake.sql create mode 100644 tests/test_sql_refsols/datetime_sampler_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv10_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv11_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv12_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv13_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv14_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv15_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv16_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv5_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv6_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv7_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv8_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_adv9_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic10_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic5_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic6_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic7_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic8_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_basic9_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_gen1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_gen2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_gen3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_gen4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_broker_gen5_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql create mode 100644 tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_events_per_season_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql create mode 100644 tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql create mode 100644 tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql create mode 100644 tests/test_sql_refsols/hour_minute_day_snowflake.sql create mode 100644 tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql create mode 100644 tests/test_sql_refsols/rank_a_snowflake.sql create mode 100644 tests/test_sql_refsols/rank_b_snowflake.sql create mode 100644 tests/test_sql_refsols/rank_c_snowflake.sql create mode 100644 tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql create mode 100644 tests/test_sql_refsols/simple_filter_snowflake.sql create mode 100644 tests/test_sql_refsols/simple_scan_snowflake.sql create mode 100644 tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql create mode 100644 tests/test_sql_refsols/simple_var_std_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql create mode 100644 tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql create mode 100644 tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql create mode 100644 tests/test_sql_refsols/time_threshold_reached_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q10_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q11_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q12_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q13_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q14_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q15_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q16_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q17_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q18_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q19_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q1_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q20_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q21_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q22_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q2_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q3_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q4_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q5_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q6_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q7_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q8_snowflake.sql create mode 100644 tests/test_sql_refsols/tpch_q9_snowflake.sql create mode 100644 tests/test_sql_refsols/week_offset_snowflake.sql create mode 100644 tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql create mode 100644 tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql diff --git a/.github/workflows/pr_testing.yml b/.github/workflows/pr_testing.yml index 565c1d724..e60f42f8f 100644 --- a/.github/workflows/pr_testing.yml +++ b/.github/workflows/pr_testing.yml @@ -3,6 +3,29 @@ name: PR Testing on: pull_request: workflow_dispatch: + inputs: + py310: + description: "Python 3.10" + type: boolean + default: true + py311: + description: "Python 3.11" + type: boolean + default: true + py312: + description: "Python 3.12" + type: boolean + default: true + run-python: + description: "Run Main PyDough Tests" + type: boolean + required: false + default: true + run-sf: + description: "Run Snowflake Tests" + type: boolean + required: false + default: false # Limit CI to cancel previous runs in the same PR concurrency: @@ -26,23 +49,70 @@ jobs: run: | set -xe pipefail echo "commitMsg=$(git log -1 --pretty=format:'%s')" >> $GITHUB_OUTPUT - - run-tests: - strategy: - matrix: - python-version: - - "3.10" - - "3.11" - - "3.12" - needs: [get-msg] - name: python + # Get Python versions from inputs if workflow_dispatch is used + # Otherwise, use all versions for pull_request events. + get-py-ver-matrix: + name: Get Python Version Matrix runs-on: ubuntu-latest + outputs: + # Get the matrix output produced by the step below (set-matrix). + # This will be used in the run tests job. + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + # Capture the Python versions selected via dispatch as a JSON array output + # For manual runs (workflow_dispatch), it uses the selected + # inputs to determine which versions to run. + # For other events like pull_request, it defaults to all versions. + - name: Set selected Python versions + id: set-matrix + run: | + versions=() + + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + if [ "${{ inputs.py310 }}" == "true" ]; then + versions+=("\"3.10\"") + fi + if [ "${{ inputs.py311 }}" == "true" ]; then + versions+=("\"3.11\"") + fi + if [ "${{ inputs.py312 }}" == "true" ]; then + versions+=("\"3.12\"") + fi + else + # For pull_request and other events, use all versions by default + versions=( "\"3.10\"" "\"3.11\"" "\"3.12\"" ) + fi + # Join the array elements with commas and wrap in brackets to make valid JSON + joined=$(IFS=, ; echo "[${versions[*]}]") + + # Output to GitHub Actions expected format + echo "matrix=$joined" >> $GITHUB_OUTPUT + + + + run-python-tests: + name: Main Python Tests + needs: [get-msg, get-py-ver-matrix] # https://docs.github.com/en/actions/learn-github-actions/expressions#contains # contains is case-insensitive - if: contains(needs.get-msg.outputs.commitMsg, '[run ci]') + if: | + (github.event_name == 'pull_request' && contains(needs.get-msg.outputs.commitMsg, '[run ci]')) || + (github.event_name == 'workflow_dispatch' && inputs.run-python) + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ${{ github.event_name == 'workflow_dispatch' + && fromJSON(needs.get-py-ver-matrix.outputs.matrix) + || fromJSON('["3.10", "3.11", "3.12"]') }} + steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 + + - name: Setup Python ${{ matrix.python-version }} + id: setup-python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} - name: Install uv uses: astral-sh/setup-uv@v3 @@ -54,7 +124,23 @@ jobs: run: ./demos/setup_tpch.sh ./tpch.db - name: Run Ruff - run: uv run --python ${{ matrix.python-version }} ruff check . + run: uv run ruff check . - name: Run Tests - run: uv run --python ${{ matrix.python-version }} pytest tests/ + run: uv run pytest tests/ -m "not snowflake" -rs + + run-sf-tests: + name: Snowflake Tests + needs: [get-msg, get-py-ver-matrix] + if: | + (github.event_name == 'pull_request' && contains(needs.get-msg.outputs.commitMsg, '[run sf]')) || + (github.event_name == 'workflow_dispatch' && inputs.run-sf) + uses: ./.github/workflows/sf_testing.yml + secrets: + SF_USERNAME: ${{ secrets.SF_USERNAME }} + SF_PASSWORD: ${{ secrets.SF_PASSWORD }} + SF_ACCOUNT: ${{ secrets.SF_ACCOUNT }} + with: + python-versions: ${{ github.event_name == 'workflow_dispatch' + && needs.get-py-ver-matrix.outputs.matrix + || '["3.10", "3.11", "3.12"]' }} diff --git a/.github/workflows/sf_testing.yml b/.github/workflows/sf_testing.yml new file mode 100644 index 000000000..3001a1b3f --- /dev/null +++ b/.github/workflows/sf_testing.yml @@ -0,0 +1,60 @@ +name: Run Snowflake Tests + +on: + workflow_call: + inputs: + python-versions: + description: "JSON string of Python versions" + type: string + required: true + secrets: + SF_USERNAME: + required: true + SF_PASSWORD: + required: true + SF_ACCOUNT: + required: true + +jobs: + sf-tests: + name: Snowflake Tests (Python ${{ matrix.python-version }}) + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ${{ fromJSON(inputs.python-versions) }} + + env: + SF_USERNAME: ${{ secrets.SF_USERNAME }} + SF_PASSWORD: ${{ secrets.SF_PASSWORD }} + SF_ACCOUNT: ${{ secrets.SF_ACCOUNT }} + + steps: + - uses: actions/checkout@v4 + + - name: Setup Python ${{ matrix.python-version }} + id: setup-python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install uv + uses: astral-sh/setup-uv@v3 + with: + version: "0.4.23" + + - name: Create virtual environment + # uv requires an existing virtual environment to install packages. + # Running `uv venv` creates the `.venv` directory so that subsequent + # `uv pip install` commands install dependencies inside this environment. + # Without this step, `uv pip install` fails with + # "No virtual environment found". + run: uv venv + + - name: Install dependencies + run: uv pip install -e ".[snowflake]" + + - name: Confirm Snowflake connector is installed + run: uv run python -c "import snowflake.connector; print(snowflake.connector.__version__)" + + - name: Run Snowflake Tests + run: uv run pytest -m snowflake tests/ -rs diff --git a/README.md b/README.md index 77dde1958..be2e8d2d6 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,23 @@ script must be run so that the `defog.db` file is located in the `tests` directo To run our CI tests on your PR, you must include the flag `[run CI]` in latest commit message. +### Running Snowflake Tests on CI +To run our Snowflake CI tests on your PR, you must include the flag `[run SF]` in your commit message. + +**Note:** To run these tests locally, you need the following: + +1. Install the Snowflake Connector for Python with Pandas support + ```bash + pip install "snowflake-connector-python[pandas]" + ``` + +2. Set your Snowflake credentials as environment variables: + ```bash + export SF_USERNAME="your_username" + export SF_PASSWORD="your_password" + export SF_ACCOUNT="your_account" + ``` + ## Runtime Dependencies PyDough requires having the following Python modules installed to use diff --git a/demos/notebooks/SF_TPCH_q1.ipynb b/demos/notebooks/SF_TPCH_q1.ipynb new file mode 100644 index 000000000..3cfdaee50 --- /dev/null +++ b/demos/notebooks/SF_TPCH_q1.ipynb @@ -0,0 +1,307 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> 📦 **Note:** Before running this notebook, make sure the **Snowflake Python connector with pandas support** is installed.\n", + "\n", + "You can install it using one of the following:\n", + "\n", + "- If you're working inside the repo:\n", + " ```bash\n", + " pip install -e \".[snowflake]\"\n", + " ```\n", + "\n", + "- Or install the connector directly\n", + " ```bash\n", + " pip install \"snowflake-connector-python[pandas]\"\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 📦 Importing Required Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pydough\n", + "import datetime\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 🔐 Loading Credentials and Connecting to Snowflake\n", + "\n", + "This block performs two main tasks:\n", + "\n", + "1. **Load credentials from a local JSON file**:\n", + " - The `creds.json` file contains your Snowflake login details like username, password, account name, database, schema, and warehouse.\n", + " - These are read using Python’s built-in `json` module and stored in variables.\n", + "\n", + "2. **Connect to Snowflake using PyDough**:\n", + " - `pydough.active_session.load_metadata_graph(...)` loads a metadata graph that maps your Snowflake schema (used for query planning or optimizations).\n", + " - `connect_database(...)` uses the loaded credentials to establish a live connection to your Snowflake database.\n", + "\n", + "📌 Make sure:\n", + "- The `creds.json` file exists and contains all the required keys.\n", + "- The metadata graph path points to a valid JSON file that represents your schema.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DatabaseContext(connection=, dialect=)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import json\n", + "\n", + "path_to_creds = \"./creds.json\"\n", + "with open(path_to_creds) as f:\n", + " creds = json.load(f)\n", + "\n", + "sf_username = creds[\"SF_USERNAME\"]\n", + "sf_password = creds[\"SF_PASSWORD\"]\n", + "sf_account = creds[\"SF_ACCOUNT\"]\n", + "sf_tpch_db = creds[\"SF_DATABASE\"]\n", + "sf_tpch_schema = creds[\"SF_SCHEMA\"]\n", + "sf_warehouse = creds[\"SF_WH\"]\n", + "\n", + "pydough.active_session.load_metadata_graph(\"./tests/test_metadata/snowflake_sample_graphs.json\", \"TPCH\")\n", + "pydough.active_session.connect_database(\"snowflake\", \n", + " user=sf_username,\n", + " password=sf_password,\n", + " account=sf_account,\n", + " warehouse=sf_warehouse,\n", + " database=sf_tpch_db,\n", + " schema=sf_tpch_schema,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 🔌 Enabling PyDough's Jupyter Magic Commands\n", + "\n", + "This line loads the `pydough.jupyter_extensions` module, which adds **custom magic commands** (like `%%pydough`) to the notebook.\n", + "\n", + "These magic commands allow you to:\n", + "- Write PyDough directly in notebook cells using `%%pydough`\n", + "- Automatically render results\n", + "\n", + "This is a Jupyter-specific feature — the `%load_ext` command dynamically loads these extensions into your current notebook session.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext pydough.jupyter_extensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 📊 TPC-H Query 1 Using PyDough DSL\n", + "\n", + "This cell runs **TPC-H Query 1** using PyDough's Python-style DSL instead of raw SQL.\n", + "\n", + "The query computes summary statistics (like sums, averages, and counts) for orders, grouped by return flag and line status, and filtered by a shipping date cutoff.\n", + "\n", + "Finally, `pydough.to_df(output)` converts and prints the result as a Pandas DataFrame for easy inspection and analysis in Python.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
L_RETURNFLAGL_LINESTATUSSUM_QTYSUM_BASE_PRICESUM_DISC_PRICESUM_CHARGEAVG_QTYAVG_PRICEAVG_DISCCOUNT_ORDER
0AF37734107.056586554400.7353758257134.870055909065222.82769225.5220058538273.129734620.049985301478493
1NF991417.01487504710.381413082168.05411469649223.19437525.5164719238284.467760850.0500934338854
2NO76633518.0114935210409.19109189591897.4720113561024263.01378225.5020196438248.015609060.050000263004998
3RF37719753.056568041380.9053741292684.604055889619119.83193225.5057936138250.854626100.050009411478870
\n", + "
" + ], + "text/plain": [ + " L_RETURNFLAG L_LINESTATUS SUM_QTY SUM_BASE_PRICE SUM_DISC_PRICE \\\n", + "0 A F 37734107.0 56586554400.73 53758257134.8700 \n", + "1 N F 991417.0 1487504710.38 1413082168.0541 \n", + "2 N O 76633518.0 114935210409.19 109189591897.4720 \n", + "3 R F 37719753.0 56568041380.90 53741292684.6040 \n", + "\n", + " SUM_CHARGE AVG_QTY AVG_PRICE AVG_DISC COUNT_ORDER \n", + "0 55909065222.827692 25.52200585 38273.12973462 0.04998530 1478493 \n", + "1 1469649223.194375 25.51647192 38284.46776085 0.05009343 38854 \n", + "2 113561024263.013782 25.50201964 38248.01560906 0.05000026 3004998 \n", + "3 55889619119.831932 25.50579361 38250.85462610 0.05000941 1478870 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%pydough\n", + "# TPCH Q1\n", + "output = ( lines.WHERE((ship_date <= datetime.date(1998, 12, 1)))\n", + " .PARTITION(name=\"groups\", by=(return_flag, status))\n", + " .CALCULATE(\n", + " L_RETURNFLAG=return_flag,\n", + " L_LINESTATUS=status,\n", + " SUM_QTY=SUM(lines.quantity),\n", + " SUM_BASE_PRICE=SUM(lines.extended_price),\n", + " SUM_DISC_PRICE=SUM(lines.extended_price * (1 - lines.discount)),\n", + " SUM_CHARGE=SUM(\n", + " lines.extended_price * (1 - lines.discount) * (1 + lines.tax)\n", + " ),\n", + " AVG_QTY=AVG(lines.quantity),\n", + " AVG_PRICE=AVG(lines.extended_price),\n", + " AVG_DISC=AVG(lines.discount),\n", + " COUNT_ORDER=COUNT(lines),\n", + " )\n", + " .ORDER_BY(L_RETURNFLAG.ASC(), L_LINESTATUS.ASC())\n", + ")\n", + "\n", + "pydough.to_df(output)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/documentation/usage.md b/documentation/usage.md index 8949f1f06..dcc962c27 100644 --- a/documentation/usage.md +++ b/documentation/usage.md @@ -351,7 +351,7 @@ pydough.active_session.database = education_context shakespeare_context = pydough.active_session.load_database("sqlite", database="db_files/education.db") ``` -Notice that both APIs `load_database_context` and `sesion.load_database` take in the name of the databse type first and all the connection keyword arguments, and also return the context object. +Notice that both APIs `load_database_context` and `sesion.load_database` take in the name of the database type first and all the connection keyword arguments, and also return the context object. It is important to ensure that the correct database context is being used for several reasons: - It controls what SQL dialect is used when translating from PyDough to SQL. diff --git a/pydough/database_connectors/README.md b/pydough/database_connectors/README.md index b5b9b0560..d0a6a1eac 100644 --- a/pydough/database_connectors/README.md +++ b/pydough/database_connectors/README.md @@ -16,6 +16,7 @@ The database connectors module provides functionality to manage database connect - Supported dialects: - `ANSI`: Represents the ANSI SQL dialect. - `SQLITE`: Represents the SQLite SQL dialect. + - `SNOWFLAKE`: Represents the Snowflake SQL dialect. - `DatabaseContext`: Dataclass that manages the database connection and the corresponding dialect. - Fields: - `connection`: The `DatabaseConnection` object. @@ -29,6 +30,7 @@ The database connectors module provides functionality to manage database connect - `load_database_context`: Loads the database context with the appropriate connection and dialect. - `load_sqlite_connection`: Loads a SQLite database connection. +- `load_snowflake_connection`: Loads a Snowflake connection. ## Usage diff --git a/pydough/database_connectors/__init__.py b/pydough/database_connectors/__init__.py index 4e63fc59f..c9057b3d8 100644 --- a/pydough/database_connectors/__init__.py +++ b/pydough/database_connectors/__init__.py @@ -4,9 +4,14 @@ "DatabaseDialect", "empty_connection", "load_database_context", + "load_snowflake_connection", "load_sqlite_connection", ] -from .builtin_databases import load_database_context, load_sqlite_connection +from .builtin_databases import ( + load_database_context, + load_snowflake_connection, + load_sqlite_connection, +) from .database_connector import DatabaseConnection, DatabaseContext, DatabaseDialect from .empty_connection import empty_connection diff --git a/pydough/database_connectors/builtin_databases.py b/pydough/database_connectors/builtin_databases.py index 1fc483db4..4937feb0b 100644 --- a/pydough/database_connectors/builtin_databases.py +++ b/pydough/database_connectors/builtin_databases.py @@ -7,7 +7,11 @@ from .database_connector import DatabaseConnection, DatabaseContext, DatabaseDialect -__all__ = ["load_database_context", "load_sqlite_connection"] +__all__ = [ + "load_database_context", + "load_snowflake_connection", + "load_sqlite_connection", +] def load_database_context(database_name: str, **kwargs) -> DatabaseContext: @@ -23,13 +27,16 @@ def load_database_context(database_name: str, **kwargs) -> DatabaseContext: Returns: DatabaseContext: The database context object. """ - supported_databases = {"sqlite"} + supported_databases = {"sqlite", "snowflake"} connection: DatabaseConnection dialect: DatabaseDialect match database_name.lower(): case "sqlite": connection = load_sqlite_connection(**kwargs) dialect = DatabaseDialect.SQLITE + case "snowflake": + connection = load_snowflake_connection(**kwargs) + dialect = DatabaseDialect.SNOWFLAKE case _: raise ValueError( f"Unsupported database: {database_name}. The supported databases are: {supported_databases}." @@ -50,3 +57,37 @@ def load_sqlite_connection(**kwargs) -> DatabaseConnection: raise ValueError("SQLite connection requires a database path.") connection: sqlite3.Connection = sqlite3.connect(**kwargs) return DatabaseConnection(connection) + + +def load_snowflake_connection(**kwargs) -> DatabaseConnection: + """ + Loads a Snowflake database connection. + This function should be implemented to handle Snowflake connections. + + Returns: + DatabaseConnection: A database connection object for Snowflake. + """ + try: + import snowflake.connector + except ImportError: + raise ImportError( + "Snowflake connector is not installed. Please install it with `pip install snowflake-connector-python`." + ) + + # Snowflake connection requires specific parameters: + # user, password, account. + # Raise an error if any of these are missing. + # NOTE: database, schema, and warehouse are optional and + # will default to the user's settings. + # See: https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-api#label-snowflake-connector-methods-connect + required_keys = ["user", "password", "account"] + if not all(key in kwargs for key in required_keys): + raise ValueError( + "Snowflake connection requires the following arguments: " + + ", ".join(required_keys) + ) + # Create a Snowflake connection using the provided keyword arguments + connection: snowflake.connector.connection.SnowflakeConnection = ( + snowflake.connector.connect(**kwargs) + ) + return DatabaseConnection(connection) diff --git a/pydough/database_connectors/database_connector.py b/pydough/database_connectors/database_connector.py index 4a171a37b..086f594a9 100644 --- a/pydough/database_connectors/database_connector.py +++ b/pydough/database_connectors/database_connector.py @@ -5,12 +5,14 @@ """ # Copyright (C) 2024 Bodo Inc. All rights reserved. -import sqlite3 from dataclasses import dataclass from enum import Enum +from typing import TYPE_CHECKING, cast import pandas as pd +from .db_types import DBConnection, DBCursor, SnowflakeCursor + __all__ = ["DatabaseConnection", "DatabaseContext", "DatabaseDialect"] @@ -24,9 +26,9 @@ class DatabaseConnection: # Database connection that follows DB API 2.0 specification. # sqlite3 contains the connection specification and is packaged # with Python. - _connection: sqlite3.Connection + _connection: DBConnection - def __init__(self, connection: sqlite3.Connection) -> None: + def __init__(self, connection: DBConnection) -> None: self._connection = connection def execute_query_df(self, sql: str) -> pd.DataFrame: @@ -42,30 +44,44 @@ def execute_query_df(self, sql: str) -> pd.DataFrame: Returns: list[pt.Any]: A list of rows returned by the query. """ - cursor: sqlite3.Cursor = self._connection.cursor() + cursor: DBCursor = self._connection.cursor() try: cursor.execute(sql) - except sqlite3.OperationalError as e: + except Exception as e: print(f"ERROR WHILE EXECUTING QUERY:\n{sql}") raise e - column_names: list[str] = [description[0] for description in cursor.description] - # No need to close the cursor, as its closed by del. - # TODO: (gh #174) Cache the cursor? - # TODO: (gh #175) enable typed DataFrames. - data = cursor.fetchall() - return pd.DataFrame(data, columns=column_names) + + # This is only for MyPy to pass and know about fetch_pandas_all() + # NOTE: Code does not run in type checking mode, so we need to + # check at run-time if the cursor has the method. + if TYPE_CHECKING: + _ = cast(SnowflakeCursor, cursor).fetch_pandas_all + # At run-time check and run the fetch. + if hasattr(cursor, "fetch_pandas_all"): + return cursor.fetch_pandas_all() + else: + # Assume sqlite3 + column_names: list[str] = [ + description[0] for description in cursor.description + ] + # No need to close the cursor, as its closed by del. + # TODO: (gh #174) Cache the cursor? + # TODO: (gh #175) enable typed DataFrames. + data = cursor.fetchall() + return pd.DataFrame(data, columns=column_names) # TODO: Consider adding a streaming API for large queries. It's not yet clear # how this will be available at a user API level. @property - def connection(self) -> sqlite3.Connection: + def connection(self) -> DBConnection: """ Get the database connection. This API may be removed if all the functionality can be encapsulated in the DatabaseConnection. Returns: - sqlite3.Connection: The connection PyDough is managing. + Connection: The database connection PyDough is managing. + (SQLite3.Connection or SnowflakeConnection) """ return self._connection @@ -76,6 +92,7 @@ class DatabaseDialect(Enum): ANSI = "ansi" SQLITE = "sqlite" + SNOWFLAKE = "snowflake" @staticmethod def from_string(dialect: str) -> "DatabaseDialect": @@ -91,6 +108,8 @@ def from_string(dialect: str) -> "DatabaseDialect": return DatabaseDialect.ANSI elif dialect == "sqlite": return DatabaseDialect.SQLITE + elif dialect == "snowflake": + return DatabaseDialect.SNOWFLAKE else: raise ValueError(f"Unsupported dialect: {dialect}") diff --git a/pydough/database_connectors/db_types.py b/pydough/database_connectors/db_types.py new file mode 100644 index 000000000..f06392cf6 --- /dev/null +++ b/pydough/database_connectors/db_types.py @@ -0,0 +1,46 @@ +""" +Type aliases for database connections and cursors used in type hints. +use `if TYPE_CHECKING:` to import database-specific modules in a way +that allows static type checkers to understand the types without triggering +runtime imports. This avoids runtime errors when some optional dependencies +(e.g., `snowflake-connector-python`) are not installed. +""" + +from typing import TYPE_CHECKING, Any, TypeAlias + +if TYPE_CHECKING: + # Importing database-specific modules only for type checking + # This allows us to use type hints for SQLite and Snowflake connections + # without requiring these modules at runtime unless they are actually used. + import sqlite3 + + import snowflake.connector + import snowflake.connector.cursor + + SQLiteConn: TypeAlias = sqlite3.Connection + SQLiteCursor: TypeAlias = sqlite3.Cursor + SnowflakeConn: TypeAlias = snowflake.connector.Connection + SnowflakeCursor: TypeAlias = snowflake.connector.cursor.SnowflakeCursor + + DBConnection: TypeAlias = SQLiteConn | SnowflakeConn + DBCursor: TypeAlias = SQLiteCursor | SnowflakeCursor +else: + DBConnection: TypeAlias = Any + DBCursor: TypeAlias = Any + SnowflakeCursor: TypeAlias = Any + SQLiteConn: TypeAlias = Any + SQLiteCursor: TypeAlias = Any + SnowflakeConn: TypeAlias = Any +# This allows us to use these type aliases in the rest of the code +# without worrying about whether the specific database modules are available. +__all__ = [ + "DBConnection", + "DBCursor", + "SQLiteConn", + "SQLiteCursor", + "SnowflakeConn", + "SnowflakeCursor", +] +# The type aliases are used to provide a consistent interface for database connections +# and cursors across different database backends, allowing for easier +# type hinting and code readability without requiring the actual database modules. diff --git a/pydough/sqlglot/execute_relational.py b/pydough/sqlglot/execute_relational.py index 4a3adfbdf..87e2ba542 100644 --- a/pydough/sqlglot/execute_relational.py +++ b/pydough/sqlglot/execute_relational.py @@ -7,6 +7,7 @@ import pandas as pd from sqlglot import parse_one from sqlglot.dialects import Dialect as SQLGlotDialect +from sqlglot.dialects import Snowflake as SnowflakeDialect from sqlglot.dialects import SQLite as SQLiteDialect from sqlglot.errors import SqlglotError from sqlglot.expressions import Alias, Column, Select, Table @@ -279,6 +280,8 @@ def convert_dialect_to_sqlglot(dialect: DatabaseDialect) -> SQLGlotDialect: return SQLGlotDialect() elif dialect == DatabaseDialect.SQLITE: return SQLiteDialect() + elif dialect == DatabaseDialect.SNOWFLAKE: + return SnowflakeDialect() else: raise ValueError(f"Unsupported dialect: {dialect}") diff --git a/pydough/sqlglot/transform_bindings/README.md b/pydough/sqlglot/transform_bindings/README.md index 45634aa12..de7c0fb14 100644 --- a/pydough/sqlglot/transform_bindings/README.md +++ b/pydough/sqlglot/transform_bindings/README.md @@ -8,6 +8,7 @@ The Transform Bindings module provides the following notable APIs: - `BaseTransformBindings`: The base class for converting function calls from relational expressions into the SQLGlot AST, used for generic ANSI SQL. - `SQLiteTransformBindings`: Subclass of `BaseTransformBindings` for the SQLite dialect, providing SQLite-specific implementations. +- `SnowflakeTransformBindings`: Subclass of `BaseTransformBindings` for the Snowflake dialect, providing Snowflake-specific implementations. - `bindings_from_dialect`: Factory function that returns the appropriate binding instance for a specific database dialect. ## Core Components diff --git a/pydough/sqlglot/transform_bindings/__init__.py b/pydough/sqlglot/transform_bindings/__init__.py index f1cc064aa..1ef6d291d 100644 --- a/pydough/sqlglot/transform_bindings/__init__.py +++ b/pydough/sqlglot/transform_bindings/__init__.py @@ -3,12 +3,18 @@ invocations of PyDough function operators into SQLGlot function calls. """ -__all__ = ["BaseTransformBindings", "SQLiteTransformBindings", "bindings_from_dialect"] +__all__ = [ + "BaseTransformBindings", + "SQLiteTransformBindings", + "SnowflakeTransformBindings", + "bindings_from_dialect", +] from pydough.configs import PyDoughConfigs from pydough.database_connectors import DatabaseDialect from .base_transform_bindings import BaseTransformBindings +from .sf_transform_bindings import SnowflakeTransformBindings from .sqlite_transform_bindings import SQLiteTransformBindings @@ -32,5 +38,7 @@ def bindings_from_dialect( return BaseTransformBindings(configs) case DatabaseDialect.SQLITE: return SQLiteTransformBindings(configs) + case DatabaseDialect.SNOWFLAKE: + return SnowflakeTransformBindings(configs) case _: raise NotImplementedError(f"Unsupported dialect: {dialect}") diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py new file mode 100644 index 000000000..54ccbf02b --- /dev/null +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -0,0 +1,52 @@ +""" +Definition of SQLGlot transformation bindings for the Snowflake dialect. +""" + +__all__ = ["SnowflakeTransformBindings"] + + +import sqlglot.expressions as sqlglot_expressions +from sqlglot.expressions import Expression as SQLGlotExpression + +import pydough.pydough_operators as pydop +from pydough.types import PyDoughType +from pydough.types.boolean_type import BooleanType + +from .base_transform_bindings import BaseTransformBindings + + +class SnowflakeTransformBindings(BaseTransformBindings): + """ + Subclass of BaseTransformBindings for the Snowflake dialect. + """ + + def convert_call_to_sqlglot( + self, + operator: pydop.PyDoughExpressionOperator, + args: list[SQLGlotExpression], + types: list[PyDoughType], + ) -> SQLGlotExpression: + match operator: + case pydop.SUM: + return self.convert_sum(args, types) + + return super().convert_call_to_sqlglot(operator, args, types) + + def convert_sum( + self, arg: SQLGlotExpression, types: list[PyDoughType] + ) -> SQLGlotExpression: + """ + Converts a SUM function call to its SQLGlot equivalent. + This method checks the type of the argument to determine whether to use + COUNT_IF (for BooleanType) or SUM (for other types). + Arguments: + arg (SQLGlotExpression): The argument to the SUM function. + types (list[PyDoughType]): The types of the arguments. + """ + match types[0]: + # If the argument is of BooleanType, it uses COUNT_IF to count true values. + case BooleanType(): + return sqlglot_expressions.CountIf(this=arg[0]) + case _: + # For other types, use SUM directly + return sqlglot_expressions.Sum(this=arg[0]) diff --git a/pyproject.toml b/pyproject.toml index 6957df124..72709d0a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,13 @@ dependencies = ["pytz", "sqlglot==26.7.0", "pandas>=2.0.0", "jupyterlab"] Repository = "https://github.com/bodo-ai/PyDough" [tool.uv] -dev-dependencies = ["pre-commit", "pytest", "ruff==0.6.7", "pytest-repeat"] +dev-dependencies = [ + "pre-commit", + "pytest", + "ruff==0.6.7", + "pytest-repeat", + "pydough[snowflake]", +] [build-system] requires = ["hatchling", "hatch-vcs"] @@ -55,3 +61,6 @@ lint.ignore = [ [tool.mypy] # Don't run mypy on any ipython notebooks exclude = '.*\.ipynb$' + +[project.optional-dependencies] +snowflake = ["snowflake-connector-python[pandas]"] diff --git a/pytest.ini b/pytest.ini index e27e8325a..acaa2b88d 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,3 +1,4 @@ [pytest] markers = execute: marks tests that do runtime execution (deselect with '-m "not execute"') + snowflake: marks tests that require Snowflake credentials diff --git a/tests/conftest.py b/tests/conftest.py index b9a7a6fb3..7521f9e86 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -19,6 +19,7 @@ DatabaseContext, DatabaseDialect, empty_connection, + load_database_context, ) from pydough.metadata.graphs import GraphMetadata from pydough.qdag import AstNodeBuilder @@ -84,6 +85,14 @@ def sample_graph_path() -> str: return f"{os.path.dirname(__file__)}/test_metadata/sample_graphs.json" +@pytest.fixture(scope="session") +def sf_sample_graph_path() -> str: + """ + Tuple of the path to the JSON file containing the Snowflake sample graphs. + """ + return f"{os.path.dirname(__file__)}/test_metadata/snowflake_sample_graphs.json" + + @pytest.fixture(scope="session") def invalid_graph_path() -> str: """ @@ -129,6 +138,27 @@ def impl(name: str) -> GraphMetadata: return impl +@pytest.fixture(scope="session") +def get_sf_sample_graph( + sf_sample_graph_path: str, + valid_sample_graph_names: set[str], +) -> graph_fetcher: + """ + A function that takes in the name of a graph from the supported sample + Snowflake graph names and returns the metadata for that PyDough graph. + """ + + @cache + def impl(name: str) -> GraphMetadata: + if name not in valid_sample_graph_names: + raise Exception(f"Unrecognized graph name '{name}'") + return pydough.parse_json_metadata_from_file( + file_path=sf_sample_graph_path, graph_name=name + ) + + return impl + + @pytest.fixture def sample_graphs( sample_graph_names: str, get_sample_graph: graph_fetcher @@ -217,6 +247,7 @@ def sqlite_dialects(request) -> DatabaseDialect: params=[ pytest.param(DatabaseDialect.ANSI, id="ansi"), pytest.param(DatabaseDialect.SQLITE, id="sqlite"), + pytest.param(DatabaseDialect.SNOWFLAKE, id="snowflake"), ] ) def empty_context_database(request) -> DatabaseContext: @@ -389,3 +420,46 @@ def sqlite_technograph_connection() -> DatabaseContext: # Return the database context. return DatabaseContext(DatabaseConnection(connection), DatabaseDialect.SQLITE) + + +SF_ENVS = ["SF_USERNAME", "SF_PASSWORD", "SF_ACCOUNT"] +""" + Snowflake environment variables required for connection. + SF_USERNAME: The username for the Snowflake account. + SF_PASSWORD: The password for the Snowflake account. + SF_ACCOUNT: The account identifier for the Snowflake account. +""" + + +def is_snowflake_env_set() -> bool: + """ + Check if the Snowflake environment variables are set. + + Returns: + bool: True if all required Snowflake environment variables are set, False otherwise. + """ + return all(os.getenv(env) for env in SF_ENVS) + + +@pytest.fixture +def sf_tpch_db_context() -> DatabaseContext: + """ + Return a DatabaseContext for the Snowflake TPCH database. + """ + if not is_snowflake_env_set(): + pytest.skip("Skipping Snowflake tests: environment variables not set.") + sf_tpch_db = "SNOWFLAKE_SAMPLE_DATA" + sf_tpch_schema = "TPCH_SF1" + warehouse = "DEMO_WH" + password = os.getenv("SF_PASSWORD") + username = os.getenv("SF_USERNAME") + account = os.getenv("SF_ACCOUNT") + return load_database_context( + "snowflake", + user=username, + password=password, + account=account, + warehouse=warehouse, + database=sf_tpch_db, + schema=sf_tpch_schema, + ) diff --git a/tests/test_metadata/snowflake_sample_graphs.json b/tests/test_metadata/snowflake_sample_graphs.json new file mode 100644 index 000000000..785847394 --- /dev/null +++ b/tests/test_metadata/snowflake_sample_graphs.json @@ -0,0 +1,821 @@ +[ + { + "name": "TPCH", + "version": "V2", + "collections": [ + { + "name": "regions", + "type": "simple table", + "table path": "TPCH_SF1.REGION", + "unique properties": ["key"], + "properties": [ + { + "name": "key", + "type": "table column", + "column name": "r_regionkey", + "data type": "numeric", + "description": "Unique identifier id for the region", + "sample values": [0, 1, 2, 3, 4], + "synonyms": ["id"] + }, + { + "name": "name", + "type": "table column", + "column name": "r_name", + "data type": "string", + "description": "Uppercase name of the region", + "sample values": ["AFRICA", "AMERICA", "ASIA", "EUROPE", "MIDDLE EAST"] + }, + { + "name": "comment", + "type": "table column", + "column name": "r_comment", + "data type": "string", + "description": "Comment/remark on the region" + } + ], + "description": "The regions of the world", + "synonyms": ["continents", "segments of the world"] + }, + { + "name": "nations", + "type": "simple table", + "table path": "TPCH_SF1.NATION", + "unique properties": ["key"], + "properties": [ + { + "name": "key", + "type": "table column", + "column name": "n_nationkey", + "data type": "numeric", + "description": "Unique identifier id for the nation", + "sample values": [0, 1, 10, 13, 24], + "synonyms": ["id"] + }, + { + "name": "region_key", + "type": "table column", + "column name": "n_regionkey", + "data type": "numeric", + "description": "Key from the region that the nation belongs to", + "sample values": [0, 1, 2, 3, 4] + }, + { + "name": "name", + "type": "table column", + "column name": "n_name", + "data type": "string", + "description": "Uppercase name of the nation", + "sample values": ["KENYA", "PERU", "JAPAN", "INDIA", "GERMANY"] + }, + { + "name": "comment", + "type": "table column", + "column name": "n_comment", + "data type": "string", + "description": "Comment/remark on the nation" + } + ], + "description": "The nations of the world", + "synonyms": ["countries", "states"] + }, + { + "name": "parts", + "type": "simple table", + "table path": "TPCH_SF1.PART", + "unique properties": ["key"], + "properties": [ + { + "name": "key", + "type": "table column", + "column name": "p_partkey", + "data type": "numeric", + "description": "Unique identifier id for the part", + "sample values": [0, 103719, 114994, 64760, 2440], + "synonyms": ["id"] + }, + { + "name": "name", + "type": "table column", + "column name": "p_name", + "data type": "string", + "description": "Name of the part, consisting of multiple lowercase colors", + "sample values": ["chiffon plum white linen firebrick", "chocolate steel antique green lavender", "sky frosted cream light blush"], + "synonyms": ["colors", "description"] + }, + { + "name": "manufacturer", + "type": "table column", + "column name": "p_mfgr", + "data type": "string", + "description": "Name of the manufacturer of the part (not the same as the suppliers). The manufacturer number is the same as the first digit of the part's brand number.", + "sample values": ["Manufacturer#1", "Manufacturer#2", "Manufacturer#3", "Manufacturer#4", "Manufacturer#5"] + }, + { + "name": "brand", + "type": "table column", + "column name": "p_brand", + "data type": "string", + "description": "The production brand that the part belongs to. The brand contains two digits where the first digit is the same as the manufacturer number (e.g. Brand#32 is from Manufacturer #3).", + "sample values": ["Brand#11", "Brand#23", "Brand#34", "Brand#45", "Brand#55"] + }, + { + "name": "part_type", + "type": "table column", + "column name": "p_type", + "data type": "string", + "description": "The type of the part, consisting of three uppercase descriptors where the first is a category (e.g. 'STANDARD' or 'PROMO'), the second is a processing state (e.g. 'ANODIZED' or 'PLATED') and the third is a material (e.g. 'STEEL' or 'BRASS').", + "sample values": ["ECONOMY ANODIZED NICKEL", "PROMO BURNISHED COPPER", "STANDARD BRUSHED STEEL", "SMALL PLATED TIN", "LARGE POLISHED BRASS", "MEDIUM PLATED NICKEL"], + "synonyms": ["category", "descriptor", "processing", "material"] + }, + { + "name": "size", + "type": "table column", + "column name": "p_size", + "data type": "numeric", + "description": "The size of the part", + "sample values": [1, 10, 31, 46, 50], + "synonyms": ["dimension", "measurement", "length", "width", "height", "volume"] + }, + { + "name": "container", + "type": "table column", + "column name": "p_container", + "data type": "string", + "description": "The container that the part is stored in. The container consists of two uppercase descriptors where the first is a size (e.g. 'SM' or 'JUMBO') and the second is a type of container (e.g. 'BOX' or 'JAR').", + "sample values": ["SM CASE", "LG BOX", "MED BAG", "JUMBO JAR", "WRAP PKG", "SM PACK", "LG CAN", "MED DRUM"], + "synonyms": ["vessel", "packaging", "receptacle"] + }, + { + "name": "retail_price", + "type": "table column", + "column name": "p_retailprice", + "data type": "numeric", + "description": "The retail price of the part, which it is intended to be sold for before accounting for the price the supplier charges, in US dollars. The price is rounded to the nearest cent, and most of the values are between $900 and $2000.", + "sample values": [901.00, 2098.99, 14499.50, 2080.99, 2050.96, 1476.41], + "synonyms": ["listed selling price", "wholesale value"] + }, + { + "name": "comment", + "type": "table column", + "column name": "p_comment", + "data type": "string", + "description": "Description/commentary on the part" + } + ], + "description": "The various products supplied by various companies in shipments to different customers", + "synonyms": ["products", "components", "items", "goods"] + }, + { + "name": "suppliers", + "type": "simple table", + "table path": "TPCH_SF1.SUPPLIER", + "unique properties": ["key", "name"], + "properties": [ + { + "name": "key", + "type": "table column", + "column name": "s_suppkey", + "data type": "numeric", + "description": "Unique identifier id for the supplier", + "sample values": [2452, 8063, 1, 10000, 5053], + "synonyms": ["id"] + }, + { + "name": "name", + "type": "table column", + "column name": "s_name", + "data type": "string", + "description": "Name of the supplier, which is always Supplier# where the number is the same as the supplier's key, prepended with zeros until it is 9 digits", + "sample values": ["Supplier#000008427", "Supplier#000001917", "Supplier#000000001", "Supplier#000010000", "Supplier#000000893"] + }, + { + "name": "address", + "type": "table column", + "column name": "s_address", + "data type": "string", + "description": "Address of the supplier as a cryptographically encrypted string to anonymize the data.", + "sample values": ["aSYD1SvrdIGV8LxRL QDp5m9dV", "ydl44utgudl6CP46TF7kliIcF5sC8K9,WH,Tj", "J1Vd3lqn1UvN2|4|14-632-452-6847"], + "synonyms": ["location", "street address", "corporate address", "headquarters"] + }, + { + "name": "nation_key", + "type": "table column", + "column name": "s_nationkey", + "data type": "numeric", + "description": "Key from the nation that the supplier belongs to", + "sample values": [0, 1, 10, 13, 24], + "synonyms": ["nation id"] + }, + { + "name": "phone", + "type": "table column", + "column name": "s_phone", + "data type": "string", + "description": "Phone number of the supplier in the format 'CC-XXX-XXX-XXXX' where CC is the country code (each nation has a unique country code).", + "sample values": ["25-995-176-6622", "18-132-649-2520", "30-505-249-4504", "10-132-649-2520", "27-599-541-3605"], + "synonyms": ["contact number", "telephone number"] + }, + { + "name": "account_balance", + "type": "table column", + "column name": "s_acctbal", + "data type": "numeric", + "description": "The account balance of the supplier in US dollars. The balance is rounded to the nearest cent and most of the values are between -$1,000 and +$10,000.", + "sample values": [-998.22, 9999.72, 4510.35, 9125.21, -0.92, 58.93], + "synonyms": ["balance", "credit", "wealth", "debt", "surplus", "cash on hand", "money in bank"] + }, + { + "name": "comment", + "type": "table column", + "column name": "s_comment", + "data type": "string", + "description": "Commentary/remark on the supplier" + } + ], + "description": "The various companies that supply different parts to fulfill purchase orders", + "synonyms": ["companies", "businesses", "vendors"] + }, + { + "name": "lines", + "type": "simple table", + "table path": "TPCH_SF1.LINEITEM", + "unique properties": [["order_key", "line_number"]], + "properties": [ + { + "name": "order_key", + "type": "table column", + "column name": "l_orderkey", + "data type": "numeric", + "description": "Key from the order that the line item belongs to", + "sample values": [5294597, 19010, 68581, 2710114, 2462791], + "synonyms": ["order id"] + }, + { + "name": "part_key", + "type": "table column", + "column name": "l_partkey", + "data type": "numeric", + "description": "Key from the part that the lineitem describes a purchase/shipment of", + "sample values": [1, 103719, 114994, 64760, 2440], + "synonyms": ["part id"] + }, + { + "name": "supplier_key", + "type": "table column", + "column name": "l_suppkey", + "data type": "numeric", + "description": "Key from the supplier that the lineitem describes a purchase/shipment from", + "sample values": [2452, 8063, 1, 10000, 5053], + "synonyms": ["supplier id"] + }, + { + "name": "line_number", + "type": "table column", + "column name": "l_linenumber", + "data type": "numeric", + "description": "The line number of the lineitem within the order. Each lineitem within an order has its own line number, and represents a purchase of a part from a supplier within the order.", + "sample values": [1, 2, 3, 4, 5, 6, 7], + "synonyms": ["line id", "shipment index within order"] + }, + { + "name": "quantity", + "type": "table column", + "column name": "l_quantity", + "data type": "numeric", + "description": "The number of units of the part that is being purchased in the lineitem, as a number between 1 and 50", + "sample values": [1, 10, 13, 25, 48, 50], + "synonyms": ["amount", "purchase volume", "units", "count", "number of items", "shipment size"] + }, + { + "name": "extended_price", + "type": "table column", + "column name": "l_extendedprice", + "data type": "numeric", + "description": "The extended price of the line item, which is the retail price of the part multiplied by the quantity purchased (before any discounts/taxes are applied). The price is rounded to the nearest cent and most of the values are between $900 and $100,000.", + "sample values": [901.00, 36036.00, 57657.60, 50450.4, 39097.8], + "synonyms": ["raw price", "gross cost", "total value before discount/tax"] + }, + { + "name": "discount", + "type": "table column", + "column name": "l_discount", + "data type": "numeric", + "description": "The discount applied to the line item, which is a ratio between 0 and 1 representing percentage of the extended price. The percentage is always between 0% (0.00) and 10% (0.10)", + "sample values": [0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10], + "synonyms": ["markdown", "price reduction"] + }, + { + "name": "tax", + "type": "table column", + "column name": "l_tax", + "data type": "numeric", + "description": "The sales tax applied to the line item, which is a ratio between 0 and 1 representing percentage of the extended price. The percentage is always between 0% (0.00) and 8% (0.08)", + "sample values": [0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08], + "synonyms": ["levy", "duty", "tariff"] + }, + { + "name": "status", + "type": "table column", + "column name": "l_linestatus", + "data type": "string", + "description": "The status of the line item, which is always 'O' (for orders that have been placed but not yet filled, e.g. pending shipment) or 'F' (for orders that have been filled, e.g. already shipped)", + "sample values": ["O", "F"], + "synonyms": ["pending shipment", "shipment state", "fulfilled"] + }, + { + "name": "ship_date", + "type": "table column", + "column name": "l_shipdate", + "data type": "datetime", + "description": "The date that the line item was shipped from the supplier/warehouse. The date is always between 1992-01-01 and 1998-12-31" + }, + { + "name": "commit_date", + "type": "table column", + "column name": "l_commitdate", + "data type": "datetime", + "description": "The date that the line item was committed to be shipped from the supplier/warehouse. The date is always between 1992-01-01 and 1998-12-31. The ship date is ideally before or on the actual commit date, but can be after it if the shipment was delayed." + }, + { + "name": "receipt_date", + "type": "table column", + "column name": "l_receiptdate", + "data type": "datetime", + "description": "The date that the line item was received by the customer. The date is always between 1992-01-01 and 1998-12-31. The receipt date is after the ship date due to the time to ship the package." + }, + { + "name": "ship_instruct", + "type": "table column", + "column name": "l_shipinstruct", + "data type": "string", + "description": "The shipping instructions for the line item, which is always 'DELIVER IN PERSON', 'TAKE BACK RETURN', 'COLLECT COD' or 'NONE'", + "sample values": ["DELIVER IN PERSON", "TAKE BACK RETURN", "COLLECT COD", "NONE"], + "synonyms": ["shipping instructions", "delivery instructions"] + }, + { + "name": "ship_mode", + "type": "table column", + "column name": "l_shipmode", + "data type": "string", + "description": "The shipping mode for the line item, which is always 'AIR', 'AIR REG', 'FOB', 'MAIL' or 'SHIP'", + "sample values": ["AIR", "AIR REG", "FOB", "MAIL", "SHIP"], + "synonyms": ["shipping method", "delivery method"] + }, + { + "name": "return_flag", + "type": "table column", + "column name": "l_returnflag", + "data type": "string", + "description": "The return flag for the line item, which is always 'R' (for returned items) or 'N' (for non-returned items)", + "sample values": ["R", "N"], + "synonyms": ["return status"] + }, + { + "name": "comment", + "type": "table column", + "column name": "l_comment", + "data type": "string", + "description": "Commentary/remark on the line item" + } + ], + "description": "The line items for shipments within an order. Each line item within an order has its own line number, and represents a purchase of a part from a supplier within the order. The order can contain multiple lineitems from different suppliers for different parts, and the lineitems can each have their own shipping information.", + "synonyms": ["shipments", "packages", "purchases", "deliveries", "order components", "order elements"] + }, + { + "name": "supply_records", + "type": "simple table", + "table path": "TPCH_SF1.PARTSUPP", + "unique properties": [["part_key", "supplier_key"]], + "properties": [ + { + "name": "part_key", + "type": "table column", + "column name": "ps_partkey", + "data type": "numeric", + "description": "Key from the part that the supply record belongs to", + "sample values": [1, 103719, 114994, 64760, 2440], + "synonyms": ["part id"] + }, + { + "name": "supplier_key", + "type": "table column", + "column name": "ps_suppkey", + "data type": "numeric", + "description": "Key from the supplier that the supply record belongs to", + "sample values": [2452, 8063, 1, 10000, 5053], + "synonyms": ["supplier id"] + }, + { + "name": "available_quantity", + "type": "table column", + "column name": "ps_availqty", + "data type": "numeric", + "description": "The number of units of the part that the supplier has available to supply. The quantity is usually between 1 and 1,000", + "sample values": [4620, 3100, 6547, 3337, 76], + "synonyms": ["available stock", "inventory", "supply", "quantity remaining"] + }, + { + "name": "supply_cost", + "type": "table column", + "column name": "ps_supplycost", + "data type": "numeric", + "description": "The cost that it takes for the supplier to produce a single unit of the part. The cost is rounded to the nearest cent and most of the values are between $1 and $1,000.", + "sample values": [144.43, 772.21, 285.90, 50.12, 983.998], + "synonyms": ["production cost", "manufacturing cost", "cost of goods sold"] + }, + { + "name": "comment", + "type": "table column", + "column name": "ps_comment", + "data type": "string", + "description": "Commentary/remark on the supply record" + } + ], + "description": "Every combination of a supplier and a part that the supplier supplies. Each record contains information about the supplier of the part, the part itself, and the availability of the part from the supplier.", + "synonyms": ["supplier part information", "partsupp info", "manifest", "inventories", "catalog"] + }, + { + "name": "orders", + "type": "simple table", + "table path": "TPCH_SF1.ORDERS", + "unique properties": ["key"], + "properties": [ + { + "name": "key", + "type": "table column", + "column name": "o_orderkey", + "data type": "numeric", + "description": "Unique identifier id for the order", + "sample values": [317728, 1096707, 5522855, 2624837, 1866566], + "synonyms": ["id"] + }, + { + "name": "customer_key", + "type": "table column", + "column name": "o_custkey", + "data type": "numeric", + "description": "Key from the customer that placed the order", + "sample values": [93721, 65251, 81379, 20663, 42247], + "synonyms": ["customer id"] + }, + { + "name": "order_status", + "type": "table column", + "column name": "o_orderstatus", + "data type": "string", + "description": "The status of the order, which is always 'O' for orders where all line items of the order have status 'O', 'F' for orders where all line items of the order have status 'F', and 'P' otherwise", + "sample values": ["O", "F", "P"], + "synonyms": ["order state", "fulfillment status"] + }, + { + "name": "total_price", + "type": "table column", + "column name": "o_totalprice", + "data type": "numeric", + "description": "The total price of the order after any discounts/taxes are applied, which is the sum of the extended price * (1 - discount) * (1 - tax) for all line items in the order. The price is rounded to the nearest cent and most of the values are between $800 and $600,000.", + "sample values": [857.71, 555285.16, 3618.2, 277554.58, 52737.18], + "synonyms": ["total cost", "total value"] + }, + { + "name": "order_date", + "type": "table column", + "column name": "o_orderdate", + "data type": "datetime", + "description": "The date that the order was placed. The date is always between 1992-01-01 and 1998-12-31", + "synonyms": ["order placed date", "order creation date", "purchase date"] + }, + { + "name": "order_priority", + "type": "table column", + "column name": "o_orderpriority", + "data type": "string", + "description": "The priority of the order, which is always '1-URGENT', '2-HIGH', '3-MEDIUM', '4-NOT SPECIFIED' or '5-LOW'", + "sample values": ["1-URGENT", "2-HIGH", "3-MEDIUM", "4-NOT SPECIFIED", "5-LOW"], + "synonyms": ["urgency", "priority level"] + }, + { + "name": "clerk", + "type": "table column", + "column name": "o_clerk", + "data type": "string", + "description": "The clerk that processed the order, which is always 'Clerk#' where the number is prepended with zeros until it is 9 digits", + "sample values": ["Clerk#000000001", "Clerk#000000090", "Clerk#000000635", "Clerk#000000892", "Clerk#000000073"], + "synonyms": ["salesperson", "representative", "agent", "notary", "officiant", "registrar", "overseer"] + }, + { + "name": "ship_priority", + "type": "table column", + "column name": "o_shippriority", + "data type": "numeric", + "description": "The priority of the order for shipping, which is always 0", + "sample values": [0], + "synonyms": ["shipping priority", "shipment urgency"] + }, + { + "name": "comment", + "type": "table column", + "column name": "o_comment", + "data type": "string", + "description": "Commentary/remark on the order" + } + ], + "description": "The orders that have been placed by customers. Each order can contain multiple lineitems from different suppliers for different parts, and the lineitems can each have their own shipping information.", + "synonyms": ["transactions"] + }, + { + "name": "customers", + "type": "simple table", + "table path": "TPCH_SF1.CUSTOMER", + "unique properties": ["key", "name"], + "properties": [ + { + "name": "key", + "type": "table column", + "column name": "c_custkey", + "data type": "numeric", + "description": "Unique identifier id for the customer", + "sample values": [93721, 65251, 81379, 20663, 42247], + "synonyms": ["id"] + }, + { + "name": "name", + "type": "table column", + "column name": "c_name", + "data type": "string", + "description": "Name of the customer, which is always Customer# where the number is the same as the customer's key, prepended with zeros until it is 9 digits", + "sample values": ["Customer#000000001", "Customer#000000090", "Customer#000000635", "Customer#000000892", "Customer#000000073"] + }, + { + "name": "address", + "type": "table column", + "column name": "c_address", + "data type": "string", + "description": "Address of the customer as a cryptographically encrypted string to anonymize the data.", + "sample values": ["ZCWMiIFUwRZWX7Vr7BjZ,,BZbGeGOBe7n", "HcpYT5Ag 2I2QY,nSoP5F1LI"], + "synonyms": ["location", "residence", "home address"] + }, + { + "name": "nation_key", + "type": "table column", + "column name": "c_nationkey", + "data type": "numeric", + "description": "Key from the nation that the customer belongs to", + "sample values": [0, 1, 10, 13, 24], + "synonyms": ["nation id"] + }, + { + "name": "phone", + "type": "table column", + "column name": "c_phone", + "data type": "string", + "description": "Phone number of the customer in the format 'CC-XXX-XXX-XXXX' where CC is the country code (each nation has a unique country code).", + "sample values": ["19-962-391-7546", "24-413-105-9570", "31-703-857-4846", "34-591-761-1886"], + "synonyms": ["contact number", "telephone number"] + }, + { + "name": "account_balance", + "type": "table column", + "column name": "c_acctbal", + "data type": "numeric", + "description": "The account balance of the customer in US dollars. The balance is rounded to the nearest cent and most of the values are between -$1,000 and +$10,000.", + "sample values": [-998.22, 9999.72, 4510.35, 9125.21, -0.92, 58.93], + "synonyms": ["balance", "credit", "wealth", "debt", "surplus", "cash on hand", "money in bank"] + }, + { + "name": "market_segment", + "type": "table column", + "column name": "c_mktsegment", + "data type": "string", + "description": "The market segment that the customer belongs to, which is always 'BUILDING', 'FURNITURE', 'AUTOMOBILE', 'MACHINERY' or 'HOUSEHOLD'", + "sample values": ["BUILDING", "FURNITURE", "AUTOMOBILE", "MACHINERY", "HOUSEHOLD"], + "synonyms": ["customer segment", "customer category", "market", "industry", "sector", "vertical"] + }, + { + "name": "comment", + "type": "table column", + "column name": "c_comment", + "data type": "string", + "description": "Commentary/remark on the customer" + } + ], + "description": "The customers in the system within each nation. Each customer can have placed zero, one, or several orders.", + "synonyms": ["citizens", "residents", "inhabitants", "consumers", "users", "buyers", "occupants"] + } + ], + "relationships": [ + { + "type": "simple join", + "name": "nations", + "parent collection": "regions", + "child collection": "nations", + "singular": false, + "always matches": true, + "keys": {"key": ["region_key"]}, + "description": "The nations contained within a region", + "synonyms": ["countries"] + }, + { + "type": "reverse", + "name": "region", + "original parent": "regions", + "original property": "nations", + "singular": true, + "always matches": true, + "description": "The region that a nation is part of", + "synonyms": ["continent", "segment of the world"] + }, + { + "type": "simple join", + "name": "suppliers", + "parent collection": "nations", + "child collection": "suppliers", + "singular": false, + "always matches": true, + "keys": {"key": ["nation_key"]}, + "description": "The suppliers belonging to a nation", + "synonyms": ["companies", "producers", "businesses"] + }, + { + "type": "reverse", + "name": "nation", + "original parent": "nations", + "original property": "suppliers", + "singular": true, + "always matches": true, + "description": "The nation that a supplier belongs to", + "synonyms": ["country", "state"] + }, + { + "type": "simple join", + "name": "customers", + "parent collection": "nations", + "child collection": "customers", + "singular": false, + "always matches": true, + "keys": {"key": ["nation_key"]}, + "description": "The customers belonging to a nation", + "synonyms": ["citizens", "residents", "inhabitants", "consumers", "users", "buyers", "occupants"] + }, + { + "type": "reverse", + "name": "nation", + "original parent": "nations", + "original property": "customers", + "singular": true, + "always matches": true, + "description": "The nation that a customer belongs to", + "synonyms": ["country", "state", "home"] + }, + { + "type": "simple join", + "name": "supply_records", + "parent collection": "parts", + "child collection": "supply_records", + "singular": false, + "always matches": false, + "keys": {"key": ["part_key"]}, + "description": "The records indicating which companies supply the part", + "synonyms": ["producers", "vendors", "suppliers of part"] + }, + { + "type": "reverse", + "name": "part", + "original parent": "parts", + "original property": "supply_records", + "singular": true, + "always matches": true, + "description": "The part that a supply record belongs to", + "synonyms": ["product", "item", "component"] + }, + { + "type": "simple join", + "name": "lines", + "parent collection": "parts", + "child collection": "lines", + "singular": false, + "always matches": false, + "keys": {"key": ["part_key"]}, + "description": "The line items for shipments of the part", + "synonyms": ["shipments", "packages", "purchases", "deliveries", "sales"] + }, + { + "type": "reverse", + "name": "part", + "original parent": "parts", + "original property": "lines", + "singular": true, + "always matches": true, + "description": "The part that a line item contains, e.g. what part is being shipped as part of an order", + "synonyms": ["product", "item", "component"] + }, + { + "type": "simple join", + "name": "supply_records", + "parent collection": "suppliers", + "child collection": "supply_records", + "singular": false, + "always matches": true, + "keys": {"key": ["supplier_key"]}, + "description": "The records indicating which parts the supplier supplies", + "synonyms": ["product catalog", "inventory", "components supplied"] + }, + { + "type": "reverse", + "name": "supplier", + "original parent": "suppliers", + "original property": "supply_records", + "singular": true, + "always matches": true, + "description": "The supplier that a supply record belongs to", + "synonyms": ["company", "producer", "business"] + }, + { + "type": "simple join", + "name": "lines", + "parent collection": "suppliers", + "child collection": "lines", + "singular": false, + "always matches": false, + "keys": {"key": ["supplier_key"]}, + "description": "The line items for shipments from the supplier, e.g. all purchases made from the supplier", + "synonyms": ["shipments", "packages", "purchases", "deliveries", "sales"] + }, + { + "type": "reverse", + "name": "supplier", + "original parent": "suppliers", + "original property": "lines", + "singular": true, + "always matches": true, + "description": "The supplier that a line item contains, e.g. what supplier is the part being purchased from as part of an order", + "synonyms": ["company", "producer", "business"] + }, + { + "type": "simple join", + "name": "part_and_supplier", + "parent collection": "lines", + "child collection": "supply_records", + "singular": true, + "always matches": true, + "keys": {"part_key": ["part_key"], "supplier_key": ["supplier_key"]}, + "description": "The corresponding entry in the supply records detailing more information about the supplier of the purchase and the part that was purchased", + "synonyms": ["supply records", "supplier part information", "partsupp info"] + }, + { + "type": "reverse", + "name": "lines", + "original parent": "lines", + "original property": "part_and_supplier", + "singular": false, + "always matches": false, + "description": "The line item instances of a part/supplier combination being purchased by a customer", + "synonym": ["shipments", "packages", "purchases", "deliveries", "line items"] + }, + { + "type": "simple join", + "name": "order", + "parent collection": "lines", + "child collection": "orders", + "singular": true, + "always matches": true, + "keys": {"order_key": ["key"]}, + "description": "The order that the line item belongs to" + }, + { + "type": "reverse", + "name": "lines", + "original parent": "lines", + "original property": "order", + "singular": false, + "always matches": true, + "description": "The line items that belong to an order, each representing the purchase of a specific part from a specific supplier", + "synonyms": ["items", "order contents", "entries", "line items"] + }, + { + "type": "simple join", + "name": "customer", + "parent collection": "orders", + "child collection": "customers", + "singular": true, + "always matches": true, + "keys": {"customer_key": ["key"]}, + "description": "The customer that placed the order", + "synonyms": ["buyer", "consumer", "user", "client"] + }, + { + "type": "reverse", + "name": "orders", + "original parent": "orders", + "original property": "customer", + "singular": false, + "always matches": false, + "description": "The orders that a customer has placed, each of which contains one or more line items", + "synonyms": ["transactions", "purchases"] + } + ], + "additional definitions": [], + "verified pydough analysis": [], + "extra semantic info": {} + } +] diff --git a/tests/test_pipeline_tpch.py b/tests/test_pipeline_tpch.py index d224e42ce..58aff7259 100644 --- a/tests/test_pipeline_tpch.py +++ b/tests/test_pipeline_tpch.py @@ -320,3 +320,19 @@ def test_pipeline_e2e_tpch( get_sample_graph, sqlite_tpch_db_context, ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_tpch_sf( + tpch_pipeline_test_data: PyDoughPandasTest, + get_sf_sample_graph: graph_fetcher, + sf_tpch_db_context: DatabaseContext, +): + """ + Test executing the TPC-H queries from the original code generation, + with Snowflake as the executing database. + """ + tpch_pipeline_test_data.run_e2e_test( + get_sf_sample_graph, sf_tpch_db_context, coerce_types=True + ) diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql new file mode 100644 index 000000000..1ae1e7aea --- /dev/null +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -0,0 +1,32 @@ +SELECT + SBTRANSACTION.sbtxdatetime AS date_time, + COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, + COUNT( + CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END + ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, + ROUND( + ( + 100.0 * SUM(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS pct_apple_txns, + SUM( + IFF( + SBTRANSACTION.sbtxtype = 'buy', + SBTRANSACTION.sbtxshares, + 0 - SBTRANSACTION.sbtxshares + ) + ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, + ROUND( + AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS rolling_avg_amount +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid +WHERE + DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) = 4 + AND DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) = 2023 + AND SBTRANSACTION.sbtxstatus = 'success' +ORDER BY + DATE_TIME NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql new file mode 100644 index 000000000..b0729d4c1 --- /dev/null +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -0,0 +1,16 @@ +SELECT + sbtxdatetime AS x, + CAST('2025-05-02 11:00:00' AS TIMESTAMP) AS y1, + CAST('2023-04-03 13:16:30' AS TIMESTAMP) AS y, + DATEDIFF(YEAR, sbtxdatetime, CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS years_diff, + DATEDIFF(MONTH, sbtxdatetime, CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS months_diff, + DATEDIFF(DAY, sbtxdatetime, CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS days_diff, + DATEDIFF(HOUR, sbtxdatetime, CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS hours_diff, + DATEDIFF(MINUTE, sbtxdatetime, CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS minutes_diff, + DATEDIFF(SECOND, sbtxdatetime, CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS seconds_diff +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(YEAR, sbtxdatetime) < 2025 +ORDER BY + YEARS_DIFF NULLS FIRST +LIMIT 30 diff --git a/tests/test_sql_refsols/datetime_sampler_snowflake.sql b/tests/test_sql_refsols/datetime_sampler_snowflake.sql new file mode 100644 index 000000000..aee79b9e1 --- /dev/null +++ b/tests/test_sql_refsols/datetime_sampler_snowflake.sql @@ -0,0 +1,164 @@ +SELECT + CAST('2025-07-04 12:58:45' AS TIMESTAMP) AS _expr0, + CAST('2024-12-31 11:59:00' AS TIMESTAMP) AS _expr1, + CAST('2025-01-01' AS TIMESTAMP) AS _expr2, + CAST('1999-03-14' AS TIMESTAMP) AS _expr3, + CURRENT_TIMESTAMP() AS _expr4, + CURRENT_TIMESTAMP() AS _expr5, + CURRENT_TIMESTAMP() AS _expr6, + CURRENT_TIMESTAMP() AS _expr7, + CURRENT_TIMESTAMP() AS _expr8, + CURRENT_TIMESTAMP() AS _expr9, + CURRENT_TIMESTAMP() AS _expr10, + CURRENT_TIMESTAMP() AS _expr11, + CURRENT_TIMESTAMP() AS _expr12, + CURRENT_TIMESTAMP() AS _expr13, + CURRENT_TIMESTAMP() AS _expr14, + CURRENT_TIMESTAMP() AS _expr15, + CURRENT_TIMESTAMP() AS _expr16, + CURRENT_TIMESTAMP() AS _expr17, + CURRENT_TIMESTAMP() AS _expr18, + CAST(o_orderdate AS TIMESTAMP) AS _expr19, + DATE_TRUNC('SECOND', CURRENT_TIMESTAMP()) AS _expr20, + DATEADD(MONTH, -141, DATEADD(MINUTE, 8, DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()))) AS _expr21, + DATE_TRUNC('HOUR', DATE_TRUNC('SECOND', DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()))) AS _expr22, + DATE_TRUNC('HOUR', DATE_TRUNC('SECOND', DATE_TRUNC('HOUR', CURRENT_TIMESTAMP()))) AS _expr23, + DATEADD(YEAR, 15, DATEADD(HOUR, -96, CURRENT_TIMESTAMP())) AS _expr24, + DATEADD( + MONTH, + 65, + DATE_TRUNC('MINUTE', DATEADD(YEAR, -3, DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()))) + ) AS _expr25, + DATE_TRUNC('YEAR', DATEADD(HOUR, -56, CAST(o_orderdate AS TIMESTAMP))) AS _expr26, + DATE_TRUNC('SECOND', DATE_TRUNC('MINUTE', DATEADD(DAY, -63, CURRENT_TIMESTAMP()))) AS _expr27, + DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AS _expr28, + DATEADD(YEAR, 48, DATE_TRUNC('SECOND', DATEADD(HOUR, -312, CURRENT_TIMESTAMP()))) AS _expr29, + DATEADD( + DAY, + -294, + DATEADD(MINUTE, 600, DATE_TRUNC('DAY', DATEADD(DAY, 75, CURRENT_TIMESTAMP()))) + ) AS _expr30, + DATEADD(YEAR, -45, DATEADD(MONTH, 480, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()))) AS _expr31, + DATE_TRUNC( + 'SECOND', + DATE_TRUNC('DAY', DATEADD(SECOND, -34, DATEADD(MINUTE, -270, CURRENT_TIMESTAMP()))) + ) AS _expr32, + DATEADD(SECOND, 213, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP())) AS _expr33, + DATEADD( + SECOND, + 344, + DATEADD(YEAR, 28, DATEADD(MINUTE, 13, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()))) + ) AS _expr34, + DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) AS _expr35, + DATEADD(YEAR, 91, DATEADD(MINUTE, 49, DATE_TRUNC('HOUR', CAST('2025-01-01' AS TIMESTAMP)))) AS _expr36, + DATE_TRUNC('DAY', DATE_TRUNC('YEAR', CURRENT_TIMESTAMP())) AS _expr37, + DATE_TRUNC('YEAR', DATE_TRUNC('DAY', CURRENT_TIMESTAMP())) AS _expr38, + CAST('2025-07-01 13:20:45' AS TIMESTAMP) AS _expr39, + DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()) AS _expr40, + DATE_TRUNC( + 'YEAR', + DATEADD( + SECOND, + -160, + DATEADD(SECOND, 415, DATEADD(SECOND, 82, CAST(o_orderdate AS TIMESTAMP))) + ) + ) AS _expr41, + DATEADD(MONTH, 192, CURRENT_TIMESTAMP()) AS _expr42, + DATEADD( + MINUTE, + 486, + DATE_TRUNC('HOUR', DATE_TRUNC('MINUTE', DATE_TRUNC('HOUR', CURRENT_TIMESTAMP()))) + ) AS _expr43, + DATEADD(HOUR, -50, DATE_TRUNC('SECOND', CURRENT_TIMESTAMP())) AS _expr44, + DATE_TRUNC( + 'HOUR', + DATEADD(MONTH, -92, DATEADD(MONTH, 72, DATEADD(DAY, 297, CURRENT_TIMESTAMP()))) + ) AS _expr45, + DATE_TRUNC('DAY', DATEADD(SECOND, 285, CURRENT_TIMESTAMP())) AS _expr46, + CAST('1999-05-15 00:00:00' AS TIMESTAMP) AS _expr47, + DATEADD( + DAY, + -21, + DATE_TRUNC('MONTH', DATEADD(HOUR, 1, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()))) + ) AS _expr48, + DATEADD(YEAR, 368, DATEADD(MINUTE, 212, CURRENT_TIMESTAMP())) AS _expr49, + DATE_TRUNC('MINUTE', DATE_TRUNC('MINUTE', CAST('2024-01-01 11:59:00' AS TIMESTAMP))) AS _expr50, + DATE_TRUNC('DAY', DATE_TRUNC('HOUR', CAST('1999-03-14' AS TIMESTAMP))) AS _expr51, + DATEADD( + YEAR, + 196, + DATE_TRUNC('MINUTE', DATE_TRUNC('DAY', DATEADD(HOUR, -60, CURRENT_TIMESTAMP()))) + ) AS _expr52, + DATEADD( + HOUR, + 29, + DATE_TRUNC('MINUTE', DATEADD(DAY, -385, DATEADD(HOUR, -40, CURRENT_TIMESTAMP()))) + ) AS _expr53, + DATE_TRUNC('MINUTE', DATE_TRUNC('HOUR', DATEADD(DAY, 405, CURRENT_TIMESTAMP()))) AS _expr54, + DATEADD( + MONTH, + 96, + DATEADD(YEAR, 98, DATE_TRUNC('SECOND', DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()))) + ) AS _expr55, + DATEADD( + SECOND, + 78, + DATE_TRUNC('DAY', DATE_TRUNC('SECOND', DATE_TRUNC('MINUTE', CURRENT_TIMESTAMP()))) + ) AS _expr56, + DATEADD( + DAY, + 312, + DATEADD(MONTH, -104, DATEADD(MINUTE, 104, DATEADD(HOUR, 136, CURRENT_TIMESTAMP()))) + ) AS _expr57, + DATEADD(SECOND, -135, DATEADD(MONTH, 45, CURRENT_TIMESTAMP())) AS _expr58, + DATE_PART(YEAR, CURRENT_TIMESTAMP()) AS _expr59, + DATE_PART(YEAR, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr60, + DATE_PART(YEAR, CAST('1999-03-14' AS TIMESTAMP)) AS _expr61, + DATE_PART(MONTH, CURRENT_TIMESTAMP()) AS _expr62, + DATE_PART(MONTH, CAST('2001-06-30' AS DATE)) AS _expr63, + DATE_PART(MONTH, CAST('1999-03-14' AS TIMESTAMP)) AS _expr64, + DATE_PART(DAY, CURRENT_TIMESTAMP()) AS _expr65, + DATE_PART(DAY, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr66, + DATE_PART(DAY, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr67, + DATE_PART(HOUR, CURRENT_TIMESTAMP()) AS _expr68, + DATE_PART(HOUR, CAST('2001-06-30' AS DATE)) AS _expr69, + DATE_PART(HOUR, CAST('2024-01-01' AS TIMESTAMP)) AS _expr70, + DATE_PART(MINUTE, CURRENT_TIMESTAMP()) AS _expr71, + DATE_PART(MINUTE, CAST('2024-12-25 20:30:59' AS TIMESTAMP)) AS _expr72, + DATE_PART(MINUTE, CAST('2024-01-01' AS TIMESTAMP)) AS _expr73, + DATE_PART(SECOND, CURRENT_TIMESTAMP()) AS _expr74, + DATE_PART(SECOND, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr75, + DATE_PART(SECOND, CAST('1999-03-14' AS TIMESTAMP)) AS _expr76, + DATEDIFF(YEAR, CAST('2018-02-14 12:41:06' AS TIMESTAMP), CURRENT_TIMESTAMP()) AS _expr77, + DATEDIFF(YEAR, o_orderdate, CAST('2022-11-24' AS DATE)) AS _expr78, + DATEDIFF(MONTH, CAST('2005-06-30' AS DATE), CAST('1999-03-14' AS TIMESTAMP)) AS _expr79, + DATEDIFF(MONTH, CAST('2006-05-01 12:00:00' AS TIMESTAMP), CAST('2022-11-24' AS DATE)) AS _expr80, + DATEDIFF(DAY, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()) AS _expr81, + DATEDIFF(DAY, CAST('1999-03-14' AS TIMESTAMP), CURRENT_TIMESTAMP()) AS _expr82, + DATEDIFF(HOUR, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()) AS _expr83, + DATEDIFF(HOUR, CAST('2005-06-30' AS DATE), o_orderdate) AS _expr84, + DATEDIFF(MINUTE, CURRENT_TIMESTAMP(), CAST('2006-05-01 12:00:00' AS TIMESTAMP)) AS _expr85, + DATEDIFF(MINUTE, o_orderdate, CAST('2021-01-01 07:35:00' AS TIMESTAMP)) AS _expr86, + DATEDIFF(SECOND, CAST('2022-11-24' AS DATE), CAST('2021-01-01 07:35:00' AS TIMESTAMP)) AS _expr87, + DATEDIFF(SECOND, CAST('2005-06-30' AS DATE), CAST('2018-02-14 12:41:06' AS TIMESTAMP)) AS _expr88, + DATEDIFF(YEAR, o_orderdate, CAST('2006-05-01 12:00:00' AS TIMESTAMP)) AS _expr89, + DATEDIFF(YEAR, CAST('2018-02-14 12:41:06' AS TIMESTAMP), o_orderdate) AS _expr90, + DATEDIFF(MONTH, o_orderdate, CAST('2019-07-04 11:30:00' AS TIMESTAMP)) AS _expr91, + DATEDIFF( + MONTH, + CAST('2019-07-04 11:30:00' AS TIMESTAMP), + CAST('2018-02-14 12:41:06' AS TIMESTAMP) + ) AS _expr92, + DATEDIFF(DAY, CURRENT_TIMESTAMP(), o_orderdate) AS _expr93, + DATEDIFF(DAY, CAST('2019-07-04 11:30:00' AS TIMESTAMP), CURRENT_TIMESTAMP()) AS _expr94, + DATEDIFF(HOUR, CAST('2022-11-24' AS DATE), CAST('1999-03-14' AS TIMESTAMP)) AS _expr95, + DATEDIFF( + HOUR, + CAST('2018-02-14 12:41:06' AS TIMESTAMP), + CAST('2020-12-31 00:31:06' AS TIMESTAMP) + ) AS _expr96, + DATEDIFF(MINUTE, CAST('2005-06-30' AS DATE), CAST('2020-12-31 00:31:06' AS TIMESTAMP)) AS _expr97, + DATEDIFF(MINUTE, CURRENT_TIMESTAMP(), CAST('2018-02-14 12:41:06' AS TIMESTAMP)) AS _expr98, + DATEDIFF(SECOND, CURRENT_TIMESTAMP(), CAST('1999-03-14' AS TIMESTAMP)) AS _expr99, + DATEDIFF(SECOND, CAST('2022-11-24' AS DATE), CAST('2019-07-04 11:30:00' AS TIMESTAMP)) AS _expr100 +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql new file mode 100644 index 000000000..848a31758 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -0,0 +1,22 @@ +WITH _S3 AS ( + SELECT + COUNT(*) AS AGG_0, + SBCUSTOMER.sbcustid AS _ID + FROM MAIN.SBCUSTOMER AS SBCUSTOMER + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate) = DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) + AND DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate) = DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) + AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + GROUP BY + SBCUSTOMER.sbcustid +) +SELECT + SBCUSTOMER.sbcustid AS _id, + SBCUSTOMER.sbcustname AS name, + COALESCE(_S3.AGG_0, 0) AS num_transactions +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S3 AS _S3 + ON SBCUSTOMER.sbcustid = _S3._ID +ORDER BY + NUM_TRANSACTIONS DESC NULLS LAST +LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql new file mode 100644 index 000000000..a8d1bd485 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql @@ -0,0 +1,49 @@ +WITH _T1 AS ( + SELECT + SBCUSTOMER.sbcustid AS _ID, + SBCUSTOMER.sbcustemail AS EMAIL + FROM MAIN.SBCUSTOMER AS SBCUSTOMER +), _S2 AS ( + SELECT + _T1._ID AS _ID + FROM _T1 AS _T1 + WHERE + _T1.EMAIL LIKE '%.com' +), _S0 AS ( + SELECT + SBTRANSACTION.sbtxcustid AS CUSTOMER_ID, + SBTRANSACTION.sbtxtickerid AS TICKER_ID + FROM MAIN.SBTRANSACTION AS SBTRANSACTION +), _T2 AS ( + SELECT + SBTICKER.sbtickerid AS _ID, + SBTICKER.sbtickersymbol AS SYMBOL + FROM MAIN.SBTICKER AS SBTICKER +), _S1 AS ( + SELECT + _T2._ID AS _ID + FROM _T2 AS _T2 + WHERE + _T2.SYMBOL IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') +), _S3 AS ( + SELECT + _S0.CUSTOMER_ID AS CUSTOMER_ID + FROM _S0 AS _S0 + JOIN _S1 AS _S1 + ON _S0.TICKER_ID = _S1._ID +), _T0 AS ( + SELECT + 1 AS _ + FROM _S2 AS _S2 + WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S3 AS _S3 + WHERE + _S2._ID = _S3.CUSTOMER_ID + ) +) +SELECT + COUNT(*) AS n_customers +FROM _T0 AS _T0 diff --git a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql new file mode 100644 index 000000000..8838d355a --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql @@ -0,0 +1,8 @@ +SELECT + COUNT(*) AS n_customers +FROM MAIN.SBCUSTOMER +WHERE + ( + LOWER(sbcustname) LIKE '%ez' OR LOWER(sbcustname) LIKE 'j%' + ) + AND LOWER(sbcuststate) LIKE '%a' diff --git a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql new file mode 100644 index 000000000..f4cfac319 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql @@ -0,0 +1,8 @@ +SELECT + sbcustcountry AS cust_country, + COUNT(*) AS TAC +FROM MAIN.SBCUSTOMER +WHERE + sbcustjoindate >= CAST('2023-01-01' AS DATE) +GROUP BY + sbcustcountry diff --git a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql new file mode 100644 index 000000000..7b499810b --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql @@ -0,0 +1,9 @@ +SELECT + SBTICKER.sbtickertype AS ticker_type, + AVG(SBDAILYPRICE.sbdpclose) AS ACP +FROM MAIN.SBTICKER AS SBTICKER +JOIN MAIN.SBDAILYPRICE AS SBDAILYPRICE + ON DATEDIFF(DAY, SBDAILYPRICE.sbdpdate, CURRENT_TIMESTAMP()) <= 7 + AND SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid +GROUP BY + SBTICKER.sbtickertype diff --git a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql new file mode 100644 index 000000000..f1ed59104 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql @@ -0,0 +1,15 @@ +WITH _T0 AS ( + SELECT + COUNT_IF(sbcuststatus = 'active') AS AGG_0, + COUNT(*) AS AGG_1, + sbcustcountry AS COUNTRY + FROM MAIN.SBCUSTOMER + WHERE + sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' + GROUP BY + sbcustcountry +) +SELECT + COUNTRY AS country, + 100 * COALESCE(COALESCE(AGG_0, 0) / AGG_1, 0.0) AS ar +FROM _T0 diff --git a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql new file mode 100644 index 000000000..1eeca652c --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql @@ -0,0 +1,23 @@ +WITH _T0 AS ( + SELECT + SUM(sbtxamount) AS AGG_0, + SUM(sbtxtax + sbtxcommission) AS AGG_1, + sbtxtickerid AS TICKER_ID + FROM MAIN.SBTRANSACTION + WHERE + sbtxdatetime >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP()) AND sbtxtype = 'sell' + GROUP BY + sbtxtickerid +) +SELECT + SBTICKER.sbtickersymbol AS symbol, + ( + 100.0 * ( + COALESCE(_T0.AGG_0, 0) - COALESCE(_T0.AGG_1, 0) + ) + ) / COALESCE(_T0.AGG_0, 0) AS SPM +FROM MAIN.SBTICKER AS SBTICKER +JOIN _T0 AS _T0 + ON SBTICKER.sbtickerid = _T0.TICKER_ID +ORDER BY + SYMBOL NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql new file mode 100644 index 000000000..ad9193f0f --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql @@ -0,0 +1,17 @@ +WITH _S1 AS ( + SELECT + SUM(sbtxamount) AS AGG_0, + sbtxcustid AS CUSTOMER_ID + FROM MAIN.SBTRANSACTION + GROUP BY + sbtxcustid +) +SELECT + SBCUSTOMER.sbcustname AS name, + COALESCE(_S1.AGG_0, 0) AS total_amount +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID +ORDER BY + TOTAL_AMOUNT DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql new file mode 100644 index 000000000..b77075b4c --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql @@ -0,0 +1,20 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_0, + sbtxtickerid AS TICKER_ID + FROM MAIN.SBTRANSACTION + WHERE + sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -10, CURRENT_TIMESTAMP())) + AND sbtxtype = 'buy' + GROUP BY + sbtxtickerid +) +SELECT + SBTICKER.sbtickersymbol AS symbol, + COALESCE(_S1.AGG_0, 0) AS tx_count +FROM MAIN.SBTICKER AS SBTICKER +LEFT JOIN _S1 AS _S1 + ON SBTICKER.sbtickerid = _S1.TICKER_ID +ORDER BY + TX_COUNT DESC NULLS LAST +LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql new file mode 100644 index 000000000..9e2f2140c --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql @@ -0,0 +1,21 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_0, + COUNT_IF(sbtxstatus = 'success') AS AGG_1, + sbtxcustid AS CUSTOMER_ID + FROM MAIN.SBTRANSACTION + GROUP BY + sbtxcustid +) +SELECT + SBCUSTOMER.sbcustname AS name, + ( + 100.0 * COALESCE(_S1.AGG_1, 0) + ) / COALESCE(_S1.AGG_0, 0) AS success_rate +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID +WHERE + NOT _S1.AGG_0 IS NULL AND _S1.AGG_0 >= 5 +ORDER BY + SUCCESS_RATE NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql new file mode 100644 index 000000000..db5116d17 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql @@ -0,0 +1,20 @@ +WITH _S1 AS ( + SELECT + MAX(sbdphigh) AS AGG_0, + MIN(sbdplow) AS AGG_1, + sbdptickerid AS TICKER_ID + FROM MAIN.SBDAILYPRICE + WHERE + sbdpdate <= CAST('2023-04-04' AS DATE) AND sbdpdate >= CAST('2023-04-01' AS DATE) + GROUP BY + sbdptickerid +) +SELECT + SBTICKER.sbtickersymbol AS symbol, + _S1.AGG_0 - _S1.AGG_1 AS price_change +FROM MAIN.SBTICKER AS SBTICKER +LEFT JOIN _S1 AS _S1 + ON SBTICKER.sbtickerid = _S1.TICKER_ID +ORDER BY + PRICE_CHANGE DESC NULLS LAST +LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql new file mode 100644 index 000000000..db37dc608 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -0,0 +1,63 @@ +WITH _S0 AS ( + SELECT + SUM(sbdpclose) AS EXPR_0, + COUNT(sbdpclose) AS EXPR_1, + MAX(sbdphigh) AS MAX_HIGH, + MIN(sbdplow) AS MIN_LOW, + CONCAT_WS( + '-', + DATE_PART(YEAR, sbdpdate), + CASE + WHEN LENGTH(DATE_PART(MONTH, sbdpdate)) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, sbdpdate), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbdpdate)), ( + 2 * -1 + )) + END + ) AS MONTH, + sbdptickerid AS TICKER_ID + FROM MAIN.SBDAILYPRICE + GROUP BY + CONCAT_WS( + '-', + DATE_PART(YEAR, sbdpdate), + CASE + WHEN LENGTH(DATE_PART(MONTH, sbdpdate)) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, sbdpdate), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbdpdate)), ( + 2 * -1 + )) + END + ), + sbdptickerid +), _T1 AS ( + SELECT + SUM(_S0.EXPR_0) AS EXPR_0, + SUM(_S0.EXPR_1) AS EXPR_1, + MAX(_S0.MAX_HIGH) AS MAX_HIGH, + MIN(_S0.MIN_LOW) AS MIN_LOW, + _S0.MONTH, + SBTICKER.sbtickersymbol AS SYMBOL + FROM _S0 AS _S0 + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = _S0.TICKER_ID + GROUP BY + _S0.MONTH, + SBTICKER.sbtickersymbol +) +SELECT + SYMBOL AS symbol, + MONTH AS month, + EXPR_0 / EXPR_1 AS avg_close, + MAX_HIGH AS max_high, + MIN_LOW AS min_low, + ( + ( + EXPR_0 / EXPR_1 + ) - LAG(( + EXPR_0 / EXPR_1 + ), 1) OVER (PARTITION BY SYMBOL ORDER BY MONTH) + ) / LAG(( + EXPR_0 / EXPR_1 + ), 1) OVER (PARTITION BY SYMBOL ORDER BY MONTH) AS momc +FROM _T1 diff --git a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql new file mode 100644 index 000000000..4a3ef1408 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql @@ -0,0 +1,17 @@ +WITH _S1 AS ( + SELECT + SUM(sbtxamount) AS AGG_0, + COUNT(*) AS AGG_1, + sbtxcustid AS CUSTOMER_ID + FROM MAIN.SBTRANSACTION + GROUP BY + sbtxcustid +) +SELECT + SBCUSTOMER.sbcustname AS name, + _S1.AGG_1 AS num_tx, + COALESCE(_S1.AGG_0, 0) AS total_amount, + RANK() OVER (ORDER BY COALESCE(_S1.AGG_0, 0) DESC) AS cust_rank +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql new file mode 100644 index 000000000..ec56a826b --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -0,0 +1,72 @@ +WITH _S2 AS ( + SELECT + COUNT(*) AS AGG_1, + CONCAT_WS( + '-', + DATE_PART(YEAR, sbcustjoindate), + CASE + WHEN LENGTH(DATE_PART(MONTH, sbcustjoindate)) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, sbcustjoindate), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbcustjoindate)), ( + 2 * -1 + )) + END + ) AS MONTH + FROM MAIN.SBCUSTOMER + WHERE + sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) + AND sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) + GROUP BY + CONCAT_WS( + '-', + DATE_PART(YEAR, sbcustjoindate), + CASE + WHEN LENGTH(DATE_PART(MONTH, sbcustjoindate)) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, sbcustjoindate), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbcustjoindate)), ( + 2 * -1 + )) + END + ) +), _S3 AS ( + SELECT + AVG(SBTRANSACTION.sbtxamount) AS AGG_0, + CONCAT_WS( + '-', + DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate), + CASE + WHEN LENGTH(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)), ( + 2 * -1 + )) + END + ) AS MONTH + FROM MAIN.SBCUSTOMER AS SBCUSTOMER + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate) = DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) + AND DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate) = DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) + AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + WHERE + SBCUSTOMER.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) + AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) + GROUP BY + CONCAT_WS( + '-', + DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate), + CASE + WHEN LENGTH(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)), ( + 2 * -1 + )) + END + ) +) +SELECT + _S2.MONTH AS month, + _S2.AGG_1 AS customer_signups, + _S3.AGG_0 AS avg_tx_amount +FROM _S2 AS _S2 +LEFT JOIN _S3 AS _S3 + ON _S2.MONTH = _S3.MONTH diff --git a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql new file mode 100644 index 000000000..d9dc03014 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql @@ -0,0 +1,47 @@ +WITH _T2 AS ( + SELECT + SBTRANSACTION.sbtxamount AS AMOUNT, + SBTRANSACTION.sbtxcustid AS CUSTOMER_ID, + SBTRANSACTION.sbtxdatetime AS DATE_TIME + FROM MAIN.SBTRANSACTION AS SBTRANSACTION +), _S0 AS ( + SELECT + _T2.AMOUNT AS AMOUNT, + _T2.CUSTOMER_ID AS CUSTOMER_ID + FROM _T2 AS _T2 + WHERE + _T2.DATE_TIME < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) + AND _T2.DATE_TIME >= DATEADD(WEEK, -1, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) +), _T3 AS ( + SELECT + SBCUSTOMER.sbcustid AS _ID, + SBCUSTOMER.sbcustcountry AS COUNTRY + FROM MAIN.SBCUSTOMER AS SBCUSTOMER +), _S1 AS ( + SELECT + _T3._ID AS _ID + FROM _T3 AS _T3 + WHERE + LOWER(_T3.COUNTRY) = 'usa' +), _T1 AS ( + SELECT + _S0.AMOUNT AS AMOUNT + FROM _S0 AS _S0 + WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0.CUSTOMER_ID = _S1._ID + ) +), _T0 AS ( + SELECT + COUNT(*) AS AGG_0, + SUM(_T1.AMOUNT) AS AGG_1 + FROM _T1 AS _T1 +) +SELECT + CASE WHEN _T0.AGG_0 > 0 THEN _T0.AGG_0 ELSE NULL END AS n_transactions, + COALESCE(_T0.AGG_1, 0) AS total_amount +FROM _T0 AS _T0 diff --git a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql new file mode 100644 index 000000000..ceaacc14c --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql @@ -0,0 +1,24 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS AGG_0, + COUNT_IF(( + ( + DAYOFWEEK(SBTRANSACTION.sbtxdatetime) + 6 + ) % 7 + ) IN (5, 6)) AS AGG_1, + DATE_TRUNC('WEEK', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS WEEK + FROM MAIN.SBTRANSACTION AS SBTRANSACTION + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + AND SBTICKER.sbtickertype = 'stock' + WHERE + SBTRANSACTION.sbtxdatetime < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) + AND SBTRANSACTION.sbtxdatetime >= DATEADD(WEEK, -8, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) + GROUP BY + DATE_TRUNC('WEEK', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) +) +SELECT + WEEK AS week, + AGG_0 AS num_transactions, + COALESCE(AGG_1, 0) AS weekend_transactions +FROM _T0 diff --git a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql new file mode 100644 index 000000000..e247008ab --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql @@ -0,0 +1,22 @@ +WITH _S1 AS ( + SELECT + SBDAILYPRICE.sbdptickerid AS TICKER_ID + FROM MAIN.SBDAILYPRICE AS SBDAILYPRICE +), _S0 AS ( + SELECT + SBTICKER.sbtickerid AS _ID, + SBTICKER.sbtickersymbol AS SYMBOL + FROM MAIN.SBTICKER AS SBTICKER +) +SELECT + _S0._ID AS _id, + _S0.SYMBOL AS symbol +FROM _S0 AS _S0 +WHERE + NOT EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0._ID = _S1.TICKER_ID + ) diff --git a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql new file mode 100644 index 000000000..f27d58257 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql @@ -0,0 +1,26 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_2, + SUM(sbtxamount) AS AGG_5, + sbtxcustid AS CUSTOMER_ID + FROM MAIN.SBTRANSACTION + WHERE + sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -30, CURRENT_TIMESTAMP())) + GROUP BY + sbtxcustid +), _T0 AS ( + SELECT + SUM(_S1.AGG_2) AS AGG_4, + SUM(_S1.AGG_5) AS AGG_7, + SBCUSTOMER.sbcustcountry AS COUNTRY + FROM MAIN.SBCUSTOMER AS SBCUSTOMER + LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID + GROUP BY + SBCUSTOMER.sbcustcountry +) +SELECT + COUNTRY AS country, + COALESCE(AGG_4, 0) AS num_transactions, + COALESCE(AGG_7, 0) AS total_amount +FROM _T0 diff --git a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql new file mode 100644 index 000000000..ad3fe986f --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql @@ -0,0 +1,20 @@ +WITH _T0 AS ( + SELECT + AVG(sbtxshares) AS AVG_SHARES, + COUNT(DISTINCT sbtxcustid) AS NUM_CUSTOMERS, + sbtxtype AS TRANSACTION_TYPE + FROM MAIN.SBTRANSACTION + WHERE + sbtxdatetime <= CAST('2023-03-31' AS DATE) + AND sbtxdatetime >= CAST('2023-01-01' AS DATE) + GROUP BY + sbtxtype +) +SELECT + TRANSACTION_TYPE AS transaction_type, + NUM_CUSTOMERS AS num_customers, + AVG_SHARES AS avg_shares +FROM _T0 +ORDER BY + NUM_CUSTOMERS DESC NULLS LAST +LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql new file mode 100644 index 000000000..abbbf3518 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql @@ -0,0 +1,19 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_0, + SUM(sbtxamount) AS AGG_1, + sbtxtickerid AS TICKER_ID + FROM MAIN.SBTRANSACTION + GROUP BY + sbtxtickerid +) +SELECT + SBTICKER.sbtickersymbol AS symbol, + COALESCE(_S1.AGG_0, 0) AS num_transactions, + COALESCE(_S1.AGG_1, 0) AS total_amount +FROM MAIN.SBTICKER AS SBTICKER +LEFT JOIN _S1 AS _S1 + ON SBTICKER.sbtickerid = _S1.TICKER_ID +ORDER BY + TOTAL_AMOUNT DESC NULLS LAST +LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql new file mode 100644 index 000000000..3d8a32464 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql @@ -0,0 +1,40 @@ +WITH _S0 AS ( + SELECT + COUNT(*) AS NUM_TRANSACTIONS, + sbtxcustid AS CUSTOMER_ID, + sbtxtickerid AS TICKER_ID + FROM MAIN.SBTRANSACTION + GROUP BY + sbtxcustid, + sbtxtickerid +), _S2 AS ( + SELECT + SUM(_S0.NUM_TRANSACTIONS) AS NUM_TRANSACTIONS_0, + _S0.CUSTOMER_ID, + SBTICKER.sbtickertype AS TICKER_TYPE + FROM _S0 AS _S0 + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = _S0.TICKER_ID + GROUP BY + _S0.CUSTOMER_ID, + SBTICKER.sbtickertype +), _T0 AS ( + SELECT + SUM(_S2.NUM_TRANSACTIONS_0) AS NUM_TRANSACTIONS, + SBCUSTOMER.sbcuststate AS STATE, + _S2.TICKER_TYPE + FROM _S2 AS _S2 + JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = _S2.CUSTOMER_ID + GROUP BY + SBCUSTOMER.sbcuststate, + _S2.TICKER_TYPE +) +SELECT + STATE AS state, + TICKER_TYPE AS ticker_type, + NUM_TRANSACTIONS AS num_transactions +FROM _T0 +ORDER BY + NUM_TRANSACTIONS DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql new file mode 100644 index 000000000..8f21f3bf4 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql @@ -0,0 +1,27 @@ +WITH _T0 AS ( + SELECT + SBTRANSACTION.sbtxcustid AS CUSTOMER_ID, + SBTRANSACTION.sbtxtype AS TRANSACTION_TYPE + FROM MAIN.SBTRANSACTION AS SBTRANSACTION +), _S1 AS ( + SELECT + _T0.CUSTOMER_ID AS CUSTOMER_ID + FROM _T0 AS _T0 + WHERE + _T0.TRANSACTION_TYPE = 'buy' +), _S0 AS ( + SELECT + SBCUSTOMER.sbcustid AS _ID + FROM MAIN.SBCUSTOMER AS SBCUSTOMER +) +SELECT + _S0._ID AS _id +FROM _S0 AS _S0 +WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0._ID = _S1.CUSTOMER_ID + ) diff --git a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql new file mode 100644 index 000000000..2269a7547 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql @@ -0,0 +1,27 @@ +WITH _T0 AS ( + SELECT + SBDAILYPRICE.sbdpdate AS DATE, + SBDAILYPRICE.sbdptickerid AS TICKER_ID + FROM MAIN.SBDAILYPRICE AS SBDAILYPRICE +), _S1 AS ( + SELECT + _T0.TICKER_ID AS TICKER_ID + FROM _T0 AS _T0 + WHERE + _T0.DATE >= CAST('2023-04-01' AS DATE) +), _S0 AS ( + SELECT + SBTICKER.sbtickerid AS _ID + FROM MAIN.SBTICKER AS SBTICKER +) +SELECT + _S0._ID AS _id +FROM _S0 AS _S0 +WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0._ID = _S1.TICKER_ID + ) diff --git a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql new file mode 100644 index 000000000..98ad4058a --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql @@ -0,0 +1,15 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS NUM_TRANSACTIONS, + sbtxstatus AS STATUS + FROM MAIN.SBTRANSACTION + GROUP BY + sbtxstatus +) +SELECT + STATUS AS status, + NUM_TRANSACTIONS AS num_transactions +FROM _T0 +ORDER BY + NUM_TRANSACTIONS DESC NULLS LAST +LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql new file mode 100644 index 000000000..585bc7372 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql @@ -0,0 +1,15 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS NUM_CUSTOMERS, + sbcustcountry AS COUNTRY + FROM MAIN.SBCUSTOMER + GROUP BY + sbcustcountry +) +SELECT + COUNTRY AS country, + NUM_CUSTOMERS AS num_customers +FROM _T0 +ORDER BY + NUM_CUSTOMERS DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql new file mode 100644 index 000000000..968809132 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql @@ -0,0 +1,22 @@ +WITH _S1 AS ( + SELECT + SBTRANSACTION.sbtxcustid AS CUSTOMER_ID + FROM MAIN.SBTRANSACTION AS SBTRANSACTION +), _S0 AS ( + SELECT + SBCUSTOMER.sbcustid AS _ID, + SBCUSTOMER.sbcustname AS NAME + FROM MAIN.SBCUSTOMER AS SBCUSTOMER +) +SELECT + _S0._ID AS _id, + _S0.NAME AS name +FROM _S0 AS _S0 +WHERE + NOT EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0._ID = _S1.CUSTOMER_ID + ) diff --git a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql new file mode 100644 index 000000000..20e157ea9 --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql @@ -0,0 +1,8 @@ +SELECT + MIN(SBDAILYPRICE.sbdpclose) AS lowest_price +FROM MAIN.SBDAILYPRICE AS SBDAILYPRICE +JOIN MAIN.SBTICKER AS SBTICKER + ON SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid + AND SBTICKER.sbtickersymbol = 'VTI' +WHERE + DATEDIFF(DAY, SBDAILYPRICE.sbdpdate, CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql new file mode 100644 index 000000000..d6ec9910b --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql @@ -0,0 +1,6 @@ +SELECT + COUNT(SBTRANSACTION.sbtxcustid) AS transaction_count +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND SBCUSTOMER.sbcustjoindate >= DATEADD(DAY, -70, CURRENT_TIMESTAMP()) diff --git a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql new file mode 100644 index 000000000..766fc399b --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql @@ -0,0 +1,14 @@ +WITH _S1 AS ( + SELECT + MIN(sbtxdatetime) AS AGG_0, + sbtxcustid AS CUSTOMER_ID + FROM MAIN.SBTRANSACTION + GROUP BY + sbtxcustid +) +SELECT + SBCUSTOMER.sbcustid AS cust_id, + DATEDIFF(SECOND, SBCUSTOMER.sbcustjoindate, _S1.AGG_0) / 86400.0 AS DaysFromJoinToFirstTransaction +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID diff --git a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql new file mode 100644 index 000000000..91f9a27fa --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql @@ -0,0 +1,22 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_0, + sbtxcustid AS CUSTOMER_ID + FROM MAIN.SBTRANSACTION + WHERE + CAST(sbtxdatetime AS TIMESTAMP) < CAST('2023-04-02' AS DATE) + AND CAST(sbtxdatetime AS TIMESTAMP) >= CAST('2023-04-01' AS DATE) + AND sbtxtype = 'sell' + GROUP BY + sbtxcustid +) +SELECT + SBCUSTOMER.sbcustid AS _id, + SBCUSTOMER.sbcustname AS name, + COALESCE(_S1.AGG_0, 0) AS num_tx +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID +ORDER BY + NUM_TX DESC NULLS LAST +LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql new file mode 100644 index 000000000..9fdfe03cc --- /dev/null +++ b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql @@ -0,0 +1,12 @@ +SELECT + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month, + AVG(sbtxprice) AS avg_price +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(QUARTER, sbtxdatetime) = 1 + AND DATE_PART(YEAR, sbtxdatetime) = 2023 + AND sbtxstatus = 'success' +GROUP BY + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) +ORDER BY + MONTH NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql new file mode 100644 index 000000000..6cc327e31 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql @@ -0,0 +1,17 @@ +WITH _S1 AS ( + SELECT + MAX(payment_date) AS AGG_0, + sale_id AS SALE_ID + FROM MAIN.PAYMENTS_RECEIVED + GROUP BY + sale_id +), _T0 AS ( + SELECT + AVG(DATEDIFF(DAY, SALES.sale_date, _S1.AGG_0)) AS AGG_0 + FROM MAIN.SALES AS SALES + LEFT JOIN _S1 AS _S1 + ON SALES._id = _S1.SALE_ID +) +SELECT + ROUND(AGG_0, 2) AS avg_days_to_payment +FROM _T0 diff --git a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql new file mode 100644 index 000000000..dedf8fbfd --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql @@ -0,0 +1,24 @@ +WITH _S0 AS ( + SELECT + SUM(sale_price) AS AGG_0, + car_id AS CAR_ID + FROM MAIN.SALES + WHERE + DATE_PART(YEAR, sale_date) = 2023 + GROUP BY + car_id +), _T0 AS ( + SELECT + SUM(_S0.AGG_0) AS AGG_0, + SUM(CARS.cost) AS AGG_1 + FROM _S0 AS _S0 + JOIN MAIN.CARS AS CARS + ON CARS._id = _S0.CAR_ID +) +SELECT + ( + ( + COALESCE(AGG_0, 0) - COALESCE(AGG_1, 0) + ) / COALESCE(AGG_1, 0) + ) * 100 AS GPM +FROM _T0 diff --git a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql new file mode 100644 index 000000000..6c904afff --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql @@ -0,0 +1,51 @@ +WITH _T0 AS ( + SELECT + INVENTORY_SNAPSHOTS.car_id AS CAR_ID, + INVENTORY_SNAPSHOTS.is_in_inventory AS IS_IN_INVENTORY, + INVENTORY_SNAPSHOTS.snapshot_date AS SNAPSHOT_DATE + FROM MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS +), _S3 AS ( + SELECT + _T0.CAR_ID AS CAR_ID + FROM _T0 AS _T0 + WHERE + _S0.SALE_DATE = _T0.SNAPSHOT_DATE AND _T0.IS_IN_INVENTORY = 0 +), _S1 AS ( + SELECT + SALES.car_id AS CAR_ID, + SALES.sale_date AS SALE_DATE, + SALES.sale_price AS SALE_PRICE + FROM MAIN.SALES AS SALES +), _S2 AS ( + SELECT + CARS._id AS _ID_1_0_1, + CARS.make AS MAKE, + CARS.model AS MODEL + FROM MAIN.CARS AS CARS +), _S0 AS ( + SELECT + _S2._ID_1_0_1 AS _ID_1, + _S2.MAKE AS MAKE, + _S2.MODEL AS MODEL, + _S1.SALE_DATE AS SALE_DATE, + _S1.SALE_PRICE AS SALE_PRICE + FROM _S1 AS _S1 + JOIN _S2 AS _S2 + ON _S1.CAR_ID = _S2._ID_1_0_1 +) +SELECT + _S0.MAKE AS make, + _S0.MODEL AS model, + _S0.SALE_PRICE AS sale_price +FROM _S0 AS _S0 +WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S3 AS _S3 + WHERE + _S0._ID_1 = _S3.CAR_ID + ) +ORDER BY + SALE_PRICE DESC NULLS LAST +LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql new file mode 100644 index 000000000..b0fe9746c --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql @@ -0,0 +1,5 @@ +SELECT + COUNT(*) AS TSC +FROM MAIN.SALES +WHERE + DATEDIFF(DAY, sale_date, CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql new file mode 100644 index 000000000..854964e24 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql @@ -0,0 +1,18 @@ +WITH _S1 AS ( + SELECT + AVG(sale_price) AS AGG_0, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES + GROUP BY + salesperson_id +) +SELECT + SALESPERSONS.first_name, + SALESPERSONS.last_name, + _S1.AGG_0 AS ASP +FROM MAIN.SALESPERSONS AS SALESPERSONS +LEFT JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID +ORDER BY + ASP DESC NULLS LAST +LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql new file mode 100644 index 000000000..003f6abb9 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql @@ -0,0 +1,19 @@ +WITH _S1 AS ( + SELECT + SUM(sale_price) AS AGG_0, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES + GROUP BY + salesperson_id +) +SELECT + SALESPERSONS._id, + SALESPERSONS.first_name, + SALESPERSONS.last_name, + COALESCE(_S1.AGG_0, 0) AS total +FROM MAIN.SALESPERSONS AS SALESPERSONS +LEFT JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID +ORDER BY + TOTAL DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql new file mode 100644 index 000000000..980e07d62 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql @@ -0,0 +1,23 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS AGG_0, + COUNT_IF(( + ( + DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + ) % 7 + ) IN (5, 6)) AS AGG_1, + DATE_TRUNC('WEEK', CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) AS PAYMENT_WEEK + FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED + JOIN MAIN.SALES AS SALES + ON PAYMENTS_RECEIVED.sale_id = SALES._id AND SALES.sale_price > 30000 + WHERE + DATEDIFF(WEEK, PAYMENTS_RECEIVED.payment_date, CURRENT_TIMESTAMP()) <= 8 + AND DATEDIFF(WEEK, PAYMENTS_RECEIVED.payment_date, CURRENT_TIMESTAMP()) >= 1 + GROUP BY + DATE_TRUNC('WEEK', CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) +) +SELECT + PAYMENT_WEEK AS payment_week, + AGG_0 AS total_payments, + COALESCE(AGG_1, 0) AS weekend_payments +FROM _T0 diff --git a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql new file mode 100644 index 000000000..41f71278e --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql @@ -0,0 +1,20 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS NUM_SALES, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES + WHERE + DATEDIFF(DAY, sale_date, CURRENT_TIMESTAMP()) <= 30 + GROUP BY + salesperson_id +) +SELECT + SALESPERSONS._id, + SALESPERSONS.first_name, + SALESPERSONS.last_name, + _S1.NUM_SALES AS num_sales +FROM MAIN.SALESPERSONS AS SALESPERSONS +JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID +ORDER BY + NUM_SALES DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql new file mode 100644 index 000000000..140fc4041 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql @@ -0,0 +1,17 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_0, + car_id AS CAR_ID + FROM MAIN.SALES + GROUP BY + car_id +) +SELECT + CARS.make, + CARS.model, + COALESCE(_S1.AGG_0, 0) AS num_sales +FROM MAIN.CARS AS CARS +LEFT JOIN _S1 AS _S1 + ON CARS._id = _S1.CAR_ID +WHERE + LOWER(CARS.vin_number) LIKE '%m5%' diff --git a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql new file mode 100644 index 000000000..0a8ff8132 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql @@ -0,0 +1,25 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_0, + SUM(sale_price) AS AGG_1, + car_id AS CAR_ID + FROM MAIN.SALES + WHERE + sale_date >= DATEADD(DAY, -30, CURRENT_TIMESTAMP()) + GROUP BY + car_id +) +SELECT + COALESCE(_S1.AGG_0, 0) AS num_sales, + CASE + WHEN ( + NOT _S1.AGG_0 IS NULL AND _S1.AGG_0 > 0 + ) + THEN COALESCE(_S1.AGG_1, 0) + ELSE NULL + END AS total_revenue +FROM MAIN.CARS AS CARS +LEFT JOIN _S1 AS _S1 + ON CARS._id = _S1.CAR_ID +WHERE + LOWER(CARS.make) LIKE '%toyota%' diff --git a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql new file mode 100644 index 000000000..98d5e499b --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql @@ -0,0 +1,20 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_0, + SUM(sale_price) AS AGG_1, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES + GROUP BY + salesperson_id +) +SELECT + SALESPERSONS.first_name, + SALESPERSONS.last_name, + COALESCE(_S1.AGG_1, 0) AS total_sales, + _S1.AGG_0 AS num_sales, + RANK() OVER (ORDER BY COALESCE(_S1.AGG_1, 0) DESC) AS sales_rank +FROM MAIN.SALESPERSONS AS SALESPERSONS +JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID +ORDER BY + COALESCE(_S1.AGG_1, 0) DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql new file mode 100644 index 000000000..4bff854c9 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql @@ -0,0 +1,26 @@ +WITH _T1 AS ( + SELECT + car_id AS CAR_ID + FROM MAIN.INVENTORY_SNAPSHOTS + QUALIFY + NOT is_in_inventory + AND ROW_NUMBER() OVER (PARTITION BY car_id ORDER BY snapshot_date DESC) = 1 +), _S3 AS ( + SELECT + MAX(sale_price) AS AGG_0, + car_id AS CAR_ID + FROM MAIN.SALES + GROUP BY + car_id +) +SELECT + CARS.make, + CARS.model, + _S3.AGG_0 AS highest_sale_price +FROM MAIN.CARS AS CARS +JOIN _T1 AS _T1 + ON CARS._id = _T1.CAR_ID +LEFT JOIN _S3 AS _S3 + ON CARS._id = _S3.CAR_ID +ORDER BY + _S3.AGG_0 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql new file mode 100644 index 000000000..d8f64ac23 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql @@ -0,0 +1,20 @@ +WITH _S1 AS ( + SELECT + AVG(sale_price) AS AGG_0, + car_id AS CAR_ID + FROM MAIN.SALES + GROUP BY + car_id +) +SELECT + CARS.make, + CARS.model, + CARS.year, + CARS.color, + CARS.vin_number, + _S1.AGG_0 AS avg_sale_price +FROM MAIN.CARS AS CARS +LEFT JOIN _S1 AS _S1 + ON CARS._id = _S1.CAR_ID +WHERE + LOWER(CARS.make) LIKE '%fords%' OR LOWER(CARS.model) LIKE '%mustang%' diff --git a/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql new file mode 100644 index 000000000..ffee74ac5 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql @@ -0,0 +1,5 @@ +SELECT + AVG(sale_price) AS ASP +FROM MAIN.SALES +WHERE + sale_date <= '2023-03-31' AND sale_date >= '2023-01-01' diff --git a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql new file mode 100644 index 000000000..c050107bb --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql @@ -0,0 +1,22 @@ +WITH _S1 AS ( + SELECT + SUM(sale_price) AS AGG_0, + COUNT(*) AS AGG_1, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES + WHERE + sale_date >= DATEADD(MONTH, -3, CURRENT_TIMESTAMP()) + GROUP BY + salesperson_id +) +SELECT + SALESPERSONS.first_name, + SALESPERSONS.last_name, + COALESCE(_S1.AGG_1, 0) AS total_sales, + COALESCE(_S1.AGG_0, 0) AS total_revenue +FROM MAIN.SALESPERSONS AS SALESPERSONS +LEFT JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID +ORDER BY + TOTAL_REVENUE DESC NULLS LAST +LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql new file mode 100644 index 000000000..0145f012b --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql @@ -0,0 +1,26 @@ +WITH _S1 AS ( + SELECT + SALES.car_id AS CAR_ID + FROM MAIN.SALES AS SALES +), _S0 AS ( + SELECT + CARS._id AS _ID, + CARS.make AS MAKE, + CARS.model AS MODEL, + CARS.year AS YEAR + FROM MAIN.CARS AS CARS +) +SELECT + _S0._ID AS _id, + _S0.MAKE AS make, + _S0.MODEL AS model, + _S0.YEAR AS year +FROM _S0 AS _S0 +WHERE + NOT EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0._ID = _S1.CAR_ID + ) diff --git a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql new file mode 100644 index 000000000..8c67819ac --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql @@ -0,0 +1,20 @@ +WITH _S1 AS ( + SELECT + SALES.customer_id AS CUSTOMER_ID + FROM MAIN.SALES AS SALES +), _S0 AS ( + SELECT + CUSTOMERS._id AS _ID + FROM MAIN.CUSTOMERS AS CUSTOMERS +) +SELECT + _S0._ID AS _id +FROM _S0 AS _S0 +WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0._ID = _S1.CUSTOMER_ID + ) diff --git a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql new file mode 100644 index 000000000..8feeae78e --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql @@ -0,0 +1,39 @@ +WITH _S0 AS ( + SELECT + SALES._id AS _ID, + SALES.salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES AS SALES +), _T0 AS ( + SELECT + PAYMENTS_RECEIVED.payment_method AS PAYMENT_METHOD, + PAYMENTS_RECEIVED.sale_id AS SALE_ID + FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED +), _S1 AS ( + SELECT + _T0.SALE_ID AS SALE_ID + FROM _T0 AS _T0 + WHERE + _T0.PAYMENT_METHOD = 'cash' +), _S3 AS ( + SELECT + _S0.SALESPERSON_ID AS SALESPERSON_ID + FROM _S0 AS _S0 + JOIN _S1 AS _S1 + ON _S0._ID = _S1.SALE_ID +), _S2 AS ( + SELECT + SALESPERSONS._id AS _ID, + SALESPERSONS._id AS SALESPERSON_ID + FROM MAIN.SALESPERSONS AS SALESPERSONS +) +SELECT + _S2.SALESPERSON_ID AS salesperson_id +FROM _S2 AS _S2 +WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S3 AS _S3 + WHERE + _S2._ID = _S3.SALESPERSON_ID + ) diff --git a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql new file mode 100644 index 000000000..22807af2f --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql @@ -0,0 +1,24 @@ +WITH _S1 AS ( + SELECT + SALES.salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES AS SALES +), _S0 AS ( + SELECT + SALESPERSONS._id AS _ID, + SALESPERSONS.first_name AS FIRST_NAME, + SALESPERSONS.last_name AS LAST_NAME + FROM MAIN.SALESPERSONS AS SALESPERSONS +) +SELECT + _S0._ID AS _id, + _S0.FIRST_NAME AS first_name, + _S0.LAST_NAME AS last_name +FROM _S0 AS _S0 +WHERE + NOT EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0._ID = _S1.SALESPERSON_ID + ) diff --git a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql new file mode 100644 index 000000000..3b727d99a --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql @@ -0,0 +1,22 @@ +WITH _T0 AS ( + SELECT + SUM(sale_price) AS AGG_0, + COUNT(*) AS AGG_1, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES + WHERE + DATEDIFF(DAY, sale_date, CURRENT_TIMESTAMP()) <= 30 + GROUP BY + salesperson_id +) +SELECT + SALESPERSONS.first_name, + SALESPERSONS.last_name, + _T0.AGG_1 AS total_sales, + COALESCE(_T0.AGG_0, 0) AS total_revenue +FROM MAIN.SALESPERSONS AS SALESPERSONS +JOIN _T0 AS _T0 + ON SALESPERSONS._id = _T0.SALESPERSON_ID +ORDER BY + TOTAL_SALES DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql new file mode 100644 index 000000000..4033e48a5 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql @@ -0,0 +1,19 @@ +WITH _T1 AS ( + SELECT + SUM(SALES.sale_price) AS AGG_0, + COUNT(DISTINCT SALES.customer_id) AS AGG_1, + CUSTOMERS.state AS STATE + FROM MAIN.SALES AS SALES + JOIN MAIN.CUSTOMERS AS CUSTOMERS + ON CUSTOMERS._id = SALES.customer_id + GROUP BY + CUSTOMERS.state +) +SELECT + STATE AS state, + AGG_1 AS unique_customers, + COALESCE(AGG_0, 0) AS total_revenue +FROM _T1 +ORDER BY + TOTAL_REVENUE DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql new file mode 100644 index 000000000..b46909bd1 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql @@ -0,0 +1,17 @@ +WITH _T1 AS ( + SELECT + SUM(payment_amount) AS AGG_0, + COUNT(*) AS AGG_1, + payment_method AS PAYMENT_METHOD + FROM MAIN.PAYMENTS_RECEIVED + GROUP BY + payment_method +) +SELECT + PAYMENT_METHOD AS payment_method, + AGG_1 AS total_payments, + COALESCE(AGG_0, 0) AS total_amount +FROM _T1 +ORDER BY + TOTAL_AMOUNT DESC NULLS LAST +LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql new file mode 100644 index 000000000..9054a5aed --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql @@ -0,0 +1,20 @@ +WITH _S1 AS ( + SELECT + SUM(sale_price) AS AGG_0, + COUNT(*) AS AGG_1, + car_id AS CAR_ID + FROM MAIN.SALES + GROUP BY + car_id +) +SELECT + CARS.make, + CARS.model, + COALESCE(_S1.AGG_1, 0) AS total_sales, + COALESCE(_S1.AGG_0, 0) AS total_revenue +FROM MAIN.CARS AS CARS +LEFT JOIN _S1 AS _S1 + ON CARS._id = _S1.CAR_ID +ORDER BY + TOTAL_REVENUE DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql new file mode 100644 index 000000000..840be91a7 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql @@ -0,0 +1,15 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS TOTAL_SIGNUPS, + state AS STATE + FROM MAIN.CUSTOMERS + GROUP BY + state +) +SELECT + STATE AS state, + TOTAL_SIGNUPS AS total_signups +FROM _T0 +ORDER BY + TOTAL_SIGNUPS DESC NULLS LAST +LIMIT 2 diff --git a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql new file mode 100644 index 000000000..973153076 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql @@ -0,0 +1,11 @@ +SELECT + first_name, + last_name, + phone, + DATEDIFF(DAY, hire_date, termination_date) * 1.0 AS days_employed +FROM MAIN.SALESPERSONS +WHERE + NOT termination_date IS NULL +ORDER BY + DAYS_EMPLOYED NULLS FIRST +LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql new file mode 100644 index 000000000..34244c823 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql @@ -0,0 +1,10 @@ +SELECT + COUNT(*) AS weekend_payments +FROM MAIN.PAYMENTS_MADE +WHERE + ( + ( + DAYOFWEEK(payment_date) + 6 + ) % 7 + ) IN (5, 6) + AND vendor_name = 'Utility Company' diff --git a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql new file mode 100644 index 000000000..a415a74f7 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql @@ -0,0 +1,20 @@ +WITH _T0 AS ( + SELECT + SUM(payment_amount) AS AGG_0, + payment_date AS PAYMENT_DATE, + payment_method AS PAYMENT_METHOD + FROM MAIN.PAYMENTS_RECEIVED + WHERE + DATEDIFF(WEEK, payment_date, CURRENT_TIMESTAMP()) = 1 + GROUP BY + payment_date, + payment_method +) +SELECT + PAYMENT_DATE AS payment_date, + PAYMENT_METHOD AS payment_method, + COALESCE(AGG_0, 0) AS total_amount +FROM _T0 +ORDER BY + PAYMENT_DATE DESC NULLS LAST, + PAYMENT_METHOD NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql new file mode 100644 index 000000000..000bad338 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -0,0 +1,33 @@ +WITH _S0 AS ( + SELECT + SUM(sale_price) AS AGG_0, + customer_id AS CUSTOMER_ID, + DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS QUARTER + FROM MAIN.SALES + WHERE + DATE_PART(YEAR, sale_date) = 2023 + GROUP BY + customer_id, + DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) +), _T1 AS ( + SELECT + SUM(_S0.AGG_0) AS AGG_0, + CUSTOMERS.state AS CUSTOMER_STATE, + _S0.QUARTER + FROM _S0 AS _S0 + JOIN MAIN.CUSTOMERS AS CUSTOMERS + ON CUSTOMERS._id = _S0.CUSTOMER_ID + GROUP BY + CUSTOMERS.state, + _S0.QUARTER +) +SELECT + QUARTER AS quarter, + CUSTOMER_STATE AS customer_state, + COALESCE(AGG_0, 0) AS total_sales +FROM _T1 +WHERE + NOT AGG_0 IS NULL AND AGG_0 > 0 +ORDER BY + QUARTER NULLS FIRST, + CUSTOMER_STATE NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql new file mode 100644 index 000000000..e3ae76cf0 --- /dev/null +++ b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql @@ -0,0 +1,17 @@ +WITH _T0 AS ( + SELECT + car_id AS CAR_ID + FROM MAIN.INVENTORY_SNAPSHOTS + WHERE + DATE_PART(MONTH, snapshot_date) = 3 AND DATE_PART(YEAR, snapshot_date) = 2023 + QUALIFY + is_in_inventory AND RANK() OVER (ORDER BY snapshot_date DESC) = 1 +) +SELECT + CARS._id, + CARS.make, + CARS.model, + CARS.year +FROM _T0 AS _T0 +JOIN MAIN.CARS AS CARS + ON CARS._id = _T0.CAR_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql new file mode 100644 index 000000000..005e076fb --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql @@ -0,0 +1,16 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS TOTAL_TRANSACTIONS, + sender_id AS SENDER_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY + WHERE + sender_type = 0 + GROUP BY + sender_id +) +SELECT + USERS.uid AS user_id, + _S1.TOTAL_TRANSACTIONS AS total_transactions +FROM MAIN.USERS AS USERS +JOIN _S1 AS _S1 + ON USERS.uid = _S1.SENDER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql new file mode 100644 index 000000000..34d6825af --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql @@ -0,0 +1,18 @@ +WITH _T0 AS ( + SELECT + SUM(DATEDIFF(SECOND, session_start_ts, session_end_ts)) AS AGG_0, + user_id AS USER_ID + FROM MAIN.USER_SESSIONS + WHERE + session_end_ts < '2023-06-08' AND session_start_ts >= '2023-06-01' + GROUP BY + user_id +) +SELECT + USERS.uid, + COALESCE(_T0.AGG_0, 0) AS total_duration +FROM MAIN.USERS AS USERS +JOIN _T0 AS _T0 + ON USERS.uid = _T0.USER_ID +ORDER BY + TOTAL_DURATION DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql new file mode 100644 index 000000000..c22d8669b --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql @@ -0,0 +1,16 @@ +WITH _S1 AS ( + SELECT + SUM(amount) AS AGG_0, + coupon_id AS COUPON_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY + GROUP BY + coupon_id +) +SELECT + COUPONS.cid AS coupon_id, + COALESCE(_S1.AGG_0, 0) AS total_discount +FROM MAIN.COUPONS AS COUPONS +LEFT JOIN _S1 AS _S1 + ON COUPONS.cid = _S1.COUPON_ID +WHERE + COUPONS.merchant_id = '1' diff --git a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql new file mode 100644 index 000000000..3b8531e80 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql @@ -0,0 +1,5 @@ +SELECT + COUNT(*) AS TUC +FROM MAIN.USER_SESSIONS +WHERE + session_start_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql new file mode 100644 index 000000000..cd756c07b --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql @@ -0,0 +1,11 @@ +WITH _T0 AS ( + SELECT + COUNT_IF(status = 'success') AS AGG_0, + COUNT(*) AS AGG_1 + FROM MAIN.WALLET_TRANSACTIONS_DAILY + WHERE + DATEDIFF(MONTH, created_at, CURRENT_TIMESTAMP()) = 1 +) +SELECT + COALESCE(AGG_0, 0) / AGG_1 AS _expr0 +FROM _T0 diff --git a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql new file mode 100644 index 000000000..5471b47dc --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql @@ -0,0 +1,21 @@ +WITH _S3 AS ( + SELECT + COUNT(*) AS AGG_0, + COUPONS.merchant_id AS MERCHANT_ID + FROM MAIN.COUPONS AS COUPONS + JOIN MAIN.MERCHANTS AS MERCHANTS + ON COUPONS.merchant_id = MERCHANTS.mid + AND DATEDIFF(MONTH, MERCHANTS.created_at, COUPONS.created_at) = 0 + GROUP BY + COUPONS.merchant_id +) +SELECT + MERCHANTS.mid AS merchant_id, + MERCHANTS.name AS merchant_name, + COALESCE(_S3.AGG_0, 0) AS coupons_per_merchant +FROM MAIN.MERCHANTS AS MERCHANTS +LEFT JOIN _S3 AS _S3 + ON MERCHANTS.mid = _S3.MERCHANT_ID +ORDER BY + COUPONS_PER_MERCHANT DESC NULLS LAST +LIMIT 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql new file mode 100644 index 000000000..69f4321be --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql @@ -0,0 +1,18 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS TOTAL_UNREAD_NOTIFS, + user_id AS USER_ID + FROM MAIN.NOTIFICATIONS + WHERE + status = 'unread' AND type = 'promotion' + GROUP BY + user_id +) +SELECT + USERS.username, + _S1.TOTAL_UNREAD_NOTIFS AS total_unread_notifs +FROM MAIN.USERS AS USERS +JOIN _S1 AS _S1 + ON USERS.uid = _S1.USER_ID +WHERE + LOWER(USERS.country) = 'us' diff --git a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql new file mode 100644 index 000000000..095727d65 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql @@ -0,0 +1,19 @@ +WITH _T0 AS ( + SELECT + COUNT(DISTINCT coupon_id) AS AGG_0, + COUNT(DISTINCT txid) AS AGG_1, + receiver_id AS RECEIVER_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY + WHERE + status = 'success' + GROUP BY + receiver_id +) +SELECT + MERCHANTS.name, + ( + _T0.AGG_0 * 1.0 + ) / _T0.AGG_1 AS CPUR +FROM MAIN.MERCHANTS AS MERCHANTS +JOIN _T0 AS _T0 + ON MERCHANTS.mid = _T0.RECEIVER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql new file mode 100644 index 000000000..1dd698710 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql @@ -0,0 +1,23 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS AGG_0, + COUNT_IF(( + ( + DAYOFWEEK(NOTIFICATIONS.created_at) + 6 + ) % 7 + ) IN (5, 6)) AS AGG_1, + DATE_TRUNC('WEEK', CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) AS WEEK + FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS + JOIN MAIN.USERS AS USERS + ON NOTIFICATIONS.user_id = USERS.uid AND USERS.country IN ('US', 'CA') + WHERE + NOTIFICATIONS.created_at < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) + AND NOTIFICATIONS.created_at >= DATEADD(WEEK, -3, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) + GROUP BY + DATE_TRUNC('WEEK', CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) +) +SELECT + WEEK AS week, + AGG_0 AS num_notifs, + COALESCE(AGG_1, 0) AS weekend_notifs +FROM _T0 diff --git a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql new file mode 100644 index 000000000..7319823c3 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql @@ -0,0 +1,16 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS TOTAL_COUPONS, + merchant_id AS MERCHANT_ID + FROM MAIN.COUPONS + GROUP BY + merchant_id +) +SELECT + MERCHANTS.name AS merchant_name, + _S1.TOTAL_COUPONS AS total_coupons +FROM MAIN.MERCHANTS AS MERCHANTS +JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.MERCHANT_ID +WHERE + LOWER(MERCHANTS.category) LIKE '%retail%' AND MERCHANTS.status = 'active' diff --git a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql new file mode 100644 index 000000000..249b30d3f --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql @@ -0,0 +1,14 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS AGG_0, + SUM(WALLET_TRANSACTIONS_DAILY.amount) AS AGG_1 + FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY + JOIN MAIN.USERS AS USERS + ON USERS.country = 'US' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id + WHERE + DATEDIFF(DAY, WALLET_TRANSACTIONS_DAILY.created_at, CURRENT_TIMESTAMP()) <= 7 +) +SELECT + AGG_0 AS num_transactions, + CASE WHEN AGG_0 > 0 THEN COALESCE(AGG_1, 0) ELSE NULL END AS total_amount +FROM _T0 diff --git a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql new file mode 100644 index 000000000..ba0c54639 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql @@ -0,0 +1,5 @@ +SELECT + AVG(balance) AS AMB +FROM MAIN.WALLET_USER_BALANCE_DAILY +WHERE + DATEDIFF(DAY, updated_at, CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql new file mode 100644 index 000000000..a1b7d10d1 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql @@ -0,0 +1,13 @@ +WITH _T0 AS ( + SELECT + balance AS BALANCE + FROM MAIN.WALLET_USER_BALANCE_DAILY + QUALIFY + ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY updated_at DESC) = 1 +) +SELECT + USERS.uid AS user_id, + _T0.BALANCE AS latest_balance +FROM MAIN.USERS AS USERS +JOIN _T0 AS _T0 + ON USERS.uid = USERS.uid diff --git a/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql new file mode 100644 index 000000000..5c8ab9215 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql @@ -0,0 +1,14 @@ +WITH _T0 AS ( + SELECT + marketing_opt_in AS MARKETING_OPT_IN, + user_id AS USER_ID + FROM MAIN.USER_SETTING_SNAPSHOT + QUALIFY + ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) = 1 +) +SELECT + USERS.uid, + _T0.MARKETING_OPT_IN AS marketing_opt_in +FROM MAIN.USERS AS USERS +JOIN _T0 AS _T0 + ON USERS.uid = _T0.USER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql new file mode 100644 index 000000000..9d8721f8a --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql @@ -0,0 +1,19 @@ +WITH _S1 AS ( + SELECT + SUM(amount) AS AGG_0, + receiver_id AS RECEIVER_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY + WHERE + receiver_type = 1 AND status = 'success' + GROUP BY + receiver_id +) +SELECT + MERCHANTS.mid AS merchants_id, + MERCHANTS.name AS merchants_name, + MERCHANTS.category, + COALESCE(_S1.AGG_0, 0) AS total_revenue, + ROW_NUMBER() OVER (ORDER BY COALESCE(_S1.AGG_0, 0) DESC) AS mrr +FROM MAIN.MERCHANTS AS MERCHANTS +JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.RECEIVER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql new file mode 100644 index 000000000..8a89d8674 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql @@ -0,0 +1,10 @@ +SELECT + DATE_TRUNC('MONTH', CAST(created_at AS TIMESTAMP)) AS year_month, + COUNT(DISTINCT sender_id) AS active_users +FROM MAIN.WALLET_TRANSACTIONS_DAILY +WHERE + created_at < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) + AND created_at >= DATEADD(MONTH, -2, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP())) + AND sender_type = 0 +GROUP BY + DATE_TRUNC('MONTH', CAST(created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql new file mode 100644 index 000000000..88332c457 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql @@ -0,0 +1,22 @@ +WITH _S1 AS ( + SELECT + SUM(amount) AS AGG_0, + COUNT(*) AS AGG_1, + receiver_id AS RECEIVER_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY + WHERE + created_at >= DATE_TRUNC('DAY', DATEADD(DAY, -150, CURRENT_TIMESTAMP())) + AND receiver_type = 1 + GROUP BY + receiver_id +) +SELECT + MERCHANTS.name AS merchant_name, + COALESCE(_S1.AGG_1, 0) AS total_transactions, + COALESCE(_S1.AGG_0, 0) AS total_amount +FROM MAIN.MERCHANTS AS MERCHANTS +LEFT JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.RECEIVER_ID +ORDER BY + TOTAL_AMOUNT DESC NULLS LAST +LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql new file mode 100644 index 000000000..f0300fa04 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql @@ -0,0 +1,12 @@ +SELECT + DATE_TRUNC('MONTH', CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) AS month, + COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS active_users +FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY +JOIN MAIN.USERS AS USERS + ON USERS.status = 'active' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id +WHERE + DATE_PART(YEAR, WALLET_TRANSACTIONS_DAILY.created_at) = 2023 + AND WALLET_TRANSACTIONS_DAILY.sender_type = 0 + AND WALLET_TRANSACTIONS_DAILY.status = 'success' +GROUP BY + DATE_TRUNC('MONTH', CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql new file mode 100644 index 000000000..08bc48f33 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql @@ -0,0 +1,23 @@ +WITH _S1 AS ( + SELECT + COUPONS.merchant_id AS MERCHANT_ID + FROM MAIN.COUPONS AS COUPONS +), _S0 AS ( + SELECT + MERCHANTS.mid AS MERCHANT_ID, + MERCHANTS.name AS MERCHANT_NAME, + MERCHANTS.mid AS MID + FROM MAIN.MERCHANTS AS MERCHANTS +) +SELECT + _S0.MERCHANT_ID AS merchant_id, + _S0.MERCHANT_NAME AS merchant_name +FROM _S0 AS _S0 +WHERE + NOT EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0.MID = _S1.MERCHANT_ID + ) diff --git a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql new file mode 100644 index 000000000..131d250ab --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql @@ -0,0 +1,28 @@ +WITH _T0 AS ( + SELECT + WALLET_TRANSACTIONS_DAILY.receiver_id AS RECEIVER_ID, + WALLET_TRANSACTIONS_DAILY.receiver_type AS RECEIVER_TYPE + FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY +), _S1 AS ( + SELECT + _T0.RECEIVER_ID AS RECEIVER_ID + FROM _T0 AS _T0 + WHERE + _T0.RECEIVER_TYPE = 1 +), _S0 AS ( + SELECT + MERCHANTS.mid AS MERCHANT, + MERCHANTS.mid AS MID + FROM MAIN.MERCHANTS AS MERCHANTS +) +SELECT + _S0.MERCHANT AS merchant +FROM _S0 AS _S0 +WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0.MID = _S1.RECEIVER_ID + ) diff --git a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql new file mode 100644 index 000000000..e15d62dd3 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql @@ -0,0 +1,28 @@ +WITH _T0 AS ( + SELECT + NOTIFICATIONS.type AS NOTIFICATION_TYPE, + NOTIFICATIONS.user_id AS USER_ID + FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS +), _S1 AS ( + SELECT + _T0.USER_ID AS USER_ID + FROM _T0 AS _T0 + WHERE + _T0.NOTIFICATION_TYPE = 'transaction' +), _S0 AS ( + SELECT + USERS.uid AS UID, + USERS.uid AS USER_ID + FROM MAIN.USERS AS USERS +) +SELECT + _S0.USER_ID AS user_id +FROM _S0 AS _S0 +WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0.UID = _S1.USER_ID + ) diff --git a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql new file mode 100644 index 000000000..7cfc35807 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql @@ -0,0 +1,22 @@ +WITH _S1 AS ( + SELECT + NOTIFICATIONS.user_id AS USER_ID + FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS +), _S0 AS ( + SELECT + USERS.uid AS UID, + USERS.username AS USERNAME + FROM MAIN.USERS AS USERS +) +SELECT + _S0.UID AS uid, + _S0.USERNAME AS username +FROM _S0 AS _S0 +WHERE + NOT EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0.UID = _S1.USER_ID + ) diff --git a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql new file mode 100644 index 000000000..7b4f77a40 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql @@ -0,0 +1,15 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS COUNT, + device_type AS DEVICE_TYPE + FROM MAIN.USER_SESSIONS + GROUP BY + device_type +) +SELECT + DEVICE_TYPE AS device_type, + COUNT AS count +FROM _T0 +ORDER BY + COUNT DESC NULLS LAST +LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql new file mode 100644 index 000000000..0e3af7349 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql @@ -0,0 +1,15 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS COUNT, + status AS STATUS + FROM MAIN.WALLET_TRANSACTIONS_DAILY + GROUP BY + status +) +SELECT + STATUS AS status, + COUNT AS count +FROM _T0 +ORDER BY + COUNT DESC NULLS LAST +LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql new file mode 100644 index 000000000..47c59f151 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql @@ -0,0 +1,19 @@ +WITH _S1 AS ( + SELECT + COUNT(txid) AS AGG_0, + SUM(amount) AS AGG_1, + coupon_id AS COUPON_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY + GROUP BY + coupon_id +) +SELECT + COUPONS.code AS coupon_code, + COALESCE(_S1.AGG_0, 0) AS redemption_count, + COALESCE(_S1.AGG_1, 0) AS total_discount +FROM MAIN.COUPONS AS COUPONS +LEFT JOIN _S1 AS _S1 + ON COUPONS.cid = _S1.COUPON_ID +ORDER BY + REDEMPTION_COUNT DESC NULLS LAST +LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql new file mode 100644 index 000000000..c1e8ed55c --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql @@ -0,0 +1,26 @@ +WITH _S1 AS ( + SELECT + country AS COUNTRY, + uid AS UID + FROM MAIN.USERS +), _T1 AS ( + SELECT + SUM(WALLET_TRANSACTIONS_DAILY.amount) AS AGG_0, + COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS AGG_1, + _S1.COUNTRY + FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY + LEFT JOIN _S1 AS _S1 + ON WALLET_TRANSACTIONS_DAILY.sender_id = _S1.UID + WHERE + WALLET_TRANSACTIONS_DAILY.sender_type = 0 + GROUP BY + _S1.COUNTRY +) +SELECT + COUNTRY AS country, + AGG_1 AS user_count, + COALESCE(AGG_0, 0) AS total_amount +FROM _T1 +ORDER BY + TOTAL_AMOUNT DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql new file mode 100644 index 000000000..5a776115d --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql @@ -0,0 +1,26 @@ +WITH _T0 AS ( + SELECT + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (ORDER BY WALLET_MERCHANT_BALANCE_DAILY.balance DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(WALLET_MERCHANT_BALANCE_DAILY.balance) OVER () - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN WALLET_MERCHANT_BALANCE_DAILY.balance + ELSE NULL + END AS EXPR_1 + FROM MAIN.WALLET_MERCHANT_BALANCE_DAILY AS WALLET_MERCHANT_BALANCE_DAILY + JOIN MAIN.MERCHANTS AS MERCHANTS + ON LOWER(MERCHANTS.category) LIKE '%retail%' + AND MERCHANTS.mid = WALLET_MERCHANT_BALANCE_DAILY.merchant_id + AND MERCHANTS.status = 'active' + WHERE + DATE_TRUNC('DAY', CAST(WALLET_MERCHANT_BALANCE_DAILY.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) +) +SELECT + AVG(EXPR_1) AS _expr0 +FROM _T0 diff --git a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql new file mode 100644 index 000000000..d74258b8b --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql @@ -0,0 +1,14 @@ +WITH _S0 AS ( + SELECT + MIN(snapshot_date) AS MIN_DATE + FROM MAIN.USER_SETTING_SNAPSHOT + WHERE + DATE_PART(YEAR, snapshot_date) = 2023 +) +SELECT + AVG(USER_SETTING_SNAPSHOT.tx_limit_daily) AS avg_daily_limit, + AVG(USER_SETTING_SNAPSHOT.tx_limit_monthly) AS avg_monthly_limit +FROM _S0 AS _S0 +JOIN MAIN.USER_SETTING_SNAPSHOT AS USER_SETTING_SNAPSHOT + ON DATE_PART(YEAR, USER_SETTING_SNAPSHOT.snapshot_date) = 2023 + AND USER_SETTING_SNAPSHOT.snapshot_date = _S0.MIN_DATE diff --git a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql new file mode 100644 index 000000000..d24e94761 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql @@ -0,0 +1,6 @@ +SELECT + device_type, + AVG(DATEDIFF(SECOND, session_start_ts, session_end_ts)) AS avg_session_duration_seconds +FROM MAIN.USER_SESSIONS +GROUP BY + device_type diff --git a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql new file mode 100644 index 000000000..dfee8c346 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql @@ -0,0 +1,45 @@ +WITH _T1 AS ( + SELECT + merchant_id AS MERCHANT_ID, + start_date AS START_DATE + FROM MAIN.COUPONS +), _S1 AS ( + SELECT + MIN(START_DATE) AS AGG_0, + MERCHANT_ID + FROM _T1 + GROUP BY + MERCHANT_ID +), _S3 AS ( + SELECT + MIN(START_DATE) AS AGG_0, + MERCHANT_ID + FROM _T1 + GROUP BY + MERCHANT_ID +), _S7 AS ( + SELECT + MAX(COUPONS.cid) AS AGG_1, + MERCHANTS.mid AS MID + FROM MAIN.MERCHANTS AS MERCHANTS + LEFT JOIN _S3 AS _S3 + ON MERCHANTS.mid = _S3.MERCHANT_ID + JOIN MAIN.COUPONS AS COUPONS + ON COUPONS.merchant_id = MERCHANTS.mid AND COUPONS.start_date = _S3.AGG_0 + GROUP BY + MERCHANTS.mid +) +SELECT + MERCHANTS.mid AS merchants_id, + MERCHANTS.created_at AS merchant_registration_date, + _S1.AGG_0 AS earliest_coupon_start_date, + _S7.AGG_1 AS earliest_coupon_id +FROM MAIN.MERCHANTS AS MERCHANTS +LEFT JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.MERCHANT_ID +LEFT JOIN _S7 AS _S7 + ON MERCHANTS.mid = _S7.MID +JOIN _T1 AS _S9 + ON MERCHANTS.mid = _S9.MERCHANT_ID +WHERE + _S9.START_DATE <= DATEADD(YEAR, 1, CAST(MERCHANTS.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql new file mode 100644 index 000000000..9edfd90a5 --- /dev/null +++ b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql @@ -0,0 +1,46 @@ +WITH _S0 AS ( + SELECT + NOTIFICATIONS.created_at AS CREATED_AT, + NOTIFICATIONS.user_id AS USER_ID + FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS +), _S1 AS ( + SELECT + USERS.created_at AS CREATED_AT, + USERS.uid AS UID + FROM MAIN.USERS AS USERS +), _T0 AS ( + SELECT + _S0.CREATED_AT AS CREATED_AT, + _S1.CREATED_AT AS CREATED_AT_1, + _S0.USER_ID AS USER_ID + FROM _S0 AS _S0 + JOIN _S1 AS _S1 + ON _S0.USER_ID = _S1.UID +), _S3 AS ( + SELECT + _T0.USER_ID AS USER_ID + FROM _T0 AS _T0 + WHERE + _T0.CREATED_AT <= DATEADD(YEAR, 1, CAST(_T0.CREATED_AT_1 AS TIMESTAMP)) + AND _T0.CREATED_AT >= _T0.CREATED_AT_1 +), _S2 AS ( + SELECT + USERS.created_at AS CREATED_AT, + USERS.email AS EMAIL, + USERS.uid AS UID, + USERS.username AS USERNAME + FROM MAIN.USERS AS USERS +) +SELECT + _S2.USERNAME AS username, + _S2.EMAIL AS email, + _S2.CREATED_AT AS created_at +FROM _S2 AS _S2 +WHERE + NOT EXISTS( + SELECT + 1 AS "1" + FROM _S3 AS _S3 + WHERE + _S2.UID = _S3.USER_ID + ) diff --git a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql new file mode 100644 index 000000000..e0302206d --- /dev/null +++ b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql @@ -0,0 +1,32 @@ +WITH _S2 AS ( + SELECT + ev_dt AS DATE_TIME, + ev_key AS KEY + FROM EVENTS +) +SELECT + EVENTS.ev_name AS event_name, + ERAS.er_name AS era_name, + DATE_PART(YEAR, EVENTS.ev_dt) AS event_year, + SEASONS.s_name AS season_name, + TIMES.t_name AS tod +FROM EVENTS AS EVENTS +JOIN ERAS AS ERAS + ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) + AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) +JOIN _S2 AS _S2 + ON EVENTS.ev_key = _S2.KEY +JOIN SEASONS AS SEASONS + ON SEASONS.s_month1 = DATE_PART(MONTH, _S2.DATE_TIME) + OR SEASONS.s_month2 = DATE_PART(MONTH, _S2.DATE_TIME) + OR SEASONS.s_month3 = DATE_PART(MONTH, _S2.DATE_TIME) +JOIN _S2 AS _S6 + ON EVENTS.ev_key = _S6.KEY +JOIN TIMES AS TIMES + ON TIMES.t_end_hour > DATE_PART(HOUR, _S6.DATE_TIME) + AND TIMES.t_start_hour <= DATE_PART(HOUR, _S6.DATE_TIME) +WHERE + EVENTS.ev_typ = 'culture' +ORDER BY + EVENTS.ev_dt NULLS FIRST +LIMIT 6 diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql new file mode 100644 index 000000000..4984e238b --- /dev/null +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -0,0 +1,28 @@ +WITH _T1 AS ( + SELECT + DATEDIFF( + DAY, + LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt), + EVENTS.ev_dt + ) AS DAY_GAP, + ERAS.er_name AS NAME, + ERAS.er_start_year AS START_YEAR + FROM ERAS AS ERAS + JOIN EVENTS AS EVENTS + ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) + AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) +), _T0 AS ( + SELECT + ANY_VALUE(START_YEAR) AS AGG_3, + AVG(DAY_GAP) AS AVG_EVENT_GAP, + ANY_VALUE(NAME) AS ERA_NAME + FROM _T1 + GROUP BY + NAME +) +SELECT + ERA_NAME AS era_name, + AVG_EVENT_GAP AS avg_event_gap +FROM _T0 +ORDER BY + AGG_3 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql new file mode 100644 index 000000000..fc9bfa872 --- /dev/null +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -0,0 +1,19 @@ +WITH _T0 AS ( + SELECT + COUNT(*) AS N_EVENTS, + ANY_VALUE(SEASONS.s_name) AS SEASON_NAME + FROM SEASONS AS SEASONS + JOIN EVENTS AS EVENTS + ON SEASONS.s_month1 = DATE_PART(MONTH, EVENTS.ev_dt) + OR SEASONS.s_month2 = DATE_PART(MONTH, EVENTS.ev_dt) + OR SEASONS.s_month3 = DATE_PART(MONTH, EVENTS.ev_dt) + GROUP BY + SEASONS.s_name +) +SELECT + SEASON_NAME AS season_name, + N_EVENTS AS n_events +FROM _T0 +ORDER BY + N_EVENTS DESC NULLS LAST, + SEASON_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql new file mode 100644 index 000000000..f813f6399 --- /dev/null +++ b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql @@ -0,0 +1,18 @@ +WITH _T1 AS ( + SELECT + ERAS.er_name AS NAME, + EVENTS.ev_name AS NAME_1, + ERAS.er_start_year AS START_YEAR + FROM ERAS AS ERAS + JOIN EVENTS AS EVENTS + ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) + AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) + QUALIFY + ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) = 1 +) +SELECT + NAME AS era_name, + NAME_1 AS event_name +FROM _T1 +ORDER BY + START_YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql new file mode 100644 index 000000000..e0805c7f1 --- /dev/null +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -0,0 +1,86 @@ +WITH _S0 AS ( + SELECT + s_month1 AS FIRST_MONTH, + s_name AS NAME, + s_name AS SEASON_NAME, + s_month2 AS SECOND_MONTH, + s_month3 AS THIRD_MONTH + FROM SEASONS +), _S7 AS ( + SELECT + s_month1 AS FIRST_MONTH, + s_name AS NAME, + s_month2 AS SECOND_MONTH, + s_month3 AS THIRD_MONTH + FROM SEASONS +), _S9 AS ( + SELECT + COUNT(*) AS AGG_0, + _S2.NAME, + SEARCHES.search_id AS SEARCH_ID + FROM _S0 AS _S2 + JOIN SEARCHES AS SEARCHES + ON _S2.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + OR _S2.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + OR _S2.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + JOIN EVENTS AS EVENTS + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN _S7 AS _S7 + ON _S2.SEASON_NAME = _S7.NAME + AND ( + _S7.FIRST_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + OR _S7.SECOND_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + OR _S7.THIRD_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + ) + GROUP BY + _S2.NAME, + SEARCHES.search_id +), _S16 AS ( + SELECT + ANY_VALUE(_S0.NAME) AS AGG_1, + COUNT_IF(( + NOT _S9.AGG_0 IS NULL AND _S9.AGG_0 > 0 + )) AS AGG_2, + COUNT(*) AS AGG_3, + ANY_VALUE(_S0.SEASON_NAME) AS AGG_4 + FROM _S0 AS _S0 + JOIN SEARCHES AS SEARCHES + ON _S0.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + OR _S0.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + OR _S0.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + LEFT JOIN _S9 AS _S9 + ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.NAME = _S9.NAME + GROUP BY + _S0.NAME +), _S17 AS ( + SELECT + COUNT_IF(_S10.SEASON_NAME = _S15.NAME) AS AGG_0, + COUNT(*) AS AGG_1, + _S10.NAME + FROM _S0 AS _S10 + JOIN EVENTS AS EVENTS + ON _S10.FIRST_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + OR _S10.SECOND_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + OR _S10.THIRD_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + JOIN SEARCHES AS SEARCHES + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN _S7 AS _S15 + ON _S15.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + OR _S15.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + OR _S15.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + GROUP BY + _S10.NAME +) +SELECT + _S16.AGG_4 AS season_name, + ROUND(( + 100.0 * COALESCE(_S16.AGG_2, 0) + ) / _S16.AGG_3, 2) AS pct_season_searches, + ROUND(( + 100.0 * COALESCE(_S17.AGG_0, 0) + ) / COALESCE(_S17.AGG_1, 0), 2) AS pct_event_searches +FROM _S16 AS _S16 +LEFT JOIN _S17 AS _S17 + ON _S16.AGG_1 = _S17.NAME +ORDER BY + SEASON_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql new file mode 100644 index 000000000..d1e8a4e43 --- /dev/null +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql @@ -0,0 +1,28 @@ +WITH _T1 AS ( + SELECT + COUNT(*) AS N_SEARCHES, + SEARCHES.search_engine AS SEARCH_ENGINE, + TIMES.t_name AS TOD + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) + AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + GROUP BY + SEARCHES.search_engine, + TIMES.t_name +), _T0 AS ( + SELECT + N_SEARCHES, + SEARCH_ENGINE, + TOD + FROM _T1 + QUALIFY + ROW_NUMBER() OVER (PARTITION BY TOD ORDER BY N_SEARCHES DESC, SEARCH_ENGINE) = 1 +) +SELECT + TOD AS tod, + SEARCH_ENGINE AS search_engine, + N_SEARCHES AS n_searches +FROM _T0 +ORDER BY + TOD NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql new file mode 100644 index 000000000..c0f27ab14 --- /dev/null +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql @@ -0,0 +1,27 @@ +WITH _T1 AS ( + SELECT + COUNT(DISTINCT SEARCHES.search_id) AS N_SEARCHES, + EVENTS.ev_typ AS EVENT_TYPE, + USERS.user_region AS REGION + FROM EVENTS AS EVENTS + JOIN SEARCHES AS SEARCHES + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN USERS AS USERS + ON SEARCHES.search_user_id = USERS.user_id + GROUP BY + EVENTS.ev_typ, + USERS.user_region +), _T0 AS ( + SELECT + N_SEARCHES, + EVENT_TYPE, + REGION + FROM _T1 + QUALIFY + ROW_NUMBER() OVER (PARTITION BY REGION ORDER BY N_SEARCHES DESC) = 1 +) +SELECT + REGION AS region, + EVENT_TYPE AS event_type, + N_SEARCHES AS n_searches +FROM _T0 diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql new file mode 100644 index 000000000..12a7c33a3 --- /dev/null +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -0,0 +1,60 @@ +WITH _S1 AS ( + SELECT + EVENTS.ev_dt AS DATE_TIME + FROM EVENTS AS EVENTS +), _T1 AS ( + SELECT + TIMES.t_end_hour AS END_HOUR, + TIMES.t_name AS NAME, + TIMES.t_start_hour AS START_HOUR + FROM TIMES AS TIMES +), _S2 AS ( + SELECT + _T1.END_HOUR AS END_HOUR, + _T1.START_HOUR AS START_HOUR + FROM _T1 AS _T1 + WHERE + _T1.NAME = 'Pre-Dawn' +), _S0 AS ( + SELECT + _S1.DATE_TIME AS DATE_TIME + FROM _S1 AS _S1 + WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S2 AS _S2 + WHERE + _S2.END_HOUR > DATE_PART(HOUR, _S1.DATE_TIME) + AND _S2.START_HOUR <= DATE_PART(HOUR, _S1.DATE_TIME) + ) +), _T2 AS ( + SELECT + ERAS.er_end_year AS END_YEAR, + ERAS.er_name AS NAME, + ERAS.er_start_year AS START_YEAR + FROM ERAS AS ERAS +), _S3 AS ( + SELECT + _T2.END_YEAR AS END_YEAR, + _T2.START_YEAR AS START_YEAR + FROM _T2 AS _T2 + WHERE + _T2.NAME = 'Cold War' +), _T0 AS ( + SELECT + 1 AS _ + FROM _S0 AS _S0 + WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S3 AS _S3 + WHERE + _S3.END_YEAR > DATE_PART(YEAR, _S0.DATE_TIME) + AND _S3.START_YEAR <= DATE_PART(YEAR, _S0.DATE_TIME) + ) +) +SELECT + COUNT(*) AS n_events +FROM _T0 AS _T0 diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql new file mode 100644 index 000000000..e75d9f4e4 --- /dev/null +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql @@ -0,0 +1,32 @@ +WITH _S1 AS ( + SELECT + search_string AS SEARCH_STRING, + search_user_id AS USER_ID + FROM SEARCHES +), _T0 AS ( + SELECT + ANY_VALUE(USERS.user_name) AS AGG_2, + COUNT(DISTINCT USERS_2.user_id) AS N_OTHER_USERS, + ANY_VALUE(USERS.user_name) AS USER_NAME + FROM USERS AS USERS + JOIN _S1 AS _S1 + ON USERS.user_id = _S1.USER_ID + JOIN EVENTS AS EVENTS + ON LOWER(_S1.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN _S1 AS _S5 + ON LOWER(_S5.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN USERS AS USERS_2 + ON USERS_2.user_id = _S5.USER_ID + WHERE + USERS.user_name <> USERS_2.user_name + GROUP BY + USERS.user_id +) +SELECT + USER_NAME AS user_name, + N_OTHER_USERS AS n_other_users +FROM _T0 +ORDER BY + N_OTHER_USERS DESC NULLS LAST, + AGG_2 NULLS FIRST +LIMIT 7 diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql new file mode 100644 index 000000000..42aa0d605 --- /dev/null +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -0,0 +1,38 @@ +WITH _T2 AS ( + SELECT + COUNT(*) AS AGG_0, + ANY_VALUE(USERS.user_id) AS AGG_10, + ANY_VALUE(USERS.user_name) AS AGG_8 + FROM USERS AS USERS + JOIN SEARCHES AS SEARCHES + ON SEARCHES.search_user_id = USERS.user_id + JOIN EVENTS AS EVENTS + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN SEARCHES AS SEARCHES_2 + ON LOWER(SEARCHES_2.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN USERS AS USERS_2 + ON SEARCHES_2.search_user_id = USERS_2.user_id + WHERE + USERS.user_name <> USERS_2.user_name + GROUP BY + SEARCHES.search_id, + USERS.user_id +), _T0 AS ( + SELECT + ANY_VALUE(AGG_8) AS AGG_2, + COUNT(*) AS N_SEARCHES, + ANY_VALUE(AGG_8) AS USER_NAME + FROM _T2 + WHERE + AGG_0 > 0 + GROUP BY + AGG_10 +) +SELECT + USER_NAME AS user_name, + N_SEARCHES AS n_searches +FROM _T0 +ORDER BY + N_SEARCHES DESC NULLS LAST, + AGG_2 NULLS FIRST +LIMIT 4 diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql new file mode 100644 index 000000000..7bc221e73 --- /dev/null +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -0,0 +1,26 @@ +WITH _T1 AS ( + SELECT + COUNT(*) AS AGG_0, + ANY_VALUE(TIMES.t_name) AS AGG_2, + ANY_VALUE(TIMES.t_start_hour) AS AGG_3 + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) + AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + GROUP BY + TIMES.t_name +), _T0 AS ( + SELECT + ROUND(( + 100.0 * AGG_0 + ) / SUM(AGG_0) OVER (), 2) AS PCT_SEARCHES, + AGG_2 AS TOD, + AGG_3 + FROM _T1 +) +SELECT + TOD AS tod, + PCT_SEARCHES AS pct_searches +FROM _T0 +ORDER BY + AGG_3 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql new file mode 100644 index 000000000..41e7159a3 --- /dev/null +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -0,0 +1,29 @@ +WITH _T1 AS ( + SELECT + AVG(SEARCHES.search_num_results) AS AGG_0, + COUNT(*) AS AGG_1, + ANY_VALUE(TIMES.t_name) AS AGG_3, + ANY_VALUE(TIMES.t_start_hour) AS AGG_4 + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) + AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + GROUP BY + TIMES.t_name +), _T0 AS ( + SELECT + ROUND(AGG_0, 2) AS AVG_RESULTS, + ROUND(( + 100.0 * AGG_1 + ) / SUM(AGG_1) OVER (), 2) AS PCT_SEARCHES, + AGG_3 AS TOD, + AGG_4 + FROM _T1 +) +SELECT + TOD AS tod, + PCT_SEARCHES AS pct_searches, + AVG_RESULTS AS avg_results +FROM _T0 +ORDER BY + AGG_4 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql new file mode 100644 index 000000000..e53e35abf --- /dev/null +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql @@ -0,0 +1,15 @@ +SELECT + EVENTS.ev_typ AS event_type, + COUNT(*) AS n_events +FROM EVENTS AS EVENTS +JOIN SEASONS AS SEASONS + ON ( + SEASONS.s_month1 = DATE_PART(MONTH, EVENTS.ev_dt) + OR SEASONS.s_month2 = DATE_PART(MONTH, EVENTS.ev_dt) + OR SEASONS.s_month3 = DATE_PART(MONTH, EVENTS.ev_dt) + ) + AND SEASONS.s_name = 'Summer' +GROUP BY + EVENTS.ev_typ +ORDER BY + EVENT_TYPE NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql new file mode 100644 index 000000000..425823c46 --- /dev/null +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql @@ -0,0 +1,25 @@ +WITH _S2 AS ( + SELECT DISTINCT + search_engine AS SEARCH_ENGINE + FROM SEARCHES +), _S3 AS ( + SELECT + COUNT(DISTINCT USERS.user_id) AS AGG_0, + SEARCHES.search_engine AS SEARCH_ENGINE + FROM SEARCHES AS SEARCHES + JOIN USERS AS USERS + ON SEARCHES.search_user_id = USERS.user_id + WHERE + DATE_PART(YEAR, SEARCHES.search_ts) <= 2019 + AND DATE_PART(YEAR, SEARCHES.search_ts) >= 2010 + GROUP BY + SEARCHES.search_engine +) +SELECT + _S2.SEARCH_ENGINE AS engine, + COALESCE(_S3.AGG_0, 0) AS n_users +FROM _S2 AS _S2 +LEFT JOIN _S3 AS _S3 + ON _S2.SEARCH_ENGINE = _S3.SEARCH_ENGINE +ORDER BY + ENGINE NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql new file mode 100644 index 000000000..58cff3a8d --- /dev/null +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -0,0 +1,65 @@ +WITH _S4 AS ( + SELECT + USERS.user_id AS USER_ID, + USERS.user_name AS USER_NAME + FROM USERS AS USERS +), _S0 AS ( + SELECT + SEARCHES.search_string AS SEARCH_STRING, + SEARCHES.search_user_id AS USER_ID + FROM SEARCHES AS SEARCHES +), _S1 AS ( + SELECT + EVENTS.ev_dt AS DATE_TIME, + EVENTS.ev_name AS NAME + FROM EVENTS AS EVENTS +), _T1 AS ( + SELECT + ERAS.er_end_year AS END_YEAR, + ERAS.er_name AS NAME, + ERAS.er_start_year AS START_YEAR + FROM ERAS AS ERAS +), _S2 AS ( + SELECT + _T1.END_YEAR AS END_YEAR, + _T1.START_YEAR AS START_YEAR + FROM _T1 AS _T1 + WHERE + _T1.NAME = 'Cold War' +), _S3 AS ( + SELECT + _S1.NAME AS NAME + FROM _S1 AS _S1 + JOIN _S2 AS _S2 + ON _S2.END_YEAR > DATE_PART(YEAR, _S1.DATE_TIME) + AND _S2.START_YEAR <= DATE_PART(YEAR, _S1.DATE_TIME) +), _T0 AS ( + SELECT + _S0.USER_ID AS USER_ID + FROM _S0 AS _S0 + WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S3 AS _S3 + WHERE + LOWER(_S0.SEARCH_STRING) LIKE CONCAT('%', LOWER(_S3.NAME), '%') + ) +), _S5 AS ( + SELECT + COUNT(*) AS N_COLD_WAR_SEARCHES, + _T0.USER_ID AS USER_ID_3_0_1 + FROM _T0 AS _T0 + GROUP BY + _T0.USER_ID +) +SELECT + _S4.USER_NAME AS user_name, + _S5.N_COLD_WAR_SEARCHES AS n_cold_war_searches +FROM _S4 AS _S4 +JOIN _S5 AS _S5 + ON _S4.USER_ID = _S5.USER_ID_3_0_1 +ORDER BY + N_COLD_WAR_SEARCHES DESC NULLS LAST, + USER_NAME NULLS FIRST +LIMIT 3 diff --git a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql new file mode 100644 index 000000000..c2f64bfae --- /dev/null +++ b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql @@ -0,0 +1,52 @@ +WITH _T0 AS ( + SELECT + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (ORDER BY CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) OVER () - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END + ELSE NULL + END AS EXPR_5, + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (ORDER BY c_acctbal DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(c_acctbal) OVER () - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN c_acctbal + ELSE NULL + END AS EXPR_6, + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (ORDER BY CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) OVER () - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END + ELSE NULL + END AS EXPR_7, + CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END AS NEGATIVE_ACCTBAL, + CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL + FROM TPCH.CUSTOMER +) +SELECT + COUNT(NEGATIVE_ACCTBAL) AS n_red_acctbal, + COUNT(NON_NEGATIVE_ACCTBAL) AS n_black_acctbal, + AVG(EXPR_7) AS median_red_acctbal, + AVG(EXPR_5) AS median_black_acctbal, + AVG(EXPR_6) AS median_overall_acctbal +FROM _T0 diff --git a/tests/test_sql_refsols/hour_minute_day_snowflake.sql b/tests/test_sql_refsols/hour_minute_day_snowflake.sql new file mode 100644 index 000000000..0677370ec --- /dev/null +++ b/tests/test_sql_refsols/hour_minute_day_snowflake.sql @@ -0,0 +1,11 @@ +SELECT + SBTRANSACTION.sbtxid AS transaction_id, + DATE_PART(HOUR, SBTRANSACTION.sbtxdatetime) AS _expr0, + DATE_PART(MINUTE, SBTRANSACTION.sbtxdatetime) AS _expr1, + DATE_PART(SECOND, SBTRANSACTION.sbtxdatetime) AS _expr2 +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + AND SBTICKER.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') +ORDER BY + TRANSACTION_ID NULLS FIRST diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql new file mode 100644 index 000000000..35daf5ec5 --- /dev/null +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql @@ -0,0 +1,71 @@ +WITH _T1 AS ( + SELECT + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (PARTITION BY c_nationkey ORDER BY CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) OVER (PARTITION BY c_nationkey) - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END + ELSE NULL + END AS EXPR_5, + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (PARTITION BY c_nationkey ORDER BY c_acctbal DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(c_acctbal) OVER (PARTITION BY c_nationkey) - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN c_acctbal + ELSE NULL + END AS EXPR_6, + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (PARTITION BY c_nationkey ORDER BY CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) OVER (PARTITION BY c_nationkey) - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END + ELSE NULL + END AS EXPR_7, + c_nationkey AS NATION_KEY, + CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END AS NEGATIVE_ACCTBAL, + CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL + FROM TPCH.CUSTOMER +), _S3 AS ( + SELECT + AVG(EXPR_5) AS MEDIAN_BLACK_ACCTBAL, + AVG(EXPR_6) AS MEDIAN_OVERALL_ACCTBAL, + AVG(EXPR_7) AS MEDIAN_RED_ACCTBAL, + COUNT(NON_NEGATIVE_ACCTBAL) AS N_BLACK_ACCTBAL, + COUNT(NEGATIVE_ACCTBAL) AS N_RED_ACCTBAL, + NATION_KEY + FROM _T1 + GROUP BY + NATION_KEY +) +SELECT + NATION.n_name AS nation_name, + _S3.N_RED_ACCTBAL AS n_red_acctbal, + _S3.N_BLACK_ACCTBAL AS n_black_acctbal, + _S3.MEDIAN_RED_ACCTBAL AS median_red_acctbal, + _S3.MEDIAN_BLACK_ACCTBAL AS median_black_acctbal, + _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal +FROM TPCH.NATION AS NATION +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' +JOIN _S3 AS _S3 + ON NATION.n_nationkey = _S3.NATION_KEY +ORDER BY + NATION_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/rank_a_snowflake.sql b/tests/test_sql_refsols/rank_a_snowflake.sql new file mode 100644 index 000000000..9a7f14d7c --- /dev/null +++ b/tests/test_sql_refsols/rank_a_snowflake.sql @@ -0,0 +1,4 @@ +SELECT + c_custkey AS id, + ROW_NUMBER() OVER (ORDER BY c_acctbal DESC) AS rk +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/rank_b_snowflake.sql b/tests/test_sql_refsols/rank_b_snowflake.sql new file mode 100644 index 000000000..b323162a0 --- /dev/null +++ b/tests/test_sql_refsols/rank_b_snowflake.sql @@ -0,0 +1,4 @@ +SELECT + o_orderkey AS order_key, + RANK() OVER (ORDER BY o_orderpriority) AS rank +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/rank_c_snowflake.sql b/tests/test_sql_refsols/rank_c_snowflake.sql new file mode 100644 index 000000000..8b019c54b --- /dev/null +++ b/tests/test_sql_refsols/rank_c_snowflake.sql @@ -0,0 +1,4 @@ +SELECT + o_orderdate AS order_date, + DENSE_RANK() OVER (ORDER BY o_orderdate) AS rank +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql new file mode 100644 index 000000000..88237aa63 --- /dev/null +++ b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql @@ -0,0 +1,71 @@ +WITH _T0 AS ( + SELECT + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER (PARTITION BY NATION.n_regionkey) - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END + ELSE NULL + END AS EXPR_5, + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey) - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN CUSTOMER.c_acctbal + ELSE NULL + END AS EXPR_6, + CASE + WHEN ABS( + ( + ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 + ) - ( + ( + COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER (PARTITION BY NATION.n_regionkey) - 1.0 + ) / 2.0 + ) + ) < 1.0 + THEN CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END + ELSE NULL + END AS EXPR_7, + CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS NEGATIVE_ACCTBAL, + CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL, + NATION.n_regionkey AS REGION_KEY + FROM TPCH.NATION AS NATION + JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey +), _S3 AS ( + SELECT + AVG(EXPR_5) AS MEDIAN_BLACK_ACCTBAL, + AVG(EXPR_6) AS MEDIAN_OVERALL_ACCTBAL, + AVG(EXPR_7) AS MEDIAN_RED_ACCTBAL, + COUNT(NON_NEGATIVE_ACCTBAL) AS N_BLACK_ACCTBAL, + COUNT(NEGATIVE_ACCTBAL) AS N_RED_ACCTBAL, + REGION_KEY + FROM _T0 + GROUP BY + REGION_KEY +) +SELECT + REGION.r_name AS region_name, + _S3.N_RED_ACCTBAL AS n_red_acctbal, + _S3.N_BLACK_ACCTBAL AS n_black_acctbal, + _S3.MEDIAN_RED_ACCTBAL AS median_red_acctbal, + _S3.MEDIAN_BLACK_ACCTBAL AS median_black_acctbal, + _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal +FROM TPCH.REGION AS REGION +JOIN _S3 AS _S3 + ON REGION.r_regionkey = _S3.REGION_KEY +ORDER BY + REGION_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/simple_filter_snowflake.sql b/tests/test_sql_refsols/simple_filter_snowflake.sql new file mode 100644 index 000000000..dfa0ed0dd --- /dev/null +++ b/tests/test_sql_refsols/simple_filter_snowflake.sql @@ -0,0 +1,7 @@ +SELECT + o_orderdate AS order_date, + o_orderkey, + o_totalprice +FROM TPCH.ORDERS +WHERE + o_totalprice < 1000.0 diff --git a/tests/test_sql_refsols/simple_scan_snowflake.sql b/tests/test_sql_refsols/simple_scan_snowflake.sql new file mode 100644 index 000000000..e0125c3c4 --- /dev/null +++ b/tests/test_sql_refsols/simple_scan_snowflake.sql @@ -0,0 +1,3 @@ +SELECT + o_orderkey AS key +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql new file mode 100644 index 000000000..895fec72b --- /dev/null +++ b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql @@ -0,0 +1,21 @@ +SELECT + 10 AS s1, + 20 AS s2, + 0 AS s3, + -200 AS s4, + NULL AS s5, + -0.34 AS s6, + CAST('2023-01-01 00:00:00' AS TIMESTAMP) AS s7, + '' AS s8, + NULL AS s9, + 20 AS l1, + 20 AS l2, + 20 AS l3, + 300 AS l4, + NULL AS l5, + 100.22 AS l6, + CAST('2025-01-01 00:00:00' AS TIMESTAMP) AS l7, + 'alphabet soup' AS l8, + NULL AS l9 +FROM (VALUES + (NULL)) AS _Q_0(_COL_0) diff --git a/tests/test_sql_refsols/simple_var_std_snowflake.sql b/tests/test_sql_refsols/simple_var_std_snowflake.sql new file mode 100644 index 000000000..a918940bb --- /dev/null +++ b/tests/test_sql_refsols/simple_var_std_snowflake.sql @@ -0,0 +1,26 @@ +WITH _S1 AS ( + SELECT + STDDEV_POP(s_acctbal) AS POP_STD, + VARIANCE_POP(s_acctbal) AS POP_VAR, + STDDEV(s_acctbal) AS SAMPLE_STD, + VARIANCE(s_acctbal) AS SAMPLE_VAR, + STDDEV_POP(s_acctbal) AS STD, + VARIANCE_POP(s_acctbal) AS VAR, + s_nationkey AS NATION_KEY + FROM TPCH.SUPPLIER + GROUP BY + s_nationkey +) +SELECT + NATION.n_name AS name, + _S1.VAR AS var, + _S1.STD AS std, + _S1.SAMPLE_VAR AS sample_var, + _S1.SAMPLE_STD AS sample_std, + _S1.POP_VAR AS pop_var, + _S1.POP_STD AS pop_std +FROM TPCH.NATION AS NATION +JOIN _S1 AS _S1 + ON NATION.n_nationkey = _S1.NATION_KEY +WHERE + NATION.n_name IN ('ALGERIA', 'ARGENTINA') diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql new file mode 100644 index 000000000..014150355 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql @@ -0,0 +1,27 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + ( + DAYOFWEEK(sbtxdatetime) + 2 + ) % 7 + ) + 1 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql new file mode 100644 index 000000000..0a42c0a98 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql @@ -0,0 +1,25 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + DAYOFWEEK(sbtxdatetime) + 2 + ) % 7 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql new file mode 100644 index 000000000..cfcad95b7 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql @@ -0,0 +1,27 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + ( + DAYOFWEEK(sbtxdatetime) + 6 + ) % 7 + ) + 1 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql new file mode 100644 index 000000000..93bce22e3 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql @@ -0,0 +1,25 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + DAYOFWEEK(sbtxdatetime) + 6 + ) % 7 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql new file mode 100644 index 000000000..8febb6c91 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql @@ -0,0 +1,27 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + ( + DAYOFWEEK(sbtxdatetime) + 1 + ) % 7 + ) + 1 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql new file mode 100644 index 000000000..6ba3a95a6 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql @@ -0,0 +1,25 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + DAYOFWEEK(sbtxdatetime) + 1 + ) % 7 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql new file mode 100644 index 000000000..70250b42c --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql @@ -0,0 +1,23 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + DAYOFWEEK(sbtxdatetime) + 1 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql new file mode 100644 index 000000000..2b11b3a3e --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql @@ -0,0 +1,23 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + DAYOFWEEK(sbtxdatetime) AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql new file mode 100644 index 000000000..7f0308a29 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql @@ -0,0 +1,27 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + ( + DAYOFWEEK(sbtxdatetime) + 3 + ) % 7 + ) + 1 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql new file mode 100644 index 000000000..a04bcdf72 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql @@ -0,0 +1,25 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + DAYOFWEEK(sbtxdatetime) + 3 + ) % 7 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql new file mode 100644 index 000000000..5b37a199f --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql @@ -0,0 +1,27 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + ( + DAYOFWEEK(sbtxdatetime) + 5 + ) % 7 + ) + 1 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql new file mode 100644 index 000000000..d4d665be2 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql @@ -0,0 +1,25 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + DAYOFWEEK(sbtxdatetime) + 5 + ) % 7 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql new file mode 100644 index 000000000..ec373bccb --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql @@ -0,0 +1,27 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + ( + DAYOFWEEK(sbtxdatetime) + 4 + ) % 7 + ) + 1 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql new file mode 100644 index 000000000..ce4ee8792 --- /dev/null +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql @@ -0,0 +1,25 @@ +SELECT + sbtxdatetime AS date_time, + DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, + ( + DAYOFWEEK(sbtxdatetime) + 4 + ) % 7 AS dayofweek +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql new file mode 100644 index 000000000..61086f58c --- /dev/null +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql @@ -0,0 +1,36 @@ +WITH _S7 AS ( + SELECT + COUNT(*) AS AGG_0, + INCIDENTS.in_device_id AS DEVICE_ID + FROM MAIN.INCIDENTS AS INCIDENTS + JOIN MAIN.ERRORS AS ERRORS + ON ERRORS.er_id = INCIDENTS.in_error_id AND ERRORS.er_name = 'Battery Failure' + GROUP BY + INCIDENTS.in_device_id +), _T1 AS ( + SELECT + SUM(COALESCE(_S7.AGG_0, 0)) AS AGG_0, + COUNT(*) AS AGG_1, + COUNTRIES.co_name AS COUNTRY_NAME, + PRODUCTS.pr_name AS PRODUCT_NAME + FROM MAIN.COUNTRIES AS COUNTRIES + JOIN MAIN.DEVICES AS DEVICES + ON COUNTRIES.co_id = DEVICES.de_production_country_id + JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id + LEFT JOIN _S7 AS _S7 + ON DEVICES.de_id = _S7.DEVICE_ID + GROUP BY + COUNTRIES.co_name, + PRODUCTS.pr_name +) +SELECT + COUNTRY_NAME AS country_name, + PRODUCT_NAME AS product_name, + ROUND(COALESCE(AGG_0, 0) / AGG_1, 2) AS ir +FROM _T1 +ORDER BY + IR DESC NULLS LAST, + PRODUCT_NAME NULLS FIRST, + COUNTRY_NAME NULLS FIRST +LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql new file mode 100644 index 000000000..185473984 --- /dev/null +++ b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql @@ -0,0 +1,12 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS N_OTHER_COUNTRIES + FROM MAIN.COUNTRIES +) +SELECT + COUNTRIES.co_name AS name, + _S1.N_OTHER_COUNTRIES AS n_other_countries +FROM MAIN.COUNTRIES AS COUNTRIES +CROSS JOIN _S1 AS _S1 +ORDER BY + NAME NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql new file mode 100644 index 000000000..05d4501ec --- /dev/null +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql @@ -0,0 +1,37 @@ +WITH _S7 AS ( + SELECT + COUNT(*) AS AGG_2, + in_device_id AS DEVICE_ID + FROM MAIN.INCIDENTS + GROUP BY + in_device_id +), _S9 AS ( + SELECT + COUNT(*) AS AGG_1, + SUM(_S7.AGG_2) AS AGG_4, + COUNTRIES.co_id AS _ID, + COUNTRIES_2.co_id AS _ID_3 + FROM MAIN.COUNTRIES AS COUNTRIES + CROSS JOIN MAIN.COUNTRIES AS COUNTRIES_2 + JOIN MAIN.DEVICES AS DEVICES + ON COUNTRIES.co_id = DEVICES.de_production_country_id + AND COUNTRIES_2.co_id = DEVICES.de_purchase_country_id + LEFT JOIN _S7 AS _S7 + ON DEVICES.de_id = _S7.DEVICE_ID + GROUP BY + COUNTRIES.co_id, + COUNTRIES_2.co_id +) +SELECT + COUNTRIES.co_name AS factory_country, + COUNTRIES_2.co_name AS purchase_country, + ROUND(( + 1.0 * COALESCE(_S9.AGG_4, 0) + ) / COALESCE(_S9.AGG_1, 0), 2) AS ir +FROM MAIN.COUNTRIES AS COUNTRIES +CROSS JOIN MAIN.COUNTRIES AS COUNTRIES_2 +LEFT JOIN _S9 AS _S9 + ON COUNTRIES.co_id = _S9._ID AND COUNTRIES_2.co_id = _S9._ID_3 +ORDER BY + IR DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql new file mode 100644 index 000000000..fdd307296 --- /dev/null +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql @@ -0,0 +1,72 @@ +WITH _T3 AS ( + SELECT + in_device_id AS DEVICE_ID + FROM MAIN.INCIDENTS +), _S1 AS ( + SELECT + COUNT(*) AS AGG_9, + DEVICE_ID + FROM _T3 + GROUP BY + DEVICE_ID +), _S3 AS ( + SELECT + COUNT(*) AS AGG_1, + SUM(_S1.AGG_9) AS AGG_11, + DEVICES.de_production_country_id AS FACTORY_COUNTRY_ID + FROM MAIN.DEVICES AS DEVICES + LEFT JOIN _S1 AS _S1 + ON DEVICES.de_id = _S1.DEVICE_ID + GROUP BY + DEVICES.de_production_country_id +), _S5 AS ( + SELECT + COUNT(*) AS AGG_12, + DEVICE_ID + FROM _T3 + GROUP BY + DEVICE_ID +), _S7 AS ( + SELECT + SUM(_S5.AGG_12) AS AGG_14, + COUNT(*) AS AGG_3, + DEVICES.de_purchase_country_id AS STORE_COUNTRY_ID + FROM MAIN.DEVICES AS DEVICES + LEFT JOIN _S5 AS _S5 + ON DEVICES.de_id = _S5.DEVICE_ID + GROUP BY + DEVICES.de_purchase_country_id +), _S11 AS ( + SELECT + COUNT(*) AS AGG_6, + DEVICE_ID + FROM _T3 + GROUP BY + DEVICE_ID +), _S13 AS ( + SELECT + COUNT(*) AS AGG_5, + SUM(_S11.AGG_6) AS AGG_8, + USERS.us_country_id AS COUNTRY_ID + FROM MAIN.USERS AS USERS + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_owner_id = USERS.us_id + LEFT JOIN _S11 AS _S11 + ON DEVICES.de_id = _S11.DEVICE_ID + GROUP BY + USERS.us_country_id +) +SELECT + COUNTRIES.co_name AS country_name, + ROUND(COALESCE(_S3.AGG_11, 0) / _S3.AGG_1, 2) AS made_ir, + ROUND(COALESCE(_S7.AGG_14, 0) / _S7.AGG_3, 2) AS sold_ir, + ROUND(COALESCE(_S13.AGG_8, 0) / COALESCE(_S13.AGG_5, 0), 2) AS user_ir +FROM MAIN.COUNTRIES AS COUNTRIES +JOIN _S3 AS _S3 + ON COUNTRIES.co_id = _S3.FACTORY_COUNTRY_ID +JOIN _S7 AS _S7 + ON COUNTRIES.co_id = _S7.STORE_COUNTRY_ID +LEFT JOIN _S13 AS _S13 + ON COUNTRIES.co_id = _S13.COUNTRY_ID +ORDER BY + COUNTRY_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql new file mode 100644 index 000000000..80081ff8f --- /dev/null +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql @@ -0,0 +1,27 @@ +WITH _S5 AS ( + SELECT + COUNT(*) AS AGG_0, + INCIDENTS.in_error_id AS ERROR_ID + FROM MAIN.INCIDENTS AS INCIDENTS + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' + GROUP BY + INCIDENTS.in_error_id +), _T0 AS ( + SELECT + ERRORS.er_name AS ERROR, + ROUND(( + 100.0 * COALESCE(_S5.AGG_0, 0) + ) / SUM(COALESCE(_S5.AGG_0, 0)) OVER (), 2) AS PCT + FROM MAIN.ERRORS AS ERRORS + LEFT JOIN _S5 AS _S5 + ON ERRORS.er_id = _S5.ERROR_ID +) +SELECT + ERROR AS error, + PCT AS pct +FROM _T0 +ORDER BY + PCT DESC NULLS LAST diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql new file mode 100644 index 000000000..8a681ffc7 --- /dev/null +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql @@ -0,0 +1,28 @@ +WITH _S3 AS ( + SELECT + COUNT(*) AS AGG_0, + in_device_id AS DEVICE_ID + FROM MAIN.INCIDENTS + GROUP BY + in_device_id +), _S5 AS ( + SELECT + SUM(COALESCE(_S3.AGG_0, 0)) AS AGG_0, + COUNT(*) AS AGG_1, + DEVICES.de_production_country_id AS FACTORY_COUNTRY_ID + FROM MAIN.DEVICES AS DEVICES + JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' + LEFT JOIN _S3 AS _S3 + ON DEVICES.de_id = _S3.DEVICE_ID + GROUP BY + DEVICES.de_production_country_id +) +SELECT + COUNTRIES.co_name AS country, + ROUND(COALESCE(_S5.AGG_0, 0) / COALESCE(_S5.AGG_1, 0), 2) AS ir +FROM MAIN.COUNTRIES AS COUNTRIES +LEFT JOIN _S5 AS _S5 + ON COUNTRIES.co_id = _S5.FACTORY_COUNTRY_ID +ORDER BY + COUNTRY NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql new file mode 100644 index 000000000..b5679ae51 --- /dev/null +++ b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql @@ -0,0 +1,13 @@ +WITH _S0 AS ( + SELECT + COUNT(*) AS AGG_0 + FROM MAIN.INCIDENTS +), _S1 AS ( + SELECT + COUNT(*) AS AGG_1 + FROM MAIN.DEVICES +) +SELECT + ROUND(_S0.AGG_0 / _S1.AGG_1, 2) AS ir +FROM _S0 AS _S0 +CROSS JOIN _S1 AS _S1 diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql new file mode 100644 index 000000000..68471d486 --- /dev/null +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -0,0 +1,27 @@ +WITH _T3 AS ( + SELECT + ca_dt AS CALENDAR_DAY + FROM MAIN.CALENDAR +), _T0 AS ( + SELECT + COUNT(*) AS N_PURCHASES, + ANY_VALUE(_T3.CALENDAR_DAY) AS START_OF_PERIOD + FROM _T3 AS _T3 + CROSS JOIN _T3 AS _S1 + JOIN MAIN.DEVICES AS DEVICES + ON _S1.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + WHERE + DATE_PART(YEAR, _T3.CALENDAR_DAY) = 2024 + AND _S1.CALENDAR_DAY < DATEADD(DAY, 5, CAST(_T3.CALENDAR_DAY AS TIMESTAMP)) + AND _S1.CALENDAR_DAY >= _T3.CALENDAR_DAY + GROUP BY + _T3.CALENDAR_DAY +) +SELECT + START_OF_PERIOD AS start_of_period, + N_PURCHASES AS n_purchases +FROM _T0 +ORDER BY + N_PURCHASES DESC NULLS LAST, + START_OF_PERIOD NULLS FIRST +LIMIT 1 diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql new file mode 100644 index 000000000..833753d2b --- /dev/null +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -0,0 +1,41 @@ +WITH _S0 AS ( + SELECT + COUNT(*) AS AGG_1, + de_product_id AS PRODUCT_ID + FROM MAIN.DEVICES + GROUP BY + de_product_id +), _T4 AS ( + SELECT + pr_id AS _ID, + pr_release AS RELEASE_DATE + FROM MAIN.PRODUCTS +), _S6 AS ( + SELECT + SUM(_S0.AGG_1) AS AGG_1, + DATE_PART(YEAR, _T4.RELEASE_DATE) AS RELEASE_YEAR + FROM _S0 AS _S0 + JOIN _T4 AS _T4 + ON _S0.PRODUCT_ID = _T4._ID + GROUP BY + DATE_PART(YEAR, _T4.RELEASE_DATE) +), _S7 AS ( + SELECT + COUNT(*) AS AGG_0, + DATE_PART(YEAR, _T6.RELEASE_DATE) AS RELEASE_YEAR + FROM MAIN.DEVICES AS DEVICES + JOIN _T4 AS _T6 + ON DEVICES.de_product_id = _T6._ID + JOIN MAIN.INCIDENTS AS INCIDENTS + ON DEVICES.de_id = INCIDENTS.in_device_id + GROUP BY + DATE_PART(YEAR, _T6.RELEASE_DATE) +) +SELECT + _S6.RELEASE_YEAR AS year, + ROUND(COALESCE(_S7.AGG_0, 0) / _S6.AGG_1, 2) AS ir +FROM _S6 AS _S6 +LEFT JOIN _S7 AS _S7 + ON _S6.RELEASE_YEAR = _S7.RELEASE_YEAR +ORDER BY + YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql new file mode 100644 index 000000000..0ba00be7e --- /dev/null +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql @@ -0,0 +1,26 @@ +WITH _S3 AS ( + SELECT + COUNT(*) AS AGG_0, + in_device_id AS DEVICE_ID + FROM MAIN.INCIDENTS + GROUP BY + in_device_id +), _T0 AS ( + SELECT + SUM(COALESCE(_S3.AGG_0, 0)) AS AGG_0, + COUNT(*) AS AGG_1, + PRODUCTS.pr_brand AS BRAND + FROM MAIN.DEVICES AS DEVICES + JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id + LEFT JOIN _S3 AS _S3 + ON DEVICES.de_id = _S3.DEVICE_ID + GROUP BY + PRODUCTS.pr_brand +) +SELECT + BRAND AS brand, + ROUND(COALESCE(AGG_0, 0) / AGG_1, 2) AS ir +FROM _T0 +ORDER BY + BRAND NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql new file mode 100644 index 000000000..4e643a210 --- /dev/null +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -0,0 +1,72 @@ +WITH _T4 AS ( + SELECT + ca_dt AS CALENDAR_DAY + FROM MAIN.CALENDAR +), _T8 AS ( + SELECT + co_id AS _ID, + co_name AS NAME + FROM MAIN.COUNTRIES +), _S7 AS ( + SELECT + COUNT(*) AS AGG_2, + _T7.CALENDAR_DAY + FROM _T4 AS _T7 + JOIN MAIN.CALENDAR AS CALENDAR + ON CALENDAR.ca_dt >= DATEADD(MONTH, -6, CAST(_T7.CALENDAR_DAY AS TIMESTAMP)) + JOIN MAIN.DEVICES AS DEVICES + ON CALENDAR.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + JOIN _T8 AS _T8 + ON DEVICES.de_production_country_id = _T8._ID AND _T8.NAME = 'CN' + WHERE + DATE_PART(YEAR, _T7.CALENDAR_DAY) IN (2020, 2021) + GROUP BY + _T7.CALENDAR_DAY +), _S15 AS ( + SELECT + COUNT(*) AS AGG_5, + _T11.CALENDAR_DAY + FROM _T4 AS _T11 + JOIN MAIN.INCIDENTS AS INCIDENTS + ON _T11.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN _T8 AS _T12 + ON DEVICES.de_production_country_id = _T12._ID AND _T12.NAME = 'CN' + WHERE + DATE_PART(YEAR, _T11.CALENDAR_DAY) IN (2020, 2021) + GROUP BY + _T11.CALENDAR_DAY +), _T1 AS ( + SELECT + SUM(_S7.AGG_2) AS AGG_4, + SUM(_S15.AGG_5) AS AGG_7, + DATE_PART(MONTH, _T4.CALENDAR_DAY) AS MONTH, + DATE_PART(YEAR, _T4.CALENDAR_DAY) AS YEAR + FROM _T4 AS _T4 + LEFT JOIN _S7 AS _S7 + ON _S7.CALENDAR_DAY = _T4.CALENDAR_DAY + LEFT JOIN _S15 AS _S15 + ON _S15.CALENDAR_DAY = _T4.CALENDAR_DAY + WHERE + DATE_PART(YEAR, _T4.CALENDAR_DAY) IN (2020, 2021) + GROUP BY + DATE_PART(MONTH, _T4.CALENDAR_DAY), + DATE_PART(YEAR, _T4.CALENDAR_DAY) +) +SELECT + CONCAT_WS( + '-', + YEAR, + CASE + WHEN LENGTH(MONTH) >= 2 + THEN SUBSTRING(MONTH, 1, 2) + ELSE SUBSTRING(CONCAT('00', MONTH), -2) + END + ) AS month, + ROUND(( + 1000000.0 * COALESCE(AGG_7, 0) + ) / COALESCE(AGG_4, 0), 2) AS ir +FROM _T1 +ORDER BY + MONTH NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql new file mode 100644 index 000000000..c8026641d --- /dev/null +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql @@ -0,0 +1,31 @@ +WITH _S3 AS ( + SELECT + COUNT(*) AS AGG_0, + in_device_id AS DEVICE_ID + FROM MAIN.INCIDENTS + GROUP BY + in_device_id +), _T0 AS ( + SELECT + SUM(COALESCE(_S3.AGG_0, 0)) AS AGG_0, + COUNT(*) AS AGG_1, + DEVICES.de_product_id AS PRODUCT_ID + FROM MAIN.DEVICES AS DEVICES + JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id + LEFT JOIN _S3 AS _S3 + ON DEVICES.de_id = _S3.DEVICE_ID + GROUP BY + DEVICES.de_product_id +) +SELECT + PRODUCTS.pr_name AS product, + PRODUCTS.pr_brand AS product_brand, + PRODUCTS.pr_type AS product_type, + ROUND(COALESCE(_T0.AGG_0, 0) / _T0.AGG_1, 2) AS ir +FROM MAIN.PRODUCTS AS PRODUCTS +JOIN _T0 AS _T0 + ON PRODUCTS.pr_id = _T0.PRODUCT_ID +ORDER BY + IR DESC NULLS LAST +LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql new file mode 100644 index 000000000..e7f06aeba --- /dev/null +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -0,0 +1,91 @@ +WITH _S14 AS ( + SELECT + ANY_VALUE(pr_release) AS RELEASE_DATE + FROM MAIN.PRODUCTS + WHERE + pr_name = 'GoldCopper-Star' +), _T6 AS ( + SELECT + ca_dt AS CALENDAR_DAY + FROM MAIN.CALENDAR +), _T8 AS ( + SELECT + pr_id AS _ID, + pr_name AS NAME + FROM MAIN.PRODUCTS +), _S7 AS ( + SELECT + COUNT(*) AS AGG_3, + _S0.CALENDAR_DAY + FROM _T6 AS _S0 + JOIN MAIN.INCIDENTS AS INCIDENTS + ON _S0.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN _T8 AS _T8 + ON DEVICES.de_product_id = _T8._ID AND _T8.NAME = 'GoldCopper-Star' + GROUP BY + _S0.CALENDAR_DAY +), _S13 AS ( + SELECT + COUNT(*) AS AGG_6, + _S8.CALENDAR_DAY + FROM _T6 AS _S8 + JOIN MAIN.DEVICES AS DEVICES + ON _S8.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + JOIN _T8 AS _T10 + ON DEVICES.de_product_id = _T10._ID AND _T10.NAME = 'GoldCopper-Star' + GROUP BY + _S8.CALENDAR_DAY +), _S15 AS ( + SELECT + SUM(_S7.AGG_3) AS AGG_5, + SUM(_S13.AGG_6) AS AGG_8, + DATE_PART(YEAR, _T6.CALENDAR_DAY) AS YEAR + FROM _T6 AS _T6 + LEFT JOIN _S7 AS _S7 + ON _S7.CALENDAR_DAY = _T6.CALENDAR_DAY + LEFT JOIN _S13 AS _S13 + ON _S13.CALENDAR_DAY = _T6.CALENDAR_DAY + GROUP BY + DATE_PART(YEAR, _T6.CALENDAR_DAY) +), _T0 AS ( + SELECT + COALESCE(_S15.AGG_8, 0) AS BOUGHT, + ROUND( + SUM(COALESCE(_S15.AGG_5, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.AGG_8, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS CUM_IR, + COALESCE(_S15.AGG_5, 0) AS INCIDENTS, + ROUND( + ( + 100.0 * ( + COALESCE(_S15.AGG_8, 0) - LAG(COALESCE(_S15.AGG_8, 0), 1) OVER (ORDER BY _S15.YEAR) + ) + ) / LAG(COALESCE(_S15.AGG_8, 0), 1) OVER (ORDER BY _S15.YEAR), + 2 + ) AS PCT_BOUGHT_CHANGE, + ROUND( + ( + 100.0 * ( + COALESCE(_S15.AGG_5, 0) - LAG(COALESCE(_S15.AGG_5, 0), 1) OVER (ORDER BY _S15.YEAR) + ) + ) / LAG(COALESCE(_S15.AGG_5, 0), 1) OVER (ORDER BY _S15.YEAR), + 2 + ) AS PCT_INCIDENT_CHANGE, + _S15.YEAR - DATE_PART(YEAR, _S14.RELEASE_DATE) AS YEARS_SINCE_RELEASE + FROM _S14 AS _S14 + CROSS JOIN _S15 AS _S15 + WHERE + _S15.YEAR >= DATE_PART(YEAR, _S14.RELEASE_DATE) +) +SELECT + YEARS_SINCE_RELEASE AS years_since_release, + CUM_IR AS cum_ir, + PCT_BOUGHT_CHANGE AS pct_bought_change, + PCT_INCIDENT_CHANGE AS pct_incident_change, + BOUGHT AS bought, + INCIDENTS AS incidents +FROM _T0 +ORDER BY + YEARS_SINCE_RELEASE NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql new file mode 100644 index 000000000..71f35958f --- /dev/null +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -0,0 +1,73 @@ +WITH _T5 AS ( + SELECT + ca_dt AS CALENDAR_DAY + FROM MAIN.CALENDAR +), _S3 AS ( + SELECT + COUNT(*) AS AGG_2, + _S0.CALENDAR_DAY + FROM _T5 AS _S0 + JOIN MAIN.DEVICES AS DEVICES + ON _S0.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + GROUP BY + _S0.CALENDAR_DAY +), _S7 AS ( + SELECT + COUNT(*) AS AGG_5, + _S4.CALENDAR_DAY + FROM _T5 AS _S4 + JOIN MAIN.INCIDENTS AS INCIDENTS + ON _S4.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + GROUP BY + _S4.CALENDAR_DAY +), _T3 AS ( + SELECT + SUM(_S3.AGG_2) AS AGG_4, + SUM(_S7.AGG_5) AS AGG_7, + DATE_PART(YEAR, _T5.CALENDAR_DAY) AS YEAR + FROM _T5 AS _T5 + LEFT JOIN _S3 AS _S3 + ON _S3.CALENDAR_DAY = _T5.CALENDAR_DAY + LEFT JOIN _S7 AS _S7 + ON _S7.CALENDAR_DAY = _T5.CALENDAR_DAY + GROUP BY + DATE_PART(YEAR, _T5.CALENDAR_DAY) +), _T0 AS ( + SELECT + COALESCE(AGG_4, 0) AS BOUGHT, + ROUND( + SUM(COALESCE(AGG_7, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(AGG_4, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS CUM_IR, + COALESCE(AGG_7, 0) AS INCIDENTS, + ROUND( + ( + 100.0 * ( + COALESCE(AGG_4, 0) - LAG(COALESCE(AGG_4, 0), 1) OVER (ORDER BY YEAR) + ) + ) / LAG(COALESCE(AGG_4, 0), 1) OVER (ORDER BY YEAR), + 2 + ) AS PCT_BOUGHT_CHANGE, + ROUND( + ( + 100.0 * ( + COALESCE(AGG_7, 0) - LAG(COALESCE(AGG_7, 0), 1) OVER (ORDER BY YEAR) + ) + ) / LAG(COALESCE(AGG_7, 0), 1) OVER (ORDER BY YEAR), + 2 + ) AS PCT_INCIDENT_CHANGE, + YEAR AS YR + FROM _T3 + WHERE + NOT AGG_4 IS NULL AND AGG_4 > 0 +) +SELECT + YR AS yr, + CUM_IR AS cum_ir, + PCT_BOUGHT_CHANGE AS pct_bought_change, + PCT_INCIDENT_CHANGE AS pct_incident_change, + BOUGHT AS bought, + INCIDENTS AS incidents +FROM _T0 +ORDER BY + YR NULLS FIRST diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql new file mode 100644 index 000000000..4516b3113 --- /dev/null +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -0,0 +1,24 @@ +WITH _T2 AS ( + SELECT + ( + 100.0 * SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS PCT_OF_DAY, + sbtxdatetime AS DATE_TIME, + DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) AS TXN_DAY + FROM MAIN.SBTRANSACTION + WHERE + DATE_PART(YEAR, sbtxdatetime) = 2023 +), _T0 AS ( + SELECT + DATE_TIME + FROM _T2 + WHERE + PCT_OF_DAY >= 50.0 + QUALIFY + ROW_NUMBER() OVER (PARTITION BY TXN_DAY ORDER BY PCT_OF_DAY) = 1 +) +SELECT + DATE_TIME AS date_time +FROM _T0 +ORDER BY + DATE_TIME NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql new file mode 100644 index 000000000..5544af8d2 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -0,0 +1,33 @@ +WITH _S3 AS ( + SELECT + SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )) AS AGG_0, + ORDERS.o_custkey AS CUSTOMER_KEY + FROM TPCH.ORDERS AS ORDERS + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' + WHERE + DATE_PART(QUARTER, ORDERS.o_orderdate) = 4 + AND DATE_PART(YEAR, ORDERS.o_orderdate) = 1993 + GROUP BY + ORDERS.o_custkey +) +SELECT + CUSTOMER.c_custkey AS C_CUSTKEY, + CUSTOMER.c_name AS C_NAME, + COALESCE(_S3.AGG_0, 0) AS REVENUE, + CUSTOMER.c_acctbal AS C_ACCTBAL, + NATION.n_name AS N_NAME, + CUSTOMER.c_address AS C_ADDRESS, + CUSTOMER.c_phone AS C_PHONE, + CUSTOMER.c_comment AS C_COMMENT +FROM TPCH.CUSTOMER AS CUSTOMER +LEFT JOIN _S3 AS _S3 + ON CUSTOMER.c_custkey = _S3.CUSTOMER_KEY +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey +ORDER BY + REVENUE DESC NULLS LAST, + C_CUSTKEY NULLS FIRST +LIMIT 20 diff --git a/tests/test_sql_refsols/tpch_q11_snowflake.sql b/tests/test_sql_refsols/tpch_q11_snowflake.sql new file mode 100644 index 000000000..f444eccda --- /dev/null +++ b/tests/test_sql_refsols/tpch_q11_snowflake.sql @@ -0,0 +1,42 @@ +WITH _S0 AS ( + SELECT + s_suppkey AS KEY, + s_nationkey AS NATION_KEY + FROM TPCH.SUPPLIER +), _T4 AS ( + SELECT + n_nationkey AS KEY, + n_name AS NAME + FROM TPCH.NATION +), _T1 AS ( + SELECT + SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS AGG_0 + FROM TPCH.PARTSUPP AS PARTSUPP + JOIN _S0 AS _S0 + ON PARTSUPP.ps_suppkey = _S0.KEY + JOIN _T4 AS _T4 + ON _S0.NATION_KEY = _T4.KEY AND _T4.NAME = 'GERMANY' +), _T5 AS ( + SELECT + SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS AGG_1, + PARTSUPP.ps_partkey AS PART_KEY + FROM TPCH.PARTSUPP AS PARTSUPP + JOIN _S0 AS _S4 + ON PARTSUPP.ps_suppkey = _S4.KEY + JOIN _T4 AS _T8 + ON _S4.NATION_KEY = _T8.KEY AND _T8.NAME = 'GERMANY' + GROUP BY + PARTSUPP.ps_partkey +) +SELECT + _T5.PART_KEY AS PS_PARTKEY, + COALESCE(_T5.AGG_1, 0) AS VALUE +FROM _T1 AS _T1 +CROSS JOIN _T5 AS _T5 +WHERE + ( + COALESCE(_T1.AGG_0, 0) * 0.0001 + ) < COALESCE(_T5.AGG_1, 0) +ORDER BY + VALUE DESC NULLS LAST +LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql new file mode 100644 index 000000000..182452201 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -0,0 +1,25 @@ +WITH _T1 AS ( + SELECT + COUNT_IF(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')) AS AGG_0, + COUNT_IF(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')) AS AGG_1, + LINEITEM.l_shipmode AS SHIP_MODE + FROM TPCH.LINEITEM AS LINEITEM + JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + WHERE + DATE_PART(YEAR, LINEITEM.l_receiptdate) = 1994 + AND LINEITEM.l_commitdate < LINEITEM.l_receiptdate + AND LINEITEM.l_commitdate > LINEITEM.l_shipdate + AND ( + LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' + ) + GROUP BY + LINEITEM.l_shipmode +) +SELECT + SHIP_MODE AS L_SHIPMODE, + COALESCE(AGG_0, 0) AS HIGH_LINE_COUNT, + COALESCE(AGG_1, 0) AS LOW_LINE_COUNT +FROM _T1 +ORDER BY + L_SHIPMODE NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q13_snowflake.sql b/tests/test_sql_refsols/tpch_q13_snowflake.sql new file mode 100644 index 000000000..84c8ad563 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q13_snowflake.sql @@ -0,0 +1,27 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS AGG_0, + o_custkey AS CUSTOMER_KEY + FROM TPCH.ORDERS + WHERE + NOT o_comment LIKE '%special%requests%' + GROUP BY + o_custkey +), _T0 AS ( + SELECT + COUNT(*) AS CUSTDIST, + COALESCE(_S1.AGG_0, 0) AS C_COUNT + FROM TPCH.CUSTOMER AS CUSTOMER + LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.CUSTOMER_KEY + GROUP BY + COALESCE(_S1.AGG_0, 0) +) +SELECT + C_COUNT, + CUSTDIST +FROM _T0 +ORDER BY + CUSTDIST DESC NULLS LAST, + C_COUNT DESC NULLS LAST +LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q14_snowflake.sql b/tests/test_sql_refsols/tpch_q14_snowflake.sql new file mode 100644 index 000000000..cb4c3f5e7 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q14_snowflake.sql @@ -0,0 +1,26 @@ +WITH _T0 AS ( + SELECT + SUM( + IFF( + PART.p_type LIKE 'PROMO%', + LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + ), + 0 + ) + ) AS AGG_0, + SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )) AS AGG_1 + FROM TPCH.LINEITEM AS LINEITEM + JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey + WHERE + DATE_PART(MONTH, LINEITEM.l_shipdate) = 9 + AND DATE_PART(YEAR, LINEITEM.l_shipdate) = 1995 +) +SELECT + ( + 100.0 * COALESCE(AGG_0, 0) + ) / COALESCE(AGG_1, 0) AS PROMO_REVENUE +FROM _T0 diff --git a/tests/test_sql_refsols/tpch_q15_snowflake.sql b/tests/test_sql_refsols/tpch_q15_snowflake.sql new file mode 100644 index 000000000..4b211da05 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q15_snowflake.sql @@ -0,0 +1,51 @@ +WITH _T4 AS ( + SELECT + l_discount AS DISCOUNT, + l_extendedprice AS EXTENDED_PRICE, + l_shipdate AS SHIP_DATE, + l_suppkey AS SUPPLIER_KEY + FROM TPCH.LINEITEM +), _T1 AS ( + SELECT + SUM(EXTENDED_PRICE * ( + 1 - DISCOUNT + )) AS AGG_0, + SUPPLIER_KEY + FROM _T4 + WHERE + SHIP_DATE < CAST('1996-04-01' AS DATE) + AND SHIP_DATE >= CAST('1996-01-01' AS DATE) + GROUP BY + SUPPLIER_KEY +), _S2 AS ( + SELECT + MAX(COALESCE(_T1.AGG_0, 0)) AS MAX_REVENUE + FROM TPCH.SUPPLIER AS SUPPLIER + JOIN _T1 AS _T1 + ON SUPPLIER.s_suppkey = _T1.SUPPLIER_KEY +), _T5 AS ( + SELECT + SUM(EXTENDED_PRICE * ( + 1 - DISCOUNT + )) AS AGG_1, + SUPPLIER_KEY + FROM _T4 + WHERE + SHIP_DATE < CAST('1996-04-01' AS DATE) + AND SHIP_DATE >= CAST('1996-01-01' AS DATE) + GROUP BY + SUPPLIER_KEY +) +SELECT + SUPPLIER.s_suppkey AS S_SUPPKEY, + SUPPLIER.s_name AS S_NAME, + SUPPLIER.s_address AS S_ADDRESS, + SUPPLIER.s_phone AS S_PHONE, + COALESCE(_T5.AGG_1, 0) AS TOTAL_REVENUE +FROM _S2 AS _S2 +CROSS JOIN TPCH.SUPPLIER AS SUPPLIER +JOIN _T5 AS _T5 + ON SUPPLIER.s_suppkey = _T5.SUPPLIER_KEY + AND _S2.MAX_REVENUE = COALESCE(_T5.AGG_1, 0) +ORDER BY + S_SUPPKEY NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q16_snowflake.sql b/tests/test_sql_refsols/tpch_q16_snowflake.sql new file mode 100644 index 000000000..32970d456 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q16_snowflake.sql @@ -0,0 +1,32 @@ +WITH _T0 AS ( + SELECT + COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT, + PART.p_brand AS P_BRAND, + PART.p_size AS P_SIZE, + PART.p_type AS P_TYPE + FROM TPCH.PARTSUPP AS PARTSUPP + JOIN TPCH.SUPPLIER AS SUPPLIER + ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' + AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey + JOIN TPCH.PART AS PART + ON NOT PART.p_type LIKE 'MEDIUM POLISHED%%' + AND PART.p_brand <> 'BRAND#45' + AND PART.p_partkey = PARTSUPP.ps_partkey + AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) + GROUP BY + PART.p_brand, + PART.p_size, + PART.p_type +) +SELECT + P_BRAND, + P_TYPE, + P_SIZE, + SUPPLIER_COUNT +FROM _T0 +ORDER BY + SUPPLIER_COUNT DESC NULLS LAST, + P_BRAND NULLS FIRST, + P_TYPE NULLS FIRST, + P_SIZE NULLS FIRST +LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q17_snowflake.sql b/tests/test_sql_refsols/tpch_q17_snowflake.sql new file mode 100644 index 000000000..c28889ede --- /dev/null +++ b/tests/test_sql_refsols/tpch_q17_snowflake.sql @@ -0,0 +1,20 @@ +WITH _T2 AS ( + SELECT + LINEITEM.l_extendedprice AS EXTENDED_PRICE + FROM TPCH.PART AS PART + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_partkey = PART.p_partkey + WHERE + PART.p_brand = 'Brand#23' AND PART.p_container = 'MED BOX' + QUALIFY + LINEITEM.l_quantity < ( + 0.2 * AVG(LINEITEM.l_quantity) OVER (PARTITION BY LINEITEM.l_partkey) + ) +), _T0 AS ( + SELECT + SUM(EXTENDED_PRICE) AS AGG_0 + FROM _T2 +) +SELECT + COALESCE(AGG_0, 0) / 7.0 AS AVG_YEARLY +FROM _T0 diff --git a/tests/test_sql_refsols/tpch_q18_snowflake.sql b/tests/test_sql_refsols/tpch_q18_snowflake.sql new file mode 100644 index 000000000..a7434cec3 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q18_snowflake.sql @@ -0,0 +1,26 @@ +WITH _T0 AS ( + SELECT + SUM(l_quantity) AS AGG_0, + l_orderkey AS ORDER_KEY + FROM TPCH.LINEITEM + GROUP BY + l_orderkey +) +SELECT + CUSTOMER.c_name AS C_NAME, + CUSTOMER.c_custkey AS C_CUSTKEY, + ORDERS.o_orderkey AS O_ORDERKEY, + ORDERS.o_orderdate AS O_ORDERDATE, + ORDERS.o_totalprice AS O_TOTALPRICE, + COALESCE(_T0.AGG_0, 0) AS TOTAL_QUANTITY +FROM TPCH.ORDERS AS ORDERS +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey +JOIN _T0 AS _T0 + ON ORDERS.o_orderkey = _T0.ORDER_KEY +WHERE + NOT _T0.AGG_0 IS NULL AND _T0.AGG_0 > 300 +ORDER BY + O_TOTALPRICE DESC NULLS LAST, + O_ORDERDATE NULLS FIRST +LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q19_snowflake.sql b/tests/test_sql_refsols/tpch_q19_snowflake.sql new file mode 100644 index 000000000..31b12d8b3 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q19_snowflake.sql @@ -0,0 +1,41 @@ +WITH _T0 AS ( + SELECT + SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )) AS AGG_0 + FROM TPCH.LINEITEM AS LINEITEM + JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey + WHERE + ( + ( + LINEITEM.l_quantity <= 11 + AND LINEITEM.l_quantity >= 1 + AND PART.p_brand = 'Brand#12' + AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + AND PART.p_size <= 5 + AND PART.p_size >= 1 + ) + OR ( + LINEITEM.l_quantity <= 20 + AND LINEITEM.l_quantity >= 10 + AND PART.p_brand = 'Brand#23' + AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') + AND PART.p_size <= 10 + AND PART.p_size >= 1 + ) + OR ( + LINEITEM.l_quantity <= 30 + AND LINEITEM.l_quantity >= 20 + AND PART.p_brand = 'Brand#34' + AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + AND PART.p_size <= 15 + AND PART.p_size >= 1 + ) + ) + AND LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' + AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') +) +SELECT + COALESCE(AGG_0, 0) AS REVENUE +FROM _T0 diff --git a/tests/test_sql_refsols/tpch_q1_snowflake.sql b/tests/test_sql_refsols/tpch_q1_snowflake.sql new file mode 100644 index 000000000..f533b0afc --- /dev/null +++ b/tests/test_sql_refsols/tpch_q1_snowflake.sql @@ -0,0 +1,40 @@ +WITH _T1 AS ( + SELECT + AVG(l_discount) AS AGG_0, + AVG(l_extendedprice) AS AGG_1, + AVG(l_quantity) AS AGG_2, + COUNT(*) AS AGG_3, + SUM(l_extendedprice) AS AGG_4, + SUM(l_extendedprice * ( + 1 - l_discount + ) * ( + 1 + l_tax + )) AS AGG_5, + SUM(l_extendedprice * ( + 1 - l_discount + )) AS AGG_6, + SUM(l_quantity) AS AGG_7, + l_returnflag AS RETURN_FLAG, + l_linestatus AS STATUS + FROM TPCH.LINEITEM + WHERE + l_shipdate <= CAST('1998-12-01' AS DATE) + GROUP BY + l_returnflag, + l_linestatus +) +SELECT + RETURN_FLAG AS L_RETURNFLAG, + STATUS AS L_LINESTATUS, + COALESCE(AGG_7, 0) AS SUM_QTY, + COALESCE(AGG_4, 0) AS SUM_BASE_PRICE, + COALESCE(AGG_6, 0) AS SUM_DISC_PRICE, + COALESCE(AGG_5, 0) AS SUM_CHARGE, + AGG_2 AS AVG_QTY, + AGG_1 AS AVG_PRICE, + AGG_0 AS AVG_DISC, + AGG_3 AS COUNT_ORDER +FROM _T1 +ORDER BY + L_RETURNFLAG NULLS FIRST, + L_LINESTATUS NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql new file mode 100644 index 000000000..0922efb1b --- /dev/null +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -0,0 +1,36 @@ +WITH _T5 AS ( + SELECT + SUM(l_quantity) AS AGG_0, + l_partkey AS PART_KEY + FROM TPCH.LINEITEM + WHERE + DATE_PART(YEAR, l_shipdate) = 1994 + GROUP BY + l_partkey +), _T1 AS ( + SELECT + COUNT(*) AS AGG_0, + PARTSUPP.ps_suppkey AS SUPPLIER_KEY + FROM TPCH.PARTSUPP AS PARTSUPP + JOIN TPCH.PART AS PART + ON PART.p_name LIKE 'forest%' AND PART.p_partkey = PARTSUPP.ps_partkey + JOIN _T5 AS _T5 + ON PART.p_partkey = _T5.PART_KEY + WHERE + PARTSUPP.ps_availqty > ( + 0.5 * COALESCE(COALESCE(_T5.AGG_0, 0), 0) + ) + GROUP BY + PARTSUPP.ps_suppkey +) +SELECT + SUPPLIER.s_name AS S_NAME, + SUPPLIER.s_address AS S_ADDRESS +FROM TPCH.SUPPLIER AS SUPPLIER +JOIN TPCH.NATION AS NATION + ON NATION.n_name = 'CANADA' AND NATION.n_nationkey = SUPPLIER.s_nationkey +JOIN _T1 AS _T1 + ON SUPPLIER.s_suppkey = _T1.SUPPLIER_KEY AND _T1.AGG_0 > 0 +ORDER BY + S_NAME NULLS FIRST +LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql new file mode 100644 index 000000000..7fbd28cc7 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -0,0 +1,129 @@ +WITH _S0 AS ( + SELECT + SUPPLIER.s_suppkey AS KEY, + SUPPLIER.s_name AS NAME, + SUPPLIER.s_nationkey AS NATION_KEY + FROM TPCH.SUPPLIER AS SUPPLIER +), _T2 AS ( + SELECT + NATION.n_nationkey AS KEY, + NATION.n_name AS NAME + FROM TPCH.NATION AS NATION +), _S1 AS ( + SELECT + _T2.KEY AS KEY + FROM _T2 AS _T2 + WHERE + _T2.NAME = 'SAUDI ARABIA' +), _S8 AS ( + SELECT + _S0.KEY AS KEY, + _S0.NAME AS NAME + FROM _S0 AS _S0 + JOIN _S1 AS _S1 + ON _S0.NATION_KEY = _S1.KEY +), _T4 AS ( + SELECT + LINEITEM.l_commitdate AS COMMIT_DATE, + LINEITEM.l_orderkey AS ORDER_KEY, + LINEITEM.l_receiptdate AS RECEIPT_DATE, + LINEITEM.l_suppkey AS SUPPLIER_KEY + FROM TPCH.LINEITEM AS LINEITEM +), _S4 AS ( + SELECT + _T4.SUPPLIER_KEY AS ORIGINAL_KEY, + _T4.ORDER_KEY AS ORDER_KEY, + _T4.SUPPLIER_KEY AS SUPPLIER_KEY + FROM _T4 AS _T4 + WHERE + _T4.COMMIT_DATE < _T4.RECEIPT_DATE +), _T5 AS ( + SELECT + ORDERS.o_orderkey AS KEY, + ORDERS.o_orderstatus AS ORDER_STATUS + FROM TPCH.ORDERS AS ORDERS +), _S5 AS ( + SELECT + _T5.KEY AS KEY + FROM _T5 AS _T5 + WHERE + _T5.ORDER_STATUS = 'F' +), _S3 AS ( + SELECT + _S5.KEY AS KEY, + _S4.ORIGINAL_KEY AS ORIGINAL_KEY, + _S4.SUPPLIER_KEY AS SUPPLIER_KEY + FROM _S4 AS _S4 + JOIN _S5 AS _S5 + ON _S4.ORDER_KEY = _S5.KEY +), _T6 AS ( + SELECT + LINEITEM.l_orderkey AS ORDER_KEY, + LINEITEM.l_suppkey AS SUPPLIER_KEY + FROM TPCH.LINEITEM AS LINEITEM +), _S6 AS ( + SELECT + _T6.ORDER_KEY AS ORDER_KEY + FROM _T6 AS _T6 + WHERE + _S3.ORIGINAL_KEY <> _T6.SUPPLIER_KEY +), _S2 AS ( + SELECT + _S3.KEY AS KEY, + _S3.ORIGINAL_KEY AS ORIGINAL_KEY, + _S3.SUPPLIER_KEY AS SUPPLIER_KEY + FROM _S3 AS _S3 + WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S6 AS _S6 + WHERE + _S3.KEY = _S6.ORDER_KEY + ) +), _S7 AS ( + SELECT + _T7.ORDER_KEY AS ORDER_KEY + FROM _T4 AS _T7 + WHERE + _S2.ORIGINAL_KEY <> _T7.SUPPLIER_KEY AND _T7.COMMIT_DATE < _T7.RECEIPT_DATE +), _T3 AS ( + SELECT + _S2.SUPPLIER_KEY AS SUPPLIER_KEY + FROM _S2 AS _S2 + WHERE + NOT EXISTS( + SELECT + 1 AS "1" + FROM _S7 AS _S7 + WHERE + _S2.KEY = _S7.ORDER_KEY + ) +), _S9 AS ( + SELECT + COUNT(*) AS AGG_0, + _T3.SUPPLIER_KEY AS SUPPLIER_KEY + FROM _T3 AS _T3 + GROUP BY + _T3.SUPPLIER_KEY +), _T1 AS ( + SELECT + _S9.AGG_0 AS AGG_0, + _S8.NAME AS NAME + FROM _S8 AS _S8 + LEFT JOIN _S9 AS _S9 + ON _S8.KEY = _S9.SUPPLIER_KEY +), _T0 AS ( + SELECT + COALESCE(_T1.AGG_0, 0) AS NUMWAIT, + _T1.NAME AS S_NAME + FROM _T1 AS _T1 +) +SELECT + _T0.S_NAME AS S_NAME, + _T0.NUMWAIT AS NUMWAIT +FROM _T0 AS _T0 +ORDER BY + NUMWAIT DESC NULLS LAST, + S_NAME NULLS FIRST +LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q22_snowflake.sql b/tests/test_sql_refsols/tpch_q22_snowflake.sql new file mode 100644 index 000000000..d0ff4a4fd --- /dev/null +++ b/tests/test_sql_refsols/tpch_q22_snowflake.sql @@ -0,0 +1,39 @@ +WITH _S0 AS ( + SELECT + AVG(c_acctbal) AS GLOBAL_AVG_BALANCE + FROM TPCH.CUSTOMER + WHERE + c_acctbal > 0.0 + AND SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') +), _S3 AS ( + SELECT + COUNT(*) AS AGG_0, + o_custkey AS CUSTOMER_KEY + FROM TPCH.ORDERS + GROUP BY + o_custkey +), _T1 AS ( + SELECT + COUNT(*) AS AGG_1, + SUM(CUSTOMER.c_acctbal) AS AGG_2, + SUBSTRING(CUSTOMER.c_phone, 1, 2) AS CNTRY_CODE + FROM _S0 AS _S0 + CROSS JOIN TPCH.CUSTOMER AS CUSTOMER + LEFT JOIN _S3 AS _S3 + ON CUSTOMER.c_custkey = _S3.CUSTOMER_KEY + WHERE + CUSTOMER.c_acctbal > _S0.GLOBAL_AVG_BALANCE + AND SUBSTRING(CUSTOMER.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') + AND ( + _S3.AGG_0 = 0 OR _S3.AGG_0 IS NULL + ) + GROUP BY + SUBSTRING(CUSTOMER.c_phone, 1, 2) +) +SELECT + CNTRY_CODE, + AGG_1 AS NUM_CUSTS, + COALESCE(AGG_2, 0) AS TOTACCTBAL +FROM _T1 +ORDER BY + CNTRY_CODE NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q2_snowflake.sql b/tests/test_sql_refsols/tpch_q2_snowflake.sql new file mode 100644 index 000000000..860d100ad --- /dev/null +++ b/tests/test_sql_refsols/tpch_q2_snowflake.sql @@ -0,0 +1,40 @@ +WITH _T1 AS ( + SELECT + SUPPLIER.s_comment AS COMMENT_8, + SUPPLIER.s_name AS NAME_10, + PART.p_mfgr AS P_MFGR, + PART.p_partkey AS P_PARTKEY, + SUPPLIER.s_acctbal AS ACCOUNT_BALANCE, + SUPPLIER.s_address AS ADDRESS, + NATION.n_name AS EXPR_8, + SUPPLIER.s_phone AS PHONE + FROM TPCH.PART AS PART + JOIN TPCH.PARTSUPP AS PARTSUPP + ON PART.p_partkey = PARTSUPP.ps_partkey + JOIN TPCH.SUPPLIER AS SUPPLIER + ON PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey + JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey + JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'EUROPE' + WHERE + PART.p_size = 15 AND PART.p_type LIKE '%BRASS' + QUALIFY + RANK() OVER (PARTITION BY PARTSUPP.ps_partkey ORDER BY PARTSUPP.ps_supplycost) = 1 +) +SELECT + ACCOUNT_BALANCE AS S_ACCTBAL, + NAME_10 AS S_NAME, + EXPR_8 AS N_NAME, + P_PARTKEY, + P_MFGR, + ADDRESS AS S_ADDRESS, + PHONE AS S_PHONE, + COMMENT_8 AS S_COMMENT +FROM _T1 +ORDER BY + S_ACCTBAL DESC NULLS LAST, + N_NAME NULLS FIRST, + S_NAME NULLS FIRST, + P_PARTKEY NULLS FIRST +LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q3_snowflake.sql b/tests/test_sql_refsols/tpch_q3_snowflake.sql new file mode 100644 index 000000000..ef10d82d4 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q3_snowflake.sql @@ -0,0 +1,32 @@ +WITH _T1 AS ( + SELECT + SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )) AS AGG_0, + ORDERS.o_orderdate AS ORDER_DATE, + LINEITEM.l_orderkey AS ORDER_KEY, + ORDERS.o_shippriority AS SHIP_PRIORITY + FROM TPCH.ORDERS AS ORDERS + JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey AND CUSTOMER.c_mktsegment = 'BUILDING' + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + AND LINEITEM.l_shipdate > CAST('1995-03-15' AS DATE) + WHERE + ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) + GROUP BY + ORDERS.o_orderdate, + LINEITEM.l_orderkey, + ORDERS.o_shippriority +) +SELECT + ORDER_KEY AS L_ORDERKEY, + COALESCE(AGG_0, 0) AS REVENUE, + ORDER_DATE AS O_ORDERDATE, + SHIP_PRIORITY AS O_SHIPPRIORITY +FROM _T1 +ORDER BY + REVENUE DESC NULLS LAST, + O_ORDERDATE NULLS FIRST, + L_ORDERKEY NULLS FIRST +LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql new file mode 100644 index 000000000..647bb3411 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -0,0 +1,51 @@ +WITH _T2 AS ( + SELECT + ORDERS.o_orderkey AS KEY, + ORDERS.o_orderdate AS ORDER_DATE, + ORDERS.o_orderpriority AS ORDER_PRIORITY + FROM TPCH.ORDERS AS ORDERS +), _S0 AS ( + SELECT + _T2.KEY AS KEY, + _T2.ORDER_PRIORITY AS ORDER_PRIORITY + FROM _T2 AS _T2 + WHERE + DATE_PART(QUARTER, _T2.ORDER_DATE) = 3 AND DATE_PART(YEAR, _T2.ORDER_DATE) = 1993 +), _T3 AS ( + SELECT + LINEITEM.l_commitdate AS COMMIT_DATE, + LINEITEM.l_orderkey AS ORDER_KEY, + LINEITEM.l_receiptdate AS RECEIPT_DATE + FROM TPCH.LINEITEM AS LINEITEM +), _S1 AS ( + SELECT + _T3.ORDER_KEY AS ORDER_KEY + FROM _T3 AS _T3 + WHERE + _T3.COMMIT_DATE < _T3.RECEIPT_DATE +), _T1 AS ( + SELECT + _S0.ORDER_PRIORITY AS ORDER_PRIORITY + FROM _S0 AS _S0 + WHERE + EXISTS( + SELECT + 1 AS "1" + FROM _S1 AS _S1 + WHERE + _S0.KEY = _S1.ORDER_KEY + ) +), _T0 AS ( + SELECT + COUNT(*) AS ORDER_COUNT, + _T1.ORDER_PRIORITY AS O_ORDERPRIORITY + FROM _T1 AS _T1 + GROUP BY + _T1.ORDER_PRIORITY +) +SELECT + _T0.O_ORDERPRIORITY AS O_ORDERPRIORITY, + _T0.ORDER_COUNT AS ORDER_COUNT +FROM _T0 AS _T0 +ORDER BY + O_ORDERPRIORITY NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q5_snowflake.sql b/tests/test_sql_refsols/tpch_q5_snowflake.sql new file mode 100644 index 000000000..54bf97e6e --- /dev/null +++ b/tests/test_sql_refsols/tpch_q5_snowflake.sql @@ -0,0 +1,56 @@ +WITH _S7 AS ( + SELECT + SUM(l_extendedprice * ( + 1 - l_discount + )) AS AGG_0, + l_orderkey AS ORDER_KEY, + l_suppkey AS SUPPLIER_KEY + FROM TPCH.LINEITEM + GROUP BY + l_orderkey, + l_suppkey +), _S10 AS ( + SELECT + SUM(_S7.AGG_0) AS AGG_0, + ANY_VALUE(NATION.n_name) AS AGG_3, + NATION.n_nationkey AS KEY, + NATION.n_name AS NATION_NAME, + _S7.SUPPLIER_KEY + FROM TPCH.NATION AS NATION + JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' + JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey + JOIN TPCH.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) + AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) + JOIN _S7 AS _S7 + ON ORDERS.o_orderkey = _S7.ORDER_KEY + GROUP BY + NATION.n_nationkey, + NATION.n_name, + _S7.SUPPLIER_KEY +), _S11 AS ( + SELECT + SUPPLIER.s_suppkey AS KEY, + NATION.n_name AS NAME_12 + FROM TPCH.SUPPLIER AS SUPPLIER + JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey +), _T1 AS ( + SELECT + SUM(_S10.AGG_0) AS AGG_0, + ANY_VALUE(_S10.AGG_3) AS AGG_3 + FROM _S10 AS _S10 + JOIN _S11 AS _S11 + ON _S10.NATION_NAME = _S11.NAME_12 AND _S10.SUPPLIER_KEY = _S11.KEY + GROUP BY + _S10.KEY +) +SELECT + AGG_3 AS N_NAME, + COALESCE(AGG_0, 0) AS REVENUE +FROM _T1 +ORDER BY + REVENUE DESC NULLS LAST diff --git a/tests/test_sql_refsols/tpch_q6_snowflake.sql b/tests/test_sql_refsols/tpch_q6_snowflake.sql new file mode 100644 index 000000000..57e0a99e1 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q6_snowflake.sql @@ -0,0 +1,14 @@ +WITH _T0 AS ( + SELECT + SUM(l_extendedprice * l_discount) AS AGG_0 + FROM TPCH.LINEITEM + WHERE + l_discount <= 0.07 + AND l_discount >= 0.05 + AND l_quantity < 24 + AND l_shipdate < CAST('1995-01-01' AS DATE) + AND l_shipdate >= CAST('1994-01-01' AS DATE) +) +SELECT + COALESCE(AGG_0, 0) AS REVENUE +FROM _T0 diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql new file mode 100644 index 000000000..f9ff27c4a --- /dev/null +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -0,0 +1,53 @@ +WITH _S1 AS ( + SELECT + n_nationkey AS KEY, + n_name AS NAME + FROM TPCH.NATION +), _T1 AS ( + SELECT + SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )) AS AGG_0, + _S7.NAME AS CUST_NATION, + DATE_PART(YEAR, LINEITEM.l_shipdate) AS L_YEAR, + _S1.NAME AS SUPP_NATION + FROM TPCH.LINEITEM AS LINEITEM + JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey + JOIN _S1 AS _S1 + ON SUPPLIER.s_nationkey = _S1.KEY + JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey + JOIN _S1 AS _S7 + ON CUSTOMER.c_nationkey = _S7.KEY + WHERE + DATE_PART(YEAR, LINEITEM.l_shipdate) IN (1995, 1996) + AND ( + _S1.NAME = 'FRANCE' OR _S1.NAME = 'GERMANY' + ) + AND ( + _S1.NAME = 'FRANCE' OR _S7.NAME = 'FRANCE' + ) + AND ( + _S1.NAME = 'GERMANY' OR _S7.NAME = 'GERMANY' + ) + AND ( + _S7.NAME = 'FRANCE' OR _S7.NAME = 'GERMANY' + ) + GROUP BY + _S7.NAME, + DATE_PART(YEAR, LINEITEM.l_shipdate), + _S1.NAME +) +SELECT + SUPP_NATION, + CUST_NATION, + L_YEAR, + COALESCE(AGG_0, 0) AS REVENUE +FROM _T1 +ORDER BY + SUPP_NATION NULLS FIRST, + CUST_NATION NULLS FIRST, + L_YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql new file mode 100644 index 000000000..3b6c82727 --- /dev/null +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -0,0 +1,38 @@ +WITH _T0 AS ( + SELECT + SUM( + IFF( + NATION_2.n_name = 'BRAZIL', + LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + ), + 0 + ) + ) AS AGG_0, + SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )) AS AGG_1, + DATE_PART(YEAR, ORDERS.o_orderdate) AS O_YEAR + FROM TPCH.LINEITEM AS LINEITEM + JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' + JOIN TPCH.ORDERS AS ORDERS + ON DATE_PART(YEAR, ORDERS.o_orderdate) IN (1995, 1996) + AND LINEITEM.l_orderkey = ORDERS.o_orderkey + JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey + JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey + JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' + JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey + JOIN TPCH.NATION AS NATION_2 + ON NATION_2.n_nationkey = SUPPLIER.s_nationkey + GROUP BY + DATE_PART(YEAR, ORDERS.o_orderdate) +) +SELECT + O_YEAR, + COALESCE(AGG_0, 0) / COALESCE(AGG_1, 0) AS MKT_SHARE +FROM _T0 diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql new file mode 100644 index 000000000..c655aeaad --- /dev/null +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -0,0 +1,34 @@ +WITH _T1 AS ( + SELECT + SUM( + LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity + ) AS AGG_0, + NATION.n_name AS NATION_NAME, + DATE_PART(YEAR, ORDERS.o_orderdate) AS O_YEAR + FROM TPCH.LINEITEM AS LINEITEM + JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_name LIKE '%green%' + JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey + JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey + JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + JOIN TPCH.PARTSUPP AS PARTSUPP + ON LINEITEM.l_partkey = PARTSUPP.ps_partkey + AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey + GROUP BY + NATION.n_name, + DATE_PART(YEAR, ORDERS.o_orderdate) +) +SELECT + NATION_NAME AS NATION, + O_YEAR, + COALESCE(AGG_0, 0) AS AMOUNT +FROM _T1 +ORDER BY + NATION NULLS FIRST, + O_YEAR DESC NULLS LAST +LIMIT 10 diff --git a/tests/test_sql_refsols/week_offset_snowflake.sql b/tests/test_sql_refsols/week_offset_snowflake.sql new file mode 100644 index 000000000..0d3cf45e1 --- /dev/null +++ b/tests/test_sql_refsols/week_offset_snowflake.sql @@ -0,0 +1,13 @@ +SELECT + sbtxdatetime AS date_time, + DATEADD(WEEK, 1, CAST(sbtxdatetime AS TIMESTAMP)) AS week_adj1, + DATEADD(WEEK, -1, CAST(sbtxdatetime AS TIMESTAMP)) AS week_adj2, + DATEADD(WEEK, 2, DATEADD(HOUR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj3, + DATEADD(WEEK, 2, DATEADD(SECOND, -1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj4, + DATEADD(WEEK, 2, DATEADD(DAY, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj5, + DATEADD(WEEK, 2, DATEADD(MINUTE, -1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj6, + DATEADD(WEEK, 2, DATEADD(MONTH, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj7, + DATEADD(WEEK, 2, DATEADD(YEAR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj8 +FROM MAIN.SBTRANSACTION +WHERE + DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql new file mode 100644 index 000000000..6741c2f15 --- /dev/null +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql @@ -0,0 +1,16 @@ +SELECT + SBTRANSACTION.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid +ORDER BY + SBTRANSACTION.sbtxdatetime NULLS FIRST +LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql new file mode 100644 index 000000000..451e75183 --- /dev/null +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql @@ -0,0 +1,16 @@ +SELECT + SBTRANSACTION.sbtxid AS transaction_id, + SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid +ORDER BY + SBTRANSACTION.sbtxdatetime NULLS FIRST +LIMIT 8 diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index 6f2c18507..0cc2c61c6 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -23,9 +23,11 @@ "map_over_dict_values", ] +import datetime from abc import ABC, abstractmethod from collections.abc import Callable from dataclasses import dataclass +from decimal import Decimal from typing import Any import pandas as pd @@ -1182,6 +1184,7 @@ def run_e2e_test( database: DatabaseContext, config: PyDoughConfigs | None = None, display_sql: bool = False, + coerce_types: bool = False, ): """ Runs an end-to-end test using the data in the SQL comparison test, @@ -1226,7 +1229,57 @@ def run_e2e_test( refsol = refsol.sort_values(by=list(refsol.columns)).reset_index(drop=True) # Perform the comparison between the result and the reference solution - pd.testing.assert_frame_equal(result, refsol) + if coerce_types: + for col_name in result.columns: + result[col_name], refsol[col_name] = harmonize_types( + result[col_name], refsol[col_name] + ) + pd.testing.assert_frame_equal( + result, refsol, check_dtype=(not coerce_types), check_exact=False, atol=1e-8 + ) + + +def harmonize_types(column_a, column_b): + """ + TODO ADD DOCSTRING + """ + if any(isinstance(elem, Decimal) for elem in column_a) and any( + isinstance(elem, float) for elem in column_b + ): + return column_a.apply(lambda x: pd.NA if pd.isna(x) else float(x)), column_b + if any(isinstance(elem, float) for elem in column_a) and any( + isinstance(elem, Decimal) for elem in column_b + ): + return column_a, column_b.apply(lambda x: pd.NA if pd.isna(x) else float(x)) + if any(isinstance(elem, datetime.date) for elem in column_a) and any( + isinstance(elem, str) for elem in column_b + ): + return column_a, column_b.apply( + lambda x: datetime.datetime.strptime(x, "%Y-%m-%d").date() + if isinstance(x, str) + else x + ) + if any(isinstance(elem, str) for elem in column_a) and any( + isinstance(elem, datetime.date) for elem in column_b + ): + return column_a.apply( + lambda x: datetime.datetime.strptime(x, "%Y-%m-%d").date() + if isinstance(x, str) + else x + ), column_b + if any(isinstance(elem, pd.Timestamp) for elem in column_a) and any( + isinstance(elem, str) for elem in column_b + ): + return column_a, column_b.apply( + lambda x: pd.NA if pd.isna(x) else pd.Timestamp(x) + ) + if any(isinstance(elem, str) for elem in column_a) and any( + isinstance(elem, datetime.date) for elem in column_b + ): + return column_a.apply( + lambda x: pd.NA if pd.isna(x) else pd.Timestamp(x) + ), column_b + return column_a, column_b def run_e2e_error_test( From 8dbcd9cc7ea9fc1bcd2bc97ae66d5d9d97d912a4 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 20 Jun 2025 07:58:38 -0700 Subject: [PATCH 05/46] [run SF] From 0c3167e47c8f5d33f5232ff23fb6ccca011cc827 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 20 Jun 2025 10:59:42 -0700 Subject: [PATCH 06/46] [run SF] add connection object as option for load_snowflake_connection --- .../database_connectors/builtin_databases.py | 21 ++++++++--- tests/conftest.py | 35 ++++++++++++++++++- tests/test_pipeline_tpch.py | 25 +++++++++++-- 3 files changed, 73 insertions(+), 8 deletions(-) diff --git a/pydough/database_connectors/builtin_databases.py b/pydough/database_connectors/builtin_databases.py index 4937feb0b..2430b377c 100644 --- a/pydough/database_connectors/builtin_databases.py +++ b/pydough/database_connectors/builtin_databases.py @@ -62,7 +62,18 @@ def load_sqlite_connection(**kwargs) -> DatabaseConnection: def load_snowflake_connection(**kwargs) -> DatabaseConnection: """ Loads a Snowflake database connection. - This function should be implemented to handle Snowflake connections. + If a connection object is provided in the keyword arguments, + it will be used directly. Otherwise, the connection will be created + using the provided keyword arguments. + Args: + **kwargs: + The Snowflake connection or its connection parameters. + This includes the required parameters for connecting to Snowflake, + such as `user`, `password`, and `account`. Optional parameters + like `database`, `schema`, and `warehouse` can also be provided. + Raises: + ImportError: If the Snowflake connector is not installed. + ValueError: If required connection parameters are missing. Returns: DatabaseConnection: A database connection object for Snowflake. @@ -74,6 +85,10 @@ def load_snowflake_connection(**kwargs) -> DatabaseConnection: "Snowflake connector is not installed. Please install it with `pip install snowflake-connector-python`." ) + connection: snowflake.connector.connection.SnowflakeConnection + if connection := kwargs.pop("connection", None): + # If a connection object is provided, return it wrapped in DatabaseConnection + return DatabaseConnection(connection) # Snowflake connection requires specific parameters: # user, password, account. # Raise an error if any of these are missing. @@ -87,7 +102,5 @@ def load_snowflake_connection(**kwargs) -> DatabaseConnection: + ", ".join(required_keys) ) # Create a Snowflake connection using the provided keyword arguments - connection: snowflake.connector.connection.SnowflakeConnection = ( - snowflake.connector.connect(**kwargs) - ) + connection = snowflake.connector.connect(**kwargs) return DatabaseConnection(connection) diff --git a/tests/conftest.py b/tests/conftest.py index 7521f9e86..a138d20f6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -442,8 +442,41 @@ def is_snowflake_env_set() -> bool: @pytest.fixture -def sf_tpch_db_context() -> DatabaseContext: +def sf_conn_tpch_db_context() -> DatabaseContext: """ + This fixture is used to connect to the Snowflake TPCH database using + a connection object. + Return a DatabaseContext for the Snowflake TPCH database. + """ + if not is_snowflake_env_set(): + pytest.skip("Skipping Snowflake tests: environment variables not set.") + import snowflake.connector as sf_connector + + sf_tpch_db = "SNOWFLAKE_SAMPLE_DATA" + sf_tpch_schema = "TPCH_SF1" + warehouse = "DEMO_WH" + password = os.getenv("SF_PASSWORD") + username = os.getenv("SF_USERNAME") + account = os.getenv("SF_ACCOUNT") + connection: sf_connector.connection.SnowflakeConnection = sf_connector.connect( + user=username, + password=password, + account=account, + warehouse=warehouse, + database=sf_tpch_db, + schema=sf_tpch_schema, + ) + return load_database_context( + "snowflake", + connection=connection, + ) + + +@pytest.fixture +def sf_params_tpch_db_context() -> DatabaseContext: + """ + This fixture is used to connect to the Snowflake TPCH database using + parameters instead of a connection object. Return a DatabaseContext for the Snowflake TPCH database. """ if not is_snowflake_env_set(): diff --git a/tests/test_pipeline_tpch.py b/tests/test_pipeline_tpch.py index 58aff7259..fb1cc6391 100644 --- a/tests/test_pipeline_tpch.py +++ b/tests/test_pipeline_tpch.py @@ -324,15 +324,34 @@ def test_pipeline_e2e_tpch( @pytest.mark.snowflake @pytest.mark.execute -def test_pipeline_e2e_tpch_sf( +def test_pipeline_e2e_tpch_sf_conn( tpch_pipeline_test_data: PyDoughPandasTest, get_sf_sample_graph: graph_fetcher, - sf_tpch_db_context: DatabaseContext, + sf_conn_tpch_db_context: DatabaseContext, ): """ Test executing the TPC-H queries from the original code generation, with Snowflake as the executing database. + Using the `connection` as keyword argument to the DatabaseContext. """ tpch_pipeline_test_data.run_e2e_test( - get_sf_sample_graph, sf_tpch_db_context, coerce_types=True + get_sf_sample_graph, sf_conn_tpch_db_context, coerce_types=True + ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_tpch_sf_params( + tpch_pipeline_test_data: PyDoughPandasTest, + get_sf_sample_graph: graph_fetcher, + sf_params_tpch_db_context: DatabaseContext, +): + """ + Test executing the TPC-H queries from the original code generation, + with Snowflake as the executing database. + Using the `user`, `password`, `account`, `database`, `schema`, and `warehouse` + as keyword arguments to the DatabaseContext. + """ + tpch_pipeline_test_data.run_e2e_test( + get_sf_sample_graph, sf_params_tpch_db_context, coerce_types=True ) From 19baea029209e99419177721eb74e5e448fa703d Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 20 Jun 2025 15:30:18 -0700 Subject: [PATCH 07/46] Use SF Functions directly instead of PyDough changes (#377) --- pydough/conversion/hybrid_translator.py | 5 +- .../sf_transform_bindings.py | 27 +++ .../cumulative_stock_analysis_snowflake.sql | 4 +- tests/test_sql_refsols/datediff_snowflake.sql | 2 +- .../datetime_sampler_snowflake.sql | 36 ++-- .../defog_broker_adv10_snowflake.sql | 4 +- .../defog_broker_adv11_snowflake.sql | 2 +- .../defog_broker_adv12_snowflake.sql | 4 +- .../defog_broker_adv5_snowflake.sql | 24 +-- .../defog_broker_adv7_snowflake.sql | 52 +---- .../defog_broker_gen5_snowflake.sql | 4 +- .../defog_dealership_adv11_snowflake.sql | 2 +- .../defog_dealership_adv12_snowflake.sql | 59 ++---- .../defog_dealership_adv3_snowflake.sql | 2 +- .../defog_dealership_adv4_snowflake.sql | 2 +- .../defog_dealership_adv7_snowflake.sql | 2 +- .../defog_dealership_gen4_snowflake.sql | 2 +- .../defog_dealership_gen5_snowflake.sql | 2 +- .../defog_ewallet_adv3_snowflake.sql | 2 +- .../defog_ewallet_basic1_snowflake.sql | 4 +- .../defog_ewallet_gen1_snowflake.sql | 33 +--- .../defog_ewallet_gen2_snowflake.sql | 6 +- .../epoch_culture_events_info_snowflake.sql | 16 +- .../epoch_event_gap_per_era_snowflake.sql | 4 +- .../epoch_events_per_season_snowflake.sql | 6 +- .../epoch_first_event_per_era_snowflake.sql | 4 +- .../epoch_intra_season_searches_snowflake.sql | 34 ++-- ...opular_search_engine_per_tod_snowflake.sql | 4 +- ...ost_popular_topic_per_region_snowflake.sql | 2 +- .../epoch_num_predawn_cold_war_snowflake.sql | 37 ++-- ..._search_other_users_per_user_snowflake.sql | 4 +- ...ping_event_searches_per_user_snowflake.sql | 4 +- .../epoch_pct_searches_per_tod_snowflake.sql | 4 +- .../epoch_search_results_by_tod_snowflake.sql | 4 +- ...epoch_summer_events_per_type_snowflake.sql | 6 +- ...poch_unique_users_per_engine_snowflake.sql | 3 +- ...users_most_cold_war_searches_snowflake.sql | 67 ++----- .../global_acctbal_breakdown_snowflake.sql | 57 +----- .../hour_minute_day_snowflake.sql | 6 +- .../nation_acctbal_breakdown_snowflake.sql | 61 +----- .../region_acctbal_breakdown_snowflake.sql | 59 +----- .../simple_smallest_or_largest_snowflake.sql | 44 +++-- ...tion_week_sampler_friday_one_snowflake.sql | 19 +- ...ion_week_sampler_friday_zero_snowflake.sql | 19 +- ...tion_week_sampler_monday_one_snowflake.sql | 19 +- ...ion_week_sampler_monday_zero_snowflake.sql | 19 +- ...on_week_sampler_saturday_one_snowflake.sql | 19 +- ...n_week_sampler_saturday_zero_snowflake.sql | 19 +- ...tion_week_sampler_sunday_one_snowflake.sql | 19 +- ...ion_week_sampler_sunday_zero_snowflake.sql | 19 +- ...on_week_sampler_thursday_one_snowflake.sql | 19 +- ...n_week_sampler_thursday_zero_snowflake.sql | 19 +- ...ion_week_sampler_tuesday_one_snowflake.sql | 19 +- ...on_week_sampler_tuesday_zero_snowflake.sql | 19 +- ...n_week_sampler_wednesday_one_snowflake.sql | 19 +- ..._week_sampler_wednesday_zero_snowflake.sql | 19 +- ...hnograph_hot_purchase_window_snowflake.sql | 2 +- ...ncident_rate_by_release_year_snowflake.sql | 8 +- ...ograph_monthly_incident_rate_snowflake.sql | 24 +-- ...incident_rate_goldcopperstar_snowflake.sql | 8 +- ...lative_incident_rate_overall_snowflake.sql | 4 +- .../time_threshold_reached_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q10_snowflake.sql | 3 +- tests/test_sql_refsols/tpch_q12_snowflake.sql | 4 +- tests/test_sql_refsols/tpch_q14_snowflake.sql | 5 +- tests/test_sql_refsols/tpch_q16_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q20_snowflake.sql | 4 +- tests/test_sql_refsols/tpch_q21_snowflake.sql | 177 ++++++++++++------ tests/test_sql_refsols/tpch_q2_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q4_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q7_snowflake.sql | 6 +- tests/test_sql_refsols/tpch_q8_snowflake.sql | 8 +- tests/test_sql_refsols/tpch_q9_snowflake.sql | 6 +- .../week_offset_snowflake.sql | 2 +- 74 files changed, 426 insertions(+), 815 deletions(-) diff --git a/pydough/conversion/hybrid_translator.py b/pydough/conversion/hybrid_translator.py index ea45901af..bfc1bb7ee 100644 --- a/pydough/conversion/hybrid_translator.py +++ b/pydough/conversion/hybrid_translator.py @@ -88,7 +88,10 @@ def __init__(self, configs: PyDoughConfigs, dialect: DatabaseDialect): self.stack: list[HybridTree] = [] # If True, rewrites MEDIAN calls into an average of the 1-2 median rows # via window functions, otherwise leaves as-is. - self.rewrite_median: bool = dialect not in {DatabaseDialect.ANSI} + self.rewrite_median: bool = dialect not in { + DatabaseDialect.ANSI, + DatabaseDialect.SNOWFLAKE, + } @staticmethod def get_subcollection_join_keys( diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py index 54ccbf02b..923e08375 100644 --- a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -20,6 +20,29 @@ class SnowflakeTransformBindings(BaseTransformBindings): Subclass of BaseTransformBindings for the Snowflake dialect. """ + PYDOP_TO_SNOWFLAKE_FUNC: dict[pydop.PyDoughExpressionOperator, str] = { + pydop.STARTSWITH: "STARTSWITH", + pydop.ENDSWITH: "ENDSWITH", + pydop.CONTAINS: "CONTAINS", + pydop.LPAD: "LPAD", + pydop.RPAD: "RPAD", + pydop.SIGN: "SIGN", + pydop.YEAR: "YEAR", + pydop.QUARTER: "QUARTER", + pydop.MONTH: "MONTH", + pydop.DAY: "DAY", + pydop.HOUR: "HOUR", + pydop.MINUTE: "MINUTE", + pydop.SECOND: "SECOND", + pydop.DAYNAME: "DAYNAME", + pydop.SMALLEST: "LEAST", + pydop.LARGEST: "GREATEST", + } + """ + Mapping of PyDough operators to equivalent Snowflake SQL function names + These are used to generate anonymous function calls in SQLGlot + """ + def convert_call_to_sqlglot( self, operator: pydop.PyDoughExpressionOperator, @@ -29,6 +52,10 @@ def convert_call_to_sqlglot( match operator: case pydop.SUM: return self.convert_sum(args, types) + if operator in self.PYDOP_TO_SNOWFLAKE_FUNC: + return sqlglot_expressions.Anonymous( + this=self.PYDOP_TO_SNOWFLAKE_FUNC[operator], expressions=args + ) return super().convert_call_to_sqlglot(operator, args, types) diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index 1ae1e7aea..95140db1f 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -25,8 +25,8 @@ FROM MAIN.SBTRANSACTION AS SBTRANSACTION JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid WHERE - DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) = 4 - AND DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) = 2023 + MONTH(SBTRANSACTION.sbtxdatetime) = 4 AND SBTRANSACTION.sbtxstatus = 'success' + AND YEAR(SBTRANSACTION.sbtxdatetime) = 2023 ORDER BY DATE_TIME NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql index b0729d4c1..2c78fe406 100644 --- a/tests/test_sql_refsols/datediff_snowflake.sql +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -10,7 +10,7 @@ SELECT DATEDIFF(SECOND, sbtxdatetime, CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS seconds_diff FROM MAIN.SBTRANSACTION WHERE - DATE_PART(YEAR, sbtxdatetime) < 2025 + YEAR(sbtxdatetime) < 2025 ORDER BY YEARS_DIFF NULLS FIRST LIMIT 30 diff --git a/tests/test_sql_refsols/datetime_sampler_snowflake.sql b/tests/test_sql_refsols/datetime_sampler_snowflake.sql index aee79b9e1..2e10b86d4 100644 --- a/tests/test_sql_refsols/datetime_sampler_snowflake.sql +++ b/tests/test_sql_refsols/datetime_sampler_snowflake.sql @@ -111,24 +111,24 @@ SELECT DATEADD(MONTH, -104, DATEADD(MINUTE, 104, DATEADD(HOUR, 136, CURRENT_TIMESTAMP()))) ) AS _expr57, DATEADD(SECOND, -135, DATEADD(MONTH, 45, CURRENT_TIMESTAMP())) AS _expr58, - DATE_PART(YEAR, CURRENT_TIMESTAMP()) AS _expr59, - DATE_PART(YEAR, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr60, - DATE_PART(YEAR, CAST('1999-03-14' AS TIMESTAMP)) AS _expr61, - DATE_PART(MONTH, CURRENT_TIMESTAMP()) AS _expr62, - DATE_PART(MONTH, CAST('2001-06-30' AS DATE)) AS _expr63, - DATE_PART(MONTH, CAST('1999-03-14' AS TIMESTAMP)) AS _expr64, - DATE_PART(DAY, CURRENT_TIMESTAMP()) AS _expr65, - DATE_PART(DAY, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr66, - DATE_PART(DAY, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr67, - DATE_PART(HOUR, CURRENT_TIMESTAMP()) AS _expr68, - DATE_PART(HOUR, CAST('2001-06-30' AS DATE)) AS _expr69, - DATE_PART(HOUR, CAST('2024-01-01' AS TIMESTAMP)) AS _expr70, - DATE_PART(MINUTE, CURRENT_TIMESTAMP()) AS _expr71, - DATE_PART(MINUTE, CAST('2024-12-25 20:30:59' AS TIMESTAMP)) AS _expr72, - DATE_PART(MINUTE, CAST('2024-01-01' AS TIMESTAMP)) AS _expr73, - DATE_PART(SECOND, CURRENT_TIMESTAMP()) AS _expr74, - DATE_PART(SECOND, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr75, - DATE_PART(SECOND, CAST('1999-03-14' AS TIMESTAMP)) AS _expr76, + YEAR('Current Date') AS _expr59, + YEAR(CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr60, + YEAR('1999-03-14') AS _expr61, + MONTH('Current Date') AS _expr62, + MONTH(CAST('2001-06-30' AS DATE)) AS _expr63, + MONTH('1999-03-14') AS _expr64, + DAY('Current Date') AS _expr65, + DAY(CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr66, + DAY('2025-07-04 12:58:45') AS _expr67, + HOUR('CURRENT_TIMESTAMP') AS _expr68, + HOUR(CAST('2001-06-30' AS DATE)) AS _expr69, + HOUR('2024-01-01') AS _expr70, + MINUTE('CURRENT_TIMESTAMP') AS _expr71, + MINUTE(CAST('2024-12-25 20:30:59' AS TIMESTAMP)) AS _expr72, + MINUTE('2024-01-01') AS _expr73, + SECOND('now') AS _expr74, + SECOND(CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr75, + SECOND('1999-03-14') AS _expr76, DATEDIFF(YEAR, CAST('2018-02-14 12:41:06' AS TIMESTAMP), CURRENT_TIMESTAMP()) AS _expr77, DATEDIFF(YEAR, o_orderdate, CAST('2022-11-24' AS DATE)) AS _expr78, DATEDIFF(MONTH, CAST('2005-06-30' AS DATE), CAST('1999-03-14' AS TIMESTAMP)) AS _expr79, diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql index 848a31758..129e26e40 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -4,9 +4,9 @@ WITH _S3 AS ( SBCUSTOMER.sbcustid AS _ID FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate) = DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) - AND DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate) = DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) + ON MONTH(SBCUSTOMER.sbcustjoindate) = MONTH(SBTRANSACTION.sbtxdatetime) AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND YEAR(SBCUSTOMER.sbcustjoindate) = YEAR(SBTRANSACTION.sbtxdatetime) GROUP BY SBCUSTOMER.sbcustid ) diff --git a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql index a8d1bd485..0dcffa4a6 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql @@ -8,7 +8,7 @@ WITH _T1 AS ( _T1._ID AS _ID FROM _T1 AS _T1 WHERE - _T1.EMAIL LIKE '%.com' + ENDSWITH(_T1.EMAIL, '.com') ), _S0 AS ( SELECT SBTRANSACTION.sbtxcustid AS CUSTOMER_ID, diff --git a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql index 8838d355a..4344097be 100644 --- a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql @@ -3,6 +3,6 @@ SELECT FROM MAIN.SBCUSTOMER WHERE ( - LOWER(sbcustname) LIKE '%ez' OR LOWER(sbcustname) LIKE 'j%' + ENDSWITH(LOWER(sbcustname), 'ez') OR STARTSWITH(LOWER(sbcustname), 'j') ) - AND LOWER(sbcuststate) LIKE '%a' + AND ENDSWITH(LOWER(sbcuststate), 'a') diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index db37dc608..5ff29df43 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -4,31 +4,11 @@ WITH _S0 AS ( COUNT(sbdpclose) AS EXPR_1, MAX(sbdphigh) AS MAX_HIGH, MIN(sbdplow) AS MIN_LOW, - CONCAT_WS( - '-', - DATE_PART(YEAR, sbdpdate), - CASE - WHEN LENGTH(DATE_PART(MONTH, sbdpdate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, sbdpdate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbdpdate)), ( - 2 * -1 - )) - END - ) AS MONTH, + CONCAT_WS('-', YEAR(sbdpdate), LPAD(MONTH(sbdpdate), 2, '0')) AS MONTH, sbdptickerid AS TICKER_ID FROM MAIN.SBDAILYPRICE GROUP BY - CONCAT_WS( - '-', - DATE_PART(YEAR, sbdpdate), - CASE - WHEN LENGTH(DATE_PART(MONTH, sbdpdate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, sbdpdate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbdpdate)), ( - 2 * -1 - )) - END - ), + CONCAT_WS('-', YEAR(sbdpdate), LPAD(MONTH(sbdpdate), 2, '0')), sbdptickerid ), _T1 AS ( SELECT diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index ec56a826b..29d1ba126 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -1,67 +1,27 @@ WITH _S2 AS ( SELECT COUNT(*) AS AGG_1, - CONCAT_WS( - '-', - DATE_PART(YEAR, sbcustjoindate), - CASE - WHEN LENGTH(DATE_PART(MONTH, sbcustjoindate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, sbcustjoindate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbcustjoindate)), ( - 2 * -1 - )) - END - ) AS MONTH + CONCAT_WS('-', YEAR(sbcustjoindate), LPAD(MONTH(sbcustjoindate), 2, '0')) AS MONTH FROM MAIN.SBCUSTOMER WHERE sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY - CONCAT_WS( - '-', - DATE_PART(YEAR, sbcustjoindate), - CASE - WHEN LENGTH(DATE_PART(MONTH, sbcustjoindate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, sbcustjoindate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbcustjoindate)), ( - 2 * -1 - )) - END - ) + CONCAT_WS('-', YEAR(sbcustjoindate), LPAD(MONTH(sbcustjoindate), 2, '0')) ), _S3 AS ( SELECT AVG(SBTRANSACTION.sbtxamount) AS AGG_0, - CONCAT_WS( - '-', - DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate), - CASE - WHEN LENGTH(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)), ( - 2 * -1 - )) - END - ) AS MONTH + CONCAT_WS('-', YEAR(SBCUSTOMER.sbcustjoindate), LPAD(MONTH(SBCUSTOMER.sbcustjoindate), 2, '0')) AS MONTH FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate) = DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) - AND DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate) = DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) + ON MONTH(SBCUSTOMER.sbcustjoindate) = MONTH(SBTRANSACTION.sbtxdatetime) AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND YEAR(SBCUSTOMER.sbcustjoindate) = YEAR(SBTRANSACTION.sbtxdatetime) WHERE SBCUSTOMER.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY - CONCAT_WS( - '-', - DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate), - CASE - WHEN LENGTH(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)), ( - 2 * -1 - )) - END - ) + CONCAT_WS('-', YEAR(SBCUSTOMER.sbcustjoindate), LPAD(MONTH(SBCUSTOMER.sbcustjoindate), 2, '0')) ) SELECT _S2.MONTH AS month, diff --git a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql index 9fdfe03cc..86273f241 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql @@ -3,9 +3,7 @@ SELECT AVG(sbtxprice) AS avg_price FROM MAIN.SBTRANSACTION WHERE - DATE_PART(QUARTER, sbtxdatetime) = 1 - AND DATE_PART(YEAR, sbtxdatetime) = 2023 - AND sbtxstatus = 'success' + QUARTER(sbtxdatetime) = 1 AND sbtxstatus = 'success' AND YEAR(sbtxdatetime) = 2023 GROUP BY DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql index dedf8fbfd..5b9ff5264 100644 --- a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql @@ -4,7 +4,7 @@ WITH _S0 AS ( car_id AS CAR_ID FROM MAIN.SALES WHERE - DATE_PART(YEAR, sale_date) = 2023 + YEAR(sale_date) = 2023 GROUP BY car_id ), _T0 AS ( diff --git a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql index 6c904afff..97ea27e78 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql @@ -1,51 +1,24 @@ WITH _T0 AS ( SELECT - INVENTORY_SNAPSHOTS.car_id AS CAR_ID, - INVENTORY_SNAPSHOTS.is_in_inventory AS IS_IN_INVENTORY, - INVENTORY_SNAPSHOTS.snapshot_date AS SNAPSHOT_DATE - FROM MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS -), _S3 AS ( - SELECT - _T0.CAR_ID AS CAR_ID - FROM _T0 AS _T0 - WHERE - _S0.SALE_DATE = _T0.SNAPSHOT_DATE AND _T0.IS_IN_INVENTORY = 0 -), _S1 AS ( - SELECT - SALES.car_id AS CAR_ID, - SALES.sale_date AS SALE_DATE, - SALES.sale_price AS SALE_PRICE + ANY_VALUE(CARS.make) AS MAKE, + ANY_VALUE(CARS.model) AS MODEL, + ANY_VALUE(SALES.sale_price) AS SALE_PRICE FROM MAIN.SALES AS SALES -), _S2 AS ( - SELECT - CARS._id AS _ID_1_0_1, - CARS.make AS MAKE, - CARS.model AS MODEL - FROM MAIN.CARS AS CARS -), _S0 AS ( - SELECT - _S2._ID_1_0_1 AS _ID_1, - _S2.MAKE AS MAKE, - _S2.MODEL AS MODEL, - _S1.SALE_DATE AS SALE_DATE, - _S1.SALE_PRICE AS SALE_PRICE - FROM _S1 AS _S1 - JOIN _S2 AS _S2 - ON _S1.CAR_ID = _S2._ID_1_0_1 + JOIN MAIN.CARS AS CARS + ON CARS._id = SALES.car_id + JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS + ON CARS._id = INVENTORY_SNAPSHOTS.car_id + AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 + AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date + GROUP BY + SALES._id, + CARS._id ) SELECT - _S0.MAKE AS make, - _S0.MODEL AS model, - _S0.SALE_PRICE AS sale_price -FROM _S0 AS _S0 -WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S3 AS _S3 - WHERE - _S0._ID_1 = _S3.CAR_ID - ) + MAKE AS make, + MODEL AS model, + SALE_PRICE AS sale_price +FROM _T0 ORDER BY SALE_PRICE DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql index 140fc4041..a3b7fe8cb 100644 --- a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql @@ -14,4 +14,4 @@ FROM MAIN.CARS AS CARS LEFT JOIN _S1 AS _S1 ON CARS._id = _S1.CAR_ID WHERE - LOWER(CARS.vin_number) LIKE '%m5%' + CONTAINS(LOWER(CARS.vin_number), 'm5') diff --git a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql index 0a8ff8132..6d2b22231 100644 --- a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql @@ -22,4 +22,4 @@ FROM MAIN.CARS AS CARS LEFT JOIN _S1 AS _S1 ON CARS._id = _S1.CAR_ID WHERE - LOWER(CARS.make) LIKE '%toyota%' + CONTAINS(LOWER(CARS.make), 'toyota') diff --git a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql index d8f64ac23..58edd44fb 100644 --- a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql @@ -17,4 +17,4 @@ FROM MAIN.CARS AS CARS LEFT JOIN _S1 AS _S1 ON CARS._id = _S1.CAR_ID WHERE - LOWER(CARS.make) LIKE '%fords%' OR LOWER(CARS.model) LIKE '%mustang%' + CONTAINS(LOWER(CARS.make), 'fords') OR CONTAINS(LOWER(CARS.model), 'mustang') diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql index 000bad338..71fd80822 100644 --- a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -5,7 +5,7 @@ WITH _S0 AS ( DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS QUARTER FROM MAIN.SALES WHERE - DATE_PART(YEAR, sale_date) = 2023 + YEAR(sale_date) = 2023 GROUP BY customer_id, DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql index e3ae76cf0..d19ec8fda 100644 --- a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql @@ -3,7 +3,7 @@ WITH _T0 AS ( car_id AS CAR_ID FROM MAIN.INVENTORY_SNAPSHOTS WHERE - DATE_PART(MONTH, snapshot_date) = 3 AND DATE_PART(YEAR, snapshot_date) = 2023 + MONTH(snapshot_date) = 3 AND YEAR(snapshot_date) = 2023 QUALIFY is_in_inventory AND RANK() OVER (ORDER BY snapshot_date DESC) = 1 ) diff --git a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql index 7319823c3..63c7ca1f7 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql @@ -13,4 +13,4 @@ FROM MAIN.MERCHANTS AS MERCHANTS JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.MERCHANT_ID WHERE - LOWER(MERCHANTS.category) LIKE '%retail%' AND MERCHANTS.status = 'active' + CONTAINS(LOWER(MERCHANTS.category), 'retail') AND MERCHANTS.status = 'active' diff --git a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql index f0300fa04..8ffa4c94e 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql @@ -5,8 +5,8 @@ FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY JOIN MAIN.USERS AS USERS ON USERS.status = 'active' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id WHERE - DATE_PART(YEAR, WALLET_TRANSACTIONS_DAILY.created_at) = 2023 - AND WALLET_TRANSACTIONS_DAILY.sender_type = 0 + WALLET_TRANSACTIONS_DAILY.sender_type = 0 AND WALLET_TRANSACTIONS_DAILY.status = 'success' + AND YEAR(WALLET_TRANSACTIONS_DAILY.created_at) = 2023 GROUP BY DATE_TRUNC('MONTH', CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql index 5a776115d..047f6ad99 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql @@ -1,26 +1,9 @@ -WITH _T0 AS ( - SELECT - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (ORDER BY WALLET_MERCHANT_BALANCE_DAILY.balance DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(WALLET_MERCHANT_BALANCE_DAILY.balance) OVER () - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN WALLET_MERCHANT_BALANCE_DAILY.balance - ELSE NULL - END AS EXPR_1 - FROM MAIN.WALLET_MERCHANT_BALANCE_DAILY AS WALLET_MERCHANT_BALANCE_DAILY - JOIN MAIN.MERCHANTS AS MERCHANTS - ON LOWER(MERCHANTS.category) LIKE '%retail%' - AND MERCHANTS.mid = WALLET_MERCHANT_BALANCE_DAILY.merchant_id - AND MERCHANTS.status = 'active' - WHERE - DATE_TRUNC('DAY', CAST(WALLET_MERCHANT_BALANCE_DAILY.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) -) SELECT - AVG(EXPR_1) AS _expr0 -FROM _T0 + MEDIAN(WALLET_MERCHANT_BALANCE_DAILY.balance) AS _expr0 +FROM MAIN.WALLET_MERCHANT_BALANCE_DAILY AS WALLET_MERCHANT_BALANCE_DAILY +JOIN MAIN.MERCHANTS AS MERCHANTS + ON CONTAINS(LOWER(MERCHANTS.category), 'retail') + AND MERCHANTS.mid = WALLET_MERCHANT_BALANCE_DAILY.merchant_id + AND MERCHANTS.status = 'active' +WHERE + DATE_TRUNC('DAY', CAST(WALLET_MERCHANT_BALANCE_DAILY.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) diff --git a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql index d74258b8b..39bc9b48e 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql @@ -3,12 +3,12 @@ WITH _S0 AS ( MIN(snapshot_date) AS MIN_DATE FROM MAIN.USER_SETTING_SNAPSHOT WHERE - DATE_PART(YEAR, snapshot_date) = 2023 + YEAR(snapshot_date) = 2023 ) SELECT AVG(USER_SETTING_SNAPSHOT.tx_limit_daily) AS avg_daily_limit, AVG(USER_SETTING_SNAPSHOT.tx_limit_monthly) AS avg_monthly_limit FROM _S0 AS _S0 JOIN MAIN.USER_SETTING_SNAPSHOT AS USER_SETTING_SNAPSHOT - ON DATE_PART(YEAR, USER_SETTING_SNAPSHOT.snapshot_date) = 2023 - AND USER_SETTING_SNAPSHOT.snapshot_date = _S0.MIN_DATE + ON USER_SETTING_SNAPSHOT.snapshot_date = _S0.MIN_DATE + AND YEAR(USER_SETTING_SNAPSHOT.snapshot_date) = 2023 diff --git a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql index e0302206d..3c7a17cab 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql @@ -7,24 +7,24 @@ WITH _S2 AS ( SELECT EVENTS.ev_name AS event_name, ERAS.er_name AS era_name, - DATE_PART(YEAR, EVENTS.ev_dt) AS event_year, + YEAR(EVENTS.ev_dt) AS event_year, SEASONS.s_name AS season_name, TIMES.t_name AS tod FROM EVENTS AS EVENTS JOIN ERAS AS ERAS - ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) - AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) + ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) + AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) JOIN _S2 AS _S2 ON EVENTS.ev_key = _S2.KEY JOIN SEASONS AS SEASONS - ON SEASONS.s_month1 = DATE_PART(MONTH, _S2.DATE_TIME) - OR SEASONS.s_month2 = DATE_PART(MONTH, _S2.DATE_TIME) - OR SEASONS.s_month3 = DATE_PART(MONTH, _S2.DATE_TIME) + ON SEASONS.s_month1 = MONTH(_S2.DATE_TIME) + OR SEASONS.s_month2 = MONTH(_S2.DATE_TIME) + OR SEASONS.s_month3 = MONTH(_S2.DATE_TIME) JOIN _S2 AS _S6 ON EVENTS.ev_key = _S6.KEY JOIN TIMES AS TIMES - ON TIMES.t_end_hour > DATE_PART(HOUR, _S6.DATE_TIME) - AND TIMES.t_start_hour <= DATE_PART(HOUR, _S6.DATE_TIME) + ON TIMES.t_end_hour > HOUR(_S6.DATE_TIME) + AND TIMES.t_start_hour <= HOUR(_S6.DATE_TIME) WHERE EVENTS.ev_typ = 'culture' ORDER BY diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index 4984e238b..4630da033 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -9,8 +9,8 @@ WITH _T1 AS ( ERAS.er_start_year AS START_YEAR FROM ERAS AS ERAS JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) - AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) + ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) + AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) ), _T0 AS ( SELECT ANY_VALUE(START_YEAR) AS AGG_3, diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql index fc9bfa872..a579f8950 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -4,9 +4,9 @@ WITH _T0 AS ( ANY_VALUE(SEASONS.s_name) AS SEASON_NAME FROM SEASONS AS SEASONS JOIN EVENTS AS EVENTS - ON SEASONS.s_month1 = DATE_PART(MONTH, EVENTS.ev_dt) - OR SEASONS.s_month2 = DATE_PART(MONTH, EVENTS.ev_dt) - OR SEASONS.s_month3 = DATE_PART(MONTH, EVENTS.ev_dt) + ON SEASONS.s_month1 = MONTH(EVENTS.ev_dt) + OR SEASONS.s_month2 = MONTH(EVENTS.ev_dt) + OR SEASONS.s_month3 = MONTH(EVENTS.ev_dt) GROUP BY SEASONS.s_name ) diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql index f813f6399..919620896 100644 --- a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql @@ -5,8 +5,8 @@ WITH _T1 AS ( ERAS.er_start_year AS START_YEAR FROM ERAS AS ERAS JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) - AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) + ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) + AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) QUALIFY ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) = 1 ) diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index e0805c7f1..456a8afd9 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -20,17 +20,17 @@ WITH _S0 AS ( SEARCHES.search_id AS SEARCH_ID FROM _S0 AS _S2 JOIN SEARCHES AS SEARCHES - ON _S2.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S2.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S2.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + ON _S2.FIRST_MONTH = MONTH(SEARCHES.search_ts) + OR _S2.SECOND_MONTH = MONTH(SEARCHES.search_ts) + OR _S2.THIRD_MONTH = MONTH(SEARCHES.search_ts) JOIN EVENTS AS EVENTS - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) JOIN _S7 AS _S7 ON _S2.SEASON_NAME = _S7.NAME AND ( - _S7.FIRST_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) - OR _S7.SECOND_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) - OR _S7.THIRD_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + _S7.FIRST_MONTH = MONTH(EVENTS.ev_dt) + OR _S7.SECOND_MONTH = MONTH(EVENTS.ev_dt) + OR _S7.THIRD_MONTH = MONTH(EVENTS.ev_dt) ) GROUP BY _S2.NAME, @@ -45,9 +45,9 @@ WITH _S0 AS ( ANY_VALUE(_S0.SEASON_NAME) AS AGG_4 FROM _S0 AS _S0 JOIN SEARCHES AS SEARCHES - ON _S0.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S0.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S0.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + ON _S0.FIRST_MONTH = MONTH(SEARCHES.search_ts) + OR _S0.SECOND_MONTH = MONTH(SEARCHES.search_ts) + OR _S0.THIRD_MONTH = MONTH(SEARCHES.search_ts) LEFT JOIN _S9 AS _S9 ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.NAME = _S9.NAME GROUP BY @@ -59,15 +59,15 @@ WITH _S0 AS ( _S10.NAME FROM _S0 AS _S10 JOIN EVENTS AS EVENTS - ON _S10.FIRST_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) - OR _S10.SECOND_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) - OR _S10.THIRD_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + ON _S10.FIRST_MONTH = MONTH(EVENTS.ev_dt) + OR _S10.SECOND_MONTH = MONTH(EVENTS.ev_dt) + OR _S10.THIRD_MONTH = MONTH(EVENTS.ev_dt) JOIN SEARCHES AS SEARCHES - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) JOIN _S7 AS _S15 - ON _S15.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S15.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S15.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + ON _S15.FIRST_MONTH = MONTH(SEARCHES.search_ts) + OR _S15.SECOND_MONTH = MONTH(SEARCHES.search_ts) + OR _S15.THIRD_MONTH = MONTH(SEARCHES.search_ts) GROUP BY _S10.NAME ) diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql index d1e8a4e43..747aefe7f 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql @@ -5,8 +5,8 @@ WITH _T1 AS ( TIMES.t_name AS TOD FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) - AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) + AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) GROUP BY SEARCHES.search_engine, TIMES.t_name diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql index c0f27ab14..9293b5cc9 100644 --- a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql @@ -5,7 +5,7 @@ WITH _T1 AS ( USERS.user_region AS REGION FROM EVENTS AS EVENTS JOIN SEARCHES AS SEARCHES - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) JOIN USERS AS USERS ON SEARCHES.search_user_id = USERS.user_id GROUP BY diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql index 12a7c33a3..470bd25e5 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -1,6 +1,7 @@ -WITH _S1 AS ( +WITH _S0 AS ( SELECT - EVENTS.ev_dt AS DATE_TIME + EVENTS.ev_dt AS DATE_TIME, + EVENTS.ev_key AS KEY FROM EVENTS AS EVENTS ), _T1 AS ( SELECT @@ -8,26 +9,19 @@ WITH _S1 AS ( TIMES.t_name AS NAME, TIMES.t_start_hour AS START_HOUR FROM TIMES AS TIMES -), _S2 AS ( +), _S1 AS ( SELECT _T1.END_HOUR AS END_HOUR, _T1.START_HOUR AS START_HOUR FROM _T1 AS _T1 WHERE _T1.NAME = 'Pre-Dawn' -), _S0 AS ( +), _S4 AS ( SELECT - _S1.DATE_TIME AS DATE_TIME - FROM _S1 AS _S1 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S2 AS _S2 - WHERE - _S2.END_HOUR > DATE_PART(HOUR, _S1.DATE_TIME) - AND _S2.START_HOUR <= DATE_PART(HOUR, _S1.DATE_TIME) - ) + _S0.KEY AS KEY + FROM _S0 AS _S0 + JOIN _S1 AS _S1 + ON _S1.END_HOUR > HOUR(_S0.DATE_TIME) AND _S1.START_HOUR <= HOUR(_S0.DATE_TIME) ), _T2 AS ( SELECT ERAS.er_end_year AS END_YEAR, @@ -41,18 +35,23 @@ WITH _S1 AS ( FROM _T2 AS _T2 WHERE _T2.NAME = 'Cold War' +), _S5 AS ( + SELECT + _S2.KEY AS KEY + FROM _S0 AS _S2 + JOIN _S3 AS _S3 + ON _S3.END_YEAR > YEAR(_S2.DATE_TIME) AND _S3.START_YEAR <= YEAR(_S2.DATE_TIME) ), _T0 AS ( SELECT 1 AS _ - FROM _S0 AS _S0 + FROM _S4 AS _S4 WHERE EXISTS( SELECT 1 AS "1" - FROM _S3 AS _S3 + FROM _S5 AS _S5 WHERE - _S3.END_YEAR > DATE_PART(YEAR, _S0.DATE_TIME) - AND _S3.START_YEAR <= DATE_PART(YEAR, _S0.DATE_TIME) + _S4.KEY = _S5.KEY ) ) SELECT diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql index e75d9f4e4..67425c377 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql @@ -12,9 +12,9 @@ WITH _S1 AS ( JOIN _S1 AS _S1 ON USERS.user_id = _S1.USER_ID JOIN EVENTS AS EVENTS - ON LOWER(_S1.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(_S1.SEARCH_STRING), LOWER(EVENTS.ev_name)) JOIN _S1 AS _S5 - ON LOWER(_S5.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(_S5.SEARCH_STRING), LOWER(EVENTS.ev_name)) JOIN USERS AS USERS_2 ON USERS_2.user_id = _S5.USER_ID WHERE diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql index 42aa0d605..e5711d1aa 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -7,9 +7,9 @@ WITH _T2 AS ( JOIN SEARCHES AS SEARCHES ON SEARCHES.search_user_id = USERS.user_id JOIN EVENTS AS EVENTS - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) JOIN SEARCHES AS SEARCHES_2 - ON LOWER(SEARCHES_2.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(SEARCHES_2.search_string), LOWER(EVENTS.ev_name)) JOIN USERS AS USERS_2 ON SEARCHES_2.search_user_id = USERS_2.user_id WHERE diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql index 7bc221e73..bf98f2a75 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -5,8 +5,8 @@ WITH _T1 AS ( ANY_VALUE(TIMES.t_start_hour) AS AGG_3 FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) - AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) + AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) GROUP BY TIMES.t_name ), _T0 AS ( diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql index 41e7159a3..e0b48bc1a 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -6,8 +6,8 @@ WITH _T1 AS ( ANY_VALUE(TIMES.t_start_hour) AS AGG_4 FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) - AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) + AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) GROUP BY TIMES.t_name ), _T0 AS ( diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql index e53e35abf..9acd327d0 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql @@ -4,9 +4,9 @@ SELECT FROM EVENTS AS EVENTS JOIN SEASONS AS SEASONS ON ( - SEASONS.s_month1 = DATE_PART(MONTH, EVENTS.ev_dt) - OR SEASONS.s_month2 = DATE_PART(MONTH, EVENTS.ev_dt) - OR SEASONS.s_month3 = DATE_PART(MONTH, EVENTS.ev_dt) + SEASONS.s_month1 = MONTH(EVENTS.ev_dt) + OR SEASONS.s_month2 = MONTH(EVENTS.ev_dt) + OR SEASONS.s_month3 = MONTH(EVENTS.ev_dt) ) AND SEASONS.s_name = 'Summer' GROUP BY diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql index 425823c46..1cd17df38 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql @@ -10,8 +10,7 @@ WITH _S2 AS ( JOIN USERS AS USERS ON SEARCHES.search_user_id = USERS.user_id WHERE - DATE_PART(YEAR, SEARCHES.search_ts) <= 2019 - AND DATE_PART(YEAR, SEARCHES.search_ts) >= 2010 + YEAR(SEARCHES.search_ts) <= 2019 AND YEAR(SEARCHES.search_ts) >= 2010 GROUP BY SEARCHES.search_engine ) diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql index 58cff3a8d..b702fd27c 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -1,64 +1,29 @@ -WITH _S4 AS ( +WITH _T0 AS ( SELECT - USERS.user_id AS USER_ID, - USERS.user_name AS USER_NAME - FROM USERS AS USERS -), _S0 AS ( - SELECT - SEARCHES.search_string AS SEARCH_STRING, - SEARCHES.search_user_id AS USER_ID + ANY_VALUE(SEARCHES.search_user_id) AS AGG_5 FROM SEARCHES AS SEARCHES -), _S1 AS ( - SELECT - EVENTS.ev_dt AS DATE_TIME, - EVENTS.ev_name AS NAME - FROM EVENTS AS EVENTS -), _T1 AS ( - SELECT - ERAS.er_end_year AS END_YEAR, - ERAS.er_name AS NAME, - ERAS.er_start_year AS START_YEAR - FROM ERAS AS ERAS -), _S2 AS ( - SELECT - _T1.END_YEAR AS END_YEAR, - _T1.START_YEAR AS START_YEAR - FROM _T1 AS _T1 - WHERE - _T1.NAME = 'Cold War' -), _S3 AS ( - SELECT - _S1.NAME AS NAME - FROM _S1 AS _S1 - JOIN _S2 AS _S2 - ON _S2.END_YEAR > DATE_PART(YEAR, _S1.DATE_TIME) - AND _S2.START_YEAR <= DATE_PART(YEAR, _S1.DATE_TIME) -), _T0 AS ( - SELECT - _S0.USER_ID AS USER_ID - FROM _S0 AS _S0 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S3 AS _S3 - WHERE - LOWER(_S0.SEARCH_STRING) LIKE CONCAT('%', LOWER(_S3.NAME), '%') - ) + JOIN EVENTS AS EVENTS + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) + JOIN ERAS AS ERAS + ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) + AND ERAS.er_name = 'Cold War' + AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) + GROUP BY + SEARCHES.search_id ), _S5 AS ( SELECT COUNT(*) AS N_COLD_WAR_SEARCHES, - _T0.USER_ID AS USER_ID_3_0_1 - FROM _T0 AS _T0 + AGG_5 + FROM _T0 GROUP BY - _T0.USER_ID + AGG_5 ) SELECT - _S4.USER_NAME AS user_name, + USERS.user_name, _S5.N_COLD_WAR_SEARCHES AS n_cold_war_searches -FROM _S4 AS _S4 +FROM USERS AS USERS JOIN _S5 AS _S5 - ON _S4.USER_ID = _S5.USER_ID_3_0_1 + ON USERS.user_id = _S5.AGG_5 ORDER BY N_COLD_WAR_SEARCHES DESC NULLS LAST, USER_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql index c2f64bfae..9ff814a80 100644 --- a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql @@ -1,52 +1,7 @@ -WITH _T0 AS ( - SELECT - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (ORDER BY CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) OVER () - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END - ELSE NULL - END AS EXPR_5, - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (ORDER BY c_acctbal DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(c_acctbal) OVER () - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN c_acctbal - ELSE NULL - END AS EXPR_6, - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (ORDER BY CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) OVER () - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END - ELSE NULL - END AS EXPR_7, - CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END AS NEGATIVE_ACCTBAL, - CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL - FROM TPCH.CUSTOMER -) SELECT - COUNT(NEGATIVE_ACCTBAL) AS n_red_acctbal, - COUNT(NON_NEGATIVE_ACCTBAL) AS n_black_acctbal, - AVG(EXPR_7) AS median_red_acctbal, - AVG(EXPR_5) AS median_black_acctbal, - AVG(EXPR_6) AS median_overall_acctbal -FROM _T0 + COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS n_red_acctbal, + COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS n_black_acctbal, + MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS median_red_acctbal, + MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS median_black_acctbal, + MEDIAN(c_acctbal) AS median_overall_acctbal +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/hour_minute_day_snowflake.sql b/tests/test_sql_refsols/hour_minute_day_snowflake.sql index 0677370ec..1bf52999b 100644 --- a/tests/test_sql_refsols/hour_minute_day_snowflake.sql +++ b/tests/test_sql_refsols/hour_minute_day_snowflake.sql @@ -1,8 +1,8 @@ SELECT SBTRANSACTION.sbtxid AS transaction_id, - DATE_PART(HOUR, SBTRANSACTION.sbtxdatetime) AS _expr0, - DATE_PART(MINUTE, SBTRANSACTION.sbtxdatetime) AS _expr1, - DATE_PART(SECOND, SBTRANSACTION.sbtxdatetime) AS _expr2 + HOUR(SBTRANSACTION.sbtxdatetime) AS _expr0, + MINUTE(SBTRANSACTION.sbtxdatetime) AS _expr1, + SECOND(SBTRANSACTION.sbtxdatetime) AS _expr2 FROM MAIN.SBTRANSACTION AS SBTRANSACTION JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql index 35daf5ec5..b4eef8618 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql @@ -1,59 +1,14 @@ -WITH _T1 AS ( +WITH _S3 AS ( SELECT - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (PARTITION BY c_nationkey ORDER BY CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) OVER (PARTITION BY c_nationkey) - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END - ELSE NULL - END AS EXPR_5, - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (PARTITION BY c_nationkey ORDER BY c_acctbal DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(c_acctbal) OVER (PARTITION BY c_nationkey) - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN c_acctbal - ELSE NULL - END AS EXPR_6, - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (PARTITION BY c_nationkey ORDER BY CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) OVER (PARTITION BY c_nationkey) - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END - ELSE NULL - END AS EXPR_7, - c_nationkey AS NATION_KEY, - CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END AS NEGATIVE_ACCTBAL, - CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL + MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_BLACK_ACCTBAL, + MEDIAN(c_acctbal) AS MEDIAN_OVERALL_ACCTBAL, + MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, + COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, + COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, + c_nationkey AS NATION_KEY FROM TPCH.CUSTOMER -), _S3 AS ( - SELECT - AVG(EXPR_5) AS MEDIAN_BLACK_ACCTBAL, - AVG(EXPR_6) AS MEDIAN_OVERALL_ACCTBAL, - AVG(EXPR_7) AS MEDIAN_RED_ACCTBAL, - COUNT(NON_NEGATIVE_ACCTBAL) AS N_BLACK_ACCTBAL, - COUNT(NEGATIVE_ACCTBAL) AS N_RED_ACCTBAL, - NATION_KEY - FROM _T1 GROUP BY - NATION_KEY + c_nationkey ) SELECT NATION.n_name AS nation_name, diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql index 88237aa63..7098834dd 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql @@ -1,61 +1,16 @@ -WITH _T0 AS ( +WITH _S3 AS ( SELECT - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER (PARTITION BY NATION.n_regionkey) - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END - ELSE NULL - END AS EXPR_5, - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey) - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN CUSTOMER.c_acctbal - ELSE NULL - END AS EXPR_6, - CASE - WHEN ABS( - ( - ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END DESC NULLS LAST) - 1.0 - ) - ( - ( - COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER (PARTITION BY NATION.n_regionkey) - 1.0 - ) / 2.0 - ) - ) < 1.0 - THEN CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END - ELSE NULL - END AS EXPR_7, - CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS NEGATIVE_ACCTBAL, - CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL, + MEDIAN(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_BLACK_ACCTBAL, + MEDIAN(CUSTOMER.c_acctbal) AS MEDIAN_OVERALL_ACCTBAL, + MEDIAN(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, + COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, + COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, NATION.n_regionkey AS REGION_KEY FROM TPCH.NATION AS NATION JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_nationkey = NATION.n_nationkey -), _S3 AS ( - SELECT - AVG(EXPR_5) AS MEDIAN_BLACK_ACCTBAL, - AVG(EXPR_6) AS MEDIAN_OVERALL_ACCTBAL, - AVG(EXPR_7) AS MEDIAN_RED_ACCTBAL, - COUNT(NON_NEGATIVE_ACCTBAL) AS N_BLACK_ACCTBAL, - COUNT(NEGATIVE_ACCTBAL) AS N_RED_ACCTBAL, - REGION_KEY - FROM _T0 GROUP BY - REGION_KEY + NATION.n_regionkey ) SELECT REGION.r_name AS region_name, diff --git a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql index 895fec72b..2235cea26 100644 --- a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql +++ b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql @@ -1,21 +1,29 @@ SELECT - 10 AS s1, - 20 AS s2, - 0 AS s3, - -200 AS s4, - NULL AS s5, - -0.34 AS s6, - CAST('2023-01-01 00:00:00' AS TIMESTAMP) AS s7, - '' AS s8, - NULL AS s9, - 20 AS l1, - 20 AS l2, - 20 AS l3, - 300 AS l4, - NULL AS l5, - 100.22 AS l6, - CAST('2025-01-01 00:00:00' AS TIMESTAMP) AS l7, - 'alphabet soup' AS l8, - NULL AS l9 + LEAST(20, 10) AS s1, + LEAST(20, 20) AS s2, + LEAST(20, 10, 0) AS s3, + LEAST(20, 10, 10, -1, -2, 100, -200) AS s4, + LEAST(20, 10, NULL, 100, 200) AS s5, + LEAST(20.22, 10.22, -0.34) AS s6, + LEAST( + CAST('2025-01-01 00:00:00' AS TIMESTAMP), + CAST('2024-01-01 00:00:00' AS TIMESTAMP), + CAST('2023-01-01 00:00:00' AS TIMESTAMP) + ) AS s7, + LEAST('', 'alphabet soup', 'Hello World') AS s8, + LEAST(NULL, 'alphabet soup', 'Hello World') AS s9, + GREATEST(20, 10) AS l1, + GREATEST(20, 20) AS l2, + GREATEST(20, 10, 0) AS l3, + GREATEST(20, 10, 10, -1, -2, 100, -200, 300) AS l4, + GREATEST(20, 10, NULL, 100, 200) AS l5, + GREATEST(20.22, 100.22, -0.34) AS l6, + GREATEST( + CAST('2025-01-01 00:00:00' AS TIMESTAMP), + CAST('2024-01-01 00:00:00' AS TIMESTAMP), + CAST('2023-01-01 00:00:00' AS TIMESTAMP) + ) AS l7, + GREATEST('', 'alphabet soup', 'Hello World') AS l8, + GREATEST(NULL, 'alphabet soup', 'Hello World') AS l9 FROM (VALUES (NULL)) AS _Q_0(_COL_0) diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql index 014150355..322cf643c 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql @@ -1,22 +1,7 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 2 @@ -24,4 +9,4 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql index 0a42c0a98..bb7216557 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql @@ -1,25 +1,10 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( DAYOFWEEK(sbtxdatetime) + 2 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql index cfcad95b7..22caf973a 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql @@ -1,22 +1,7 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 6 @@ -24,4 +9,4 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql index 93bce22e3..133633d57 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql @@ -1,25 +1,10 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( DAYOFWEEK(sbtxdatetime) + 6 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql index 8febb6c91..dbc69fff9 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql @@ -1,22 +1,7 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 1 @@ -24,4 +9,4 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql index 6ba3a95a6..0a566c60d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql @@ -1,25 +1,10 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( DAYOFWEEK(sbtxdatetime) + 1 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql index 70250b42c..2c8336149 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql @@ -1,23 +1,8 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, DAYOFWEEK(sbtxdatetime) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql index 2b11b3a3e..259778752 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql @@ -1,23 +1,8 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, DAYOFWEEK(sbtxdatetime) AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql index 7f0308a29..d017e2de6 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql @@ -1,22 +1,7 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 3 @@ -24,4 +9,4 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql index a04bcdf72..bd88dffad 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql @@ -1,25 +1,10 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( DAYOFWEEK(sbtxdatetime) + 3 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql index 5b37a199f..d5440d28c 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql @@ -1,22 +1,7 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 5 @@ -24,4 +9,4 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql index d4d665be2..adf1a6132 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql @@ -1,25 +1,10 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( DAYOFWEEK(sbtxdatetime) + 5 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql index ec373bccb..bef13245d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql @@ -1,22 +1,7 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 4 @@ -24,4 +9,4 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql index ce4ee8792..2a7bd5b6e 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql @@ -1,25 +1,10 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - CASE - WHEN DAYOFWEEK(sbtxdatetime) = 0 - THEN 'Sunday' - WHEN DAYOFWEEK(sbtxdatetime) = 1 - THEN 'Monday' - WHEN DAYOFWEEK(sbtxdatetime) = 2 - THEN 'Tuesday' - WHEN DAYOFWEEK(sbtxdatetime) = 3 - THEN 'Wednesday' - WHEN DAYOFWEEK(sbtxdatetime) = 4 - THEN 'Thursday' - WHEN DAYOFWEEK(sbtxdatetime) = 5 - THEN 'Friday' - WHEN DAYOFWEEK(sbtxdatetime) = 6 - THEN 'Saturday' - END AS dayname, + DAYNAME(sbtxdatetime) AS dayname, ( DAYOFWEEK(sbtxdatetime) + 4 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql index 68471d486..95c19c5b2 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -11,7 +11,7 @@ WITH _T3 AS ( JOIN MAIN.DEVICES AS DEVICES ON _S1.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) WHERE - DATE_PART(YEAR, _T3.CALENDAR_DAY) = 2024 + YEAR(_T3.CALENDAR_DAY) = 2024 AND _S1.CALENDAR_DAY < DATEADD(DAY, 5, CAST(_T3.CALENDAR_DAY AS TIMESTAMP)) AND _S1.CALENDAR_DAY >= _T3.CALENDAR_DAY GROUP BY diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index 833753d2b..b7e01f99b 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -13,23 +13,23 @@ WITH _S0 AS ( ), _S6 AS ( SELECT SUM(_S0.AGG_1) AS AGG_1, - DATE_PART(YEAR, _T4.RELEASE_DATE) AS RELEASE_YEAR + YEAR(_T4.RELEASE_DATE) AS RELEASE_YEAR FROM _S0 AS _S0 JOIN _T4 AS _T4 ON _S0.PRODUCT_ID = _T4._ID GROUP BY - DATE_PART(YEAR, _T4.RELEASE_DATE) + YEAR(_T4.RELEASE_DATE) ), _S7 AS ( SELECT COUNT(*) AS AGG_0, - DATE_PART(YEAR, _T6.RELEASE_DATE) AS RELEASE_YEAR + YEAR(_T6.RELEASE_DATE) AS RELEASE_YEAR FROM MAIN.DEVICES AS DEVICES JOIN _T4 AS _T6 ON DEVICES.de_product_id = _T6._ID JOIN MAIN.INCIDENTS AS INCIDENTS ON DEVICES.de_id = INCIDENTS.in_device_id GROUP BY - DATE_PART(YEAR, _T6.RELEASE_DATE) + YEAR(_T6.RELEASE_DATE) ) SELECT _S6.RELEASE_YEAR AS year, diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index 4e643a210..b92865a12 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -19,7 +19,7 @@ WITH _T4 AS ( JOIN _T8 AS _T8 ON DEVICES.de_production_country_id = _T8._ID AND _T8.NAME = 'CN' WHERE - DATE_PART(YEAR, _T7.CALENDAR_DAY) IN (2020, 2021) + YEAR(_T7.CALENDAR_DAY) IN (2020, 2021) GROUP BY _T7.CALENDAR_DAY ), _S15 AS ( @@ -34,36 +34,28 @@ WITH _T4 AS ( JOIN _T8 AS _T12 ON DEVICES.de_production_country_id = _T12._ID AND _T12.NAME = 'CN' WHERE - DATE_PART(YEAR, _T11.CALENDAR_DAY) IN (2020, 2021) + YEAR(_T11.CALENDAR_DAY) IN (2020, 2021) GROUP BY _T11.CALENDAR_DAY ), _T1 AS ( SELECT SUM(_S7.AGG_2) AS AGG_4, SUM(_S15.AGG_5) AS AGG_7, - DATE_PART(MONTH, _T4.CALENDAR_DAY) AS MONTH, - DATE_PART(YEAR, _T4.CALENDAR_DAY) AS YEAR + MONTH(_T4.CALENDAR_DAY) AS MONTH, + YEAR(_T4.CALENDAR_DAY) AS YEAR FROM _T4 AS _T4 LEFT JOIN _S7 AS _S7 ON _S7.CALENDAR_DAY = _T4.CALENDAR_DAY LEFT JOIN _S15 AS _S15 ON _S15.CALENDAR_DAY = _T4.CALENDAR_DAY WHERE - DATE_PART(YEAR, _T4.CALENDAR_DAY) IN (2020, 2021) + YEAR(_T4.CALENDAR_DAY) IN (2020, 2021) GROUP BY - DATE_PART(MONTH, _T4.CALENDAR_DAY), - DATE_PART(YEAR, _T4.CALENDAR_DAY) + MONTH(_T4.CALENDAR_DAY), + YEAR(_T4.CALENDAR_DAY) ) SELECT - CONCAT_WS( - '-', - YEAR, - CASE - WHEN LENGTH(MONTH) >= 2 - THEN SUBSTRING(MONTH, 1, 2) - ELSE SUBSTRING(CONCAT('00', MONTH), -2) - END - ) AS month, + CONCAT_WS('-', YEAR, LPAD(MONTH, 2, '0')) AS month, ROUND(( 1000000.0 * COALESCE(AGG_7, 0) ) / COALESCE(AGG_4, 0), 2) AS ir diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index e7f06aeba..46408f157 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -41,14 +41,14 @@ WITH _S14 AS ( SELECT SUM(_S7.AGG_3) AS AGG_5, SUM(_S13.AGG_6) AS AGG_8, - DATE_PART(YEAR, _T6.CALENDAR_DAY) AS YEAR + YEAR(_T6.CALENDAR_DAY) AS YEAR FROM _T6 AS _T6 LEFT JOIN _S7 AS _S7 ON _S7.CALENDAR_DAY = _T6.CALENDAR_DAY LEFT JOIN _S13 AS _S13 ON _S13.CALENDAR_DAY = _T6.CALENDAR_DAY GROUP BY - DATE_PART(YEAR, _T6.CALENDAR_DAY) + YEAR(_T6.CALENDAR_DAY) ), _T0 AS ( SELECT COALESCE(_S15.AGG_8, 0) AS BOUGHT, @@ -73,11 +73,11 @@ WITH _S14 AS ( ) / LAG(COALESCE(_S15.AGG_5, 0), 1) OVER (ORDER BY _S15.YEAR), 2 ) AS PCT_INCIDENT_CHANGE, - _S15.YEAR - DATE_PART(YEAR, _S14.RELEASE_DATE) AS YEARS_SINCE_RELEASE + _S15.YEAR - YEAR(_S14.RELEASE_DATE) AS YEARS_SINCE_RELEASE FROM _S14 AS _S14 CROSS JOIN _S15 AS _S15 WHERE - _S15.YEAR >= DATE_PART(YEAR, _S14.RELEASE_DATE) + _S15.YEAR >= YEAR(_S14.RELEASE_DATE) ) SELECT YEARS_SINCE_RELEASE AS years_since_release, diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index 71f35958f..024504b86 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -24,14 +24,14 @@ WITH _T5 AS ( SELECT SUM(_S3.AGG_2) AS AGG_4, SUM(_S7.AGG_5) AS AGG_7, - DATE_PART(YEAR, _T5.CALENDAR_DAY) AS YEAR + YEAR(_T5.CALENDAR_DAY) AS YEAR FROM _T5 AS _T5 LEFT JOIN _S3 AS _S3 ON _S3.CALENDAR_DAY = _T5.CALENDAR_DAY LEFT JOIN _S7 AS _S7 ON _S7.CALENDAR_DAY = _T5.CALENDAR_DAY GROUP BY - DATE_PART(YEAR, _T5.CALENDAR_DAY) + YEAR(_T5.CALENDAR_DAY) ), _T0 AS ( SELECT COALESCE(AGG_4, 0) AS BOUGHT, diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index 4516b3113..19fb56eb5 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -7,7 +7,7 @@ WITH _T2 AS ( DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) AS TXN_DAY FROM MAIN.SBTRANSACTION WHERE - DATE_PART(YEAR, sbtxdatetime) = 2023 + YEAR(sbtxdatetime) = 2023 ), _T0 AS ( SELECT DATE_TIME diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql index 5544af8d2..f5b4c3309 100644 --- a/tests/test_sql_refsols/tpch_q10_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -8,8 +8,7 @@ WITH _S3 AS ( JOIN TPCH.LINEITEM AS LINEITEM ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' WHERE - DATE_PART(QUARTER, ORDERS.o_orderdate) = 4 - AND DATE_PART(YEAR, ORDERS.o_orderdate) = 1993 + QUARTER(ORDERS.o_orderdate) = 4 AND YEAR(ORDERS.o_orderdate) = 1993 GROUP BY ORDERS.o_custkey ) diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql index 182452201..343adc0ca 100644 --- a/tests/test_sql_refsols/tpch_q12_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -7,12 +7,12 @@ WITH _T1 AS ( JOIN TPCH.ORDERS AS ORDERS ON LINEITEM.l_orderkey = ORDERS.o_orderkey WHERE - DATE_PART(YEAR, LINEITEM.l_receiptdate) = 1994 - AND LINEITEM.l_commitdate < LINEITEM.l_receiptdate + LINEITEM.l_commitdate < LINEITEM.l_receiptdate AND LINEITEM.l_commitdate > LINEITEM.l_shipdate AND ( LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' ) + AND YEAR(LINEITEM.l_receiptdate) = 1994 GROUP BY LINEITEM.l_shipmode ) diff --git a/tests/test_sql_refsols/tpch_q14_snowflake.sql b/tests/test_sql_refsols/tpch_q14_snowflake.sql index cb4c3f5e7..d70eee01b 100644 --- a/tests/test_sql_refsols/tpch_q14_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q14_snowflake.sql @@ -2,7 +2,7 @@ WITH _T0 AS ( SELECT SUM( IFF( - PART.p_type LIKE 'PROMO%', + STARTSWITH(PART.p_type, 'PROMO'), LINEITEM.l_extendedprice * ( 1 - LINEITEM.l_discount ), @@ -16,8 +16,7 @@ WITH _T0 AS ( JOIN TPCH.PART AS PART ON LINEITEM.l_partkey = PART.p_partkey WHERE - DATE_PART(MONTH, LINEITEM.l_shipdate) = 9 - AND DATE_PART(YEAR, LINEITEM.l_shipdate) = 1995 + MONTH(LINEITEM.l_shipdate) = 9 AND YEAR(LINEITEM.l_shipdate) = 1995 ) SELECT ( diff --git a/tests/test_sql_refsols/tpch_q16_snowflake.sql b/tests/test_sql_refsols/tpch_q16_snowflake.sql index 32970d456..6636f1674 100644 --- a/tests/test_sql_refsols/tpch_q16_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q16_snowflake.sql @@ -9,7 +9,7 @@ WITH _T0 AS ( ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey JOIN TPCH.PART AS PART - ON NOT PART.p_type LIKE 'MEDIUM POLISHED%%' + ON NOT STARTSWITH(PART.p_type, 'MEDIUM POLISHED%') AND PART.p_brand <> 'BRAND#45' AND PART.p_partkey = PARTSUPP.ps_partkey AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index 0922efb1b..014d9bce1 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -4,7 +4,7 @@ WITH _T5 AS ( l_partkey AS PART_KEY FROM TPCH.LINEITEM WHERE - DATE_PART(YEAR, l_shipdate) = 1994 + YEAR(l_shipdate) = 1994 GROUP BY l_partkey ), _T1 AS ( @@ -13,7 +13,7 @@ WITH _T5 AS ( PARTSUPP.ps_suppkey AS SUPPLIER_KEY FROM TPCH.PARTSUPP AS PARTSUPP JOIN TPCH.PART AS PART - ON PART.p_name LIKE 'forest%' AND PART.p_partkey = PARTSUPP.ps_partkey + ON PART.p_partkey = PARTSUPP.ps_partkey AND STARTSWITH(PART.p_name, 'forest') JOIN _T5 AS _T5 ON PART.p_partkey = _T5.PART_KEY WHERE diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql index 7fbd28cc7..ccdc71abf 100644 --- a/tests/test_sql_refsols/tpch_q21_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -15,104 +15,175 @@ WITH _S0 AS ( FROM _T2 AS _T2 WHERE _T2.NAME = 'SAUDI ARABIA' -), _S8 AS ( +), _S12 AS ( SELECT _S0.KEY AS KEY, _S0.NAME AS NAME FROM _S0 AS _S0 JOIN _S1 AS _S1 ON _S0.NATION_KEY = _S1.KEY -), _T4 AS ( +), _T7 AS ( SELECT LINEITEM.l_commitdate AS COMMIT_DATE, + LINEITEM.l_linenumber AS LINE_NUMBER, LINEITEM.l_orderkey AS ORDER_KEY, LINEITEM.l_receiptdate AS RECEIPT_DATE, LINEITEM.l_suppkey AS SUPPLIER_KEY FROM TPCH.LINEITEM AS LINEITEM -), _S4 AS ( +), _S2 AS ( SELECT - _T4.SUPPLIER_KEY AS ORIGINAL_KEY, - _T4.ORDER_KEY AS ORDER_KEY, - _T4.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _T4 AS _T4 + _T7.SUPPLIER_KEY AS ORIGINAL_KEY, + _T7.LINE_NUMBER AS LINE_NUMBER, + _T7.ORDER_KEY AS ORDER_KEY, + _T7.SUPPLIER_KEY AS SUPPLIER_KEY + FROM _T7 AS _T7 WHERE - _T4.COMMIT_DATE < _T4.RECEIPT_DATE -), _T5 AS ( + _T7.COMMIT_DATE < _T7.RECEIPT_DATE +), _S3 AS ( SELECT ORDERS.o_orderkey AS KEY, ORDERS.o_orderstatus AS ORDER_STATUS FROM TPCH.ORDERS AS ORDERS -), _S5 AS ( - SELECT - _T5.KEY AS KEY - FROM _T5 AS _T5 - WHERE - _T5.ORDER_STATUS = 'F' -), _S3 AS ( +), _S4 AS ( SELECT - _S5.KEY AS KEY, - _S4.ORIGINAL_KEY AS ORIGINAL_KEY, - _S4.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _S4 AS _S4 - JOIN _S5 AS _S5 - ON _S4.ORDER_KEY = _S5.KEY -), _T6 AS ( + _S3.KEY AS KEY, + _S2.LINE_NUMBER AS LINE_NUMBER, + _S2.ORDER_KEY AS ORDER_KEY, + _S3.ORDER_STATUS AS ORDER_STATUS, + _S2.ORIGINAL_KEY AS ORIGINAL_KEY, + _S2.SUPPLIER_KEY AS SUPPLIER_KEY + FROM _S2 AS _S2 + JOIN _S3 AS _S3 + ON _S2.ORDER_KEY = _S3.KEY +), _S5 AS ( SELECT LINEITEM.l_orderkey AS ORDER_KEY, LINEITEM.l_suppkey AS SUPPLIER_KEY FROM TPCH.LINEITEM AS LINEITEM -), _S6 AS ( +), _T6 AS ( SELECT - _T6.ORDER_KEY AS ORDER_KEY + _S4.ORDER_KEY AS ORDER_KEY, + _S4.SUPPLIER_KEY AS SUPPLIER_KEY, + _S5.SUPPLIER_KEY AS SUPPLIER_KEY_19, + _S4.KEY AS KEY, + _S4.LINE_NUMBER AS LINE_NUMBER, + _S4.ORDER_STATUS AS ORDER_STATUS, + _S4.ORIGINAL_KEY AS ORIGINAL_KEY + FROM _S4 AS _S4 + JOIN _S5 AS _S5 + ON _S4.KEY = _S5.ORDER_KEY +), _T5 AS ( + SELECT + _T6.KEY AS KEY, + _T6.LINE_NUMBER AS LINE_NUMBER, + _T6.ORDER_KEY AS ORDER_KEY, + _T6.ORDER_STATUS AS ORDER_STATUS, + _T6.SUPPLIER_KEY AS SUPPLIER_KEY FROM _T6 AS _T6 WHERE - _S3.ORIGINAL_KEY <> _T6.SUPPLIER_KEY -), _S2 AS ( + _T6.ORIGINAL_KEY <> _T6.SUPPLIER_KEY_19 +), _T4 AS ( SELECT - _S3.KEY AS KEY, - _S3.ORIGINAL_KEY AS ORIGINAL_KEY, - _S3.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _S3 AS _S3 + ANY_VALUE(_T5.LINE_NUMBER) AS AGG_13, + ANY_VALUE(_T5.ORDER_KEY) AS AGG_14, + ANY_VALUE(_T5.SUPPLIER_KEY) AS AGG_24, + ANY_VALUE(_T5.KEY) AS AGG_3, + ANY_VALUE(_T5.ORDER_STATUS) AS AGG_6 + FROM _T5 AS _T5 + GROUP BY + _T5.KEY, + _T5.LINE_NUMBER, + _T5.ORDER_KEY +), _S10 AS ( + SELECT + _T4.AGG_13 AS AGG_13, + _T4.AGG_14 AS AGG_14, + _T4.AGG_24 AS AGG_24, + _T4.AGG_3 AS AGG_3 + FROM _T4 AS _T4 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S6 AS _S6 - WHERE - _S3.KEY = _S6.ORDER_KEY - ) + _T4.AGG_6 = 'F' +), _S6 AS ( + SELECT + _T9.SUPPLIER_KEY AS ORIGINAL_KEY, + _T9.LINE_NUMBER AS LINE_NUMBER, + _T9.ORDER_KEY AS ORDER_KEY + FROM _T7 AS _T9 + WHERE + _T9.COMMIT_DATE < _T9.RECEIPT_DATE ), _S7 AS ( SELECT - _T7.ORDER_KEY AS ORDER_KEY - FROM _T4 AS _T7 + ORDERS.o_orderkey AS KEY + FROM TPCH.ORDERS AS ORDERS +), _S8 AS ( + SELECT + _S7.KEY AS KEY, + _S6.LINE_NUMBER AS LINE_NUMBER, + _S6.ORDER_KEY AS ORDER_KEY, + _S6.ORIGINAL_KEY AS ORIGINAL_KEY + FROM _S6 AS _S6 + JOIN _S7 AS _S7 + ON _S6.ORDER_KEY = _S7.KEY +), _T10 AS ( + SELECT + LINEITEM.l_commitdate AS COMMIT_DATE, + LINEITEM.l_orderkey AS ORDER_KEY, + LINEITEM.l_receiptdate AS RECEIPT_DATE, + LINEITEM.l_suppkey AS SUPPLIER_KEY + FROM TPCH.LINEITEM AS LINEITEM +), _S9 AS ( + SELECT + _T10.ORDER_KEY AS ORDER_KEY, + _T10.SUPPLIER_KEY AS SUPPLIER_KEY + FROM _T10 AS _T10 + WHERE + _T10.COMMIT_DATE < _T10.RECEIPT_DATE +), _T8 AS ( + SELECT + _S8.ORDER_KEY AS ORDER_KEY, + _S9.SUPPLIER_KEY AS SUPPLIER_KEY_36, + _S8.KEY AS KEY, + _S8.LINE_NUMBER AS LINE_NUMBER, + _S8.ORIGINAL_KEY AS ORIGINAL_KEY + FROM _S8 AS _S8 + JOIN _S9 AS _S9 + ON _S8.KEY = _S9.ORDER_KEY +), _S11 AS ( + SELECT + _T8.KEY AS KEY, + _T8.LINE_NUMBER AS LINE_NUMBER, + _T8.ORDER_KEY AS ORDER_KEY + FROM _T8 AS _T8 WHERE - _S2.ORIGINAL_KEY <> _T7.SUPPLIER_KEY AND _T7.COMMIT_DATE < _T7.RECEIPT_DATE + _T8.ORIGINAL_KEY <> _T8.SUPPLIER_KEY_36 ), _T3 AS ( SELECT - _S2.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _S2 AS _S2 + _S10.AGG_24 AS AGG_24 + FROM _S10 AS _S10 WHERE NOT EXISTS( SELECT 1 AS "1" - FROM _S7 AS _S7 + FROM _S11 AS _S11 WHERE - _S2.KEY = _S7.ORDER_KEY + _S10.AGG_13 = _S11.LINE_NUMBER + AND _S10.AGG_14 = _S11.ORDER_KEY + AND _S10.AGG_3 = _S11.KEY ) -), _S9 AS ( +), _S13 AS ( SELECT COUNT(*) AS AGG_0, - _T3.SUPPLIER_KEY AS SUPPLIER_KEY + _T3.AGG_24 AS AGG_24 FROM _T3 AS _T3 GROUP BY - _T3.SUPPLIER_KEY + _T3.AGG_24 ), _T1 AS ( SELECT - _S9.AGG_0 AS AGG_0, - _S8.NAME AS NAME - FROM _S8 AS _S8 - LEFT JOIN _S9 AS _S9 - ON _S8.KEY = _S9.SUPPLIER_KEY + _S13.AGG_0 AS AGG_0, + _S12.NAME AS NAME + FROM _S12 AS _S12 + LEFT JOIN _S13 AS _S13 + ON _S12.KEY = _S13.AGG_24 ), _T0 AS ( SELECT COALESCE(_T1.AGG_0, 0) AS NUMWAIT, diff --git a/tests/test_sql_refsols/tpch_q2_snowflake.sql b/tests/test_sql_refsols/tpch_q2_snowflake.sql index 860d100ad..809d3af36 100644 --- a/tests/test_sql_refsols/tpch_q2_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q2_snowflake.sql @@ -18,7 +18,7 @@ WITH _T1 AS ( JOIN TPCH.REGION AS REGION ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'EUROPE' WHERE - PART.p_size = 15 AND PART.p_type LIKE '%BRASS' + ENDSWITH(PART.p_type, 'BRASS') AND PART.p_size = 15 QUALIFY RANK() OVER (PARTITION BY PARTSUPP.ps_partkey ORDER BY PARTSUPP.ps_supplycost) = 1 ) diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql index 647bb3411..0814017b8 100644 --- a/tests/test_sql_refsols/tpch_q4_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -10,7 +10,7 @@ WITH _T2 AS ( _T2.ORDER_PRIORITY AS ORDER_PRIORITY FROM _T2 AS _T2 WHERE - DATE_PART(QUARTER, _T2.ORDER_DATE) = 3 AND DATE_PART(YEAR, _T2.ORDER_DATE) = 1993 + QUARTER(_T2.ORDER_DATE) = 3 AND YEAR(_T2.ORDER_DATE) = 1993 ), _T3 AS ( SELECT LINEITEM.l_commitdate AS COMMIT_DATE, diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index f9ff27c4a..157191b70 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -9,7 +9,7 @@ WITH _S1 AS ( 1 - LINEITEM.l_discount )) AS AGG_0, _S7.NAME AS CUST_NATION, - DATE_PART(YEAR, LINEITEM.l_shipdate) AS L_YEAR, + YEAR(LINEITEM.l_shipdate) AS L_YEAR, _S1.NAME AS SUPP_NATION FROM TPCH.LINEITEM AS LINEITEM JOIN TPCH.SUPPLIER AS SUPPLIER @@ -23,7 +23,7 @@ WITH _S1 AS ( JOIN _S1 AS _S7 ON CUSTOMER.c_nationkey = _S7.KEY WHERE - DATE_PART(YEAR, LINEITEM.l_shipdate) IN (1995, 1996) + YEAR(LINEITEM.l_shipdate) IN (1995, 1996) AND ( _S1.NAME = 'FRANCE' OR _S1.NAME = 'GERMANY' ) @@ -38,7 +38,7 @@ WITH _S1 AS ( ) GROUP BY _S7.NAME, - DATE_PART(YEAR, LINEITEM.l_shipdate), + YEAR(LINEITEM.l_shipdate), _S1.NAME ) SELECT diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql index 3b6c82727..a7154a53a 100644 --- a/tests/test_sql_refsols/tpch_q8_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -12,13 +12,13 @@ WITH _T0 AS ( SUM(LINEITEM.l_extendedprice * ( 1 - LINEITEM.l_discount )) AS AGG_1, - DATE_PART(YEAR, ORDERS.o_orderdate) AS O_YEAR + YEAR(ORDERS.o_orderdate) AS O_YEAR FROM TPCH.LINEITEM AS LINEITEM JOIN TPCH.PART AS PART ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' JOIN TPCH.ORDERS AS ORDERS - ON DATE_PART(YEAR, ORDERS.o_orderdate) IN (1995, 1996) - AND LINEITEM.l_orderkey = ORDERS.o_orderkey + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + AND YEAR(ORDERS.o_orderdate) IN (1995, 1996) JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_custkey = ORDERS.o_custkey JOIN TPCH.NATION AS NATION @@ -30,7 +30,7 @@ WITH _T0 AS ( JOIN TPCH.NATION AS NATION_2 ON NATION_2.n_nationkey = SUPPLIER.s_nationkey GROUP BY - DATE_PART(YEAR, ORDERS.o_orderdate) + YEAR(ORDERS.o_orderdate) ) SELECT O_YEAR, diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index c655aeaad..ea59f4dec 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -6,10 +6,10 @@ WITH _T1 AS ( ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity ) AS AGG_0, NATION.n_name AS NATION_NAME, - DATE_PART(YEAR, ORDERS.o_orderdate) AS O_YEAR + YEAR(ORDERS.o_orderdate) AS O_YEAR FROM TPCH.LINEITEM AS LINEITEM JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_name LIKE '%green%' + ON CONTAINS(PART.p_name, 'green') AND LINEITEM.l_partkey = PART.p_partkey JOIN TPCH.SUPPLIER AS SUPPLIER ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey JOIN TPCH.NATION AS NATION @@ -21,7 +21,7 @@ WITH _T1 AS ( AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey GROUP BY NATION.n_name, - DATE_PART(YEAR, ORDERS.o_orderdate) + YEAR(ORDERS.o_orderdate) ) SELECT NATION_NAME AS NATION, diff --git a/tests/test_sql_refsols/week_offset_snowflake.sql b/tests/test_sql_refsols/week_offset_snowflake.sql index 0d3cf45e1..35d023659 100644 --- a/tests/test_sql_refsols/week_offset_snowflake.sql +++ b/tests/test_sql_refsols/week_offset_snowflake.sql @@ -10,4 +10,4 @@ SELECT DATEADD(WEEK, 2, DATEADD(YEAR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj8 FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 From f5c80b4fcf7285f5a4a25a6adc4e19faa28cf3f8 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 7 Jul 2025 13:39:35 -0700 Subject: [PATCH 08/46] [run CI] [run SF] merge main and re-run tests --- .../cumulative_stock_analysis_snowflake.sql | 70 ++++--- tests/test_sql_refsols/datediff_snowflake.sql | 14 +- .../datetime_sampler_snowflake.sql | 14 +- .../defog_broker_adv10_snowflake.sql | 12 +- .../defog_broker_adv11_snowflake.sql | 56 ++---- .../defog_broker_adv14_snowflake.sql | 2 +- .../defog_broker_adv15_snowflake.sql | 21 +-- .../defog_broker_adv16_snowflake.sql | 23 ++- .../defog_broker_adv1_snowflake.sql | 8 +- .../defog_broker_adv2_snowflake.sql | 8 +- .../defog_broker_adv3_snowflake.sql | 14 +- .../defog_broker_adv4_snowflake.sql | 10 +- .../defog_broker_adv5_snowflake.sql | 47 ++--- .../defog_broker_adv6_snowflake.sql | 14 +- .../defog_broker_adv7_snowflake.sql | 58 +++--- .../defog_broker_adv8_snowflake.sql | 58 ++---- .../defog_broker_adv9_snowflake.sql | 36 ++-- .../defog_broker_basic10_snowflake.sql | 29 ++- .../defog_broker_basic1_snowflake.sql | 28 ++- .../defog_broker_basic2_snowflake.sql | 28 ++- .../defog_broker_basic3_snowflake.sql | 12 +- .../defog_broker_basic4_snowflake.sql | 40 ++-- .../defog_broker_basic5_snowflake.sql | 33 ++-- .../defog_broker_basic6_snowflake.sql | 33 ++-- .../defog_broker_basic7_snowflake.sql | 16 +- .../defog_broker_basic8_snowflake.sql | 16 +- .../defog_broker_basic9_snowflake.sql | 29 ++- .../defog_broker_gen1_snowflake.sql | 2 +- .../defog_broker_gen3_snowflake.sql | 12 +- .../defog_broker_gen4_snowflake.sql | 8 +- .../defog_broker_gen5_snowflake.sql | 4 +- .../defog_dealership_adv10_snowflake.sql | 19 +- .../defog_dealership_adv11_snowflake.sql | 19 +- .../defog_dealership_adv12_snowflake.sql | 60 ++---- .../defog_dealership_adv14_snowflake.sql | 2 +- .../defog_dealership_adv15_snowflake.sql | 6 +- .../defog_dealership_adv16_snowflake.sql | 4 +- .../defog_dealership_adv1_snowflake.sql | 34 ++-- .../defog_dealership_adv2_snowflake.sql | 2 +- .../defog_dealership_adv3_snowflake.sql | 4 +- .../defog_dealership_adv4_snowflake.sql | 10 +- .../defog_dealership_adv5_snowflake.sql | 30 +-- .../defog_dealership_adv6_snowflake.sql | 6 +- .../defog_dealership_adv7_snowflake.sql | 4 +- .../defog_dealership_basic10_snowflake.sql | 8 +- .../defog_dealership_basic1_snowflake.sql | 35 ++-- .../defog_dealership_basic2_snowflake.sql | 26 +-- .../defog_dealership_basic3_snowflake.sql | 46 ++--- .../defog_dealership_basic4_snowflake.sql | 32 ++-- .../defog_dealership_basic5_snowflake.sql | 18 +- .../defog_dealership_basic6_snowflake.sql | 23 +-- .../defog_dealership_basic7_snowflake.sql | 19 +- .../defog_dealership_basic8_snowflake.sql | 8 +- .../defog_dealership_basic9_snowflake.sql | 16 +- .../defog_dealership_gen1_snowflake.sql | 2 +- .../defog_dealership_gen3_snowflake.sql | 25 +-- .../defog_dealership_gen4_snowflake.sql | 26 +-- .../defog_dealership_gen5_snowflake.sql | 3 +- .../defog_ewallet_adv11_snowflake.sql | 15 +- .../defog_ewallet_adv12_snowflake.sql | 4 +- .../defog_ewallet_adv13_snowflake.sql | 3 +- .../defog_ewallet_adv14_snowflake.sql | 14 +- .../defog_ewallet_adv15_snowflake.sql | 6 +- .../defog_ewallet_adv1_snowflake.sql | 15 +- .../defog_ewallet_adv2_snowflake.sql | 37 ++-- .../defog_ewallet_adv4_snowflake.sql | 24 ++- .../defog_ewallet_adv5_snowflake.sql | 2 +- .../defog_ewallet_adv8_snowflake.sql | 6 +- .../defog_ewallet_basic10_snowflake.sql | 8 +- .../defog_ewallet_basic1_snowflake.sql | 2 +- .../defog_ewallet_basic2_snowflake.sql | 30 ++- .../defog_ewallet_basic3_snowflake.sql | 34 ++-- .../defog_ewallet_basic4_snowflake.sql | 34 ++-- .../defog_ewallet_basic5_snowflake.sql | 29 ++- .../defog_ewallet_basic6_snowflake.sql | 16 +- .../defog_ewallet_basic7_snowflake.sql | 16 +- .../defog_ewallet_basic8_snowflake.sql | 8 +- .../defog_ewallet_basic9_snowflake.sql | 26 +-- .../defog_ewallet_gen2_snowflake.sql | 4 +- .../defog_ewallet_gen3_snowflake.sql | 4 +- .../defog_ewallet_gen4_snowflake.sql | 15 +- .../defog_ewallet_gen5_snowflake.sql | 56 ++---- .../epoch_culture_events_info_snowflake.sql | 24 +-- .../epoch_event_gap_per_era_snowflake.sql | 30 ++- .../epoch_events_per_season_snowflake.sql | 24 +-- .../epoch_first_event_per_era_snowflake.sql | 16 +- .../epoch_intra_season_searches_snowflake.sql | 104 +++++------ ...opular_search_engine_per_tod_snowflake.sql | 20 +- ...ost_popular_topic_per_region_snowflake.sql | 18 +- .../epoch_num_predawn_cold_war_snowflake.sql | 77 +++----- ..._search_other_users_per_user_snowflake.sql | 45 +++-- ...ping_event_searches_per_user_snowflake.sql | 47 +++-- .../epoch_pct_searches_per_tod_snowflake.sql | 22 +-- .../epoch_search_results_by_tod_snowflake.sql | 26 +-- ...epoch_summer_events_per_type_snowflake.sql | 8 +- ...poch_unique_users_per_engine_snowflake.sql | 10 +- ...users_most_cold_war_searches_snowflake.sql | 67 ++----- .../floor_and_ceil_2_snowflake.sql | 9 + .../floor_and_ceil_snowflake.sql | 11 ++ .../hour_minute_day_snowflake.sql | 8 +- .../nation_acctbal_breakdown_snowflake.sql | 14 +- .../quantile_test_1_snowflake.sql | 15 ++ .../quantile_test_2_snowflake.sql | 96 ++++++++++ .../region_acctbal_breakdown_snowflake.sql | 16 +- .../simple_var_std_snowflake.sql | 10 +- ...tion_week_sampler_friday_one_snowflake.sql | 3 +- ...ion_week_sampler_friday_zero_snowflake.sql | 3 +- ...tion_week_sampler_monday_one_snowflake.sql | 3 +- ...ion_week_sampler_monday_zero_snowflake.sql | 3 +- ...on_week_sampler_saturday_one_snowflake.sql | 3 +- ...n_week_sampler_saturday_zero_snowflake.sql | 3 +- ...tion_week_sampler_sunday_one_snowflake.sql | 3 +- ...ion_week_sampler_sunday_zero_snowflake.sql | 3 +- ...on_week_sampler_thursday_one_snowflake.sql | 3 +- ...n_week_sampler_thursday_zero_snowflake.sql | 3 +- ...ion_week_sampler_tuesday_one_snowflake.sql | 3 +- ...on_week_sampler_tuesday_zero_snowflake.sql | 3 +- ...n_week_sampler_wednesday_one_snowflake.sql | 3 +- ..._week_sampler_wednesday_zero_snowflake.sql | 3 +- ...tery_failure_rates_anomalies_snowflake.sql | 41 ++--- ...ph_country_cartesian_oddball_snowflake.sql | 2 +- ...country_combination_analysis_snowflake.sql | 51 +++--- ...untry_incident_rate_analysis_snowflake.sql | 58 +++--- ...percentages_sun_set_by_error_snowflake.sql | 14 +- ...e_sun_set_by_factory_country_snowflake.sql | 18 +- ...nograph_global_incident_rate_snowflake.sql | 6 +- ...hnograph_hot_purchase_window_snowflake.sql | 34 ++-- ...ncident_rate_by_release_year_snowflake.sql | 28 +-- ...raph_incident_rate_per_brand_snowflake.sql | 30 ++- ...ograph_monthly_incident_rate_snowflake.sql | 73 ++++---- ...aph_most_unreliable_products_snowflake.sql | 19 +- ...incident_rate_goldcopperstar_snowflake.sql | 65 +++---- ...lative_incident_rate_overall_snowflake.sql | 56 +++--- .../time_threshold_reached_snowflake.sql | 18 +- tests/test_sql_refsols/tpch_q10_snowflake.sql | 12 +- tests/test_sql_refsols/tpch_q11_snowflake.sql | 41 ++--- tests/test_sql_refsols/tpch_q12_snowflake.sql | 37 ++-- tests/test_sql_refsols/tpch_q13_snowflake.sql | 25 +-- tests/test_sql_refsols/tpch_q14_snowflake.sql | 45 +++-- tests/test_sql_refsols/tpch_q15_snowflake.sql | 64 +++---- tests/test_sql_refsols/tpch_q16_snowflake.sql | 42 ++--- tests/test_sql_refsols/tpch_q17_snowflake.sql | 10 +- tests/test_sql_refsols/tpch_q18_snowflake.sql | 12 +- tests/test_sql_refsols/tpch_q19_snowflake.sql | 99 ++++++---- tests/test_sql_refsols/tpch_q1_snowflake.sql | 58 +++--- tests/test_sql_refsols/tpch_q20_snowflake.sql | 34 ++-- tests/test_sql_refsols/tpch_q21_snowflake.sql | 171 ++++++------------ tests/test_sql_refsols/tpch_q22_snowflake.sql | 38 ++-- tests/test_sql_refsols/tpch_q2_snowflake.sql | 28 +-- tests/test_sql_refsols/tpch_q3_snowflake.sql | 44 ++--- tests/test_sql_refsols/tpch_q4_snowflake.sql | 60 ++---- tests/test_sql_refsols/tpch_q5_snowflake.sql | 45 ++--- tests/test_sql_refsols/tpch_q6_snowflake.sql | 21 +-- tests/test_sql_refsols/tpch_q7_snowflake.sql | 76 ++++---- tests/test_sql_refsols/tpch_q8_snowflake.sql | 56 +++--- tests/test_sql_refsols/tpch_q9_snowflake.sql | 50 +++-- .../week_offset_snowflake.sql | 3 +- 157 files changed, 1774 insertions(+), 2219 deletions(-) create mode 100644 tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql create mode 100644 tests/test_sql_refsols/floor_and_ceil_snowflake.sql create mode 100644 tests/test_sql_refsols/quantile_test_1_snowflake.sql create mode 100644 tests/test_sql_refsols/quantile_test_2_snowflake.sql diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index 1ae1e7aea..09d6a0a0d 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -1,32 +1,42 @@ +WITH _T0 AS ( + SELECT + COUNT( + CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END + ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS N_BUYS_WITHIN_DAY, + ROUND( + ( + 100.0 * SUM(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS PCT_APPLE_TXNS, + ROUND( + AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS ROLLING_AVG_AMOUNT, + SUM( + IFF( + SBTRANSACTION.sbtxtype = 'buy', + SBTRANSACTION.sbtxshares, + 0 - SBTRANSACTION.sbtxshares + ) + ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS SHARE_CHANGE, + COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS TXN_WITHIN_DAY, + SBTRANSACTION.sbtxdatetime AS SBTXDATETIME + FROM MAIN.SBTRANSACTION AS SBTRANSACTION + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + WHERE + DATE_PART(MONTH, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) = 4 + AND DATE_PART(YEAR, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) = 2023 + AND SBTRANSACTION.sbtxstatus = 'success' +) SELECT - SBTRANSACTION.sbtxdatetime AS date_time, - COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, - COUNT( - CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END - ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, - ROUND( - ( - 100.0 * SUM(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), - 2 - ) AS pct_apple_txns, - SUM( - IFF( - SBTRANSACTION.sbtxtype = 'buy', - SBTRANSACTION.sbtxshares, - 0 - SBTRANSACTION.sbtxshares - ) - ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, - ROUND( - AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), - 2 - ) AS rolling_avg_amount -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid -WHERE - DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) = 4 - AND DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) = 2023 - AND SBTRANSACTION.sbtxstatus = 'success' + SBTXDATETIME AS date_time, + TXN_WITHIN_DAY AS txn_within_day, + N_BUYS_WITHIN_DAY AS n_buys_within_day, + PCT_APPLE_TXNS AS pct_apple_txns, + SHARE_CHANGE AS share_change, + ROLLING_AVG_AMOUNT AS rolling_avg_amount +FROM _T0 ORDER BY - DATE_TIME NULLS FIRST + SBTXDATETIME NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql index b0729d4c1..2bfc1a59f 100644 --- a/tests/test_sql_refsols/datediff_snowflake.sql +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -2,15 +2,15 @@ SELECT sbtxdatetime AS x, CAST('2025-05-02 11:00:00' AS TIMESTAMP) AS y1, CAST('2023-04-03 13:16:30' AS TIMESTAMP) AS y, - DATEDIFF(YEAR, sbtxdatetime, CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS years_diff, - DATEDIFF(MONTH, sbtxdatetime, CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS months_diff, - DATEDIFF(DAY, sbtxdatetime, CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS days_diff, - DATEDIFF(HOUR, sbtxdatetime, CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS hours_diff, - DATEDIFF(MINUTE, sbtxdatetime, CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS minutes_diff, - DATEDIFF(SECOND, sbtxdatetime, CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS seconds_diff + DATEDIFF(YEAR, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS years_diff, + DATEDIFF(MONTH, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS months_diff, + DATEDIFF(DAY, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS days_diff, + DATEDIFF(HOUR, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS hours_diff, + DATEDIFF(MINUTE, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS minutes_diff, + DATEDIFF(SECOND, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS seconds_diff FROM MAIN.SBTRANSACTION WHERE - DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 ORDER BY YEARS_DIFF NULLS FIRST LIMIT 30 diff --git a/tests/test_sql_refsols/datetime_sampler_snowflake.sql b/tests/test_sql_refsols/datetime_sampler_snowflake.sql index aee79b9e1..9cc19261e 100644 --- a/tests/test_sql_refsols/datetime_sampler_snowflake.sql +++ b/tests/test_sql_refsols/datetime_sampler_snowflake.sql @@ -130,26 +130,26 @@ SELECT DATE_PART(SECOND, CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr75, DATE_PART(SECOND, CAST('1999-03-14' AS TIMESTAMP)) AS _expr76, DATEDIFF(YEAR, CAST('2018-02-14 12:41:06' AS TIMESTAMP), CURRENT_TIMESTAMP()) AS _expr77, - DATEDIFF(YEAR, o_orderdate, CAST('2022-11-24' AS DATE)) AS _expr78, + DATEDIFF(YEAR, CAST(o_orderdate AS DATETIME), CAST('2022-11-24' AS DATE)) AS _expr78, DATEDIFF(MONTH, CAST('2005-06-30' AS DATE), CAST('1999-03-14' AS TIMESTAMP)) AS _expr79, DATEDIFF(MONTH, CAST('2006-05-01 12:00:00' AS TIMESTAMP), CAST('2022-11-24' AS DATE)) AS _expr80, DATEDIFF(DAY, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()) AS _expr81, DATEDIFF(DAY, CAST('1999-03-14' AS TIMESTAMP), CURRENT_TIMESTAMP()) AS _expr82, DATEDIFF(HOUR, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()) AS _expr83, - DATEDIFF(HOUR, CAST('2005-06-30' AS DATE), o_orderdate) AS _expr84, + DATEDIFF(HOUR, CAST('2005-06-30' AS DATE), CAST(o_orderdate AS DATETIME)) AS _expr84, DATEDIFF(MINUTE, CURRENT_TIMESTAMP(), CAST('2006-05-01 12:00:00' AS TIMESTAMP)) AS _expr85, - DATEDIFF(MINUTE, o_orderdate, CAST('2021-01-01 07:35:00' AS TIMESTAMP)) AS _expr86, + DATEDIFF(MINUTE, CAST(o_orderdate AS DATETIME), CAST('2021-01-01 07:35:00' AS TIMESTAMP)) AS _expr86, DATEDIFF(SECOND, CAST('2022-11-24' AS DATE), CAST('2021-01-01 07:35:00' AS TIMESTAMP)) AS _expr87, DATEDIFF(SECOND, CAST('2005-06-30' AS DATE), CAST('2018-02-14 12:41:06' AS TIMESTAMP)) AS _expr88, - DATEDIFF(YEAR, o_orderdate, CAST('2006-05-01 12:00:00' AS TIMESTAMP)) AS _expr89, - DATEDIFF(YEAR, CAST('2018-02-14 12:41:06' AS TIMESTAMP), o_orderdate) AS _expr90, - DATEDIFF(MONTH, o_orderdate, CAST('2019-07-04 11:30:00' AS TIMESTAMP)) AS _expr91, + DATEDIFF(YEAR, CAST(o_orderdate AS DATETIME), CAST('2006-05-01 12:00:00' AS TIMESTAMP)) AS _expr89, + DATEDIFF(YEAR, CAST('2018-02-14 12:41:06' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS _expr90, + DATEDIFF(MONTH, CAST(o_orderdate AS DATETIME), CAST('2019-07-04 11:30:00' AS TIMESTAMP)) AS _expr91, DATEDIFF( MONTH, CAST('2019-07-04 11:30:00' AS TIMESTAMP), CAST('2018-02-14 12:41:06' AS TIMESTAMP) ) AS _expr92, - DATEDIFF(DAY, CURRENT_TIMESTAMP(), o_orderdate) AS _expr93, + DATEDIFF(DAY, CURRENT_TIMESTAMP(), CAST(o_orderdate AS DATETIME)) AS _expr93, DATEDIFF(DAY, CAST('2019-07-04 11:30:00' AS TIMESTAMP), CURRENT_TIMESTAMP()) AS _expr94, DATEDIFF(HOUR, CAST('2022-11-24' AS DATE), CAST('1999-03-14' AS TIMESTAMP)) AS _expr95, DATEDIFF( diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql index 848a31758..0069d8aa2 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -1,11 +1,11 @@ WITH _S3 AS ( SELECT - COUNT(*) AS AGG_0, - SBCUSTOMER.sbcustid AS _ID + COUNT(*) AS N_ROWS, + SBCUSTOMER.sbcustid AS SBCUSTID FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate) = DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) - AND DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate) = DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) + ON DATE_PART(MONTH, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME)) = DATE_PART(MONTH, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) + AND DATE_PART(YEAR, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME)) = DATE_PART(YEAR, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid GROUP BY SBCUSTOMER.sbcustid @@ -13,10 +13,10 @@ WITH _S3 AS ( SELECT SBCUSTOMER.sbcustid AS _id, SBCUSTOMER.sbcustname AS name, - COALESCE(_S3.AGG_0, 0) AS num_transactions + COALESCE(_S3.N_ROWS, 0) AS num_transactions FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S3 AS _S3 - ON SBCUSTOMER.sbcustid = _S3._ID + ON SBCUSTOMER.sbcustid = _S3.SBCUSTID ORDER BY NUM_TRANSACTIONS DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql index a8d1bd485..124328dfb 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql @@ -1,49 +1,17 @@ -WITH _T1 AS ( +WITH _u_0 AS ( SELECT - SBCUSTOMER.sbcustid AS _ID, - SBCUSTOMER.sbcustemail AS EMAIL - FROM MAIN.SBCUSTOMER AS SBCUSTOMER -), _S2 AS ( - SELECT - _T1._ID AS _ID - FROM _T1 AS _T1 - WHERE - _T1.EMAIL LIKE '%.com' -), _S0 AS ( - SELECT - SBTRANSACTION.sbtxcustid AS CUSTOMER_ID, - SBTRANSACTION.sbtxtickerid AS TICKER_ID + SBTRANSACTION.sbtxcustid AS _u_1 FROM MAIN.SBTRANSACTION AS SBTRANSACTION -), _T2 AS ( - SELECT - SBTICKER.sbtickerid AS _ID, - SBTICKER.sbtickersymbol AS SYMBOL - FROM MAIN.SBTICKER AS SBTICKER -), _S1 AS ( - SELECT - _T2._ID AS _ID - FROM _T2 AS _T2 - WHERE - _T2.SYMBOL IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') -), _S3 AS ( - SELECT - _S0.CUSTOMER_ID AS CUSTOMER_ID - FROM _S0 AS _S0 - JOIN _S1 AS _S1 - ON _S0.TICKER_ID = _S1._ID -), _T0 AS ( - SELECT - 1 AS _ - FROM _S2 AS _S2 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S3 AS _S3 - WHERE - _S2._ID = _S3.CUSTOMER_ID - ) + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + AND SBTICKER.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') + GROUP BY + SBTRANSACTION.sbtxcustid ) SELECT COUNT(*) AS n_customers -FROM _T0 AS _T0 +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _u_0 AS _u_0 + ON SBCUSTOMER.sbcustid = _u_0._u_1 +WHERE + NOT _u_0._u_1 IS NULL AND SBCUSTOMER.sbcustemail LIKE '%.com' diff --git a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql index 7b499810b..464c8b871 100644 --- a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql @@ -3,7 +3,7 @@ SELECT AVG(SBDAILYPRICE.sbdpclose) AS ACP FROM MAIN.SBTICKER AS SBTICKER JOIN MAIN.SBDAILYPRICE AS SBDAILYPRICE - ON DATEDIFF(DAY, SBDAILYPRICE.sbdpdate, CURRENT_TIMESTAMP()) <= 7 + ON DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 AND SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid GROUP BY SBTICKER.sbtickertype diff --git a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql index f1ed59104..ec0d49bc0 100644 --- a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql @@ -1,15 +1,8 @@ -WITH _T0 AS ( - SELECT - COUNT_IF(sbcuststatus = 'active') AS AGG_0, - COUNT(*) AS AGG_1, - sbcustcountry AS COUNTRY - FROM MAIN.SBCUSTOMER - WHERE - sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' - GROUP BY - sbcustcountry -) SELECT - COUNTRY AS country, - 100 * COALESCE(COALESCE(AGG_0, 0) / AGG_1, 0.0) AS ar -FROM _T0 + sbcustcountry AS country, + 100 * COALESCE(COALESCE(COUNT_IF(sbcuststatus = 'active'), 0) / COUNT(*), 0.0) AS ar +FROM MAIN.SBCUSTOMER +WHERE + sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' +GROUP BY + sbcustcountry diff --git a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql index 1eeca652c..c990952f1 100644 --- a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql @@ -1,8 +1,11 @@ -WITH _T0 AS ( +WITH _S1 AS ( SELECT - SUM(sbtxamount) AS AGG_0, - SUM(sbtxtax + sbtxcommission) AS AGG_1, - sbtxtickerid AS TICKER_ID + ( + 100.0 * ( + COALESCE(SUM(sbtxamount), 0) - COALESCE(SUM(sbtxtax + sbtxcommission), 0) + ) + ) / COALESCE(SUM(sbtxamount), 0) AS SPM, + sbtxtickerid AS SBTXTICKERID FROM MAIN.SBTRANSACTION WHERE sbtxdatetime >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP()) AND sbtxtype = 'sell' @@ -11,13 +14,9 @@ WITH _T0 AS ( ) SELECT SBTICKER.sbtickersymbol AS symbol, - ( - 100.0 * ( - COALESCE(_T0.AGG_0, 0) - COALESCE(_T0.AGG_1, 0) - ) - ) / COALESCE(_T0.AGG_0, 0) AS SPM + _S1.SPM FROM MAIN.SBTICKER AS SBTICKER -JOIN _T0 AS _T0 - ON SBTICKER.sbtickerid = _T0.TICKER_ID +JOIN _S1 AS _S1 + ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY - SYMBOL NULLS FIRST + SBTICKER.sbtickersymbol NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql index ad9193f0f..4816d7f34 100644 --- a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql @@ -1,17 +1,17 @@ WITH _S1 AS ( SELECT - SUM(sbtxamount) AS AGG_0, - sbtxcustid AS CUSTOMER_ID + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION GROUP BY sbtxcustid ) SELECT SBCUSTOMER.sbcustname AS name, - COALESCE(_S1.AGG_0, 0) AS total_amount + COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID ORDER BY TOTAL_AMOUNT DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql index b77075b4c..e2f1f8c3b 100644 --- a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql @@ -1,7 +1,7 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_0, - sbtxtickerid AS TICKER_ID + COUNT(*) AS N_ROWS, + sbtxtickerid AS SBTXTICKERID FROM MAIN.SBTRANSACTION WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -10, CURRENT_TIMESTAMP())) @@ -11,10 +11,10 @@ WITH _S1 AS ( ) SELECT SBTICKER.sbtickersymbol AS symbol, - COALESCE(_S1.AGG_0, 0) AS tx_count + COALESCE(_S1.N_ROWS, 0) AS tx_count FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.TICKER_ID + ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY TX_COUNT DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql index 9e2f2140c..768cab354 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql @@ -1,8 +1,8 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_0, - COUNT_IF(sbtxstatus = 'success') AS AGG_1, - sbtxcustid AS CUSTOMER_ID + COUNT(*) AS N_ROWS, + COUNT_IF(sbtxstatus = 'success') AS SUM_EXPR_2, + sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION GROUP BY sbtxcustid @@ -10,12 +10,12 @@ WITH _S1 AS ( SELECT SBCUSTOMER.sbcustname AS name, ( - 100.0 * COALESCE(_S1.AGG_1, 0) - ) / COALESCE(_S1.AGG_0, 0) AS success_rate + 100.0 * COALESCE(_S1.SUM_EXPR_2, 0) + ) / COALESCE(_S1.N_ROWS, 0) AS success_rate FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID WHERE - NOT _S1.AGG_0 IS NULL AND _S1.AGG_0 >= 5 + NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS >= 5 ORDER BY SUCCESS_RATE NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql index db5116d17..da119fd79 100644 --- a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql @@ -1,8 +1,8 @@ WITH _S1 AS ( SELECT - MAX(sbdphigh) AS AGG_0, - MIN(sbdplow) AS AGG_1, - sbdptickerid AS TICKER_ID + MAX(sbdphigh) AS MAX_SBDPHIGH, + MIN(sbdplow) AS MIN_SBDPLOW, + sbdptickerid AS SBDPTICKERID FROM MAIN.SBDAILYPRICE WHERE sbdpdate <= CAST('2023-04-04' AS DATE) AND sbdpdate >= CAST('2023-04-01' AS DATE) @@ -11,10 +11,10 @@ WITH _S1 AS ( ) SELECT SBTICKER.sbtickersymbol AS symbol, - _S1.AGG_0 - _S1.AGG_1 AS price_change + _S1.MAX_SBDPHIGH - _S1.MIN_SBDPLOW AS price_change FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.TICKER_ID + ON SBTICKER.sbtickerid = _S1.SBDPTICKERID ORDER BY PRICE_CHANGE DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index db37dc608..e021560d1 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -1,63 +1,56 @@ WITH _S0 AS ( SELECT - SUM(sbdpclose) AS EXPR_0, - COUNT(sbdpclose) AS EXPR_1, + COUNT(sbdpclose) AS COUNT_SBDPCLOSE, MAX(sbdphigh) AS MAX_HIGH, MIN(sbdplow) AS MIN_LOW, + SUM(sbdpclose) AS SUM_SBDPCLOSE, CONCAT_WS( '-', - DATE_PART(YEAR, sbdpdate), + DATE_PART(YEAR, CAST(sbdpdate AS DATETIME)), CASE - WHEN LENGTH(DATE_PART(MONTH, sbdpdate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, sbdpdate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbdpdate)), ( + WHEN LENGTH(DATE_PART(MONTH, CAST(sbdpdate AS DATETIME))) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, CAST(sbdpdate AS DATETIME)), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, CAST(sbdpdate AS DATETIME))), ( 2 * -1 )) END ) AS MONTH, - sbdptickerid AS TICKER_ID + sbdptickerid AS SBDPTICKERID FROM MAIN.SBDAILYPRICE GROUP BY CONCAT_WS( '-', - DATE_PART(YEAR, sbdpdate), + DATE_PART(YEAR, CAST(sbdpdate AS DATETIME)), CASE - WHEN LENGTH(DATE_PART(MONTH, sbdpdate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, sbdpdate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbdpdate)), ( + WHEN LENGTH(DATE_PART(MONTH, CAST(sbdpdate AS DATETIME))) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, CAST(sbdpdate AS DATETIME)), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, CAST(sbdpdate AS DATETIME))), ( 2 * -1 )) END ), sbdptickerid -), _T1 AS ( +), _T0 AS ( SELECT - SUM(_S0.EXPR_0) AS EXPR_0, - SUM(_S0.EXPR_1) AS EXPR_1, + SUM(_S0.SUM_SBDPCLOSE) / SUM(_S0.COUNT_SBDPCLOSE) AS AVG_CLOSE, MAX(_S0.MAX_HIGH) AS MAX_HIGH, MIN(_S0.MIN_LOW) AS MIN_LOW, _S0.MONTH, - SBTICKER.sbtickersymbol AS SYMBOL + SBTICKER.sbtickersymbol AS SBTICKERSYMBOL FROM _S0 AS _S0 JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = _S0.TICKER_ID + ON SBTICKER.sbtickerid = _S0.SBDPTICKERID GROUP BY _S0.MONTH, SBTICKER.sbtickersymbol ) SELECT - SYMBOL AS symbol, + SBTICKERSYMBOL AS symbol, MONTH AS month, - EXPR_0 / EXPR_1 AS avg_close, + AVG_CLOSE AS avg_close, MAX_HIGH AS max_high, MIN_LOW AS min_low, ( - ( - EXPR_0 / EXPR_1 - ) - LAG(( - EXPR_0 / EXPR_1 - ), 1) OVER (PARTITION BY SYMBOL ORDER BY MONTH) - ) / LAG(( - EXPR_0 / EXPR_1 - ), 1) OVER (PARTITION BY SYMBOL ORDER BY MONTH) AS momc -FROM _T1 + AVG_CLOSE - LAG(AVG_CLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) + ) / LAG(AVG_CLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) AS momc +FROM _T0 diff --git a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql index 4a3ef1408..ed3eb6d60 100644 --- a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql @@ -1,17 +1,17 @@ WITH _S1 AS ( SELECT - SUM(sbtxamount) AS AGG_0, - COUNT(*) AS AGG_1, - sbtxcustid AS CUSTOMER_ID + COUNT(*) AS N_ROWS, + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION GROUP BY sbtxcustid ) SELECT SBCUSTOMER.sbcustname AS name, - _S1.AGG_1 AS num_tx, - COALESCE(_S1.AGG_0, 0) AS total_amount, - RANK() OVER (ORDER BY COALESCE(_S1.AGG_0, 0) DESC) AS cust_rank + _S1.N_ROWS AS num_tx, + COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount, + RANK() OVER (ORDER BY COALESCE(_S1.SUM_SBTXAMOUNT, 0) DESC) AS cust_rank FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index ec56a826b..115c483ab 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -1,13 +1,13 @@ WITH _S2 AS ( SELECT - COUNT(*) AS AGG_1, + COUNT(*) AS N_ROWS, CONCAT_WS( '-', - DATE_PART(YEAR, sbcustjoindate), + DATE_PART(YEAR, CAST(sbcustjoindate AS DATETIME)), CASE - WHEN LENGTH(DATE_PART(MONTH, sbcustjoindate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, sbcustjoindate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbcustjoindate)), ( + WHEN LENGTH(DATE_PART(MONTH, CAST(sbcustjoindate AS DATETIME))) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, CAST(sbcustjoindate AS DATETIME)), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, CAST(sbcustjoindate AS DATETIME))), ( 2 * -1 )) END @@ -19,33 +19,36 @@ WITH _S2 AS ( GROUP BY CONCAT_WS( '-', - DATE_PART(YEAR, sbcustjoindate), + DATE_PART(YEAR, CAST(sbcustjoindate AS DATETIME)), CASE - WHEN LENGTH(DATE_PART(MONTH, sbcustjoindate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, sbcustjoindate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, sbcustjoindate)), ( + WHEN LENGTH(DATE_PART(MONTH, CAST(sbcustjoindate AS DATETIME))) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, CAST(sbcustjoindate AS DATETIME)), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, CAST(sbcustjoindate AS DATETIME))), ( 2 * -1 )) END ) ), _S3 AS ( SELECT - AVG(SBTRANSACTION.sbtxamount) AS AGG_0, + AVG(SBTRANSACTION.sbtxamount) AS AVG_SBTXAMOUNT, CONCAT_WS( '-', - DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate), + DATE_PART(YEAR, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME)), CASE - WHEN LENGTH(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)), ( - 2 * -1 - )) + WHEN LENGTH(DATE_PART(MONTH, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME))) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME)), 1, 2) + ELSE SUBSTRING( + CONCAT('00', DATE_PART(MONTH, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME))), + ( + 2 * -1 + ) + ) END ) AS MONTH FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate) = DATE_PART(MONTH, SBTRANSACTION.sbtxdatetime) - AND DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate) = DATE_PART(YEAR, SBTRANSACTION.sbtxdatetime) + ON DATE_PART(MONTH, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME)) = DATE_PART(MONTH, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) + AND DATE_PART(YEAR, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME)) = DATE_PART(YEAR, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid WHERE SBCUSTOMER.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) @@ -53,20 +56,23 @@ WITH _S2 AS ( GROUP BY CONCAT_WS( '-', - DATE_PART(YEAR, SBCUSTOMER.sbcustjoindate), + DATE_PART(YEAR, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME)), CASE - WHEN LENGTH(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)) >= 2 - THEN SUBSTRING(DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate), 1, 2) - ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, SBCUSTOMER.sbcustjoindate)), ( - 2 * -1 - )) + WHEN LENGTH(DATE_PART(MONTH, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME))) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME)), 1, 2) + ELSE SUBSTRING( + CONCAT('00', DATE_PART(MONTH, CAST(SBCUSTOMER.sbcustjoindate AS DATETIME))), + ( + 2 * -1 + ) + ) END ) ) SELECT _S2.MONTH AS month, - _S2.AGG_1 AS customer_signups, - _S3.AGG_0 AS avg_tx_amount + _S2.N_ROWS AS customer_signups, + _S3.AVG_SBTXAMOUNT AS avg_tx_amount FROM _S2 AS _S2 LEFT JOIN _S3 AS _S3 ON _S2.MONTH = _S3.MONTH diff --git a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql index d9dc03014..a2c0bd075 100644 --- a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql @@ -1,47 +1,19 @@ -WITH _T2 AS ( +WITH _u_0 AS ( SELECT - SBTRANSACTION.sbtxamount AS AMOUNT, - SBTRANSACTION.sbtxcustid AS CUSTOMER_ID, - SBTRANSACTION.sbtxdatetime AS DATE_TIME - FROM MAIN.SBTRANSACTION AS SBTRANSACTION -), _S0 AS ( - SELECT - _T2.AMOUNT AS AMOUNT, - _T2.CUSTOMER_ID AS CUSTOMER_ID - FROM _T2 AS _T2 - WHERE - _T2.DATE_TIME < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) - AND _T2.DATE_TIME >= DATEADD(WEEK, -1, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) -), _T3 AS ( - SELECT - SBCUSTOMER.sbcustid AS _ID, - SBCUSTOMER.sbcustcountry AS COUNTRY - FROM MAIN.SBCUSTOMER AS SBCUSTOMER -), _S1 AS ( - SELECT - _T3._ID AS _ID - FROM _T3 AS _T3 + sbcustid AS _u_1 + FROM MAIN.SBCUSTOMER WHERE - LOWER(_T3.COUNTRY) = 'usa' -), _T1 AS ( - SELECT - _S0.AMOUNT AS AMOUNT - FROM _S0 AS _S0 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0.CUSTOMER_ID = _S1._ID - ) -), _T0 AS ( - SELECT - COUNT(*) AS AGG_0, - SUM(_T1.AMOUNT) AS AGG_1 - FROM _T1 AS _T1 + LOWER(sbcustcountry) = 'usa' + GROUP BY + sbcustid ) SELECT - CASE WHEN _T0.AGG_0 > 0 THEN _T0.AGG_0 ELSE NULL END AS n_transactions, - COALESCE(_T0.AGG_1, 0) AS total_amount -FROM _T0 AS _T0 + CASE WHEN COUNT(*) > 0 THEN COUNT(*) ELSE NULL END AS n_transactions, + COALESCE(SUM(SBTRANSACTION.sbtxamount), 0) AS total_amount +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +LEFT JOIN _u_0 AS _u_0 + ON SBTRANSACTION.sbtxcustid = _u_0._u_1 +WHERE + NOT _u_0._u_1 IS NULL + AND SBTRANSACTION.sbtxdatetime < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) + AND SBTRANSACTION.sbtxdatetime >= DATEADD(WEEK, -1, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql index ceaacc14c..a43b2ec6a 100644 --- a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql @@ -1,24 +1,20 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS AGG_0, +SELECT + DATE_TRUNC('WEEK', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS week, + COUNT(*) AS num_transactions, + COALESCE( COUNT_IF(( ( DAYOFWEEK(SBTRANSACTION.sbtxdatetime) + 6 ) % 7 - ) IN (5, 6)) AS AGG_1, - DATE_TRUNC('WEEK', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS WEEK - FROM MAIN.SBTRANSACTION AS SBTRANSACTION - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid - AND SBTICKER.sbtickertype = 'stock' - WHERE - SBTRANSACTION.sbtxdatetime < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) - AND SBTRANSACTION.sbtxdatetime >= DATEADD(WEEK, -8, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) - GROUP BY - DATE_TRUNC('WEEK', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) -) -SELECT - WEEK AS week, - AGG_0 AS num_transactions, - COALESCE(AGG_1, 0) AS weekend_transactions -FROM _T0 + ) IN (5, 6)), + 0 + ) AS weekend_transactions +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + AND SBTICKER.sbtickertype = 'stock' +WHERE + SBTRANSACTION.sbtxdatetime < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) + AND SBTRANSACTION.sbtxdatetime >= DATEADD(WEEK, -8, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) +GROUP BY + DATE_TRUNC('WEEK', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql index e247008ab..473b31e78 100644 --- a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql @@ -1,22 +1,15 @@ -WITH _S1 AS ( +WITH _u_0 AS ( SELECT - SBDAILYPRICE.sbdptickerid AS TICKER_ID - FROM MAIN.SBDAILYPRICE AS SBDAILYPRICE -), _S0 AS ( - SELECT - SBTICKER.sbtickerid AS _ID, - SBTICKER.sbtickersymbol AS SYMBOL - FROM MAIN.SBTICKER AS SBTICKER + sbdptickerid AS _u_1 + FROM MAIN.SBDAILYPRICE + GROUP BY + sbdptickerid ) SELECT - _S0._ID AS _id, - _S0.SYMBOL AS symbol -FROM _S0 AS _S0 + SBTICKER.sbtickerid AS _id, + SBTICKER.sbtickersymbol AS symbol +FROM MAIN.SBTICKER AS SBTICKER +LEFT JOIN _u_0 AS _u_0 + ON SBTICKER.sbtickerid = _u_0._u_1 WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0._ID = _S1.TICKER_ID - ) + _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql index f27d58257..ab280f286 100644 --- a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql @@ -1,26 +1,20 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_2, - SUM(sbtxamount) AS AGG_5, - sbtxcustid AS CUSTOMER_ID + COUNT(*) AS N_ROWS, + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -30, CURRENT_TIMESTAMP())) GROUP BY sbtxcustid -), _T0 AS ( - SELECT - SUM(_S1.AGG_2) AS AGG_4, - SUM(_S1.AGG_5) AS AGG_7, - SBCUSTOMER.sbcustcountry AS COUNTRY - FROM MAIN.SBCUSTOMER AS SBCUSTOMER - LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID - GROUP BY - SBCUSTOMER.sbcustcountry ) SELECT - COUNTRY AS country, - COALESCE(AGG_4, 0) AS num_transactions, - COALESCE(AGG_7, 0) AS total_amount -FROM _T0 + SBCUSTOMER.sbcustcountry AS country, + COALESCE(SUM(_S1.N_ROWS), 0) AS num_transactions, + COALESCE(SUM(_S1.SUM_SBTXAMOUNT), 0) AS total_amount +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID +GROUP BY + SBCUSTOMER.sbcustcountry diff --git a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql index ad3fe986f..4d967e989 100644 --- a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql @@ -1,20 +1,14 @@ -WITH _T0 AS ( - SELECT - AVG(sbtxshares) AS AVG_SHARES, - COUNT(DISTINCT sbtxcustid) AS NUM_CUSTOMERS, - sbtxtype AS TRANSACTION_TYPE - FROM MAIN.SBTRANSACTION - WHERE - sbtxdatetime <= CAST('2023-03-31' AS DATE) - AND sbtxdatetime >= CAST('2023-01-01' AS DATE) - GROUP BY - sbtxtype -) SELECT - TRANSACTION_TYPE AS transaction_type, - NUM_CUSTOMERS AS num_customers, - AVG_SHARES AS avg_shares -FROM _T0 + sbtxtype AS transaction_type, + COUNT(DISTINCT sbtxcustid) AS num_customers, + AVG(sbtxshares) AS avg_shares +FROM MAIN.SBTRANSACTION +WHERE + sbtxdatetime <= CAST('2023-03-31' AS DATE) + AND sbtxdatetime >= CAST('2023-01-01' AS DATE) +GROUP BY + sbtxtype ORDER BY - NUM_CUSTOMERS DESC NULLS LAST + NUM_CUSTOMERS DESC NULLS LAST, + sbtxtype NULLS FIRST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql index abbbf3518..caf59ed97 100644 --- a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql @@ -1,19 +1,19 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_0, - SUM(sbtxamount) AS AGG_1, - sbtxtickerid AS TICKER_ID + COUNT(*) AS N_ROWS, + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxtickerid AS SBTXTICKERID FROM MAIN.SBTRANSACTION GROUP BY sbtxtickerid ) SELECT SBTICKER.sbtickersymbol AS symbol, - COALESCE(_S1.AGG_0, 0) AS num_transactions, - COALESCE(_S1.AGG_1, 0) AS total_amount + COALESCE(_S1.N_ROWS, 0) AS num_transactions, + COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.TICKER_ID + ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY TOTAL_AMOUNT DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql index 3d8a32464..e35e42a35 100644 --- a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql @@ -1,40 +1,34 @@ WITH _S0 AS ( SELECT COUNT(*) AS NUM_TRANSACTIONS, - sbtxcustid AS CUSTOMER_ID, - sbtxtickerid AS TICKER_ID + sbtxcustid AS SBTXCUSTID, + sbtxtickerid AS SBTXTICKERID FROM MAIN.SBTRANSACTION GROUP BY sbtxcustid, sbtxtickerid ), _S2 AS ( SELECT - SUM(_S0.NUM_TRANSACTIONS) AS NUM_TRANSACTIONS_0, - _S0.CUSTOMER_ID, - SBTICKER.sbtickertype AS TICKER_TYPE + SUM(_S0.NUM_TRANSACTIONS) AS NUM_TRANSACTIONS, + SBTICKER.sbtickertype AS SBTICKERTYPE, + _S0.SBTXCUSTID FROM _S0 AS _S0 JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = _S0.TICKER_ID + ON SBTICKER.sbtickerid = _S0.SBTXTICKERID GROUP BY - _S0.CUSTOMER_ID, - SBTICKER.sbtickertype -), _T0 AS ( - SELECT - SUM(_S2.NUM_TRANSACTIONS_0) AS NUM_TRANSACTIONS, - SBCUSTOMER.sbcuststate AS STATE, - _S2.TICKER_TYPE - FROM _S2 AS _S2 - JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = _S2.CUSTOMER_ID - GROUP BY - SBCUSTOMER.sbcuststate, - _S2.TICKER_TYPE + SBTICKER.sbtickertype, + _S0.SBTXCUSTID ) SELECT - STATE AS state, - TICKER_TYPE AS ticker_type, - NUM_TRANSACTIONS AS num_transactions -FROM _T0 + SBCUSTOMER.sbcuststate AS state, + _S2.SBTICKERTYPE AS ticker_type, + SUM(_S2.NUM_TRANSACTIONS) AS num_transactions +FROM _S2 AS _S2 +JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = _S2.SBTXCUSTID +GROUP BY + SBCUSTOMER.sbcuststate, + _S2.SBTICKERTYPE ORDER BY NUM_TRANSACTIONS DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql index 8f21f3bf4..5d8b42fa0 100644 --- a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql @@ -1,27 +1,16 @@ -WITH _T0 AS ( +WITH _u_0 AS ( SELECT - SBTRANSACTION.sbtxcustid AS CUSTOMER_ID, - SBTRANSACTION.sbtxtype AS TRANSACTION_TYPE - FROM MAIN.SBTRANSACTION AS SBTRANSACTION -), _S1 AS ( - SELECT - _T0.CUSTOMER_ID AS CUSTOMER_ID - FROM _T0 AS _T0 + sbtxcustid AS _u_1 + FROM MAIN.SBTRANSACTION WHERE - _T0.TRANSACTION_TYPE = 'buy' -), _S0 AS ( - SELECT - SBCUSTOMER.sbcustid AS _ID - FROM MAIN.SBCUSTOMER AS SBCUSTOMER + sbtxtype = 'buy' + GROUP BY + sbtxcustid ) SELECT - _S0._ID AS _id -FROM _S0 AS _S0 + SBCUSTOMER.sbcustid AS _id +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _u_0 AS _u_0 + ON SBCUSTOMER.sbcustid = _u_0._u_1 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0._ID = _S1.CUSTOMER_ID - ) + NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql index 2269a7547..1cbedaf08 100644 --- a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql @@ -1,27 +1,16 @@ -WITH _T0 AS ( +WITH _u_0 AS ( SELECT - SBDAILYPRICE.sbdpdate AS DATE, - SBDAILYPRICE.sbdptickerid AS TICKER_ID - FROM MAIN.SBDAILYPRICE AS SBDAILYPRICE -), _S1 AS ( - SELECT - _T0.TICKER_ID AS TICKER_ID - FROM _T0 AS _T0 + sbdptickerid AS _u_1 + FROM MAIN.SBDAILYPRICE WHERE - _T0.DATE >= CAST('2023-04-01' AS DATE) -), _S0 AS ( - SELECT - SBTICKER.sbtickerid AS _ID - FROM MAIN.SBTICKER AS SBTICKER + sbdpdate >= CAST('2023-04-01' AS DATE) + GROUP BY + sbdptickerid ) SELECT - _S0._ID AS _id -FROM _S0 AS _S0 + SBTICKER.sbtickerid AS _id +FROM MAIN.SBTICKER AS SBTICKER +LEFT JOIN _u_0 AS _u_0 + ON SBTICKER.sbtickerid = _u_0._u_1 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0._ID = _S1.TICKER_ID - ) + NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql index 98ad4058a..0cfc5261f 100644 --- a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql @@ -1,15 +1,9 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS NUM_TRANSACTIONS, - sbtxstatus AS STATUS - FROM MAIN.SBTRANSACTION - GROUP BY - sbtxstatus -) SELECT - STATUS AS status, - NUM_TRANSACTIONS AS num_transactions -FROM _T0 + sbtxstatus AS status, + COUNT(*) AS num_transactions +FROM MAIN.SBTRANSACTION +GROUP BY + sbtxstatus ORDER BY NUM_TRANSACTIONS DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql index 585bc7372..8047b1674 100644 --- a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql @@ -1,15 +1,9 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS NUM_CUSTOMERS, - sbcustcountry AS COUNTRY - FROM MAIN.SBCUSTOMER - GROUP BY - sbcustcountry -) SELECT - COUNTRY AS country, - NUM_CUSTOMERS AS num_customers -FROM _T0 + sbcustcountry AS country, + COUNT(*) AS num_customers +FROM MAIN.SBCUSTOMER +GROUP BY + sbcustcountry ORDER BY NUM_CUSTOMERS DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql index 968809132..cbe91965c 100644 --- a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql @@ -1,22 +1,15 @@ -WITH _S1 AS ( +WITH _u_0 AS ( SELECT - SBTRANSACTION.sbtxcustid AS CUSTOMER_ID - FROM MAIN.SBTRANSACTION AS SBTRANSACTION -), _S0 AS ( - SELECT - SBCUSTOMER.sbcustid AS _ID, - SBCUSTOMER.sbcustname AS NAME - FROM MAIN.SBCUSTOMER AS SBCUSTOMER + sbtxcustid AS _u_1 + FROM MAIN.SBTRANSACTION + GROUP BY + sbtxcustid ) SELECT - _S0._ID AS _id, - _S0.NAME AS name -FROM _S0 AS _S0 + SBCUSTOMER.sbcustid AS _id, + SBCUSTOMER.sbcustname AS name +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _u_0 AS _u_0 + ON SBCUSTOMER.sbcustid = _u_0._u_1 WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0._ID = _S1.CUSTOMER_ID - ) + _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql index 20e157ea9..55d275bc0 100644 --- a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql @@ -5,4 +5,4 @@ JOIN MAIN.SBTICKER AS SBTICKER ON SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid AND SBTICKER.sbtickersymbol = 'VTI' WHERE - DATEDIFF(DAY, SBDAILYPRICE.sbdpdate, CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql index 766fc399b..94d18337f 100644 --- a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql @@ -1,14 +1,18 @@ WITH _S1 AS ( SELECT - MIN(sbtxdatetime) AS AGG_0, - sbtxcustid AS CUSTOMER_ID + MIN(sbtxdatetime) AS MIN_SBTXDATETIME, + sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION GROUP BY sbtxcustid ) SELECT SBCUSTOMER.sbcustid AS cust_id, - DATEDIFF(SECOND, SBCUSTOMER.sbcustjoindate, _S1.AGG_0) / 86400.0 AS DaysFromJoinToFirstTransaction + DATEDIFF( + SECOND, + CAST(SBCUSTOMER.sbcustjoindate AS DATETIME), + CAST(_S1.MIN_SBTXDATETIME AS DATETIME) + ) / 86400.0 AS DaysFromJoinToFirstTransaction FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID diff --git a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql index 91f9a27fa..fa4b60b93 100644 --- a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql @@ -1,7 +1,7 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_0, - sbtxcustid AS CUSTOMER_ID + COUNT(*) AS N_ROWS, + sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION WHERE CAST(sbtxdatetime AS TIMESTAMP) < CAST('2023-04-02' AS DATE) @@ -13,10 +13,10 @@ WITH _S1 AS ( SELECT SBCUSTOMER.sbcustid AS _id, SBCUSTOMER.sbcustname AS name, - COALESCE(_S1.AGG_0, 0) AS num_tx + COALESCE(_S1.N_ROWS, 0) AS num_tx FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.CUSTOMER_ID + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID ORDER BY NUM_TX DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql index 9fdfe03cc..5d60b5cb8 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql @@ -3,8 +3,8 @@ SELECT AVG(sbtxprice) AS avg_price FROM MAIN.SBTRANSACTION WHERE - DATE_PART(QUARTER, sbtxdatetime) = 1 - AND DATE_PART(YEAR, sbtxdatetime) = 2023 + DATE_PART(QUARTER, CAST(sbtxdatetime AS DATETIME)) = 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) = 2023 AND sbtxstatus = 'success' GROUP BY DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql index 6cc327e31..166017d7e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql @@ -1,17 +1,18 @@ WITH _S1 AS ( SELECT - MAX(payment_date) AS AGG_0, + MAX(payment_date) AS MAX_PAYMENT_DATE, sale_id AS SALE_ID FROM MAIN.PAYMENTS_RECEIVED GROUP BY sale_id -), _T0 AS ( - SELECT - AVG(DATEDIFF(DAY, SALES.sale_date, _S1.AGG_0)) AS AGG_0 - FROM MAIN.SALES AS SALES - LEFT JOIN _S1 AS _S1 - ON SALES._id = _S1.SALE_ID ) SELECT - ROUND(AGG_0, 2) AS avg_days_to_payment -FROM _T0 + ROUND( + AVG( + DATEDIFF(DAY, CAST(SALES.sale_date AS DATETIME), CAST(_S1.MAX_PAYMENT_DATE AS DATETIME)) + ), + 2 + ) AS avg_days_to_payment +FROM MAIN.SALES AS SALES +LEFT JOIN _S1 AS _S1 + ON SALES._id = _S1.SALE_ID diff --git a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql index dedf8fbfd..7610c6ce0 100644 --- a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql @@ -1,24 +1,19 @@ WITH _S0 AS ( SELECT - SUM(sale_price) AS AGG_0, + SUM(sale_price) AS SUM_SALE_PRICE, car_id AS CAR_ID FROM MAIN.SALES WHERE - DATE_PART(YEAR, sale_date) = 2023 + DATE_PART(YEAR, CAST(sale_date AS DATETIME)) = 2023 GROUP BY car_id -), _T0 AS ( - SELECT - SUM(_S0.AGG_0) AS AGG_0, - SUM(CARS.cost) AS AGG_1 - FROM _S0 AS _S0 - JOIN MAIN.CARS AS CARS - ON CARS._id = _S0.CAR_ID ) SELECT ( ( - COALESCE(AGG_0, 0) - COALESCE(AGG_1, 0) - ) / COALESCE(AGG_1, 0) + COALESCE(SUM(_S0.SUM_SALE_PRICE), 0) - COALESCE(SUM(CARS.cost), 0) + ) / COALESCE(SUM(CARS.cost), 0) ) * 100 AS GPM -FROM _T0 +FROM _S0 AS _S0 +JOIN MAIN.CARS AS CARS + ON CARS._id = _S0.CAR_ID diff --git a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql index 6c904afff..c330af82b 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql @@ -1,51 +1,17 @@ -WITH _T0 AS ( - SELECT - INVENTORY_SNAPSHOTS.car_id AS CAR_ID, - INVENTORY_SNAPSHOTS.is_in_inventory AS IS_IN_INVENTORY, - INVENTORY_SNAPSHOTS.snapshot_date AS SNAPSHOT_DATE - FROM MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS -), _S3 AS ( - SELECT - _T0.CAR_ID AS CAR_ID - FROM _T0 AS _T0 - WHERE - _S0.SALE_DATE = _T0.SNAPSHOT_DATE AND _T0.IS_IN_INVENTORY = 0 -), _S1 AS ( - SELECT - SALES.car_id AS CAR_ID, - SALES.sale_date AS SALE_DATE, - SALES.sale_price AS SALE_PRICE - FROM MAIN.SALES AS SALES -), _S2 AS ( - SELECT - CARS._id AS _ID_1_0_1, - CARS.make AS MAKE, - CARS.model AS MODEL - FROM MAIN.CARS AS CARS -), _S0 AS ( - SELECT - _S2._ID_1_0_1 AS _ID_1, - _S2.MAKE AS MAKE, - _S2.MODEL AS MODEL, - _S1.SALE_DATE AS SALE_DATE, - _S1.SALE_PRICE AS SALE_PRICE - FROM _S1 AS _S1 - JOIN _S2 AS _S2 - ON _S1.CAR_ID = _S2._ID_1_0_1 -) SELECT - _S0.MAKE AS make, - _S0.MODEL AS model, - _S0.SALE_PRICE AS sale_price -FROM _S0 AS _S0 -WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S3 AS _S3 - WHERE - _S0._ID_1 = _S3.CAR_ID - ) + ANY_VALUE(CARS.make) AS make, + ANY_VALUE(CARS.model) AS model, + ANY_VALUE(SALES.sale_price) AS sale_price +FROM MAIN.SALES AS SALES +JOIN MAIN.CARS AS CARS + ON CARS._id = SALES.car_id +JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS + ON CARS._id = INVENTORY_SNAPSHOTS.car_id + AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 + AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date +GROUP BY + SALES._id, + CARS._id ORDER BY SALE_PRICE DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql index b0fe9746c..a785f1d56 100644 --- a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql @@ -2,4 +2,4 @@ SELECT COUNT(*) AS TSC FROM MAIN.SALES WHERE - DATEDIFF(DAY, sale_date, CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql index 854964e24..e00ceae8e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - AVG(sale_price) AS AGG_0, + AVG(sale_price) AS AVG_SALE_PRICE, salesperson_id AS SALESPERSON_ID FROM MAIN.SALES GROUP BY @@ -9,10 +9,10 @@ WITH _S1 AS ( SELECT SALESPERSONS.first_name, SALESPERSONS.last_name, - _S1.AGG_0 AS ASP + _S1.AVG_SALE_PRICE AS ASP FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - ASP DESC NULLS LAST + _S1.AVG_SALE_PRICE DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql index 003f6abb9..1cda502b3 100644 --- a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - SUM(sale_price) AS AGG_0, + SUM(sale_price) AS SUM_SALE_PRICE, salesperson_id AS SALESPERSON_ID FROM MAIN.SALES GROUP BY @@ -10,7 +10,7 @@ SELECT SALESPERSONS._id, SALESPERSONS.first_name, SALESPERSONS.last_name, - COALESCE(_S1.AGG_0, 0) AS total + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID diff --git a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql index 980e07d62..f38af8dfb 100644 --- a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql @@ -1,23 +1,19 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS AGG_0, +SELECT + DATE_TRUNC('WEEK', CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) AS payment_week, + COUNT(*) AS total_payments, + COALESCE( COUNT_IF(( ( DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 ) % 7 - ) IN (5, 6)) AS AGG_1, - DATE_TRUNC('WEEK', CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) AS PAYMENT_WEEK - FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED - JOIN MAIN.SALES AS SALES - ON PAYMENTS_RECEIVED.sale_id = SALES._id AND SALES.sale_price > 30000 - WHERE - DATEDIFF(WEEK, PAYMENTS_RECEIVED.payment_date, CURRENT_TIMESTAMP()) <= 8 - AND DATEDIFF(WEEK, PAYMENTS_RECEIVED.payment_date, CURRENT_TIMESTAMP()) >= 1 - GROUP BY - DATE_TRUNC('WEEK', CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) -) -SELECT - PAYMENT_WEEK AS payment_week, - AGG_0 AS total_payments, - COALESCE(AGG_1, 0) AS weekend_payments -FROM _T0 + ) IN (5, 6)), + 0 + ) AS weekend_payments +FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED +JOIN MAIN.SALES AS SALES + ON PAYMENTS_RECEIVED.sale_id = SALES._id AND SALES.sale_price > 30000 +WHERE + DATEDIFF(WEEK, CAST(PAYMENTS_RECEIVED.payment_date AS DATETIME), CURRENT_TIMESTAMP()) <= 8 + AND DATEDIFF(WEEK, CAST(PAYMENTS_RECEIVED.payment_date AS DATETIME), CURRENT_TIMESTAMP()) >= 1 +GROUP BY + DATE_TRUNC('WEEK', CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql index 41f71278e..bb7deefd3 100644 --- a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( salesperson_id AS SALESPERSON_ID FROM MAIN.SALES WHERE - DATEDIFF(DAY, sale_date, CURRENT_TIMESTAMP()) <= 30 + DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY salesperson_id ) diff --git a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql index 140fc4041..07302b368 100644 --- a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_0, + COUNT(*) AS N_ROWS, car_id AS CAR_ID FROM MAIN.SALES GROUP BY @@ -9,7 +9,7 @@ WITH _S1 AS ( SELECT CARS.make, CARS.model, - COALESCE(_S1.AGG_0, 0) AS num_sales + COALESCE(_S1.N_ROWS, 0) AS num_sales FROM MAIN.CARS AS CARS LEFT JOIN _S1 AS _S1 ON CARS._id = _S1.CAR_ID diff --git a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql index 0a8ff8132..c95469b87 100644 --- a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql @@ -1,7 +1,7 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_0, - SUM(sale_price) AS AGG_1, + COUNT(*) AS N_ROWS, + SUM(sale_price) AS SUM_SALE_PRICE, car_id AS CAR_ID FROM MAIN.SALES WHERE @@ -10,12 +10,12 @@ WITH _S1 AS ( car_id ) SELECT - COALESCE(_S1.AGG_0, 0) AS num_sales, + COALESCE(_S1.N_ROWS, 0) AS num_sales, CASE WHEN ( - NOT _S1.AGG_0 IS NULL AND _S1.AGG_0 > 0 + NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS > 0 ) - THEN COALESCE(_S1.AGG_1, 0) + THEN COALESCE(_S1.SUM_SALE_PRICE, 0) ELSE NULL END AS total_revenue FROM MAIN.CARS AS CARS diff --git a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql index 98d5e499b..d704818d1 100644 --- a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql @@ -1,20 +1,28 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_0, - SUM(sale_price) AS AGG_1, + COUNT(*) AS N_ROWS, + SUM(sale_price) AS SUM_SALE_PRICE, salesperson_id AS SALESPERSON_ID FROM MAIN.SALES GROUP BY salesperson_id +), _T0 AS ( + SELECT + RANK() OVER (ORDER BY COALESCE(_S1.SUM_SALE_PRICE, 0) DESC) AS SALES_RANK, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS TOTAL_SALES, + SALESPERSONS.first_name AS FIRST_NAME, + SALESPERSONS.last_name AS LAST_NAME, + _S1.N_ROWS + FROM MAIN.SALESPERSONS AS SALESPERSONS + JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - COALESCE(_S1.AGG_1, 0) AS total_sales, - _S1.AGG_0 AS num_sales, - RANK() OVER (ORDER BY COALESCE(_S1.AGG_1, 0) DESC) AS sales_rank -FROM MAIN.SALESPERSONS AS SALESPERSONS -JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + FIRST_NAME AS first_name, + LAST_NAME AS last_name, + TOTAL_SALES AS total_sales, + N_ROWS AS num_sales, + SALES_RANK AS sales_rank +FROM _T0 ORDER BY - COALESCE(_S1.AGG_1, 0) DESC NULLS LAST + TOTAL_SALES DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql index 4bff854c9..69dad524f 100644 --- a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql @@ -7,7 +7,7 @@ WITH _T1 AS ( AND ROW_NUMBER() OVER (PARTITION BY car_id ORDER BY snapshot_date DESC) = 1 ), _S3 AS ( SELECT - MAX(sale_price) AS AGG_0, + MAX(sale_price) AS MAX_SALE_PRICE, car_id AS CAR_ID FROM MAIN.SALES GROUP BY @@ -16,11 +16,11 @@ WITH _T1 AS ( SELECT CARS.make, CARS.model, - _S3.AGG_0 AS highest_sale_price + _S3.MAX_SALE_PRICE AS highest_sale_price FROM MAIN.CARS AS CARS JOIN _T1 AS _T1 ON CARS._id = _T1.CAR_ID LEFT JOIN _S3 AS _S3 ON CARS._id = _S3.CAR_ID ORDER BY - _S3.AGG_0 DESC NULLS LAST + _S3.MAX_SALE_PRICE DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql index d8f64ac23..352581c81 100644 --- a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - AVG(sale_price) AS AGG_0, + AVG(sale_price) AS AVG_SALE_PRICE, car_id AS CAR_ID FROM MAIN.SALES GROUP BY @@ -12,7 +12,7 @@ SELECT CARS.year, CARS.color, CARS.vin_number, - _S1.AGG_0 AS avg_sale_price + _S1.AVG_SALE_PRICE AS avg_sale_price FROM MAIN.CARS AS CARS LEFT JOIN _S1 AS _S1 ON CARS._id = _S1.CAR_ID diff --git a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql index c050107bb..e3bec4d22 100644 --- a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql @@ -1,7 +1,7 @@ WITH _S1 AS ( SELECT - SUM(sale_price) AS AGG_0, - COUNT(*) AS AGG_1, + COUNT(*) AS N_ROWS, + SUM(sale_price) AS SUM_SALE_PRICE, salesperson_id AS SALESPERSON_ID FROM MAIN.SALES WHERE @@ -12,8 +12,8 @@ WITH _S1 AS ( SELECT SALESPERSONS.first_name, SALESPERSONS.last_name, - COALESCE(_S1.AGG_1, 0) AS total_sales, - COALESCE(_S1.AGG_0, 0) AS total_revenue + COALESCE(_S1.N_ROWS, 0) AS total_sales, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID diff --git a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql index 0145f012b..3d405d43c 100644 --- a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql @@ -1,26 +1,17 @@ -WITH _S1 AS ( +WITH _u_0 AS ( SELECT - SALES.car_id AS CAR_ID - FROM MAIN.SALES AS SALES -), _S0 AS ( - SELECT - CARS._id AS _ID, - CARS.make AS MAKE, - CARS.model AS MODEL, - CARS.year AS YEAR - FROM MAIN.CARS AS CARS + car_id AS _u_1 + FROM MAIN.SALES + GROUP BY + car_id ) SELECT - _S0._ID AS _id, - _S0.MAKE AS make, - _S0.MODEL AS model, - _S0.YEAR AS year -FROM _S0 AS _S0 + CARS._id, + CARS.make, + CARS.model, + CARS.year +FROM MAIN.CARS AS CARS +LEFT JOIN _u_0 AS _u_0 + ON CARS._id = _u_0._u_1 WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0._ID = _S1.CAR_ID - ) + _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql index 8c67819ac..94636e375 100644 --- a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql @@ -1,20 +1,14 @@ -WITH _S1 AS ( +WITH _u_0 AS ( SELECT - SALES.customer_id AS CUSTOMER_ID - FROM MAIN.SALES AS SALES -), _S0 AS ( - SELECT - CUSTOMERS._id AS _ID - FROM MAIN.CUSTOMERS AS CUSTOMERS + customer_id AS _u_1 + FROM MAIN.SALES + GROUP BY + customer_id ) SELECT - _S0._ID AS _id -FROM _S0 AS _S0 + CUSTOMERS._id +FROM MAIN.CUSTOMERS AS CUSTOMERS +LEFT JOIN _u_0 AS _u_0 + ON CUSTOMERS._id = _u_0._u_1 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0._ID = _S1.CUSTOMER_ID - ) + NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql index 8feeae78e..76d7c9c24 100644 --- a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql @@ -1,39 +1,17 @@ -WITH _S0 AS ( +WITH _u_0 AS ( SELECT - SALES._id AS _ID, - SALES.salesperson_id AS SALESPERSON_ID + SALES.salesperson_id AS _u_1 FROM MAIN.SALES AS SALES -), _T0 AS ( - SELECT - PAYMENTS_RECEIVED.payment_method AS PAYMENT_METHOD, - PAYMENTS_RECEIVED.sale_id AS SALE_ID - FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED -), _S1 AS ( - SELECT - _T0.SALE_ID AS SALE_ID - FROM _T0 AS _T0 - WHERE - _T0.PAYMENT_METHOD = 'cash' -), _S3 AS ( - SELECT - _S0.SALESPERSON_ID AS SALESPERSON_ID - FROM _S0 AS _S0 - JOIN _S1 AS _S1 - ON _S0._ID = _S1.SALE_ID -), _S2 AS ( - SELECT - SALESPERSONS._id AS _ID, - SALESPERSONS._id AS SALESPERSON_ID - FROM MAIN.SALESPERSONS AS SALESPERSONS + JOIN MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED + ON PAYMENTS_RECEIVED.payment_method = 'cash' + AND PAYMENTS_RECEIVED.sale_id = SALES._id + GROUP BY + SALES.salesperson_id ) SELECT - _S2.SALESPERSON_ID AS salesperson_id -FROM _S2 AS _S2 + SALESPERSONS._id AS salesperson_id +FROM MAIN.SALESPERSONS AS SALESPERSONS +LEFT JOIN _u_0 AS _u_0 + ON SALESPERSONS._id = _u_0._u_1 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S3 AS _S3 - WHERE - _S2._ID = _S3.SALESPERSON_ID - ) + NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql index 22807af2f..dc8a28667 100644 --- a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql @@ -1,24 +1,16 @@ -WITH _S1 AS ( +WITH _u_0 AS ( SELECT - SALES.salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES AS SALES -), _S0 AS ( - SELECT - SALESPERSONS._id AS _ID, - SALESPERSONS.first_name AS FIRST_NAME, - SALESPERSONS.last_name AS LAST_NAME - FROM MAIN.SALESPERSONS AS SALESPERSONS + salesperson_id AS _u_1 + FROM MAIN.SALES + GROUP BY + salesperson_id ) SELECT - _S0._ID AS _id, - _S0.FIRST_NAME AS first_name, - _S0.LAST_NAME AS last_name -FROM _S0 AS _S0 + SALESPERSONS._id, + SALESPERSONS.first_name, + SALESPERSONS.last_name +FROM MAIN.SALESPERSONS AS SALESPERSONS +LEFT JOIN _u_0 AS _u_0 + ON SALESPERSONS._id = _u_0._u_1 WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0._ID = _S1.SALESPERSON_ID - ) + _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql index 3b727d99a..7556995b1 100644 --- a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql @@ -1,22 +1,22 @@ -WITH _T0 AS ( +WITH _S1 AS ( SELECT - SUM(sale_price) AS AGG_0, - COUNT(*) AS AGG_1, + COALESCE(SUM(sale_price), 0) AS TOTAL_REVENUE, + COUNT(*) AS N_ROWS, salesperson_id AS SALESPERSON_ID FROM MAIN.SALES WHERE - DATEDIFF(DAY, sale_date, CURRENT_TIMESTAMP()) <= 30 + DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY salesperson_id ) SELECT SALESPERSONS.first_name, SALESPERSONS.last_name, - _T0.AGG_1 AS total_sales, - COALESCE(_T0.AGG_0, 0) AS total_revenue + _S1.N_ROWS AS total_sales, + _S1.TOTAL_REVENUE AS total_revenue FROM MAIN.SALESPERSONS AS SALESPERSONS -JOIN _T0 AS _T0 - ON SALESPERSONS._id = _T0.SALESPERSON_ID +JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - TOTAL_SALES DESC NULLS LAST + _S1.N_ROWS DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql index 4033e48a5..11f9ee786 100644 --- a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql @@ -1,19 +1,12 @@ -WITH _T1 AS ( - SELECT - SUM(SALES.sale_price) AS AGG_0, - COUNT(DISTINCT SALES.customer_id) AS AGG_1, - CUSTOMERS.state AS STATE - FROM MAIN.SALES AS SALES - JOIN MAIN.CUSTOMERS AS CUSTOMERS - ON CUSTOMERS._id = SALES.customer_id - GROUP BY - CUSTOMERS.state -) SELECT - STATE AS state, - AGG_1 AS unique_customers, - COALESCE(AGG_0, 0) AS total_revenue -FROM _T1 + CUSTOMERS.state, + COUNT(DISTINCT SALES.customer_id) AS unique_customers, + COALESCE(SUM(SALES.sale_price), 0) AS total_revenue +FROM MAIN.SALES AS SALES +JOIN MAIN.CUSTOMERS AS CUSTOMERS + ON CUSTOMERS._id = SALES.customer_id +GROUP BY + CUSTOMERS.state ORDER BY TOTAL_REVENUE DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql index b46909bd1..edce78dcb 100644 --- a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql @@ -1,17 +1,10 @@ -WITH _T1 AS ( - SELECT - SUM(payment_amount) AS AGG_0, - COUNT(*) AS AGG_1, - payment_method AS PAYMENT_METHOD - FROM MAIN.PAYMENTS_RECEIVED - GROUP BY - payment_method -) SELECT - PAYMENT_METHOD AS payment_method, - AGG_1 AS total_payments, - COALESCE(AGG_0, 0) AS total_amount -FROM _T1 + payment_method, + COUNT(*) AS total_payments, + COALESCE(SUM(payment_amount), 0) AS total_amount +FROM MAIN.PAYMENTS_RECEIVED +GROUP BY + payment_method ORDER BY TOTAL_AMOUNT DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql index 9054a5aed..155316e64 100644 --- a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql @@ -1,7 +1,7 @@ WITH _S1 AS ( SELECT - SUM(sale_price) AS AGG_0, - COUNT(*) AS AGG_1, + COUNT(*) AS N_ROWS, + SUM(sale_price) AS SUM_SALE_PRICE, car_id AS CAR_ID FROM MAIN.SALES GROUP BY @@ -10,8 +10,8 @@ WITH _S1 AS ( SELECT CARS.make, CARS.model, - COALESCE(_S1.AGG_1, 0) AS total_sales, - COALESCE(_S1.AGG_0, 0) AS total_revenue + COALESCE(_S1.N_ROWS, 0) AS total_sales, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue FROM MAIN.CARS AS CARS LEFT JOIN _S1 AS _S1 ON CARS._id = _S1.CAR_ID diff --git a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql index 840be91a7..1daa901dd 100644 --- a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql @@ -1,15 +1,9 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS TOTAL_SIGNUPS, - state AS STATE - FROM MAIN.CUSTOMERS - GROUP BY - state -) SELECT - STATE AS state, - TOTAL_SIGNUPS AS total_signups -FROM _T0 + state, + COUNT(*) AS total_signups +FROM MAIN.CUSTOMERS +GROUP BY + state ORDER BY TOTAL_SIGNUPS DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql index 973153076..33d98a13c 100644 --- a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql @@ -2,7 +2,7 @@ SELECT first_name, last_name, phone, - DATEDIFF(DAY, hire_date, termination_date) * 1.0 AS days_employed + DATEDIFF(DAY, CAST(hire_date AS DATETIME), CAST(termination_date AS DATETIME)) * 1.0 AS days_employed FROM MAIN.SALESPERSONS WHERE NOT termination_date IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql index a415a74f7..a30e98dbf 100644 --- a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql @@ -1,20 +1,13 @@ -WITH _T0 AS ( - SELECT - SUM(payment_amount) AS AGG_0, - payment_date AS PAYMENT_DATE, - payment_method AS PAYMENT_METHOD - FROM MAIN.PAYMENTS_RECEIVED - WHERE - DATEDIFF(WEEK, payment_date, CURRENT_TIMESTAMP()) = 1 - GROUP BY - payment_date, - payment_method -) SELECT - PAYMENT_DATE AS payment_date, - PAYMENT_METHOD AS payment_method, - COALESCE(AGG_0, 0) AS total_amount -FROM _T0 + payment_date, + payment_method, + COALESCE(SUM(payment_amount), 0) AS total_amount +FROM MAIN.PAYMENTS_RECEIVED +WHERE + DATEDIFF(WEEK, CAST(payment_date AS DATETIME), CURRENT_TIMESTAMP()) = 1 +GROUP BY + payment_date, + payment_method ORDER BY PAYMENT_DATE DESC NULLS LAST, PAYMENT_METHOD NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql index 000bad338..80e7d24f3 100644 --- a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -1,33 +1,33 @@ WITH _S0 AS ( SELECT - SUM(sale_price) AS AGG_0, + SUM(sale_price) AS SUM_SALE_PRICE, customer_id AS CUSTOMER_ID, DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS QUARTER FROM MAIN.SALES WHERE - DATE_PART(YEAR, sale_date) = 2023 + DATE_PART(YEAR, CAST(sale_date AS DATETIME)) = 2023 GROUP BY customer_id, DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) -), _T1 AS ( +), _T2 AS ( SELECT - SUM(_S0.AGG_0) AS AGG_0, - CUSTOMERS.state AS CUSTOMER_STATE, - _S0.QUARTER + SUM(_S0.SUM_SALE_PRICE) AS SUM_SUM_SALE_PRICE, + _S0.QUARTER, + CUSTOMERS.state AS STATE FROM _S0 AS _S0 JOIN MAIN.CUSTOMERS AS CUSTOMERS ON CUSTOMERS._id = _S0.CUSTOMER_ID GROUP BY - CUSTOMERS.state, - _S0.QUARTER + _S0.QUARTER, + CUSTOMERS.state ) SELECT QUARTER AS quarter, - CUSTOMER_STATE AS customer_state, - COALESCE(AGG_0, 0) AS total_sales -FROM _T1 + STATE AS customer_state, + COALESCE(SUM_SUM_SALE_PRICE, 0) AS total_sales +FROM _T2 WHERE - NOT AGG_0 IS NULL AND AGG_0 > 0 + NOT SUM_SUM_SALE_PRICE IS NULL AND SUM_SUM_SALE_PRICE > 0 ORDER BY QUARTER NULLS FIRST, - CUSTOMER_STATE NULLS FIRST + STATE NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql index e3ae76cf0..969d32436 100644 --- a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql @@ -3,7 +3,8 @@ WITH _T0 AS ( car_id AS CAR_ID FROM MAIN.INVENTORY_SNAPSHOTS WHERE - DATE_PART(MONTH, snapshot_date) = 3 AND DATE_PART(YEAR, snapshot_date) = 2023 + DATE_PART(MONTH, CAST(snapshot_date AS DATETIME)) = 3 + AND DATE_PART(YEAR, CAST(snapshot_date AS DATETIME)) = 2023 QUALIFY is_in_inventory AND RANK() OVER (ORDER BY snapshot_date DESC) = 1 ) diff --git a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql index 34d6825af..31ba8da49 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql @@ -1,6 +1,11 @@ -WITH _T0 AS ( +WITH _S1 AS ( SELECT - SUM(DATEDIFF(SECOND, session_start_ts, session_end_ts)) AS AGG_0, + COALESCE( + SUM( + DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) + ), + 0 + ) AS TOTAL_DURATION, user_id AS USER_ID FROM MAIN.USER_SESSIONS WHERE @@ -10,9 +15,9 @@ WITH _T0 AS ( ) SELECT USERS.uid, - COALESCE(_T0.AGG_0, 0) AS total_duration + _S1.TOTAL_DURATION AS total_duration FROM MAIN.USERS AS USERS -JOIN _T0 AS _T0 - ON USERS.uid = _T0.USER_ID +JOIN _S1 AS _S1 + ON USERS.uid = _S1.USER_ID ORDER BY TOTAL_DURATION DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql index c22d8669b..fa455f642 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - SUM(amount) AS AGG_0, + SUM(amount) AS SUM_AMOUNT, coupon_id AS COUPON_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY GROUP BY @@ -8,7 +8,7 @@ WITH _S1 AS ( ) SELECT COUPONS.cid AS coupon_id, - COALESCE(_S1.AGG_0, 0) AS total_discount + COALESCE(_S1.SUM_AMOUNT, 0) AS total_discount FROM MAIN.COUPONS AS COUPONS LEFT JOIN _S1 AS _S1 ON COUPONS.cid = _S1.COUPON_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql index 3b8531e80..bf5f205c2 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql @@ -2,4 +2,5 @@ SELECT COUNT(*) AS TUC FROM MAIN.USER_SESSIONS WHERE - session_start_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) + session_end_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) + OR session_start_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql index cd756c07b..c90bef4e0 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql @@ -1,11 +1,5 @@ -WITH _T0 AS ( - SELECT - COUNT_IF(status = 'success') AS AGG_0, - COUNT(*) AS AGG_1 - FROM MAIN.WALLET_TRANSACTIONS_DAILY - WHERE - DATEDIFF(MONTH, created_at, CURRENT_TIMESTAMP()) = 1 -) SELECT - COALESCE(AGG_0, 0) / AGG_1 AS _expr0 -FROM _T0 + COALESCE(COUNT_IF(status = 'success'), 0) / COUNT(*) AS _expr0 +FROM MAIN.WALLET_TRANSACTIONS_DAILY +WHERE + DATEDIFF(MONTH, CAST(created_at AS DATETIME), CURRENT_TIMESTAMP()) = 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql index 5471b47dc..2063902e3 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql @@ -1,18 +1,18 @@ WITH _S3 AS ( SELECT - COUNT(*) AS AGG_0, + COUNT(*) AS N_ROWS, COUPONS.merchant_id AS MERCHANT_ID FROM MAIN.COUPONS AS COUPONS JOIN MAIN.MERCHANTS AS MERCHANTS ON COUPONS.merchant_id = MERCHANTS.mid - AND DATEDIFF(MONTH, MERCHANTS.created_at, COUPONS.created_at) = 0 + AND DATEDIFF(MONTH, CAST(MERCHANTS.created_at AS DATETIME), CAST(COUPONS.created_at AS DATETIME)) = 0 GROUP BY COUPONS.merchant_id ) SELECT MERCHANTS.mid AS merchant_id, MERCHANTS.name AS merchant_name, - COALESCE(_S3.AGG_0, 0) AS coupons_per_merchant + COALESCE(_S3.N_ROWS, 0) AS coupons_per_merchant FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S3 AS _S3 ON MERCHANTS.mid = _S3.MERCHANT_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql index 095727d65..a0f72c7c3 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql @@ -1,7 +1,8 @@ -WITH _T0 AS ( +WITH _S1 AS ( SELECT - COUNT(DISTINCT coupon_id) AS AGG_0, - COUNT(DISTINCT txid) AS AGG_1, + ( + COUNT(DISTINCT coupon_id) * 1.0 + ) / COUNT(DISTINCT txid) AS CPUR, receiver_id AS RECEIVER_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE @@ -11,9 +12,7 @@ WITH _T0 AS ( ) SELECT MERCHANTS.name, - ( - _T0.AGG_0 * 1.0 - ) / _T0.AGG_1 AS CPUR + _S1.CPUR FROM MAIN.MERCHANTS AS MERCHANTS -JOIN _T0 AS _T0 - ON MERCHANTS.mid = _T0.RECEIVER_ID +JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.RECEIVER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql index 1dd698710..2a10f378b 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql @@ -1,23 +1,16 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS AGG_0, - COUNT_IF(( - ( - DAYOFWEEK(NOTIFICATIONS.created_at) + 6 - ) % 7 - ) IN (5, 6)) AS AGG_1, - DATE_TRUNC('WEEK', CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) AS WEEK - FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS - JOIN MAIN.USERS AS USERS - ON NOTIFICATIONS.user_id = USERS.uid AND USERS.country IN ('US', 'CA') - WHERE - NOTIFICATIONS.created_at < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) - AND NOTIFICATIONS.created_at >= DATEADD(WEEK, -3, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) - GROUP BY - DATE_TRUNC('WEEK', CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) -) SELECT - WEEK AS week, - AGG_0 AS num_notifs, - COALESCE(AGG_1, 0) AS weekend_notifs -FROM _T0 + DATE_TRUNC('WEEK', CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) AS week, + COUNT(*) AS num_notifs, + COALESCE(COUNT_IF(( + ( + DAYOFWEEK(NOTIFICATIONS.created_at) + 6 + ) % 7 + ) IN (5, 6)), 0) AS weekend_notifs +FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS +JOIN MAIN.USERS AS USERS + ON NOTIFICATIONS.user_id = USERS.uid AND USERS.country IN ('US', 'CA') +WHERE + NOTIFICATIONS.created_at < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) + AND NOTIFICATIONS.created_at >= DATEADD(WEEK, -3, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) +GROUP BY + DATE_TRUNC('WEEK', CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql index 249b30d3f..dc63e9c66 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql @@ -1,14 +1,12 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS AGG_0, - SUM(WALLET_TRANSACTIONS_DAILY.amount) AS AGG_1 - FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY - JOIN MAIN.USERS AS USERS - ON USERS.country = 'US' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id - WHERE - DATEDIFF(DAY, WALLET_TRANSACTIONS_DAILY.created_at, CURRENT_TIMESTAMP()) <= 7 -) SELECT - AGG_0 AS num_transactions, - CASE WHEN AGG_0 > 0 THEN COALESCE(AGG_1, 0) ELSE NULL END AS total_amount -FROM _T0 + COUNT(*) AS num_transactions, + CASE + WHEN COUNT(*) > 0 + THEN COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) + ELSE NULL + END AS total_amount +FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY +JOIN MAIN.USERS AS USERS + ON USERS.country = 'US' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id +WHERE + DATEDIFF(DAY, CAST(WALLET_TRANSACTIONS_DAILY.created_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql index ba0c54639..9a4fb1eaa 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql @@ -2,4 +2,4 @@ SELECT AVG(balance) AS AMB FROM MAIN.WALLET_USER_BALANCE_DAILY WHERE - DATEDIFF(DAY, updated_at, CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(updated_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql index 9d8721f8a..4d16e9ad1 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - SUM(amount) AS AGG_0, + SUM(amount) AS SUM_AMOUNT, receiver_id AS RECEIVER_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE @@ -12,8 +12,8 @@ SELECT MERCHANTS.mid AS merchants_id, MERCHANTS.name AS merchants_name, MERCHANTS.category, - COALESCE(_S1.AGG_0, 0) AS total_revenue, - ROW_NUMBER() OVER (ORDER BY COALESCE(_S1.AGG_0, 0) DESC) AS mrr + COALESCE(_S1.SUM_AMOUNT, 0) AS total_revenue, + ROW_NUMBER() OVER (ORDER BY COALESCE(_S1.SUM_AMOUNT, 0) DESC) AS mrr FROM MAIN.MERCHANTS AS MERCHANTS JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.RECEIVER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql index 88332c457..ce110de8d 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql @@ -1,7 +1,7 @@ WITH _S1 AS ( SELECT - SUM(amount) AS AGG_0, - COUNT(*) AS AGG_1, + COUNT(*) AS N_ROWS, + SUM(amount) AS SUM_AMOUNT, receiver_id AS RECEIVER_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE @@ -12,8 +12,8 @@ WITH _S1 AS ( ) SELECT MERCHANTS.name AS merchant_name, - COALESCE(_S1.AGG_1, 0) AS total_transactions, - COALESCE(_S1.AGG_0, 0) AS total_amount + COALESCE(_S1.N_ROWS, 0) AS total_transactions, + COALESCE(_S1.SUM_AMOUNT, 0) AS total_amount FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.RECEIVER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql index f0300fa04..3f3c8b5b2 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql @@ -5,7 +5,7 @@ FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY JOIN MAIN.USERS AS USERS ON USERS.status = 'active' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id WHERE - DATE_PART(YEAR, WALLET_TRANSACTIONS_DAILY.created_at) = 2023 + DATE_PART(YEAR, CAST(WALLET_TRANSACTIONS_DAILY.created_at AS DATETIME)) = 2023 AND WALLET_TRANSACTIONS_DAILY.sender_type = 0 AND WALLET_TRANSACTIONS_DAILY.status = 'success' GROUP BY diff --git a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql index 08bc48f33..789ec210b 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql @@ -1,23 +1,15 @@ -WITH _S1 AS ( +WITH _u_0 AS ( SELECT - COUPONS.merchant_id AS MERCHANT_ID - FROM MAIN.COUPONS AS COUPONS -), _S0 AS ( - SELECT - MERCHANTS.mid AS MERCHANT_ID, - MERCHANTS.name AS MERCHANT_NAME, - MERCHANTS.mid AS MID - FROM MAIN.MERCHANTS AS MERCHANTS + merchant_id AS _u_1 + FROM MAIN.COUPONS + GROUP BY + merchant_id ) SELECT - _S0.MERCHANT_ID AS merchant_id, - _S0.MERCHANT_NAME AS merchant_name -FROM _S0 AS _S0 + MERCHANTS.mid AS merchant_id, + MERCHANTS.name AS merchant_name +FROM MAIN.MERCHANTS AS MERCHANTS +LEFT JOIN _u_0 AS _u_0 + ON MERCHANTS.mid = _u_0._u_1 WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0.MID = _S1.MERCHANT_ID - ) + _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql index 131d250ab..bb925dd07 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql @@ -1,28 +1,16 @@ -WITH _T0 AS ( +WITH _u_0 AS ( SELECT - WALLET_TRANSACTIONS_DAILY.receiver_id AS RECEIVER_ID, - WALLET_TRANSACTIONS_DAILY.receiver_type AS RECEIVER_TYPE - FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY -), _S1 AS ( - SELECT - _T0.RECEIVER_ID AS RECEIVER_ID - FROM _T0 AS _T0 + receiver_id AS _u_1 + FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE - _T0.RECEIVER_TYPE = 1 -), _S0 AS ( - SELECT - MERCHANTS.mid AS MERCHANT, - MERCHANTS.mid AS MID - FROM MAIN.MERCHANTS AS MERCHANTS + receiver_type = 1 + GROUP BY + receiver_id ) SELECT - _S0.MERCHANT AS merchant -FROM _S0 AS _S0 + MERCHANTS.mid AS merchant +FROM MAIN.MERCHANTS AS MERCHANTS +LEFT JOIN _u_0 AS _u_0 + ON MERCHANTS.mid = _u_0._u_1 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0.MID = _S1.RECEIVER_ID - ) + NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql index e15d62dd3..e3d83c3aa 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql @@ -1,28 +1,16 @@ -WITH _T0 AS ( +WITH _u_0 AS ( SELECT - NOTIFICATIONS.type AS NOTIFICATION_TYPE, - NOTIFICATIONS.user_id AS USER_ID - FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS -), _S1 AS ( - SELECT - _T0.USER_ID AS USER_ID - FROM _T0 AS _T0 + user_id AS _u_1 + FROM MAIN.NOTIFICATIONS WHERE - _T0.NOTIFICATION_TYPE = 'transaction' -), _S0 AS ( - SELECT - USERS.uid AS UID, - USERS.uid AS USER_ID - FROM MAIN.USERS AS USERS + type = 'transaction' + GROUP BY + user_id ) SELECT - _S0.USER_ID AS user_id -FROM _S0 AS _S0 + USERS.uid AS user_id +FROM MAIN.USERS AS USERS +LEFT JOIN _u_0 AS _u_0 + ON USERS.uid = _u_0._u_1 WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0.UID = _S1.USER_ID - ) + NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql index 7cfc35807..d1ac4254e 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql @@ -1,22 +1,15 @@ -WITH _S1 AS ( +WITH _u_0 AS ( SELECT - NOTIFICATIONS.user_id AS USER_ID - FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS -), _S0 AS ( - SELECT - USERS.uid AS UID, - USERS.username AS USERNAME - FROM MAIN.USERS AS USERS + user_id AS _u_1 + FROM MAIN.NOTIFICATIONS + GROUP BY + user_id ) SELECT - _S0.UID AS uid, - _S0.USERNAME AS username -FROM _S0 AS _S0 + USERS.uid, + USERS.username +FROM MAIN.USERS AS USERS +LEFT JOIN _u_0 AS _u_0 + ON USERS.uid = _u_0._u_1 WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0.UID = _S1.USER_ID - ) + _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql index 7b4f77a40..d00872831 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql @@ -1,15 +1,9 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS COUNT, - device_type AS DEVICE_TYPE - FROM MAIN.USER_SESSIONS - GROUP BY - device_type -) SELECT - DEVICE_TYPE AS device_type, - COUNT AS count -FROM _T0 + device_type, + COUNT(*) AS count +FROM MAIN.USER_SESSIONS +GROUP BY + device_type ORDER BY COUNT DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql index 0e3af7349..4b7e912c9 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql @@ -1,15 +1,9 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS COUNT, - status AS STATUS - FROM MAIN.WALLET_TRANSACTIONS_DAILY - GROUP BY - status -) SELECT - STATUS AS status, - COUNT AS count -FROM _T0 + status, + COUNT(*) AS count +FROM MAIN.WALLET_TRANSACTIONS_DAILY +GROUP BY + status ORDER BY COUNT DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql index 47c59f151..d05e988cb 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql @@ -1,7 +1,7 @@ WITH _S1 AS ( SELECT - COUNT(txid) AS AGG_0, - SUM(amount) AS AGG_1, + COUNT(txid) AS COUNT_TXID, + SUM(amount) AS SUM_AMOUNT, coupon_id AS COUPON_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY GROUP BY @@ -9,8 +9,8 @@ WITH _S1 AS ( ) SELECT COUPONS.code AS coupon_code, - COALESCE(_S1.AGG_0, 0) AS redemption_count, - COALESCE(_S1.AGG_1, 0) AS total_discount + COALESCE(_S1.COUNT_TXID, 0) AS redemption_count, + COALESCE(_S1.SUM_AMOUNT, 0) AS total_discount FROM MAIN.COUPONS AS COUPONS LEFT JOIN _S1 AS _S1 ON COUPONS.cid = _S1.COUPON_ID diff --git a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql index c1e8ed55c..291d4fbe5 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql @@ -3,24 +3,18 @@ WITH _S1 AS ( country AS COUNTRY, uid AS UID FROM MAIN.USERS -), _T1 AS ( - SELECT - SUM(WALLET_TRANSACTIONS_DAILY.amount) AS AGG_0, - COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS AGG_1, - _S1.COUNTRY - FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY - LEFT JOIN _S1 AS _S1 - ON WALLET_TRANSACTIONS_DAILY.sender_id = _S1.UID - WHERE - WALLET_TRANSACTIONS_DAILY.sender_type = 0 - GROUP BY - _S1.COUNTRY ) SELECT - COUNTRY AS country, - AGG_1 AS user_count, - COALESCE(AGG_0, 0) AS total_amount -FROM _T1 + _S1.COUNTRY AS country, + COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS user_count, + COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) AS total_amount +FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY +LEFT JOIN _S1 AS _S1 + ON WALLET_TRANSACTIONS_DAILY.sender_id = _S1.UID +WHERE + WALLET_TRANSACTIONS_DAILY.sender_type = 0 +GROUP BY + _S1.COUNTRY ORDER BY TOTAL_AMOUNT DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql index d74258b8b..398bba744 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql @@ -3,12 +3,12 @@ WITH _S0 AS ( MIN(snapshot_date) AS MIN_DATE FROM MAIN.USER_SETTING_SNAPSHOT WHERE - DATE_PART(YEAR, snapshot_date) = 2023 + DATE_PART(YEAR, CAST(snapshot_date AS DATETIME)) = 2023 ) SELECT AVG(USER_SETTING_SNAPSHOT.tx_limit_daily) AS avg_daily_limit, AVG(USER_SETTING_SNAPSHOT.tx_limit_monthly) AS avg_monthly_limit FROM _S0 AS _S0 JOIN MAIN.USER_SETTING_SNAPSHOT AS USER_SETTING_SNAPSHOT - ON DATE_PART(YEAR, USER_SETTING_SNAPSHOT.snapshot_date) = 2023 + ON DATE_PART(YEAR, CAST(USER_SETTING_SNAPSHOT.snapshot_date AS DATETIME)) = 2023 AND USER_SETTING_SNAPSHOT.snapshot_date = _S0.MIN_DATE diff --git a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql index d24e94761..bbb8b09d2 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql @@ -1,6 +1,8 @@ SELECT device_type, - AVG(DATEDIFF(SECOND, session_start_ts, session_end_ts)) AS avg_session_duration_seconds + AVG( + DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) + ) AS avg_session_duration_seconds FROM MAIN.USER_SESSIONS GROUP BY device_type diff --git a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql index dfee8c346..ea2e29a19 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql @@ -5,35 +5,35 @@ WITH _T1 AS ( FROM MAIN.COUPONS ), _S1 AS ( SELECT - MIN(START_DATE) AS AGG_0, + MIN(START_DATE) AS MIN_START_DATE, MERCHANT_ID FROM _T1 GROUP BY MERCHANT_ID ), _S3 AS ( SELECT - MIN(START_DATE) AS AGG_0, + MIN(START_DATE) AS MIN_START_DATE, MERCHANT_ID FROM _T1 GROUP BY MERCHANT_ID ), _S7 AS ( SELECT - MAX(COUPONS.cid) AS AGG_1, + MAX(COUPONS.cid) AS MAX_CID, MERCHANTS.mid AS MID FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S3 AS _S3 ON MERCHANTS.mid = _S3.MERCHANT_ID JOIN MAIN.COUPONS AS COUPONS - ON COUPONS.merchant_id = MERCHANTS.mid AND COUPONS.start_date = _S3.AGG_0 + ON COUPONS.merchant_id = MERCHANTS.mid AND COUPONS.start_date = _S3.MIN_START_DATE GROUP BY MERCHANTS.mid ) SELECT MERCHANTS.mid AS merchants_id, MERCHANTS.created_at AS merchant_registration_date, - _S1.AGG_0 AS earliest_coupon_start_date, - _S7.AGG_1 AS earliest_coupon_id + _S1.MIN_START_DATE AS earliest_coupon_start_date, + _S7.MAX_CID AS earliest_coupon_id FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.MERCHANT_ID @@ -41,5 +41,4 @@ LEFT JOIN _S7 AS _S7 ON MERCHANTS.mid = _S7.MID JOIN _T1 AS _S9 ON MERCHANTS.mid = _S9.MERCHANT_ID -WHERE - _S9.START_DATE <= DATEADD(YEAR, 1, CAST(MERCHANTS.created_at AS TIMESTAMP)) + AND _S9.START_DATE <= DATEADD(YEAR, 1, CAST(MERCHANTS.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql index 9edfd90a5..732b7b878 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql @@ -1,46 +1,20 @@ -WITH _S0 AS ( +WITH _u_0 AS ( SELECT - NOTIFICATIONS.created_at AS CREATED_AT, - NOTIFICATIONS.user_id AS USER_ID + NOTIFICATIONS.user_id AS _u_1 FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS -), _S1 AS ( - SELECT - USERS.created_at AS CREATED_AT, - USERS.uid AS UID - FROM MAIN.USERS AS USERS -), _T0 AS ( - SELECT - _S0.CREATED_AT AS CREATED_AT, - _S1.CREATED_AT AS CREATED_AT_1, - _S0.USER_ID AS USER_ID - FROM _S0 AS _S0 - JOIN _S1 AS _S1 - ON _S0.USER_ID = _S1.UID -), _S3 AS ( - SELECT - _T0.USER_ID AS USER_ID - FROM _T0 AS _T0 - WHERE - _T0.CREATED_AT <= DATEADD(YEAR, 1, CAST(_T0.CREATED_AT_1 AS TIMESTAMP)) - AND _T0.CREATED_AT >= _T0.CREATED_AT_1 -), _S2 AS ( - SELECT - USERS.created_at AS CREATED_AT, - USERS.email AS EMAIL, - USERS.uid AS UID, - USERS.username AS USERNAME - FROM MAIN.USERS AS USERS + JOIN MAIN.USERS AS USERS + ON NOTIFICATIONS.created_at <= DATEADD(YEAR, 1, CAST(USERS.created_at AS TIMESTAMP)) + AND NOTIFICATIONS.created_at >= USERS.created_at + AND NOTIFICATIONS.user_id = USERS.uid + GROUP BY + NOTIFICATIONS.user_id ) SELECT - _S2.USERNAME AS username, - _S2.EMAIL AS email, - _S2.CREATED_AT AS created_at -FROM _S2 AS _S2 + USERS.username, + USERS.email, + USERS.created_at +FROM MAIN.USERS AS USERS +LEFT JOIN _u_0 AS _u_0 + ON USERS.uid = _u_0._u_1 WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S3 AS _S3 - WHERE - _S2.UID = _S3.USER_ID - ) + _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql index e0302206d..e83949a4e 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql @@ -1,30 +1,30 @@ WITH _S2 AS ( SELECT - ev_dt AS DATE_TIME, - ev_key AS KEY + ev_dt AS EV_DT, + ev_key AS EV_KEY FROM EVENTS ) SELECT EVENTS.ev_name AS event_name, ERAS.er_name AS era_name, - DATE_PART(YEAR, EVENTS.ev_dt) AS event_year, + DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) AS event_year, SEASONS.s_name AS season_name, TIMES.t_name AS tod FROM EVENTS AS EVENTS JOIN ERAS AS ERAS - ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) - AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) + ON ERAS.er_end_year > DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) + AND ERAS.er_start_year <= DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) JOIN _S2 AS _S2 - ON EVENTS.ev_key = _S2.KEY + ON EVENTS.ev_key = _S2.EV_KEY JOIN SEASONS AS SEASONS - ON SEASONS.s_month1 = DATE_PART(MONTH, _S2.DATE_TIME) - OR SEASONS.s_month2 = DATE_PART(MONTH, _S2.DATE_TIME) - OR SEASONS.s_month3 = DATE_PART(MONTH, _S2.DATE_TIME) + ON SEASONS.s_month1 = DATE_PART(MONTH, CAST(_S2.EV_DT AS DATETIME)) + OR SEASONS.s_month2 = DATE_PART(MONTH, CAST(_S2.EV_DT AS DATETIME)) + OR SEASONS.s_month3 = DATE_PART(MONTH, CAST(_S2.EV_DT AS DATETIME)) JOIN _S2 AS _S6 - ON EVENTS.ev_key = _S6.KEY + ON EVENTS.ev_key = _S6.EV_KEY JOIN TIMES AS TIMES - ON TIMES.t_end_hour > DATE_PART(HOUR, _S6.DATE_TIME) - AND TIMES.t_start_hour <= DATE_PART(HOUR, _S6.DATE_TIME) + ON TIMES.t_end_hour > DATE_PART(HOUR, CAST(_S6.EV_DT AS DATETIME)) + AND TIMES.t_start_hour <= DATE_PART(HOUR, CAST(_S6.EV_DT AS DATETIME)) WHERE EVENTS.ev_typ = 'culture' ORDER BY diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index 4984e238b..cc7f5d9c0 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -2,27 +2,21 @@ WITH _T1 AS ( SELECT DATEDIFF( DAY, - LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt), - EVENTS.ev_dt + CAST(LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) AS DATETIME), + CAST(EVENTS.ev_dt AS DATETIME) ) AS DAY_GAP, - ERAS.er_name AS NAME, - ERAS.er_start_year AS START_YEAR + ERAS.er_name AS ER_NAME, + ERAS.er_start_year AS ER_START_YEAR FROM ERAS AS ERAS JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) - AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) -), _T0 AS ( - SELECT - ANY_VALUE(START_YEAR) AS AGG_3, - AVG(DAY_GAP) AS AVG_EVENT_GAP, - ANY_VALUE(NAME) AS ERA_NAME - FROM _T1 - GROUP BY - NAME + ON ERAS.er_end_year > DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) + AND ERAS.er_start_year <= DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) ) SELECT - ERA_NAME AS era_name, - AVG_EVENT_GAP AS avg_event_gap -FROM _T0 + ANY_VALUE(ER_NAME) AS era_name, + AVG(DAY_GAP) AS avg_event_gap +FROM _T1 +GROUP BY + ER_NAME ORDER BY - AGG_3 NULLS FIRST + ANY_VALUE(ER_START_YEAR) NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql index fc9bfa872..84035b1a2 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -1,19 +1,13 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS N_EVENTS, - ANY_VALUE(SEASONS.s_name) AS SEASON_NAME - FROM SEASONS AS SEASONS - JOIN EVENTS AS EVENTS - ON SEASONS.s_month1 = DATE_PART(MONTH, EVENTS.ev_dt) - OR SEASONS.s_month2 = DATE_PART(MONTH, EVENTS.ev_dt) - OR SEASONS.s_month3 = DATE_PART(MONTH, EVENTS.ev_dt) - GROUP BY - SEASONS.s_name -) SELECT - SEASON_NAME AS season_name, - N_EVENTS AS n_events -FROM _T0 + ANY_VALUE(SEASONS.s_name) AS season_name, + COUNT(*) AS n_events +FROM SEASONS AS SEASONS +JOIN EVENTS AS EVENTS + ON SEASONS.s_month1 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) + OR SEASONS.s_month2 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) + OR SEASONS.s_month3 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) +GROUP BY + SEASONS.s_name ORDER BY N_EVENTS DESC NULLS LAST, SEASON_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql index f813f6399..6966afc23 100644 --- a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql @@ -1,18 +1,18 @@ WITH _T1 AS ( SELECT - ERAS.er_name AS NAME, - EVENTS.ev_name AS NAME_1, - ERAS.er_start_year AS START_YEAR + ERAS.er_name AS ER_NAME, + ERAS.er_start_year AS ER_START_YEAR, + EVENTS.ev_name AS EV_NAME FROM ERAS AS ERAS JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > DATE_PART(YEAR, EVENTS.ev_dt) - AND ERAS.er_start_year <= DATE_PART(YEAR, EVENTS.ev_dt) + ON ERAS.er_end_year > DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) + AND ERAS.er_start_year <= DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) QUALIFY ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) = 1 ) SELECT - NAME AS era_name, - NAME_1 AS event_name + ER_NAME AS era_name, + EV_NAME AS event_name FROM _T1 ORDER BY - START_YEAR NULLS FIRST + ER_START_YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index e0805c7f1..2229b4501 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -1,86 +1,82 @@ WITH _S0 AS ( SELECT - s_month1 AS FIRST_MONTH, - s_name AS NAME, - s_name AS SEASON_NAME, - s_month2 AS SECOND_MONTH, - s_month3 AS THIRD_MONTH + s_month1 AS S_MONTH1, + s_month2 AS S_MONTH2, + s_month3 AS S_MONTH3, + s_name AS S_NAME FROM SEASONS -), _S7 AS ( +), _S5 AS ( SELECT - s_month1 AS FIRST_MONTH, - s_name AS NAME, - s_month2 AS SECOND_MONTH, - s_month3 AS THIRD_MONTH - FROM SEASONS + ev_dt AS EV_DT, + ev_name AS EV_NAME + FROM EVENTS ), _S9 AS ( SELECT - COUNT(*) AS AGG_0, - _S2.NAME, + COUNT(*) AS N_ROWS, + _S2.S_NAME, SEARCHES.search_id AS SEARCH_ID FROM _S0 AS _S2 JOIN SEARCHES AS SEARCHES - ON _S2.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S2.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S2.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - JOIN EVENTS AS EVENTS - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') - JOIN _S7 AS _S7 - ON _S2.SEASON_NAME = _S7.NAME + ON _S2.S_MONTH1 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) + OR _S2.S_MONTH2 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) + OR _S2.S_MONTH3 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) + JOIN _S5 AS _S5 + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(_S5.EV_NAME), '%') + JOIN _S0 AS _S7 + ON _S2.S_NAME = _S7.S_NAME AND ( - _S7.FIRST_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) - OR _S7.SECOND_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) - OR _S7.THIRD_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + _S7.S_MONTH1 = DATE_PART(MONTH, CAST(_S5.EV_DT AS DATETIME)) + OR _S7.S_MONTH2 = DATE_PART(MONTH, CAST(_S5.EV_DT AS DATETIME)) + OR _S7.S_MONTH3 = DATE_PART(MONTH, CAST(_S5.EV_DT AS DATETIME)) ) GROUP BY - _S2.NAME, + _S2.S_NAME, SEARCHES.search_id ), _S16 AS ( SELECT - ANY_VALUE(_S0.NAME) AS AGG_1, + ANY_VALUE(_S0.S_NAME) AS ANYTHING_S_NAME, + COUNT(*) AS N_ROWS, COUNT_IF(( - NOT _S9.AGG_0 IS NULL AND _S9.AGG_0 > 0 - )) AS AGG_2, - COUNT(*) AS AGG_3, - ANY_VALUE(_S0.SEASON_NAME) AS AGG_4 + NOT _S9.N_ROWS IS NULL AND _S9.N_ROWS > 0 + )) AS SUM_IS_INTRA_SEASON FROM _S0 AS _S0 JOIN SEARCHES AS SEARCHES - ON _S0.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S0.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S0.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + ON _S0.S_MONTH1 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) + OR _S0.S_MONTH2 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) + OR _S0.S_MONTH3 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) LEFT JOIN _S9 AS _S9 - ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.NAME = _S9.NAME + ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.S_NAME = _S9.S_NAME GROUP BY - _S0.NAME + _S0.S_NAME ), _S17 AS ( SELECT - COUNT_IF(_S10.SEASON_NAME = _S15.NAME) AS AGG_0, - COUNT(*) AS AGG_1, - _S10.NAME + COUNT(*) AS N_ROWS, + COUNT_IF(_S15.S_NAME = _S10.S_NAME) AS SUM_IS_INTRA_SEASON, + _S10.S_NAME FROM _S0 AS _S10 - JOIN EVENTS AS EVENTS - ON _S10.FIRST_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) - OR _S10.SECOND_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) - OR _S10.THIRD_MONTH = DATE_PART(MONTH, EVENTS.ev_dt) + JOIN _S5 AS _S11 + ON _S10.S_MONTH1 = DATE_PART(MONTH, CAST(_S11.EV_DT AS DATETIME)) + OR _S10.S_MONTH2 = DATE_PART(MONTH, CAST(_S11.EV_DT AS DATETIME)) + OR _S10.S_MONTH3 = DATE_PART(MONTH, CAST(_S11.EV_DT AS DATETIME)) JOIN SEARCHES AS SEARCHES - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') - JOIN _S7 AS _S15 - ON _S15.FIRST_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S15.SECOND_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) - OR _S15.THIRD_MONTH = DATE_PART(MONTH, SEARCHES.search_ts) + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(_S11.EV_NAME), '%') + JOIN _S0 AS _S15 + ON _S15.S_MONTH1 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) + OR _S15.S_MONTH2 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) + OR _S15.S_MONTH3 = DATE_PART(MONTH, CAST(SEARCHES.search_ts AS DATETIME)) GROUP BY - _S10.NAME + _S10.S_NAME ) SELECT - _S16.AGG_4 AS season_name, + _S16.ANYTHING_S_NAME AS season_name, ROUND(( - 100.0 * COALESCE(_S16.AGG_2, 0) - ) / _S16.AGG_3, 2) AS pct_season_searches, + 100.0 * COALESCE(_S16.SUM_IS_INTRA_SEASON, 0) + ) / _S16.N_ROWS, 2) AS pct_season_searches, ROUND(( - 100.0 * COALESCE(_S17.AGG_0, 0) - ) / COALESCE(_S17.AGG_1, 0), 2) AS pct_event_searches + 100.0 * COALESCE(_S17.SUM_IS_INTRA_SEASON, 0) + ) / COALESCE(_S17.N_ROWS, 0), 2) AS pct_event_searches FROM _S16 AS _S16 LEFT JOIN _S17 AS _S17 - ON _S16.AGG_1 = _S17.NAME + ON _S16.ANYTHING_S_NAME = _S17.S_NAME ORDER BY - SEASON_NAME NULLS FIRST + _S16.ANYTHING_S_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql index d1e8a4e43..34dd57086 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql @@ -2,27 +2,21 @@ WITH _T1 AS ( SELECT COUNT(*) AS N_SEARCHES, SEARCHES.search_engine AS SEARCH_ENGINE, - TIMES.t_name AS TOD + TIMES.t_name AS T_NAME FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) - AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + ON TIMES.t_end_hour > DATE_PART(HOUR, CAST(SEARCHES.search_ts AS DATETIME)) + AND TIMES.t_start_hour <= DATE_PART(HOUR, CAST(SEARCHES.search_ts AS DATETIME)) GROUP BY SEARCHES.search_engine, TIMES.t_name -), _T0 AS ( - SELECT - N_SEARCHES, - SEARCH_ENGINE, - TOD - FROM _T1 QUALIFY - ROW_NUMBER() OVER (PARTITION BY TOD ORDER BY N_SEARCHES DESC, SEARCH_ENGINE) = 1 + ROW_NUMBER() OVER (PARTITION BY TIMES.t_name ORDER BY COUNT(*) DESC, SEARCHES.search_engine) = 1 ) SELECT - TOD AS tod, + T_NAME AS tod, SEARCH_ENGINE AS search_engine, N_SEARCHES AS n_searches -FROM _T0 +FROM _T1 ORDER BY - TOD NULLS FIRST + T_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql index c0f27ab14..f43b4acc0 100644 --- a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql @@ -1,8 +1,8 @@ -WITH _T1 AS ( +WITH _T0 AS ( SELECT COUNT(DISTINCT SEARCHES.search_id) AS N_SEARCHES, - EVENTS.ev_typ AS EVENT_TYPE, - USERS.user_region AS REGION + EVENTS.ev_typ AS EV_TYP, + USERS.user_region AS USER_REGION FROM EVENTS AS EVENTS JOIN SEARCHES AS SEARCHES ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') @@ -11,17 +11,11 @@ WITH _T1 AS ( GROUP BY EVENTS.ev_typ, USERS.user_region -), _T0 AS ( - SELECT - N_SEARCHES, - EVENT_TYPE, - REGION - FROM _T1 QUALIFY - ROW_NUMBER() OVER (PARTITION BY REGION ORDER BY N_SEARCHES DESC) = 1 + ROW_NUMBER() OVER (PARTITION BY USERS.user_region ORDER BY COUNT(DISTINCT SEARCHES.search_id) DESC) = 1 ) SELECT - REGION AS region, - EVENT_TYPE AS event_type, + USER_REGION AS region, + EV_TYP AS event_type, N_SEARCHES AS n_searches FROM _T0 diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql index 12a7c33a3..2d736798f 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -1,60 +1,27 @@ -WITH _S1 AS ( +WITH _S0 AS ( SELECT - EVENTS.ev_dt AS DATE_TIME - FROM EVENTS AS EVENTS -), _T1 AS ( + ev_dt AS EV_DT, + ev_key AS EV_KEY + FROM EVENTS +), _u_0 AS ( SELECT - TIMES.t_end_hour AS END_HOUR, - TIMES.t_name AS NAME, - TIMES.t_start_hour AS START_HOUR - FROM TIMES AS TIMES -), _S2 AS ( - SELECT - _T1.END_HOUR AS END_HOUR, - _T1.START_HOUR AS START_HOUR - FROM _T1 AS _T1 - WHERE - _T1.NAME = 'Pre-Dawn' -), _S0 AS ( - SELECT - _S1.DATE_TIME AS DATE_TIME - FROM _S1 AS _S1 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S2 AS _S2 - WHERE - _S2.END_HOUR > DATE_PART(HOUR, _S1.DATE_TIME) - AND _S2.START_HOUR <= DATE_PART(HOUR, _S1.DATE_TIME) - ) -), _T2 AS ( - SELECT - ERAS.er_end_year AS END_YEAR, - ERAS.er_name AS NAME, - ERAS.er_start_year AS START_YEAR - FROM ERAS AS ERAS -), _S3 AS ( - SELECT - _T2.END_YEAR AS END_YEAR, - _T2.START_YEAR AS START_YEAR - FROM _T2 AS _T2 - WHERE - _T2.NAME = 'Cold War' -), _T0 AS ( - SELECT - 1 AS _ - FROM _S0 AS _S0 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S3 AS _S3 - WHERE - _S3.END_YEAR > DATE_PART(YEAR, _S0.DATE_TIME) - AND _S3.START_YEAR <= DATE_PART(YEAR, _S0.DATE_TIME) - ) + _S2.EV_KEY AS _u_1 + FROM _S0 AS _S2 + JOIN ERAS AS ERAS + ON ERAS.er_end_year > DATE_PART(YEAR, CAST(_S2.EV_DT AS DATETIME)) + AND ERAS.er_name = 'Cold War' + AND ERAS.er_start_year <= DATE_PART(YEAR, CAST(_S2.EV_DT AS DATETIME)) + GROUP BY + _S2.EV_KEY ) SELECT COUNT(*) AS n_events -FROM _T0 AS _T0 +FROM _S0 AS _S0 +JOIN TIMES AS TIMES + ON TIMES.t_end_hour > DATE_PART(HOUR, CAST(_S0.EV_DT AS DATETIME)) + AND TIMES.t_name = 'Pre-Dawn' + AND TIMES.t_start_hour <= DATE_PART(HOUR, CAST(_S0.EV_DT AS DATETIME)) +LEFT JOIN _u_0 AS _u_0 + ON _S0.EV_KEY = _u_0._u_1 +WHERE + NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql index e75d9f4e4..c0cdbc272 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql @@ -1,32 +1,29 @@ -WITH _S1 AS ( +WITH _S0 AS ( + SELECT + user_id AS USER_ID, + user_name AS USER_NAME + FROM USERS +), _S1 AS ( SELECT search_string AS SEARCH_STRING, - search_user_id AS USER_ID + search_user_id AS SEARCH_USER_ID FROM SEARCHES -), _T0 AS ( - SELECT - ANY_VALUE(USERS.user_name) AS AGG_2, - COUNT(DISTINCT USERS_2.user_id) AS N_OTHER_USERS, - ANY_VALUE(USERS.user_name) AS USER_NAME - FROM USERS AS USERS - JOIN _S1 AS _S1 - ON USERS.user_id = _S1.USER_ID - JOIN EVENTS AS EVENTS - ON LOWER(_S1.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') - JOIN _S1 AS _S5 - ON LOWER(_S5.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') - JOIN USERS AS USERS_2 - ON USERS_2.user_id = _S5.USER_ID - WHERE - USERS.user_name <> USERS_2.user_name - GROUP BY - USERS.user_id ) SELECT - USER_NAME AS user_name, - N_OTHER_USERS AS n_other_users -FROM _T0 + ANY_VALUE(_S0.USER_NAME) AS user_name, + COUNT(DISTINCT _S7.USER_ID) AS n_other_users +FROM _S0 AS _S0 +JOIN _S1 AS _S1 + ON _S0.USER_ID = _S1.SEARCH_USER_ID +JOIN EVENTS AS EVENTS + ON LOWER(_S1.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') +JOIN _S1 AS _S5 + ON LOWER(_S5.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') +JOIN _S0 AS _S7 + ON _S0.USER_NAME <> _S7.USER_NAME AND _S5.SEARCH_USER_ID = _S7.USER_ID +GROUP BY + _S0.USER_ID ORDER BY N_OTHER_USERS DESC NULLS LAST, - AGG_2 NULLS FIRST + ANY_VALUE(_S0.USER_NAME) NULLS FIRST LIMIT 7 diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql index 42aa0d605..b438d61f6 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -1,38 +1,35 @@ -WITH _T2 AS ( +WITH _S0 AS ( SELECT - COUNT(*) AS AGG_0, - ANY_VALUE(USERS.user_id) AS AGG_10, - ANY_VALUE(USERS.user_name) AS AGG_8 - FROM USERS AS USERS + user_id AS USER_ID, + user_name AS USER_NAME + FROM USERS +), _T2 AS ( + SELECT + ANY_VALUE(_S0.USER_ID) AS ANYTHING_USER_ID, + ANY_VALUE(_S0.USER_NAME) AS ANYTHING_USER_NAME, + COUNT(*) AS N_ROWS + FROM _S0 AS _S0 JOIN SEARCHES AS SEARCHES - ON SEARCHES.search_user_id = USERS.user_id + ON SEARCHES.search_user_id = _S0.USER_ID JOIN EVENTS AS EVENTS ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') JOIN SEARCHES AS SEARCHES_2 ON LOWER(SEARCHES_2.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') - JOIN USERS AS USERS_2 - ON SEARCHES_2.search_user_id = USERS_2.user_id - WHERE - USERS.user_name <> USERS_2.user_name + JOIN _S0 AS _S7 + ON SEARCHES_2.search_user_id = _S7.USER_ID AND _S0.USER_NAME <> _S7.USER_NAME GROUP BY SEARCHES.search_id, - USERS.user_id -), _T0 AS ( - SELECT - ANY_VALUE(AGG_8) AS AGG_2, - COUNT(*) AS N_SEARCHES, - ANY_VALUE(AGG_8) AS USER_NAME - FROM _T2 - WHERE - AGG_0 > 0 - GROUP BY - AGG_10 + _S0.USER_ID ) SELECT - USER_NAME AS user_name, - N_SEARCHES AS n_searches -FROM _T0 + ANY_VALUE(ANYTHING_USER_NAME) AS user_name, + COUNT(*) AS n_searches +FROM _T2 +WHERE + N_ROWS > 0 +GROUP BY + ANYTHING_USER_ID ORDER BY N_SEARCHES DESC NULLS LAST, - AGG_2 NULLS FIRST + ANY_VALUE(ANYTHING_USER_NAME) NULLS FIRST LIMIT 4 diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql index 7bc221e73..438c4f9b9 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -1,26 +1,26 @@ WITH _T1 AS ( SELECT - COUNT(*) AS AGG_0, - ANY_VALUE(TIMES.t_name) AS AGG_2, - ANY_VALUE(TIMES.t_start_hour) AS AGG_3 + ANY_VALUE(TIMES.t_name) AS ANYTHING_T_NAME, + ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, + COUNT(*) AS N_ROWS FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) - AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + ON TIMES.t_end_hour > DATE_PART(HOUR, CAST(SEARCHES.search_ts AS DATETIME)) + AND TIMES.t_start_hour <= DATE_PART(HOUR, CAST(SEARCHES.search_ts AS DATETIME)) GROUP BY TIMES.t_name ), _T0 AS ( SELECT ROUND(( - 100.0 * AGG_0 - ) / SUM(AGG_0) OVER (), 2) AS PCT_SEARCHES, - AGG_2 AS TOD, - AGG_3 + 100.0 * N_ROWS + ) / SUM(N_ROWS) OVER (), 2) AS PCT_SEARCHES, + ANYTHING_T_NAME, + ANYTHING_T_START_HOUR FROM _T1 ) SELECT - TOD AS tod, + ANYTHING_T_NAME AS tod, PCT_SEARCHES AS pct_searches FROM _T0 ORDER BY - AGG_3 NULLS FIRST + ANYTHING_T_START_HOUR NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql index 41e7159a3..70cda107a 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -1,29 +1,29 @@ WITH _T1 AS ( SELECT - AVG(SEARCHES.search_num_results) AS AGG_0, - COUNT(*) AS AGG_1, - ANY_VALUE(TIMES.t_name) AS AGG_3, - ANY_VALUE(TIMES.t_start_hour) AS AGG_4 + ANY_VALUE(TIMES.t_name) AS ANYTHING_T_NAME, + ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, + AVG(SEARCHES.search_num_results) AS AVG_SEARCH_NUM_RESULTS, + COUNT(*) AS N_ROWS FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > DATE_PART(HOUR, SEARCHES.search_ts) - AND TIMES.t_start_hour <= DATE_PART(HOUR, SEARCHES.search_ts) + ON TIMES.t_end_hour > DATE_PART(HOUR, CAST(SEARCHES.search_ts AS DATETIME)) + AND TIMES.t_start_hour <= DATE_PART(HOUR, CAST(SEARCHES.search_ts AS DATETIME)) GROUP BY TIMES.t_name ), _T0 AS ( SELECT - ROUND(AGG_0, 2) AS AVG_RESULTS, + ROUND(AVG_SEARCH_NUM_RESULTS, 2) AS AVG_RESULTS, ROUND(( - 100.0 * AGG_1 - ) / SUM(AGG_1) OVER (), 2) AS PCT_SEARCHES, - AGG_3 AS TOD, - AGG_4 + 100.0 * N_ROWS + ) / SUM(N_ROWS) OVER (), 2) AS PCT_SEARCHES, + ANYTHING_T_NAME, + ANYTHING_T_START_HOUR FROM _T1 ) SELECT - TOD AS tod, + ANYTHING_T_NAME AS tod, PCT_SEARCHES AS pct_searches, AVG_RESULTS AS avg_results FROM _T0 ORDER BY - AGG_4 NULLS FIRST + ANYTHING_T_START_HOUR NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql index e53e35abf..92e689f75 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql @@ -4,12 +4,12 @@ SELECT FROM EVENTS AS EVENTS JOIN SEASONS AS SEASONS ON ( - SEASONS.s_month1 = DATE_PART(MONTH, EVENTS.ev_dt) - OR SEASONS.s_month2 = DATE_PART(MONTH, EVENTS.ev_dt) - OR SEASONS.s_month3 = DATE_PART(MONTH, EVENTS.ev_dt) + SEASONS.s_month1 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) + OR SEASONS.s_month2 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) + OR SEASONS.s_month3 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) ) AND SEASONS.s_name = 'Summer' GROUP BY EVENTS.ev_typ ORDER BY - EVENT_TYPE NULLS FIRST + EVENTS.ev_typ NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql index 425823c46..05665acd5 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql @@ -4,22 +4,22 @@ WITH _S2 AS ( FROM SEARCHES ), _S3 AS ( SELECT - COUNT(DISTINCT USERS.user_id) AS AGG_0, + COUNT(DISTINCT USERS.user_id) AS NDISTINCT_USER_ID, SEARCHES.search_engine AS SEARCH_ENGINE FROM SEARCHES AS SEARCHES JOIN USERS AS USERS ON SEARCHES.search_user_id = USERS.user_id WHERE - DATE_PART(YEAR, SEARCHES.search_ts) <= 2019 - AND DATE_PART(YEAR, SEARCHES.search_ts) >= 2010 + DATE_PART(YEAR, CAST(SEARCHES.search_ts AS DATETIME)) <= 2019 + AND DATE_PART(YEAR, CAST(SEARCHES.search_ts AS DATETIME)) >= 2010 GROUP BY SEARCHES.search_engine ) SELECT _S2.SEARCH_ENGINE AS engine, - COALESCE(_S3.AGG_0, 0) AS n_users + COALESCE(_S3.NDISTINCT_USER_ID, 0) AS n_users FROM _S2 AS _S2 LEFT JOIN _S3 AS _S3 ON _S2.SEARCH_ENGINE = _S3.SEARCH_ENGINE ORDER BY - ENGINE NULLS FIRST + _S2.SEARCH_ENGINE NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql index 58cff3a8d..fbf6d7159 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -1,64 +1,29 @@ -WITH _S4 AS ( +WITH _T0 AS ( SELECT - USERS.user_id AS USER_ID, - USERS.user_name AS USER_NAME - FROM USERS AS USERS -), _S0 AS ( - SELECT - SEARCHES.search_string AS SEARCH_STRING, - SEARCHES.search_user_id AS USER_ID + ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID FROM SEARCHES AS SEARCHES -), _S1 AS ( - SELECT - EVENTS.ev_dt AS DATE_TIME, - EVENTS.ev_name AS NAME - FROM EVENTS AS EVENTS -), _T1 AS ( - SELECT - ERAS.er_end_year AS END_YEAR, - ERAS.er_name AS NAME, - ERAS.er_start_year AS START_YEAR - FROM ERAS AS ERAS -), _S2 AS ( - SELECT - _T1.END_YEAR AS END_YEAR, - _T1.START_YEAR AS START_YEAR - FROM _T1 AS _T1 - WHERE - _T1.NAME = 'Cold War' -), _S3 AS ( - SELECT - _S1.NAME AS NAME - FROM _S1 AS _S1 - JOIN _S2 AS _S2 - ON _S2.END_YEAR > DATE_PART(YEAR, _S1.DATE_TIME) - AND _S2.START_YEAR <= DATE_PART(YEAR, _S1.DATE_TIME) -), _T0 AS ( - SELECT - _S0.USER_ID AS USER_ID - FROM _S0 AS _S0 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S3 AS _S3 - WHERE - LOWER(_S0.SEARCH_STRING) LIKE CONCAT('%', LOWER(_S3.NAME), '%') - ) + JOIN EVENTS AS EVENTS + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN ERAS AS ERAS + ON ERAS.er_end_year > DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) + AND ERAS.er_name = 'Cold War' + AND ERAS.er_start_year <= DATE_PART(YEAR, CAST(EVENTS.ev_dt AS DATETIME)) + GROUP BY + SEARCHES.search_id ), _S5 AS ( SELECT COUNT(*) AS N_COLD_WAR_SEARCHES, - _T0.USER_ID AS USER_ID_3_0_1 - FROM _T0 AS _T0 + ANYTHING_SEARCH_USER_ID + FROM _T0 GROUP BY - _T0.USER_ID + ANYTHING_SEARCH_USER_ID ) SELECT - _S4.USER_NAME AS user_name, + USERS.user_name, _S5.N_COLD_WAR_SEARCHES AS n_cold_war_searches -FROM _S4 AS _S4 +FROM USERS AS USERS JOIN _S5 AS _S5 - ON _S4.USER_ID = _S5.USER_ID_3_0_1 + ON USERS.user_id = _S5.ANYTHING_SEARCH_USER_ID ORDER BY N_COLD_WAR_SEARCHES DESC NULLS LAST, USER_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql new file mode 100644 index 000000000..c9f6f23b5 --- /dev/null +++ b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql @@ -0,0 +1,9 @@ +SELECT + ps_suppkey AS supplier_key, + ps_partkey AS part_key, + FLOOR(ps_availqty) AS complete_parts, + CEIL(ps_supplycost * FLOOR(ps_availqty)) AS total_cost +FROM TPCH.PARTSUPP +ORDER BY + TOTAL_COST DESC NULLS LAST +LIMIT 10 diff --git a/tests/test_sql_refsols/floor_and_ceil_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_snowflake.sql new file mode 100644 index 000000000..fbccc9e04 --- /dev/null +++ b/tests/test_sql_refsols/floor_and_ceil_snowflake.sql @@ -0,0 +1,11 @@ +SELECT + FLOOR(5.6) AS floor_frac, + CEIL(5.4) AS ceil_frac, + FLOOR(-5.4) AS floor_frac_neg, + CEIL(-5.6) AS ceil_frac_neg, + FLOOR(6) AS floor_int, + CEIL(6) AS ceil_int, + FLOOR(-6) AS floor_int_neg, + CEIL(-6) AS ceil_int_neg +FROM (VALUES + (NULL)) AS _Q_0(_COL_0) diff --git a/tests/test_sql_refsols/hour_minute_day_snowflake.sql b/tests/test_sql_refsols/hour_minute_day_snowflake.sql index 0677370ec..c7e724439 100644 --- a/tests/test_sql_refsols/hour_minute_day_snowflake.sql +++ b/tests/test_sql_refsols/hour_minute_day_snowflake.sql @@ -1,11 +1,11 @@ SELECT SBTRANSACTION.sbtxid AS transaction_id, - DATE_PART(HOUR, SBTRANSACTION.sbtxdatetime) AS _expr0, - DATE_PART(MINUTE, SBTRANSACTION.sbtxdatetime) AS _expr1, - DATE_PART(SECOND, SBTRANSACTION.sbtxdatetime) AS _expr2 + DATE_PART(HOUR, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) AS _expr0, + DATE_PART(MINUTE, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) AS _expr1, + DATE_PART(SECOND, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) AS _expr2 FROM MAIN.SBTRANSACTION AS SBTRANSACTION JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid AND SBTICKER.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') ORDER BY - TRANSACTION_ID NULLS FIRST + SBTRANSACTION.sbtxid NULLS FIRST diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql index 35daf5ec5..2ab4e280c 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T1 AS ( +WITH _T2 AS ( SELECT CASE WHEN ABS( @@ -39,7 +39,7 @@ WITH _T1 AS ( THEN CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END ELSE NULL END AS EXPR_7, - c_nationkey AS NATION_KEY, + c_nationkey AS C_NATIONKEY, CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END AS NEGATIVE_ACCTBAL, CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL FROM TPCH.CUSTOMER @@ -50,10 +50,10 @@ WITH _T1 AS ( AVG(EXPR_7) AS MEDIAN_RED_ACCTBAL, COUNT(NON_NEGATIVE_ACCTBAL) AS N_BLACK_ACCTBAL, COUNT(NEGATIVE_ACCTBAL) AS N_RED_ACCTBAL, - NATION_KEY - FROM _T1 + C_NATIONKEY + FROM _T2 GROUP BY - NATION_KEY + C_NATIONKEY ) SELECT NATION.n_name AS nation_name, @@ -66,6 +66,6 @@ FROM TPCH.NATION AS NATION JOIN TPCH.REGION AS REGION ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' JOIN _S3 AS _S3 - ON NATION.n_nationkey = _S3.NATION_KEY + ON NATION.n_nationkey = _S3.C_NATIONKEY ORDER BY - NATION_NAME NULLS FIRST + NATION.n_name NULLS FIRST diff --git a/tests/test_sql_refsols/quantile_test_1_snowflake.sql b/tests/test_sql_refsols/quantile_test_1_snowflake.sql new file mode 100644 index 000000000..6f5017af6 --- /dev/null +++ b/tests/test_sql_refsols/quantile_test_1_snowflake.sql @@ -0,0 +1,15 @@ +WITH _T0 AS ( + SELECT + CASE + WHEN CAST(0.30000000000000004 * COUNT(ORDERS.o_totalprice) OVER () AS BIGINT) < ROW_NUMBER() OVER (ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_1 + FROM TPCH.CUSTOMER AS CUSTOMER + JOIN TPCH.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) = 1998 +) +SELECT + MAX(EXPR_1) AS seventieth_order_price +FROM _T0 diff --git a/tests/test_sql_refsols/quantile_test_2_snowflake.sql b/tests/test_sql_refsols/quantile_test_2_snowflake.sql new file mode 100644 index 000000000..73ae7f4b9 --- /dev/null +++ b/tests/test_sql_refsols/quantile_test_2_snowflake.sql @@ -0,0 +1,96 @@ +WITH _S0 AS ( + SELECT + n_name AS N_NAME, + n_nationkey AS N_NATIONKEY, + n_regionkey AS N_REGIONKEY + FROM TPCH.NATION + ORDER BY + N_NAME NULLS FIRST + LIMIT 5 +), _T1 AS ( + SELECT + CASE + WHEN CAST(0.99 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_10, + CASE + WHEN CAST(0.75 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_11, + CASE + WHEN CAST(0.25 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_12, + CASE + WHEN CAST(0.09999999999999998 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_13, + CASE + WHEN CAST(0.010000000000000009 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_14, + CASE + WHEN CAST(0.0 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_15, + CASE + WHEN CAST(0.5 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_16, + CASE + WHEN CAST(1.0 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_17, + CASE + WHEN CAST(0.9 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) + THEN ORDERS.o_totalprice + ELSE NULL + END AS EXPR_9, + CUSTOMER.c_nationkey AS C_NATIONKEY + FROM TPCH.CUSTOMER AS CUSTOMER + JOIN TPCH.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) = 1998 +), _S5 AS ( + SELECT + MAX(EXPR_10) AS MAX_EXPR_10, + MAX(EXPR_11) AS MAX_EXPR_11, + MAX(EXPR_12) AS MAX_EXPR_12, + MAX(EXPR_13) AS MAX_EXPR_13, + MAX(EXPR_14) AS MAX_EXPR_14, + MAX(EXPR_15) AS MAX_EXPR_15, + MAX(EXPR_16) AS MAX_EXPR_16, + MAX(EXPR_17) AS MAX_EXPR_17, + MAX(EXPR_9) AS MAX_EXPR_9, + C_NATIONKEY + FROM _T1 + GROUP BY + C_NATIONKEY +) +SELECT + REGION.r_name AS region_name, + _S0.N_NAME AS nation_name, + _S5.MAX_EXPR_17 AS orders_min, + _S5.MAX_EXPR_10 AS orders_1_percent, + _S5.MAX_EXPR_9 AS orders_10_percent, + _S5.MAX_EXPR_11 AS orders_25_percent, + _S5.MAX_EXPR_16 AS orders_median, + _S5.MAX_EXPR_12 AS orders_75_percent, + _S5.MAX_EXPR_13 AS orders_90_percent, + _S5.MAX_EXPR_14 AS orders_99_percent, + _S5.MAX_EXPR_15 AS orders_max +FROM _S0 AS _S0 +JOIN TPCH.REGION AS REGION + ON REGION.r_regionkey = _S0.N_REGIONKEY +LEFT JOIN _S5 AS _S5 + ON _S0.N_NATIONKEY = _S5.C_NATIONKEY +ORDER BY + _S0.N_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql index 88237aa63..2aa7e9079 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T0 AS ( +WITH _T1 AS ( SELECT CASE WHEN ABS( @@ -39,9 +39,9 @@ WITH _T0 AS ( THEN CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END ELSE NULL END AS EXPR_7, + NATION.n_regionkey AS N_REGIONKEY, CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS NEGATIVE_ACCTBAL, - CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL, - NATION.n_regionkey AS REGION_KEY + CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS NON_NEGATIVE_ACCTBAL FROM TPCH.NATION AS NATION JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_nationkey = NATION.n_nationkey @@ -52,10 +52,10 @@ WITH _T0 AS ( AVG(EXPR_7) AS MEDIAN_RED_ACCTBAL, COUNT(NON_NEGATIVE_ACCTBAL) AS N_BLACK_ACCTBAL, COUNT(NEGATIVE_ACCTBAL) AS N_RED_ACCTBAL, - REGION_KEY - FROM _T0 + N_REGIONKEY + FROM _T1 GROUP BY - REGION_KEY + N_REGIONKEY ) SELECT REGION.r_name AS region_name, @@ -66,6 +66,6 @@ SELECT _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal FROM TPCH.REGION AS REGION JOIN _S3 AS _S3 - ON REGION.r_regionkey = _S3.REGION_KEY + ON REGION.r_regionkey = _S3.N_REGIONKEY ORDER BY - REGION_NAME NULLS FIRST + REGION.r_name NULLS FIRST diff --git a/tests/test_sql_refsols/simple_var_std_snowflake.sql b/tests/test_sql_refsols/simple_var_std_snowflake.sql index a918940bb..99c9ae601 100644 --- a/tests/test_sql_refsols/simple_var_std_snowflake.sql +++ b/tests/test_sql_refsols/simple_var_std_snowflake.sql @@ -4,23 +4,21 @@ WITH _S1 AS ( VARIANCE_POP(s_acctbal) AS POP_VAR, STDDEV(s_acctbal) AS SAMPLE_STD, VARIANCE(s_acctbal) AS SAMPLE_VAR, - STDDEV_POP(s_acctbal) AS STD, - VARIANCE_POP(s_acctbal) AS VAR, - s_nationkey AS NATION_KEY + s_nationkey AS S_NATIONKEY FROM TPCH.SUPPLIER GROUP BY s_nationkey ) SELECT NATION.n_name AS name, - _S1.VAR AS var, - _S1.STD AS std, + _S1.POP_VAR AS var, + _S1.POP_STD AS std, _S1.SAMPLE_VAR AS sample_var, _S1.SAMPLE_STD AS sample_std, _S1.POP_VAR AS pop_var, _S1.POP_STD AS pop_std FROM TPCH.NATION AS NATION JOIN _S1 AS _S1 - ON NATION.n_nationkey = _S1.NATION_KEY + ON NATION.n_nationkey = _S1.S_NATIONKEY WHERE NATION.n_name IN ('ALGERIA', 'ARGENTINA') diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql index 014150355..b640b8e3b 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql @@ -24,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql index 0a42c0a98..81531bc73 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql @@ -22,4 +22,5 @@ SELECT ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql index cfcad95b7..4977baad7 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql @@ -24,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql index 93bce22e3..d4e3c2ec4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql @@ -22,4 +22,5 @@ SELECT ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql index 8febb6c91..bb1f1c219 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql @@ -24,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql index 6ba3a95a6..e3b092526 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql @@ -22,4 +22,5 @@ SELECT ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql index 70250b42c..ae0ce3cf7 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql @@ -20,4 +20,5 @@ SELECT DAYOFWEEK(sbtxdatetime) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql index 2b11b3a3e..884f9b6d6 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql @@ -20,4 +20,5 @@ SELECT DAYOFWEEK(sbtxdatetime) AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql index 7f0308a29..ae4dd53a1 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql @@ -24,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql index a04bcdf72..1e1b9162d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql @@ -22,4 +22,5 @@ SELECT ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql index 5b37a199f..3ad81442d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql @@ -24,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql index d4d665be2..f7771ef28 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql @@ -22,4 +22,5 @@ SELECT ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql index ec373bccb..1a241332e 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql @@ -24,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql index ce4ee8792..eeffd09e0 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql @@ -22,4 +22,5 @@ SELECT ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql index 61086f58c..c07ad3539 100644 --- a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql @@ -1,36 +1,29 @@ WITH _S7 AS ( SELECT - COUNT(*) AS AGG_0, - INCIDENTS.in_device_id AS DEVICE_ID + COUNT(*) AS N_ROWS, + INCIDENTS.in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS AS INCIDENTS JOIN MAIN.ERRORS AS ERRORS ON ERRORS.er_id = INCIDENTS.in_error_id AND ERRORS.er_name = 'Battery Failure' GROUP BY INCIDENTS.in_device_id -), _T1 AS ( - SELECT - SUM(COALESCE(_S7.AGG_0, 0)) AS AGG_0, - COUNT(*) AS AGG_1, - COUNTRIES.co_name AS COUNTRY_NAME, - PRODUCTS.pr_name AS PRODUCT_NAME - FROM MAIN.COUNTRIES AS COUNTRIES - JOIN MAIN.DEVICES AS DEVICES - ON COUNTRIES.co_id = DEVICES.de_production_country_id - JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id - LEFT JOIN _S7 AS _S7 - ON DEVICES.de_id = _S7.DEVICE_ID - GROUP BY - COUNTRIES.co_name, - PRODUCTS.pr_name ) SELECT - COUNTRY_NAME AS country_name, - PRODUCT_NAME AS product_name, - ROUND(COALESCE(AGG_0, 0) / AGG_1, 2) AS ir -FROM _T1 + COUNTRIES.co_name AS country_name, + PRODUCTS.pr_name AS product_name, + ROUND(COALESCE(SUM(COALESCE(_S7.N_ROWS, 0)), 0) / COUNT(*), 2) AS ir +FROM MAIN.COUNTRIES AS COUNTRIES +JOIN MAIN.DEVICES AS DEVICES + ON COUNTRIES.co_id = DEVICES.de_production_country_id +JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id +LEFT JOIN _S7 AS _S7 + ON DEVICES.de_id = _S7.IN_DEVICE_ID +GROUP BY + COUNTRIES.co_name, + PRODUCTS.pr_name ORDER BY IR DESC NULLS LAST, - PRODUCT_NAME NULLS FIRST, - COUNTRY_NAME NULLS FIRST + PRODUCTS.pr_name NULLS FIRST, + COUNTRIES.co_name NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql index 185473984..85d28ffdf 100644 --- a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql @@ -9,4 +9,4 @@ SELECT FROM MAIN.COUNTRIES AS COUNTRIES CROSS JOIN _S1 AS _S1 ORDER BY - NAME NULLS FIRST + COUNTRIES.co_name NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql index 05d4501ec..a7dc73a6a 100644 --- a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql @@ -1,37 +1,46 @@ -WITH _S7 AS ( +WITH _S0 AS ( SELECT - COUNT(*) AS AGG_2, - in_device_id AS DEVICE_ID + co_id AS CO_ID, + co_name AS CO_NAME + FROM MAIN.COUNTRIES +), _S2 AS ( + SELECT + co_id AS CO_ID + FROM MAIN.COUNTRIES +), _S7 AS ( + SELECT + COUNT(*) AS N_ROWS, + in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS GROUP BY in_device_id ), _S9 AS ( SELECT - COUNT(*) AS AGG_1, - SUM(_S7.AGG_2) AS AGG_4, - COUNTRIES.co_id AS _ID, - COUNTRIES_2.co_id AS _ID_3 - FROM MAIN.COUNTRIES AS COUNTRIES - CROSS JOIN MAIN.COUNTRIES AS COUNTRIES_2 + COUNT(*) AS N_ROWS, + SUM(_S7.N_ROWS) AS SUM_N_ROWS, + _S3.CO_ID AS _ID_3, + _S2.CO_ID + FROM _S2 AS _S2 + CROSS JOIN _S2 AS _S3 JOIN MAIN.DEVICES AS DEVICES - ON COUNTRIES.co_id = DEVICES.de_production_country_id - AND COUNTRIES_2.co_id = DEVICES.de_purchase_country_id + ON DEVICES.de_production_country_id = _S2.CO_ID + AND DEVICES.de_purchase_country_id = _S3.CO_ID LEFT JOIN _S7 AS _S7 - ON DEVICES.de_id = _S7.DEVICE_ID + ON DEVICES.de_id = _S7.IN_DEVICE_ID GROUP BY - COUNTRIES.co_id, - COUNTRIES_2.co_id + _S3.CO_ID, + _S2.CO_ID ) SELECT - COUNTRIES.co_name AS factory_country, - COUNTRIES_2.co_name AS purchase_country, + _S0.CO_NAME AS factory_country, + _S1.CO_NAME AS purchase_country, ROUND(( - 1.0 * COALESCE(_S9.AGG_4, 0) - ) / COALESCE(_S9.AGG_1, 0), 2) AS ir -FROM MAIN.COUNTRIES AS COUNTRIES -CROSS JOIN MAIN.COUNTRIES AS COUNTRIES_2 + 1.0 * COALESCE(_S9.SUM_N_ROWS, 0) + ) / COALESCE(_S9.N_ROWS, 0), 2) AS ir +FROM _S0 AS _S0 +CROSS JOIN _S0 AS _S1 LEFT JOIN _S9 AS _S9 - ON COUNTRIES.co_id = _S9._ID AND COUNTRIES_2.co_id = _S9._ID_3 + ON _S0.CO_ID = _S9.CO_ID AND _S1.CO_ID = _S9._ID_3 ORDER BY IR DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql index fdd307296..34a47d357 100644 --- a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql @@ -1,72 +1,72 @@ WITH _T3 AS ( SELECT - in_device_id AS DEVICE_ID + in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS ), _S1 AS ( SELECT - COUNT(*) AS AGG_9, - DEVICE_ID + COUNT(*) AS N_ROWS, + IN_DEVICE_ID FROM _T3 GROUP BY - DEVICE_ID + IN_DEVICE_ID ), _S3 AS ( SELECT - COUNT(*) AS AGG_1, - SUM(_S1.AGG_9) AS AGG_11, - DEVICES.de_production_country_id AS FACTORY_COUNTRY_ID + COUNT(*) AS N_ROWS, + SUM(_S1.N_ROWS) AS SUM_N_ROWS, + DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID FROM MAIN.DEVICES AS DEVICES LEFT JOIN _S1 AS _S1 - ON DEVICES.de_id = _S1.DEVICE_ID + ON DEVICES.de_id = _S1.IN_DEVICE_ID GROUP BY DEVICES.de_production_country_id ), _S5 AS ( SELECT - COUNT(*) AS AGG_12, - DEVICE_ID + COUNT(*) AS N_ROWS, + IN_DEVICE_ID FROM _T3 GROUP BY - DEVICE_ID + IN_DEVICE_ID ), _S7 AS ( SELECT - SUM(_S5.AGG_12) AS AGG_14, - COUNT(*) AS AGG_3, - DEVICES.de_purchase_country_id AS STORE_COUNTRY_ID + COUNT(*) AS N_ROWS, + SUM(_S5.N_ROWS) AS SUM_N_ROWS, + DEVICES.de_purchase_country_id AS DE_PURCHASE_COUNTRY_ID FROM MAIN.DEVICES AS DEVICES LEFT JOIN _S5 AS _S5 - ON DEVICES.de_id = _S5.DEVICE_ID + ON DEVICES.de_id = _S5.IN_DEVICE_ID GROUP BY DEVICES.de_purchase_country_id ), _S11 AS ( SELECT - COUNT(*) AS AGG_6, - DEVICE_ID + COUNT(*) AS N_ROWS, + IN_DEVICE_ID FROM _T3 GROUP BY - DEVICE_ID + IN_DEVICE_ID ), _S13 AS ( SELECT - COUNT(*) AS AGG_5, - SUM(_S11.AGG_6) AS AGG_8, - USERS.us_country_id AS COUNTRY_ID + COUNT(*) AS N_ROWS, + SUM(_S11.N_ROWS) AS SUM_N_ROWS, + USERS.us_country_id AS US_COUNTRY_ID FROM MAIN.USERS AS USERS JOIN MAIN.DEVICES AS DEVICES ON DEVICES.de_owner_id = USERS.us_id LEFT JOIN _S11 AS _S11 - ON DEVICES.de_id = _S11.DEVICE_ID + ON DEVICES.de_id = _S11.IN_DEVICE_ID GROUP BY USERS.us_country_id ) SELECT COUNTRIES.co_name AS country_name, - ROUND(COALESCE(_S3.AGG_11, 0) / _S3.AGG_1, 2) AS made_ir, - ROUND(COALESCE(_S7.AGG_14, 0) / _S7.AGG_3, 2) AS sold_ir, - ROUND(COALESCE(_S13.AGG_8, 0) / COALESCE(_S13.AGG_5, 0), 2) AS user_ir + ROUND(COALESCE(_S3.SUM_N_ROWS, 0) / _S3.N_ROWS, 2) AS made_ir, + ROUND(COALESCE(_S7.SUM_N_ROWS, 0) / _S7.N_ROWS, 2) AS sold_ir, + ROUND(COALESCE(_S13.SUM_N_ROWS, 0) / COALESCE(_S13.N_ROWS, 0), 2) AS user_ir FROM MAIN.COUNTRIES AS COUNTRIES JOIN _S3 AS _S3 - ON COUNTRIES.co_id = _S3.FACTORY_COUNTRY_ID + ON COUNTRIES.co_id = _S3.DE_PRODUCTION_COUNTRY_ID JOIN _S7 AS _S7 - ON COUNTRIES.co_id = _S7.STORE_COUNTRY_ID + ON COUNTRIES.co_id = _S7.DE_PURCHASE_COUNTRY_ID LEFT JOIN _S13 AS _S13 - ON COUNTRIES.co_id = _S13.COUNTRY_ID + ON COUNTRIES.co_id = _S13.US_COUNTRY_ID ORDER BY - COUNTRY_NAME NULLS FIRST + COUNTRIES.co_name NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql index 80081ff8f..1155373c8 100644 --- a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql @@ -1,7 +1,7 @@ WITH _S5 AS ( SELECT - COUNT(*) AS AGG_0, - INCIDENTS.in_error_id AS ERROR_ID + COUNT(*) AS N_ROWS, + INCIDENTS.in_error_id AS IN_ERROR_ID FROM MAIN.INCIDENTS AS INCIDENTS JOIN MAIN.DEVICES AS DEVICES ON DEVICES.de_id = INCIDENTS.in_device_id @@ -11,16 +11,16 @@ WITH _S5 AS ( INCIDENTS.in_error_id ), _T0 AS ( SELECT - ERRORS.er_name AS ERROR, ROUND(( - 100.0 * COALESCE(_S5.AGG_0, 0) - ) / SUM(COALESCE(_S5.AGG_0, 0)) OVER (), 2) AS PCT + 100.0 * COALESCE(_S5.N_ROWS, 0) + ) / SUM(COALESCE(_S5.N_ROWS, 0)) OVER (), 2) AS PCT, + ERRORS.er_name AS ER_NAME FROM MAIN.ERRORS AS ERRORS LEFT JOIN _S5 AS _S5 - ON ERRORS.er_id = _S5.ERROR_ID + ON ERRORS.er_id = _S5.IN_ERROR_ID ) SELECT - ERROR AS error, + ER_NAME AS error, PCT AS pct FROM _T0 ORDER BY diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql index 8a681ffc7..00c3d22f6 100644 --- a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql @@ -1,28 +1,28 @@ WITH _S3 AS ( SELECT - COUNT(*) AS AGG_0, - in_device_id AS DEVICE_ID + COUNT(*) AS N_ROWS, + in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS GROUP BY in_device_id ), _S5 AS ( SELECT - SUM(COALESCE(_S3.AGG_0, 0)) AS AGG_0, - COUNT(*) AS AGG_1, - DEVICES.de_production_country_id AS FACTORY_COUNTRY_ID + COUNT(*) AS N_ROWS, + SUM(COALESCE(_S3.N_ROWS, 0)) AS SUM_N_INCIDENTS, + DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID FROM MAIN.DEVICES AS DEVICES JOIN MAIN.PRODUCTS AS PRODUCTS ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' LEFT JOIN _S3 AS _S3 - ON DEVICES.de_id = _S3.DEVICE_ID + ON DEVICES.de_id = _S3.IN_DEVICE_ID GROUP BY DEVICES.de_production_country_id ) SELECT COUNTRIES.co_name AS country, - ROUND(COALESCE(_S5.AGG_0, 0) / COALESCE(_S5.AGG_1, 0), 2) AS ir + ROUND(COALESCE(_S5.SUM_N_INCIDENTS, 0) / COALESCE(_S5.N_ROWS, 0), 2) AS ir FROM MAIN.COUNTRIES AS COUNTRIES LEFT JOIN _S5 AS _S5 - ON COUNTRIES.co_id = _S5.FACTORY_COUNTRY_ID + ON COUNTRIES.co_id = _S5.DE_PRODUCTION_COUNTRY_ID ORDER BY - COUNTRY NULLS FIRST + COUNTRIES.co_name NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql index b5679ae51..2ca72ecd8 100644 --- a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql @@ -1,13 +1,13 @@ WITH _S0 AS ( SELECT - COUNT(*) AS AGG_0 + COUNT(*) AS N_ROWS FROM MAIN.INCIDENTS ), _S1 AS ( SELECT - COUNT(*) AS AGG_1 + COUNT(*) AS N_ROWS FROM MAIN.DEVICES ) SELECT - ROUND(_S0.AGG_0 / _S1.AGG_1, 2) AS ir + ROUND(_S0.N_ROWS / _S1.N_ROWS, 2) AS ir FROM _S0 AS _S0 CROSS JOIN _S1 AS _S1 diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql index 68471d486..410244e66 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -1,26 +1,16 @@ -WITH _T3 AS ( - SELECT - ca_dt AS CALENDAR_DAY - FROM MAIN.CALENDAR -), _T0 AS ( - SELECT - COUNT(*) AS N_PURCHASES, - ANY_VALUE(_T3.CALENDAR_DAY) AS START_OF_PERIOD - FROM _T3 AS _T3 - CROSS JOIN _T3 AS _S1 - JOIN MAIN.DEVICES AS DEVICES - ON _S1.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - WHERE - DATE_PART(YEAR, _T3.CALENDAR_DAY) = 2024 - AND _S1.CALENDAR_DAY < DATEADD(DAY, 5, CAST(_T3.CALENDAR_DAY AS TIMESTAMP)) - AND _S1.CALENDAR_DAY >= _T3.CALENDAR_DAY - GROUP BY - _T3.CALENDAR_DAY -) SELECT - START_OF_PERIOD AS start_of_period, - N_PURCHASES AS n_purchases -FROM _T0 + ANY_VALUE(CALENDAR.ca_dt) AS start_of_period, + COUNT(*) AS n_purchases +FROM MAIN.CALENDAR AS CALENDAR +JOIN MAIN.CALENDAR AS CALENDAR_2 + ON CALENDAR.ca_dt <= CALENDAR_2.ca_dt + AND CALENDAR_2.ca_dt < DATEADD(DAY, 5, CAST(CALENDAR.ca_dt AS TIMESTAMP)) +JOIN MAIN.DEVICES AS DEVICES + ON CALENDAR_2.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) +WHERE + DATE_PART(YEAR, CAST(CALENDAR.ca_dt AS DATETIME)) = 2024 +GROUP BY + CALENDAR.ca_dt ORDER BY N_PURCHASES DESC NULLS LAST, START_OF_PERIOD NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index 833753d2b..9012027c3 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -1,41 +1,41 @@ WITH _S0 AS ( SELECT - COUNT(*) AS AGG_1, - de_product_id AS PRODUCT_ID + COUNT(*) AS N_ROWS, + de_product_id AS DE_PRODUCT_ID FROM MAIN.DEVICES GROUP BY de_product_id ), _T4 AS ( SELECT - pr_id AS _ID, - pr_release AS RELEASE_DATE + pr_id AS PR_ID, + pr_release AS PR_RELEASE FROM MAIN.PRODUCTS ), _S6 AS ( SELECT - SUM(_S0.AGG_1) AS AGG_1, - DATE_PART(YEAR, _T4.RELEASE_DATE) AS RELEASE_YEAR + SUM(_S0.N_ROWS) AS SUM_N_ROWS, + DATE_PART(YEAR, CAST(_T4.PR_RELEASE AS DATETIME)) AS RELEASE_YEAR FROM _S0 AS _S0 JOIN _T4 AS _T4 - ON _S0.PRODUCT_ID = _T4._ID + ON _S0.DE_PRODUCT_ID = _T4.PR_ID GROUP BY - DATE_PART(YEAR, _T4.RELEASE_DATE) + DATE_PART(YEAR, CAST(_T4.PR_RELEASE AS DATETIME)) ), _S7 AS ( SELECT - COUNT(*) AS AGG_0, - DATE_PART(YEAR, _T6.RELEASE_DATE) AS RELEASE_YEAR + COUNT(*) AS N_ROWS, + DATE_PART(YEAR, CAST(_T6.PR_RELEASE AS DATETIME)) AS RELEASE_YEAR FROM MAIN.DEVICES AS DEVICES JOIN _T4 AS _T6 - ON DEVICES.de_product_id = _T6._ID + ON DEVICES.de_product_id = _T6.PR_ID JOIN MAIN.INCIDENTS AS INCIDENTS ON DEVICES.de_id = INCIDENTS.in_device_id GROUP BY - DATE_PART(YEAR, _T6.RELEASE_DATE) + DATE_PART(YEAR, CAST(_T6.PR_RELEASE AS DATETIME)) ) SELECT _S6.RELEASE_YEAR AS year, - ROUND(COALESCE(_S7.AGG_0, 0) / _S6.AGG_1, 2) AS ir + ROUND(COALESCE(_S7.N_ROWS, 0) / _S6.SUM_N_ROWS, 2) AS ir FROM _S6 AS _S6 LEFT JOIN _S7 AS _S7 ON _S6.RELEASE_YEAR = _S7.RELEASE_YEAR ORDER BY - YEAR NULLS FIRST + _S6.RELEASE_YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql index 0ba00be7e..dc87b6aec 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql @@ -1,26 +1,20 @@ WITH _S3 AS ( SELECT - COUNT(*) AS AGG_0, - in_device_id AS DEVICE_ID + COUNT(*) AS N_ROWS, + in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS GROUP BY in_device_id -), _T0 AS ( - SELECT - SUM(COALESCE(_S3.AGG_0, 0)) AS AGG_0, - COUNT(*) AS AGG_1, - PRODUCTS.pr_brand AS BRAND - FROM MAIN.DEVICES AS DEVICES - JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id - LEFT JOIN _S3 AS _S3 - ON DEVICES.de_id = _S3.DEVICE_ID - GROUP BY - PRODUCTS.pr_brand ) SELECT - BRAND AS brand, - ROUND(COALESCE(AGG_0, 0) / AGG_1, 2) AS ir -FROM _T0 + PRODUCTS.pr_brand AS brand, + ROUND(COALESCE(SUM(COALESCE(_S3.N_ROWS, 0)), 0) / COUNT(*), 2) AS ir +FROM MAIN.DEVICES AS DEVICES +JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id +LEFT JOIN _S3 AS _S3 + ON DEVICES.de_id = _S3.IN_DEVICE_ID +GROUP BY + PRODUCTS.pr_brand ORDER BY - BRAND NULLS FIRST + PRODUCTS.pr_brand NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index 4e643a210..1fd2d14cf 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -1,72 +1,65 @@ WITH _T4 AS ( SELECT - ca_dt AS CALENDAR_DAY + ca_dt AS CA_DT FROM MAIN.CALENDAR + WHERE + DATE_PART(YEAR, CAST(ca_dt AS DATETIME)) IN (2020, 2021) ), _T8 AS ( SELECT - co_id AS _ID, - co_name AS NAME + co_id AS CO_ID, + co_name AS CO_NAME FROM MAIN.COUNTRIES + WHERE + co_name = 'CN' ), _S7 AS ( SELECT - COUNT(*) AS AGG_2, - _T7.CALENDAR_DAY + COUNT(*) AS N_ROWS, + _T7.CA_DT FROM _T4 AS _T7 JOIN MAIN.CALENDAR AS CALENDAR - ON CALENDAR.ca_dt >= DATEADD(MONTH, -6, CAST(_T7.CALENDAR_DAY AS TIMESTAMP)) + ON CALENDAR.ca_dt >= DATEADD(MONTH, -6, CAST(_T7.CA_DT AS TIMESTAMP)) JOIN MAIN.DEVICES AS DEVICES ON CALENDAR.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) JOIN _T8 AS _T8 - ON DEVICES.de_production_country_id = _T8._ID AND _T8.NAME = 'CN' - WHERE - DATE_PART(YEAR, _T7.CALENDAR_DAY) IN (2020, 2021) + ON DEVICES.de_production_country_id = _T8.CO_ID GROUP BY - _T7.CALENDAR_DAY + _T7.CA_DT ), _S15 AS ( SELECT - COUNT(*) AS AGG_5, - _T11.CALENDAR_DAY + COUNT(*) AS N_ROWS, + _T11.CA_DT FROM _T4 AS _T11 JOIN MAIN.INCIDENTS AS INCIDENTS - ON _T11.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + ON _T11.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) JOIN MAIN.DEVICES AS DEVICES ON DEVICES.de_id = INCIDENTS.in_device_id JOIN _T8 AS _T12 - ON DEVICES.de_production_country_id = _T12._ID AND _T12.NAME = 'CN' - WHERE - DATE_PART(YEAR, _T11.CALENDAR_DAY) IN (2020, 2021) - GROUP BY - _T11.CALENDAR_DAY -), _T1 AS ( - SELECT - SUM(_S7.AGG_2) AS AGG_4, - SUM(_S15.AGG_5) AS AGG_7, - DATE_PART(MONTH, _T4.CALENDAR_DAY) AS MONTH, - DATE_PART(YEAR, _T4.CALENDAR_DAY) AS YEAR - FROM _T4 AS _T4 - LEFT JOIN _S7 AS _S7 - ON _S7.CALENDAR_DAY = _T4.CALENDAR_DAY - LEFT JOIN _S15 AS _S15 - ON _S15.CALENDAR_DAY = _T4.CALENDAR_DAY - WHERE - DATE_PART(YEAR, _T4.CALENDAR_DAY) IN (2020, 2021) + ON DEVICES.de_production_country_id = _T12.CO_ID GROUP BY - DATE_PART(MONTH, _T4.CALENDAR_DAY), - DATE_PART(YEAR, _T4.CALENDAR_DAY) + _T11.CA_DT ) SELECT CONCAT_WS( '-', - YEAR, + DATE_PART(YEAR, CAST(_T4.CA_DT AS DATETIME)), CASE - WHEN LENGTH(MONTH) >= 2 - THEN SUBSTRING(MONTH, 1, 2) - ELSE SUBSTRING(CONCAT('00', MONTH), -2) + WHEN LENGTH(DATE_PART(MONTH, CAST(_T4.CA_DT AS DATETIME))) >= 2 + THEN SUBSTRING(DATE_PART(MONTH, CAST(_T4.CA_DT AS DATETIME)), 1, 2) + ELSE SUBSTRING(CONCAT('00', DATE_PART(MONTH, CAST(_T4.CA_DT AS DATETIME))), ( + 2 * -1 + )) END ) AS month, ROUND(( - 1000000.0 * COALESCE(AGG_7, 0) - ) / COALESCE(AGG_4, 0), 2) AS ir -FROM _T1 + 1000000.0 * COALESCE(SUM(_S15.N_ROWS), 0) + ) / COALESCE(SUM(_S7.N_ROWS), 0), 2) AS ir +FROM _T4 AS _T4 +LEFT JOIN _S7 AS _S7 + ON _S7.CA_DT = _T4.CA_DT +LEFT JOIN _S15 AS _S15 + ON _S15.CA_DT = _T4.CA_DT +GROUP BY + DATE_PART(MONTH, CAST(_T4.CA_DT AS DATETIME)), + DATE_PART(YEAR, CAST(_T4.CA_DT AS DATETIME)) ORDER BY MONTH NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql index c8026641d..2a5f51a73 100644 --- a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql @@ -1,20 +1,19 @@ WITH _S3 AS ( SELECT - COUNT(*) AS AGG_0, - in_device_id AS DEVICE_ID + COUNT(*) AS N_ROWS, + in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS GROUP BY in_device_id -), _T0 AS ( +), _S5 AS ( SELECT - SUM(COALESCE(_S3.AGG_0, 0)) AS AGG_0, - COUNT(*) AS AGG_1, - DEVICES.de_product_id AS PRODUCT_ID + ROUND(COALESCE(SUM(COALESCE(_S3.N_ROWS, 0)), 0) / COUNT(*), 2) AS IR, + DEVICES.de_product_id AS DE_PRODUCT_ID FROM MAIN.DEVICES AS DEVICES JOIN MAIN.PRODUCTS AS PRODUCTS ON DEVICES.de_product_id = PRODUCTS.pr_id LEFT JOIN _S3 AS _S3 - ON DEVICES.de_id = _S3.DEVICE_ID + ON DEVICES.de_id = _S3.IN_DEVICE_ID GROUP BY DEVICES.de_product_id ) @@ -22,10 +21,10 @@ SELECT PRODUCTS.pr_name AS product, PRODUCTS.pr_brand AS product_brand, PRODUCTS.pr_type AS product_type, - ROUND(COALESCE(_T0.AGG_0, 0) / _T0.AGG_1, 2) AS ir + _S5.IR AS ir FROM MAIN.PRODUCTS AS PRODUCTS -JOIN _T0 AS _T0 - ON PRODUCTS.pr_id = _T0.PRODUCT_ID +JOIN _S5 AS _S5 + ON PRODUCTS.pr_id = _S5.DE_PRODUCT_ID ORDER BY IR DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index e7f06aeba..85e191703 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -6,86 +6,87 @@ WITH _S14 AS ( pr_name = 'GoldCopper-Star' ), _T6 AS ( SELECT - ca_dt AS CALENDAR_DAY + ca_dt AS CA_DT FROM MAIN.CALENDAR ), _T8 AS ( SELECT - pr_id AS _ID, - pr_name AS NAME + pr_id AS PR_ID, + pr_name AS PR_NAME FROM MAIN.PRODUCTS + WHERE + pr_name = 'GoldCopper-Star' ), _S7 AS ( SELECT - COUNT(*) AS AGG_3, - _S0.CALENDAR_DAY + COUNT(*) AS N_ROWS, + _S0.CA_DT FROM _T6 AS _S0 JOIN MAIN.INCIDENTS AS INCIDENTS - ON _S0.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) JOIN MAIN.DEVICES AS DEVICES ON DEVICES.de_id = INCIDENTS.in_device_id JOIN _T8 AS _T8 - ON DEVICES.de_product_id = _T8._ID AND _T8.NAME = 'GoldCopper-Star' + ON DEVICES.de_product_id = _T8.PR_ID GROUP BY - _S0.CALENDAR_DAY + _S0.CA_DT ), _S13 AS ( SELECT - COUNT(*) AS AGG_6, - _S8.CALENDAR_DAY + COUNT(*) AS N_ROWS, + _S8.CA_DT FROM _T6 AS _S8 JOIN MAIN.DEVICES AS DEVICES - ON _S8.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + ON _S8.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) JOIN _T8 AS _T10 - ON DEVICES.de_product_id = _T10._ID AND _T10.NAME = 'GoldCopper-Star' + ON DEVICES.de_product_id = _T10.PR_ID GROUP BY - _S8.CALENDAR_DAY + _S8.CA_DT ), _S15 AS ( SELECT - SUM(_S7.AGG_3) AS AGG_5, - SUM(_S13.AGG_6) AS AGG_8, - DATE_PART(YEAR, _T6.CALENDAR_DAY) AS YEAR + SUM(_S7.N_ROWS) AS SUM_EXPR_4, + SUM(_S13.N_ROWS) AS SUM_N_ROWS, + DATE_PART(YEAR, CAST(_T6.CA_DT AS DATETIME)) AS YEAR FROM _T6 AS _T6 LEFT JOIN _S7 AS _S7 - ON _S7.CALENDAR_DAY = _T6.CALENDAR_DAY + ON _S7.CA_DT = _T6.CA_DT LEFT JOIN _S13 AS _S13 - ON _S13.CALENDAR_DAY = _T6.CALENDAR_DAY + ON _S13.CA_DT = _T6.CA_DT GROUP BY - DATE_PART(YEAR, _T6.CALENDAR_DAY) + DATE_PART(YEAR, CAST(_T6.CA_DT AS DATETIME)) ), _T0 AS ( SELECT - COALESCE(_S15.AGG_8, 0) AS BOUGHT, ROUND( - SUM(COALESCE(_S15.AGG_5, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.AGG_8, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS CUM_IR, - COALESCE(_S15.AGG_5, 0) AS INCIDENTS, ROUND( ( 100.0 * ( - COALESCE(_S15.AGG_8, 0) - LAG(COALESCE(_S15.AGG_8, 0), 1) OVER (ORDER BY _S15.YEAR) + COALESCE(_S15.SUM_N_ROWS, 0) - LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR) ) - ) / LAG(COALESCE(_S15.AGG_8, 0), 1) OVER (ORDER BY _S15.YEAR), + ) / LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR), 2 ) AS PCT_BOUGHT_CHANGE, ROUND( ( 100.0 * ( - COALESCE(_S15.AGG_5, 0) - LAG(COALESCE(_S15.AGG_5, 0), 1) OVER (ORDER BY _S15.YEAR) + COALESCE(_S15.SUM_EXPR_4, 0) - LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR) ) - ) / LAG(COALESCE(_S15.AGG_5, 0), 1) OVER (ORDER BY _S15.YEAR), + ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR), 2 ) AS PCT_INCIDENT_CHANGE, - _S15.YEAR - DATE_PART(YEAR, _S14.RELEASE_DATE) AS YEARS_SINCE_RELEASE + _S15.YEAR - DATE_PART(YEAR, CAST(_S14.RELEASE_DATE AS DATETIME)) AS YEARS_SINCE_RELEASE, + COALESCE(_S15.SUM_N_ROWS, 0) AS N_DEVICES, + COALESCE(_S15.SUM_EXPR_4, 0) AS N_INCIDENTS FROM _S14 AS _S14 - CROSS JOIN _S15 AS _S15 - WHERE - _S15.YEAR >= DATE_PART(YEAR, _S14.RELEASE_DATE) + JOIN _S15 AS _S15 + ON _S15.YEAR >= DATE_PART(YEAR, CAST(_S14.RELEASE_DATE AS DATETIME)) ) SELECT YEARS_SINCE_RELEASE AS years_since_release, CUM_IR AS cum_ir, PCT_BOUGHT_CHANGE AS pct_bought_change, PCT_INCIDENT_CHANGE AS pct_incident_change, - BOUGHT AS bought, - INCIDENTS AS incidents + N_DEVICES AS bought, + N_INCIDENTS AS incidents FROM _T0 ORDER BY YEARS_SINCE_RELEASE NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index 71f35958f..42fa8853c 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -1,73 +1,73 @@ WITH _T5 AS ( SELECT - ca_dt AS CALENDAR_DAY + ca_dt AS CA_DT FROM MAIN.CALENDAR ), _S3 AS ( SELECT - COUNT(*) AS AGG_2, - _S0.CALENDAR_DAY + COUNT(*) AS N_ROWS, + _S0.CA_DT FROM _T5 AS _S0 JOIN MAIN.DEVICES AS DEVICES - ON _S0.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) GROUP BY - _S0.CALENDAR_DAY + _S0.CA_DT ), _S7 AS ( SELECT - COUNT(*) AS AGG_5, - _S4.CALENDAR_DAY + COUNT(*) AS N_ROWS, + _S4.CA_DT FROM _T5 AS _S4 JOIN MAIN.INCIDENTS AS INCIDENTS - ON _S4.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + ON _S4.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) GROUP BY - _S4.CALENDAR_DAY + _S4.CA_DT ), _T3 AS ( SELECT - SUM(_S3.AGG_2) AS AGG_4, - SUM(_S7.AGG_5) AS AGG_7, - DATE_PART(YEAR, _T5.CALENDAR_DAY) AS YEAR + SUM(_S3.N_ROWS) AS SUM_EXPR_3, + SUM(_S7.N_ROWS) AS SUM_N_ROWS, + DATE_PART(YEAR, CAST(_T5.CA_DT AS DATETIME)) AS YEAR FROM _T5 AS _T5 LEFT JOIN _S3 AS _S3 - ON _S3.CALENDAR_DAY = _T5.CALENDAR_DAY + ON _S3.CA_DT = _T5.CA_DT LEFT JOIN _S7 AS _S7 - ON _S7.CALENDAR_DAY = _T5.CALENDAR_DAY + ON _S7.CA_DT = _T5.CA_DT GROUP BY - DATE_PART(YEAR, _T5.CALENDAR_DAY) + DATE_PART(YEAR, CAST(_T5.CA_DT AS DATETIME)) ), _T0 AS ( SELECT - COALESCE(AGG_4, 0) AS BOUGHT, ROUND( - SUM(COALESCE(AGG_7, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(AGG_4, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(SUM_N_ROWS, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(SUM_EXPR_3, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS CUM_IR, - COALESCE(AGG_7, 0) AS INCIDENTS, ROUND( ( 100.0 * ( - COALESCE(AGG_4, 0) - LAG(COALESCE(AGG_4, 0), 1) OVER (ORDER BY YEAR) + COALESCE(SUM_EXPR_3, 0) - LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR) ) - ) / LAG(COALESCE(AGG_4, 0), 1) OVER (ORDER BY YEAR), + ) / LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR), 2 ) AS PCT_BOUGHT_CHANGE, ROUND( ( 100.0 * ( - COALESCE(AGG_7, 0) - LAG(COALESCE(AGG_7, 0), 1) OVER (ORDER BY YEAR) + COALESCE(SUM_N_ROWS, 0) - LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR) ) - ) / LAG(COALESCE(AGG_7, 0), 1) OVER (ORDER BY YEAR), + ) / LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR), 2 ) AS PCT_INCIDENT_CHANGE, - YEAR AS YR + COALESCE(SUM_EXPR_3, 0) AS N_DEVICES, + COALESCE(SUM_N_ROWS, 0) AS N_INCIDENTS, + YEAR FROM _T3 WHERE - NOT AGG_4 IS NULL AND AGG_4 > 0 + NOT SUM_EXPR_3 IS NULL AND SUM_EXPR_3 > 0 ) SELECT - YR AS yr, + YEAR AS yr, CUM_IR AS cum_ir, PCT_BOUGHT_CHANGE AS pct_bought_change, PCT_INCIDENT_CHANGE AS pct_incident_change, - BOUGHT AS bought, - INCIDENTS AS incidents + N_DEVICES AS bought, + N_INCIDENTS AS incidents FROM _T0 ORDER BY - YR NULLS FIRST + YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index 4516b3113..d5fcdf6cd 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -1,24 +1,24 @@ -WITH _T2 AS ( +WITH _T3 AS ( SELECT ( 100.0 * SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS PCT_OF_DAY, - sbtxdatetime AS DATE_TIME, + sbtxdatetime AS SBTXDATETIME, DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) AS TXN_DAY FROM MAIN.SBTRANSACTION WHERE - DATE_PART(YEAR, sbtxdatetime) = 2023 -), _T0 AS ( + DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) = 2023 +), _T1 AS ( SELECT - DATE_TIME - FROM _T2 + SBTXDATETIME + FROM _T3 WHERE PCT_OF_DAY >= 50.0 QUALIFY ROW_NUMBER() OVER (PARTITION BY TXN_DAY ORDER BY PCT_OF_DAY) = 1 ) SELECT - DATE_TIME AS date_time -FROM _T0 + SBTXDATETIME AS date_time +FROM _T1 ORDER BY - DATE_TIME NULLS FIRST + SBTXDATETIME NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql index 5544af8d2..2a93aa4dd 100644 --- a/tests/test_sql_refsols/tpch_q10_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -2,21 +2,21 @@ WITH _S3 AS ( SELECT SUM(LINEITEM.l_extendedprice * ( 1 - LINEITEM.l_discount - )) AS AGG_0, - ORDERS.o_custkey AS CUSTOMER_KEY + )) AS SUM_EXPR_1, + ORDERS.o_custkey AS O_CUSTKEY FROM TPCH.ORDERS AS ORDERS JOIN TPCH.LINEITEM AS LINEITEM ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' WHERE - DATE_PART(QUARTER, ORDERS.o_orderdate) = 4 - AND DATE_PART(YEAR, ORDERS.o_orderdate) = 1993 + DATE_PART(QUARTER, CAST(ORDERS.o_orderdate AS DATETIME)) = 4 + AND DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) = 1993 GROUP BY ORDERS.o_custkey ) SELECT CUSTOMER.c_custkey AS C_CUSTKEY, CUSTOMER.c_name AS C_NAME, - COALESCE(_S3.AGG_0, 0) AS REVENUE, + COALESCE(_S3.SUM_EXPR_1, 0) AS REVENUE, CUSTOMER.c_acctbal AS C_ACCTBAL, NATION.n_name AS N_NAME, CUSTOMER.c_address AS C_ADDRESS, @@ -24,7 +24,7 @@ SELECT CUSTOMER.c_comment AS C_COMMENT FROM TPCH.CUSTOMER AS CUSTOMER LEFT JOIN _S3 AS _S3 - ON CUSTOMER.c_custkey = _S3.CUSTOMER_KEY + ON CUSTOMER.c_custkey = _S3.O_CUSTKEY JOIN TPCH.NATION AS NATION ON CUSTOMER.c_nationkey = NATION.n_nationkey ORDER BY diff --git a/tests/test_sql_refsols/tpch_q11_snowflake.sql b/tests/test_sql_refsols/tpch_q11_snowflake.sql index f444eccda..5c608a702 100644 --- a/tests/test_sql_refsols/tpch_q11_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q11_snowflake.sql @@ -1,42 +1,41 @@ WITH _S0 AS ( SELECT - s_suppkey AS KEY, - s_nationkey AS NATION_KEY + s_nationkey AS S_NATIONKEY, + s_suppkey AS S_SUPPKEY FROM TPCH.SUPPLIER ), _T4 AS ( SELECT - n_nationkey AS KEY, - n_name AS NAME + n_name AS N_NAME, + n_nationkey AS N_NATIONKEY FROM TPCH.NATION -), _T1 AS ( + WHERE + n_name = 'GERMANY' +), _S8 AS ( SELECT - SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS AGG_0 + COALESCE(SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty), 0) * 0.0001 AS MIN_MARKET_SHARE FROM TPCH.PARTSUPP AS PARTSUPP JOIN _S0 AS _S0 - ON PARTSUPP.ps_suppkey = _S0.KEY + ON PARTSUPP.ps_suppkey = _S0.S_SUPPKEY JOIN _T4 AS _T4 - ON _S0.NATION_KEY = _T4.KEY AND _T4.NAME = 'GERMANY' -), _T5 AS ( + ON _S0.S_NATIONKEY = _T4.N_NATIONKEY +), _S9 AS ( SELECT - SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS AGG_1, - PARTSUPP.ps_partkey AS PART_KEY + COALESCE(SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty), 0) AS VALUE, + PARTSUPP.ps_partkey AS PS_PARTKEY FROM TPCH.PARTSUPP AS PARTSUPP JOIN _S0 AS _S4 - ON PARTSUPP.ps_suppkey = _S4.KEY + ON PARTSUPP.ps_suppkey = _S4.S_SUPPKEY JOIN _T4 AS _T8 - ON _S4.NATION_KEY = _T8.KEY AND _T8.NAME = 'GERMANY' + ON _S4.S_NATIONKEY = _T8.N_NATIONKEY GROUP BY PARTSUPP.ps_partkey ) SELECT - _T5.PART_KEY AS PS_PARTKEY, - COALESCE(_T5.AGG_1, 0) AS VALUE -FROM _T1 AS _T1 -CROSS JOIN _T5 AS _T5 -WHERE - ( - COALESCE(_T1.AGG_0, 0) * 0.0001 - ) < COALESCE(_T5.AGG_1, 0) + _S9.PS_PARTKEY, + _S9.VALUE +FROM _S8 AS _S8 +JOIN _S9 AS _S9 + ON _S8.MIN_MARKET_SHARE < _S9.VALUE ORDER BY VALUE DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql index 182452201..caef7e4d3 100644 --- a/tests/test_sql_refsols/tpch_q12_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -1,25 +1,18 @@ -WITH _T1 AS ( - SELECT - COUNT_IF(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')) AS AGG_0, - COUNT_IF(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')) AS AGG_1, - LINEITEM.l_shipmode AS SHIP_MODE - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - WHERE - DATE_PART(YEAR, LINEITEM.l_receiptdate) = 1994 - AND LINEITEM.l_commitdate < LINEITEM.l_receiptdate - AND LINEITEM.l_commitdate > LINEITEM.l_shipdate - AND ( - LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' - ) - GROUP BY - LINEITEM.l_shipmode -) SELECT - SHIP_MODE AS L_SHIPMODE, - COALESCE(AGG_0, 0) AS HIGH_LINE_COUNT, - COALESCE(AGG_1, 0) AS LOW_LINE_COUNT -FROM _T1 + LINEITEM.l_shipmode AS L_SHIPMODE, + COALESCE(COUNT_IF(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, + COALESCE(COUNT_IF(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey +WHERE + DATE_PART(YEAR, CAST(LINEITEM.l_receiptdate AS DATETIME)) = 1994 + AND LINEITEM.l_commitdate < LINEITEM.l_receiptdate + AND LINEITEM.l_commitdate > LINEITEM.l_shipdate + AND ( + LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' + ) +GROUP BY + LINEITEM.l_shipmode ORDER BY L_SHIPMODE NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q13_snowflake.sql b/tests/test_sql_refsols/tpch_q13_snowflake.sql index 84c8ad563..e140dff0a 100644 --- a/tests/test_sql_refsols/tpch_q13_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q13_snowflake.sql @@ -1,27 +1,22 @@ WITH _S1 AS ( SELECT - COUNT(*) AS AGG_0, - o_custkey AS CUSTOMER_KEY + COUNT(*) AS N_ROWS, + o_custkey AS O_CUSTKEY FROM TPCH.ORDERS WHERE NOT o_comment LIKE '%special%requests%' GROUP BY o_custkey -), _T0 AS ( - SELECT - COUNT(*) AS CUSTDIST, - COALESCE(_S1.AGG_0, 0) AS C_COUNT - FROM TPCH.CUSTOMER AS CUSTOMER - LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.CUSTOMER_KEY - GROUP BY - COALESCE(_S1.AGG_0, 0) ) SELECT - C_COUNT, - CUSTDIST -FROM _T0 + COALESCE(_S1.N_ROWS, 0) AS C_COUNT, + COUNT(*) AS CUSTDIST +FROM TPCH.CUSTOMER AS CUSTOMER +LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.O_CUSTKEY +GROUP BY + COALESCE(_S1.N_ROWS, 0) ORDER BY CUSTDIST DESC NULLS LAST, - C_COUNT DESC NULLS LAST + COALESCE(_S1.N_ROWS, 0) DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q14_snowflake.sql b/tests/test_sql_refsols/tpch_q14_snowflake.sql index cb4c3f5e7..64fa327a2 100644 --- a/tests/test_sql_refsols/tpch_q14_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q14_snowflake.sql @@ -1,26 +1,23 @@ -WITH _T0 AS ( - SELECT - SUM( - IFF( - PART.p_type LIKE 'PROMO%', - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - ), - 0 - ) - ) AS AGG_0, - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS AGG_1 - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey - WHERE - DATE_PART(MONTH, LINEITEM.l_shipdate) = 9 - AND DATE_PART(YEAR, LINEITEM.l_shipdate) = 1995 -) SELECT ( - 100.0 * COALESCE(AGG_0, 0) - ) / COALESCE(AGG_1, 0) AS PROMO_REVENUE -FROM _T0 + 100.0 * COALESCE( + SUM( + IFF( + PART.p_type LIKE 'PROMO%', + LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + ), + 0 + ) + ), + 0 + ) + ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) AS PROMO_REVENUE +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey +WHERE + DATE_PART(MONTH, CAST(LINEITEM.l_shipdate AS DATETIME)) = 9 + AND DATE_PART(YEAR, CAST(LINEITEM.l_shipdate AS DATETIME)) = 1995 diff --git a/tests/test_sql_refsols/tpch_q15_snowflake.sql b/tests/test_sql_refsols/tpch_q15_snowflake.sql index 4b211da05..d1af765d4 100644 --- a/tests/test_sql_refsols/tpch_q15_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q15_snowflake.sql @@ -1,51 +1,51 @@ -WITH _T4 AS ( +WITH _T5 AS ( SELECT - l_discount AS DISCOUNT, - l_extendedprice AS EXTENDED_PRICE, - l_shipdate AS SHIP_DATE, - l_suppkey AS SUPPLIER_KEY + l_discount AS L_DISCOUNT, + l_extendedprice AS L_EXTENDEDPRICE, + l_shipdate AS L_SHIPDATE, + l_suppkey AS L_SUPPKEY FROM TPCH.LINEITEM -), _T1 AS ( - SELECT - SUM(EXTENDED_PRICE * ( - 1 - DISCOUNT - )) AS AGG_0, - SUPPLIER_KEY - FROM _T4 WHERE - SHIP_DATE < CAST('1996-04-01' AS DATE) - AND SHIP_DATE >= CAST('1996-01-01' AS DATE) + l_shipdate < CAST('1996-04-01' AS DATE) + AND l_shipdate >= CAST('1996-01-01' AS DATE) +), _S1 AS ( + SELECT + COALESCE(SUM(L_EXTENDEDPRICE * ( + 1 - L_DISCOUNT + )), 0) AS TOTAL_REVENUE, + L_SUPPKEY + FROM _T5 GROUP BY - SUPPLIER_KEY + L_SUPPKEY ), _S2 AS ( SELECT - MAX(COALESCE(_T1.AGG_0, 0)) AS MAX_REVENUE + MAX(_S1.TOTAL_REVENUE) AS MAX_REVENUE FROM TPCH.SUPPLIER AS SUPPLIER - JOIN _T1 AS _T1 - ON SUPPLIER.s_suppkey = _T1.SUPPLIER_KEY -), _T5 AS ( + JOIN _S1 AS _S1 + ON SUPPLIER.s_suppkey = _S1.L_SUPPKEY +), _S5 AS ( SELECT - SUM(EXTENDED_PRICE * ( - 1 - DISCOUNT - )) AS AGG_1, - SUPPLIER_KEY - FROM _T4 - WHERE - SHIP_DATE < CAST('1996-04-01' AS DATE) - AND SHIP_DATE >= CAST('1996-01-01' AS DATE) + COALESCE(SUM(L_EXTENDEDPRICE * ( + 1 - L_DISCOUNT + )), 0) AS TOTAL_REVENUE, + L_SUPPKEY, + SUM(L_EXTENDEDPRICE * ( + 1 - L_DISCOUNT + )) AS SUM_EXPR_3 + FROM _T5 GROUP BY - SUPPLIER_KEY + L_SUPPKEY ) SELECT SUPPLIER.s_suppkey AS S_SUPPKEY, SUPPLIER.s_name AS S_NAME, SUPPLIER.s_address AS S_ADDRESS, SUPPLIER.s_phone AS S_PHONE, - COALESCE(_T5.AGG_1, 0) AS TOTAL_REVENUE + _S5.TOTAL_REVENUE FROM _S2 AS _S2 CROSS JOIN TPCH.SUPPLIER AS SUPPLIER -JOIN _T5 AS _T5 - ON SUPPLIER.s_suppkey = _T5.SUPPLIER_KEY - AND _S2.MAX_REVENUE = COALESCE(_T5.AGG_1, 0) +JOIN _S5 AS _S5 + ON SUPPLIER.s_suppkey = _S5.L_SUPPKEY + AND _S2.MAX_REVENUE = COALESCE(_S5.SUM_EXPR_3, 0) ORDER BY S_SUPPKEY NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q16_snowflake.sql b/tests/test_sql_refsols/tpch_q16_snowflake.sql index 32970d456..bf913dd2a 100644 --- a/tests/test_sql_refsols/tpch_q16_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q16_snowflake.sql @@ -1,29 +1,21 @@ -WITH _T0 AS ( - SELECT - COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT, - PART.p_brand AS P_BRAND, - PART.p_size AS P_SIZE, - PART.p_type AS P_TYPE - FROM TPCH.PARTSUPP AS PARTSUPP - JOIN TPCH.SUPPLIER AS SUPPLIER - ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' - AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey - JOIN TPCH.PART AS PART - ON NOT PART.p_type LIKE 'MEDIUM POLISHED%%' - AND PART.p_brand <> 'BRAND#45' - AND PART.p_partkey = PARTSUPP.ps_partkey - AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) - GROUP BY - PART.p_brand, - PART.p_size, - PART.p_type -) SELECT - P_BRAND, - P_TYPE, - P_SIZE, - SUPPLIER_COUNT -FROM _T0 + PART.p_brand AS P_BRAND, + PART.p_type AS P_TYPE, + PART.p_size AS P_SIZE, + COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT +FROM TPCH.PARTSUPP AS PARTSUPP +JOIN TPCH.SUPPLIER AS SUPPLIER + ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' + AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.PART AS PART + ON NOT PART.p_type LIKE 'MEDIUM POLISHED%%' + AND PART.p_brand <> 'BRAND#45' + AND PART.p_partkey = PARTSUPP.ps_partkey + AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) +GROUP BY + PART.p_brand, + PART.p_size, + PART.p_type ORDER BY SUPPLIER_COUNT DESC NULLS LAST, P_BRAND NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q17_snowflake.sql b/tests/test_sql_refsols/tpch_q17_snowflake.sql index c28889ede..ea50aeedf 100644 --- a/tests/test_sql_refsols/tpch_q17_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q17_snowflake.sql @@ -1,6 +1,6 @@ WITH _T2 AS ( SELECT - LINEITEM.l_extendedprice AS EXTENDED_PRICE + LINEITEM.l_extendedprice AS L_EXTENDEDPRICE FROM TPCH.PART AS PART JOIN TPCH.LINEITEM AS LINEITEM ON LINEITEM.l_partkey = PART.p_partkey @@ -10,11 +10,7 @@ WITH _T2 AS ( LINEITEM.l_quantity < ( 0.2 * AVG(LINEITEM.l_quantity) OVER (PARTITION BY LINEITEM.l_partkey) ) -), _T0 AS ( - SELECT - SUM(EXTENDED_PRICE) AS AGG_0 - FROM _T2 ) SELECT - COALESCE(AGG_0, 0) / 7.0 AS AVG_YEARLY -FROM _T0 + COALESCE(SUM(L_EXTENDEDPRICE), 0) / 7.0 AS AVG_YEARLY +FROM _T2 diff --git a/tests/test_sql_refsols/tpch_q18_snowflake.sql b/tests/test_sql_refsols/tpch_q18_snowflake.sql index a7434cec3..7db68fbc3 100644 --- a/tests/test_sql_refsols/tpch_q18_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q18_snowflake.sql @@ -1,7 +1,7 @@ WITH _T0 AS ( SELECT - SUM(l_quantity) AS AGG_0, - l_orderkey AS ORDER_KEY + SUM(l_quantity) AS SUM_L_QUANTITY, + l_orderkey AS L_ORDERKEY FROM TPCH.LINEITEM GROUP BY l_orderkey @@ -12,14 +12,14 @@ SELECT ORDERS.o_orderkey AS O_ORDERKEY, ORDERS.o_orderdate AS O_ORDERDATE, ORDERS.o_totalprice AS O_TOTALPRICE, - COALESCE(_T0.AGG_0, 0) AS TOTAL_QUANTITY + COALESCE(_T0.SUM_L_QUANTITY, 0) AS TOTAL_QUANTITY FROM TPCH.ORDERS AS ORDERS JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_custkey = ORDERS.o_custkey JOIN _T0 AS _T0 - ON ORDERS.o_orderkey = _T0.ORDER_KEY -WHERE - NOT _T0.AGG_0 IS NULL AND _T0.AGG_0 > 300 + ON NOT _T0.SUM_L_QUANTITY IS NULL + AND ORDERS.o_orderkey = _T0.L_ORDERKEY + AND _T0.SUM_L_QUANTITY > 300 ORDER BY O_TOTALPRICE DESC NULLS LAST, O_ORDERDATE NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q19_snowflake.sql b/tests/test_sql_refsols/tpch_q19_snowflake.sql index 31b12d8b3..06559c11a 100644 --- a/tests/test_sql_refsols/tpch_q19_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q19_snowflake.sql @@ -1,41 +1,62 @@ -WITH _T0 AS ( - SELECT - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS AGG_0 - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey - WHERE +SELECT + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) AS REVENUE +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON ( ( - ( - LINEITEM.l_quantity <= 11 - AND LINEITEM.l_quantity >= 1 - AND PART.p_brand = 'Brand#12' - AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') - AND PART.p_size <= 5 - AND PART.p_size >= 1 - ) - OR ( - LINEITEM.l_quantity <= 20 - AND LINEITEM.l_quantity >= 10 - AND PART.p_brand = 'Brand#23' - AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') - AND PART.p_size <= 10 - AND PART.p_size >= 1 - ) - OR ( - LINEITEM.l_quantity <= 30 - AND LINEITEM.l_quantity >= 20 - AND PART.p_brand = 'Brand#34' - AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') - AND PART.p_size <= 15 - AND PART.p_size >= 1 - ) + LINEITEM.l_quantity <= 11 + AND LINEITEM.l_quantity >= 1 + AND PART.p_brand = 'Brand#12' + AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + AND PART.p_size <= 5 + AND PART.p_size >= 1 ) - AND LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' - AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') -) -SELECT - COALESCE(AGG_0, 0) AS REVENUE -FROM _T0 + OR ( + LINEITEM.l_quantity <= 20 + AND LINEITEM.l_quantity >= 10 + AND PART.p_brand = 'Brand#23' + AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') + AND PART.p_size <= 10 + AND PART.p_size >= 1 + ) + OR ( + LINEITEM.l_quantity <= 30 + AND LINEITEM.l_quantity >= 20 + AND PART.p_brand = 'Brand#34' + AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + AND PART.p_size <= 15 + AND PART.p_size >= 1 + ) + ) + AND LINEITEM.l_partkey = PART.p_partkey +WHERE + ( + ( + LINEITEM.l_quantity <= 11 + AND LINEITEM.l_quantity >= 1 + AND PART.p_brand = 'Brand#12' + AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + AND PART.p_size <= 5 + AND PART.p_size >= 1 + ) + OR ( + LINEITEM.l_quantity <= 20 + AND LINEITEM.l_quantity >= 10 + AND PART.p_brand = 'Brand#23' + AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') + AND PART.p_size <= 10 + AND PART.p_size >= 1 + ) + OR ( + LINEITEM.l_quantity <= 30 + AND LINEITEM.l_quantity >= 20 + AND PART.p_brand = 'Brand#34' + AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + AND PART.p_size <= 15 + AND PART.p_size >= 1 + ) + ) + AND LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' + AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') diff --git a/tests/test_sql_refsols/tpch_q1_snowflake.sql b/tests/test_sql_refsols/tpch_q1_snowflake.sql index f533b0afc..b800185c1 100644 --- a/tests/test_sql_refsols/tpch_q1_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q1_snowflake.sql @@ -1,40 +1,26 @@ -WITH _T1 AS ( - SELECT - AVG(l_discount) AS AGG_0, - AVG(l_extendedprice) AS AGG_1, - AVG(l_quantity) AS AGG_2, - COUNT(*) AS AGG_3, - SUM(l_extendedprice) AS AGG_4, - SUM(l_extendedprice * ( - 1 - l_discount - ) * ( - 1 + l_tax - )) AS AGG_5, - SUM(l_extendedprice * ( - 1 - l_discount - )) AS AGG_6, - SUM(l_quantity) AS AGG_7, - l_returnflag AS RETURN_FLAG, - l_linestatus AS STATUS - FROM TPCH.LINEITEM - WHERE - l_shipdate <= CAST('1998-12-01' AS DATE) - GROUP BY - l_returnflag, - l_linestatus -) SELECT - RETURN_FLAG AS L_RETURNFLAG, - STATUS AS L_LINESTATUS, - COALESCE(AGG_7, 0) AS SUM_QTY, - COALESCE(AGG_4, 0) AS SUM_BASE_PRICE, - COALESCE(AGG_6, 0) AS SUM_DISC_PRICE, - COALESCE(AGG_5, 0) AS SUM_CHARGE, - AGG_2 AS AVG_QTY, - AGG_1 AS AVG_PRICE, - AGG_0 AS AVG_DISC, - AGG_3 AS COUNT_ORDER -FROM _T1 + l_returnflag AS L_RETURNFLAG, + l_linestatus AS L_LINESTATUS, + COALESCE(SUM(l_quantity), 0) AS SUM_QTY, + COALESCE(SUM(l_extendedprice), 0) AS SUM_BASE_PRICE, + COALESCE(SUM(l_extendedprice * ( + 1 - l_discount + )), 0) AS SUM_DISC_PRICE, + COALESCE(SUM(l_extendedprice * ( + 1 - l_discount + ) * ( + 1 + l_tax + )), 0) AS SUM_CHARGE, + AVG(l_quantity) AS AVG_QTY, + AVG(l_extendedprice) AS AVG_PRICE, + AVG(l_discount) AS AVG_DISC, + COUNT(*) AS COUNT_ORDER +FROM TPCH.LINEITEM +WHERE + l_shipdate <= CAST('1998-12-01' AS DATE) +GROUP BY + l_linestatus, + l_returnflag ORDER BY L_RETURNFLAG NULLS FIRST, L_LINESTATUS NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index 0922efb1b..0801003d7 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -1,25 +1,31 @@ -WITH _T5 AS ( +WITH _S3 AS ( SELECT - SUM(l_quantity) AS AGG_0, - l_partkey AS PART_KEY + COALESCE(SUM(l_quantity), 0) AS AGG_0, + l_partkey AS L_PARTKEY FROM TPCH.LINEITEM WHERE - DATE_PART(YEAR, l_shipdate) = 1994 + DATE_PART(YEAR, CAST(l_shipdate AS DATETIME)) = 1994 GROUP BY l_partkey +), _S5 AS ( + SELECT + _S3.AGG_0, + PART.p_partkey AS P_PARTKEY + FROM TPCH.PART AS PART + JOIN _S3 AS _S3 + ON PART.p_partkey = _S3.L_PARTKEY + WHERE + PART.p_name LIKE 'forest%' ), _T1 AS ( SELECT - COUNT(*) AS AGG_0, - PARTSUPP.ps_suppkey AS SUPPLIER_KEY + COUNT(*) AS N_ROWS, + PARTSUPP.ps_suppkey AS PS_SUPPKEY FROM TPCH.PARTSUPP AS PARTSUPP - JOIN TPCH.PART AS PART - ON PART.p_name LIKE 'forest%' AND PART.p_partkey = PARTSUPP.ps_partkey - JOIN _T5 AS _T5 - ON PART.p_partkey = _T5.PART_KEY - WHERE - PARTSUPP.ps_availqty > ( - 0.5 * COALESCE(COALESCE(_T5.AGG_0, 0), 0) + JOIN _S5 AS _S5 + ON PARTSUPP.ps_availqty > ( + 0.5 * COALESCE(_S5.AGG_0, 0) ) + AND PARTSUPP.ps_partkey = _S5.P_PARTKEY GROUP BY PARTSUPP.ps_suppkey ) @@ -30,7 +36,7 @@ FROM TPCH.SUPPLIER AS SUPPLIER JOIN TPCH.NATION AS NATION ON NATION.n_name = 'CANADA' AND NATION.n_nationkey = SUPPLIER.s_nationkey JOIN _T1 AS _T1 - ON SUPPLIER.s_suppkey = _T1.SUPPLIER_KEY AND _T1.AGG_0 > 0 + ON SUPPLIER.s_suppkey = _T1.PS_SUPPKEY AND _T1.N_ROWS > 0 ORDER BY S_NAME NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql index 7fbd28cc7..e0d909d0a 100644 --- a/tests/test_sql_refsols/tpch_q21_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -1,128 +1,67 @@ -WITH _S0 AS ( - SELECT - SUPPLIER.s_suppkey AS KEY, - SUPPLIER.s_name AS NAME, - SUPPLIER.s_nationkey AS NATION_KEY - FROM TPCH.SUPPLIER AS SUPPLIER -), _T2 AS ( - SELECT - NATION.n_nationkey AS KEY, - NATION.n_name AS NAME - FROM TPCH.NATION AS NATION -), _S1 AS ( - SELECT - _T2.KEY AS KEY - FROM _T2 AS _T2 +WITH _T7 AS ( + SELECT + l_commitdate AS L_COMMITDATE, + l_linenumber AS L_LINENUMBER, + l_orderkey AS L_ORDERKEY, + l_receiptdate AS L_RECEIPTDATE, + l_suppkey AS L_SUPPKEY + FROM TPCH.LINEITEM WHERE - _T2.NAME = 'SAUDI ARABIA' -), _S8 AS ( - SELECT - _S0.KEY AS KEY, - _S0.NAME AS NAME - FROM _S0 AS _S0 - JOIN _S1 AS _S1 - ON _S0.NATION_KEY = _S1.KEY + l_commitdate < l_receiptdate ), _T4 AS ( SELECT - LINEITEM.l_commitdate AS COMMIT_DATE, - LINEITEM.l_orderkey AS ORDER_KEY, - LINEITEM.l_receiptdate AS RECEIPT_DATE, - LINEITEM.l_suppkey AS SUPPLIER_KEY - FROM TPCH.LINEITEM AS LINEITEM -), _S4 AS ( + ANY_VALUE(_T7.L_LINENUMBER) AS ANYTHING_L_LINENUMBER, + ANY_VALUE(_T7.L_ORDERKEY) AS ANYTHING_L_ORDERKEY, + ANY_VALUE(_T7.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, + ANY_VALUE(ORDERS.o_orderkey) AS ANYTHING_O_ORDERKEY, + ANY_VALUE(ORDERS.o_orderstatus) AS ANYTHING_O_ORDERSTATUS + FROM _T7 AS _T7 + JOIN TPCH.ORDERS AS ORDERS + ON ORDERS.o_orderkey = _T7.L_ORDERKEY + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T7.L_SUPPKEY + GROUP BY + _T7.L_LINENUMBER, + _T7.L_ORDERKEY, + ORDERS.o_orderkey +), _u_0 AS ( + SELECT + _T9.L_LINENUMBER AS _u_1, + _T9.L_ORDERKEY AS _u_2, + ORDERS.o_orderkey AS _u_3 + FROM _T7 AS _T9 + JOIN TPCH.ORDERS AS ORDERS + ON ORDERS.o_orderkey = _T9.L_ORDERKEY + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate + AND LINEITEM.l_orderkey = ORDERS.o_orderkey + AND LINEITEM.l_suppkey <> _T9.L_SUPPKEY + GROUP BY + _T9.L_LINENUMBER, + _T9.L_ORDERKEY, + ORDERS.o_orderkey +), _S13 AS ( SELECT - _T4.SUPPLIER_KEY AS ORIGINAL_KEY, - _T4.ORDER_KEY AS ORDER_KEY, - _T4.SUPPLIER_KEY AS SUPPLIER_KEY + COUNT(*) AS N_ROWS, + _T4.ANYTHING_L_SUPPKEY FROM _T4 AS _T4 + LEFT JOIN _u_0 AS _u_0 + ON _T4.ANYTHING_L_LINENUMBER = _u_0._u_1 + AND _T4.ANYTHING_L_ORDERKEY = _u_0._u_2 + AND _T4.ANYTHING_O_ORDERKEY = _u_0._u_3 WHERE - _T4.COMMIT_DATE < _T4.RECEIPT_DATE -), _T5 AS ( - SELECT - ORDERS.o_orderkey AS KEY, - ORDERS.o_orderstatus AS ORDER_STATUS - FROM TPCH.ORDERS AS ORDERS -), _S5 AS ( - SELECT - _T5.KEY AS KEY - FROM _T5 AS _T5 - WHERE - _T5.ORDER_STATUS = 'F' -), _S3 AS ( - SELECT - _S5.KEY AS KEY, - _S4.ORIGINAL_KEY AS ORIGINAL_KEY, - _S4.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _S4 AS _S4 - JOIN _S5 AS _S5 - ON _S4.ORDER_KEY = _S5.KEY -), _T6 AS ( - SELECT - LINEITEM.l_orderkey AS ORDER_KEY, - LINEITEM.l_suppkey AS SUPPLIER_KEY - FROM TPCH.LINEITEM AS LINEITEM -), _S6 AS ( - SELECT - _T6.ORDER_KEY AS ORDER_KEY - FROM _T6 AS _T6 - WHERE - _S3.ORIGINAL_KEY <> _T6.SUPPLIER_KEY -), _S2 AS ( - SELECT - _S3.KEY AS KEY, - _S3.ORIGINAL_KEY AS ORIGINAL_KEY, - _S3.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _S3 AS _S3 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S6 AS _S6 - WHERE - _S3.KEY = _S6.ORDER_KEY - ) -), _S7 AS ( - SELECT - _T7.ORDER_KEY AS ORDER_KEY - FROM _T4 AS _T7 - WHERE - _S2.ORIGINAL_KEY <> _T7.SUPPLIER_KEY AND _T7.COMMIT_DATE < _T7.RECEIPT_DATE -), _T3 AS ( - SELECT - _S2.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _S2 AS _S2 - WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S7 AS _S7 - WHERE - _S2.KEY = _S7.ORDER_KEY - ) -), _S9 AS ( - SELECT - COUNT(*) AS AGG_0, - _T3.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _T3 AS _T3 + _T4.ANYTHING_O_ORDERSTATUS = 'F' AND _u_0._u_1 IS NULL GROUP BY - _T3.SUPPLIER_KEY -), _T1 AS ( - SELECT - _S9.AGG_0 AS AGG_0, - _S8.NAME AS NAME - FROM _S8 AS _S8 - LEFT JOIN _S9 AS _S9 - ON _S8.KEY = _S9.SUPPLIER_KEY -), _T0 AS ( - SELECT - COALESCE(_T1.AGG_0, 0) AS NUMWAIT, - _T1.NAME AS S_NAME - FROM _T1 AS _T1 + _T4.ANYTHING_L_SUPPKEY ) SELECT - _T0.S_NAME AS S_NAME, - _T0.NUMWAIT AS NUMWAIT -FROM _T0 AS _T0 + SUPPLIER.s_name AS S_NAME, + COALESCE(_S13.N_ROWS, 0) AS NUMWAIT +FROM TPCH.SUPPLIER AS SUPPLIER +JOIN TPCH.NATION AS NATION + ON NATION.n_name = 'SAUDI ARABIA' AND NATION.n_nationkey = SUPPLIER.s_nationkey +LEFT JOIN _S13 AS _S13 + ON SUPPLIER.s_suppkey = _S13.ANYTHING_L_SUPPKEY ORDER BY NUMWAIT DESC NULLS LAST, S_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q22_snowflake.sql b/tests/test_sql_refsols/tpch_q22_snowflake.sql index d0ff4a4fd..acaf83290 100644 --- a/tests/test_sql_refsols/tpch_q22_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q22_snowflake.sql @@ -7,33 +7,25 @@ WITH _S0 AS ( AND SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') ), _S3 AS ( SELECT - COUNT(*) AS AGG_0, - o_custkey AS CUSTOMER_KEY + COUNT(*) AS N_ROWS, + o_custkey AS O_CUSTKEY FROM TPCH.ORDERS GROUP BY o_custkey -), _T1 AS ( - SELECT - COUNT(*) AS AGG_1, - SUM(CUSTOMER.c_acctbal) AS AGG_2, - SUBSTRING(CUSTOMER.c_phone, 1, 2) AS CNTRY_CODE - FROM _S0 AS _S0 - CROSS JOIN TPCH.CUSTOMER AS CUSTOMER - LEFT JOIN _S3 AS _S3 - ON CUSTOMER.c_custkey = _S3.CUSTOMER_KEY - WHERE - CUSTOMER.c_acctbal > _S0.GLOBAL_AVG_BALANCE - AND SUBSTRING(CUSTOMER.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') - AND ( - _S3.AGG_0 = 0 OR _S3.AGG_0 IS NULL - ) - GROUP BY - SUBSTRING(CUSTOMER.c_phone, 1, 2) ) SELECT - CNTRY_CODE, - AGG_1 AS NUM_CUSTS, - COALESCE(AGG_2, 0) AS TOTACCTBAL -FROM _T1 + SUBSTRING(CUSTOMER.c_phone, 1, 2) AS CNTRY_CODE, + COUNT(*) AS NUM_CUSTS, + COALESCE(SUM(CUSTOMER.c_acctbal), 0) AS TOTACCTBAL +FROM _S0 AS _S0 +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_acctbal > _S0.GLOBAL_AVG_BALANCE + AND SUBSTRING(CUSTOMER.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') +LEFT JOIN _S3 AS _S3 + ON CUSTOMER.c_custkey = _S3.O_CUSTKEY +WHERE + _S3.N_ROWS = 0 OR _S3.N_ROWS IS NULL +GROUP BY + SUBSTRING(CUSTOMER.c_phone, 1, 2) ORDER BY CNTRY_CODE NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q2_snowflake.sql b/tests/test_sql_refsols/tpch_q2_snowflake.sql index 860d100ad..ab7d7608c 100644 --- a/tests/test_sql_refsols/tpch_q2_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q2_snowflake.sql @@ -1,13 +1,13 @@ -WITH _T1 AS ( +WITH _T0 AS ( SELECT - SUPPLIER.s_comment AS COMMENT_8, - SUPPLIER.s_name AS NAME_10, + NATION.n_name AS N_NAME, PART.p_mfgr AS P_MFGR, PART.p_partkey AS P_PARTKEY, - SUPPLIER.s_acctbal AS ACCOUNT_BALANCE, - SUPPLIER.s_address AS ADDRESS, - NATION.n_name AS EXPR_8, - SUPPLIER.s_phone AS PHONE + SUPPLIER.s_acctbal AS S_ACCTBAL, + SUPPLIER.s_address AS S_ADDRESS, + SUPPLIER.s_comment AS S_COMMENT, + SUPPLIER.s_name AS S_NAME, + SUPPLIER.s_phone AS S_PHONE FROM TPCH.PART AS PART JOIN TPCH.PARTSUPP AS PARTSUPP ON PART.p_partkey = PARTSUPP.ps_partkey @@ -23,15 +23,15 @@ WITH _T1 AS ( RANK() OVER (PARTITION BY PARTSUPP.ps_partkey ORDER BY PARTSUPP.ps_supplycost) = 1 ) SELECT - ACCOUNT_BALANCE AS S_ACCTBAL, - NAME_10 AS S_NAME, - EXPR_8 AS N_NAME, + S_ACCTBAL, + S_NAME, + N_NAME, P_PARTKEY, P_MFGR, - ADDRESS AS S_ADDRESS, - PHONE AS S_PHONE, - COMMENT_8 AS S_COMMENT -FROM _T1 + S_ADDRESS, + S_PHONE, + S_COMMENT +FROM _T0 ORDER BY S_ACCTBAL DESC NULLS LAST, N_NAME NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q3_snowflake.sql b/tests/test_sql_refsols/tpch_q3_snowflake.sql index ef10d82d4..1c65c1c8e 100644 --- a/tests/test_sql_refsols/tpch_q3_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q3_snowflake.sql @@ -1,30 +1,22 @@ -WITH _T1 AS ( - SELECT - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS AGG_0, - ORDERS.o_orderdate AS ORDER_DATE, - LINEITEM.l_orderkey AS ORDER_KEY, - ORDERS.o_shippriority AS SHIP_PRIORITY - FROM TPCH.ORDERS AS ORDERS - JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey AND CUSTOMER.c_mktsegment = 'BUILDING' - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_shipdate > CAST('1995-03-15' AS DATE) - WHERE - ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) - GROUP BY - ORDERS.o_orderdate, - LINEITEM.l_orderkey, - ORDERS.o_shippriority -) SELECT - ORDER_KEY AS L_ORDERKEY, - COALESCE(AGG_0, 0) AS REVENUE, - ORDER_DATE AS O_ORDERDATE, - SHIP_PRIORITY AS O_SHIPPRIORITY -FROM _T1 + LINEITEM.l_orderkey AS L_ORDERKEY, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) AS REVENUE, + ORDERS.o_orderdate AS O_ORDERDATE, + ORDERS.o_shippriority AS O_SHIPPRIORITY +FROM TPCH.ORDERS AS ORDERS +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey AND CUSTOMER.c_mktsegment = 'BUILDING' +JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + AND LINEITEM.l_shipdate > CAST('1995-03-15' AS DATE) +WHERE + ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) +GROUP BY + LINEITEM.l_orderkey, + ORDERS.o_orderdate, + ORDERS.o_shippriority ORDER BY REVENUE DESC NULLS LAST, O_ORDERDATE NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql index 647bb3411..ae9afa69c 100644 --- a/tests/test_sql_refsols/tpch_q4_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -1,51 +1,23 @@ -WITH _T2 AS ( +WITH _u_0 AS ( SELECT - ORDERS.o_orderkey AS KEY, - ORDERS.o_orderdate AS ORDER_DATE, - ORDERS.o_orderpriority AS ORDER_PRIORITY - FROM TPCH.ORDERS AS ORDERS -), _S0 AS ( - SELECT - _T2.KEY AS KEY, - _T2.ORDER_PRIORITY AS ORDER_PRIORITY - FROM _T2 AS _T2 - WHERE - DATE_PART(QUARTER, _T2.ORDER_DATE) = 3 AND DATE_PART(YEAR, _T2.ORDER_DATE) = 1993 -), _T3 AS ( - SELECT - LINEITEM.l_commitdate AS COMMIT_DATE, - LINEITEM.l_orderkey AS ORDER_KEY, - LINEITEM.l_receiptdate AS RECEIPT_DATE - FROM TPCH.LINEITEM AS LINEITEM -), _S1 AS ( - SELECT - _T3.ORDER_KEY AS ORDER_KEY - FROM _T3 AS _T3 + l_orderkey AS _u_1 + FROM TPCH.LINEITEM WHERE - _T3.COMMIT_DATE < _T3.RECEIPT_DATE -), _T1 AS ( - SELECT - _S0.ORDER_PRIORITY AS ORDER_PRIORITY - FROM _S0 AS _S0 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0.KEY = _S1.ORDER_KEY - ) -), _T0 AS ( - SELECT - COUNT(*) AS ORDER_COUNT, - _T1.ORDER_PRIORITY AS O_ORDERPRIORITY - FROM _T1 AS _T1 + l_commitdate < l_receiptdate GROUP BY - _T1.ORDER_PRIORITY + l_orderkey ) SELECT - _T0.O_ORDERPRIORITY AS O_ORDERPRIORITY, - _T0.ORDER_COUNT AS ORDER_COUNT -FROM _T0 AS _T0 + ORDERS.o_orderpriority AS O_ORDERPRIORITY, + COUNT(*) AS ORDER_COUNT +FROM TPCH.ORDERS AS ORDERS +LEFT JOIN _u_0 AS _u_0 + ON ORDERS.o_orderkey = _u_0._u_1 +WHERE + DATE_PART(QUARTER, CAST(ORDERS.o_orderdate AS DATETIME)) = 3 + AND DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) = 1993 + AND NOT _u_0._u_1 IS NULL +GROUP BY + ORDERS.o_orderpriority ORDER BY O_ORDERPRIORITY NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q5_snowflake.sql b/tests/test_sql_refsols/tpch_q5_snowflake.sql index 54bf97e6e..0c9191ec0 100644 --- a/tests/test_sql_refsols/tpch_q5_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q5_snowflake.sql @@ -2,20 +2,20 @@ WITH _S7 AS ( SELECT SUM(l_extendedprice * ( 1 - l_discount - )) AS AGG_0, - l_orderkey AS ORDER_KEY, - l_suppkey AS SUPPLIER_KEY + )) AS SUM_VALUE, + l_orderkey AS L_ORDERKEY, + l_suppkey AS L_SUPPKEY FROM TPCH.LINEITEM GROUP BY l_orderkey, l_suppkey ), _S10 AS ( SELECT - SUM(_S7.AGG_0) AS AGG_0, - ANY_VALUE(NATION.n_name) AS AGG_3, - NATION.n_nationkey AS KEY, - NATION.n_name AS NATION_NAME, - _S7.SUPPLIER_KEY + ANY_VALUE(NATION.n_name) AS ANYTHING_N_NAME, + SUM(_S7.SUM_VALUE) AS SUM_SUM_VALUE, + _S7.L_SUPPKEY, + NATION.n_name AS N_NAME, + NATION.n_nationkey AS N_NATIONKEY FROM TPCH.NATION AS NATION JOIN TPCH.REGION AS REGION ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' @@ -26,31 +26,26 @@ WITH _S7 AS ( AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) JOIN _S7 AS _S7 - ON ORDERS.o_orderkey = _S7.ORDER_KEY + ON ORDERS.o_orderkey = _S7.L_ORDERKEY GROUP BY - NATION.n_nationkey, + _S7.L_SUPPKEY, NATION.n_name, - _S7.SUPPLIER_KEY + NATION.n_nationkey ), _S11 AS ( SELECT - SUPPLIER.s_suppkey AS KEY, - NATION.n_name AS NAME_12 + NATION.n_name AS N_NAME, + SUPPLIER.s_suppkey AS S_SUPPKEY FROM TPCH.SUPPLIER AS SUPPLIER JOIN TPCH.NATION AS NATION ON NATION.n_nationkey = SUPPLIER.s_nationkey -), _T1 AS ( - SELECT - SUM(_S10.AGG_0) AS AGG_0, - ANY_VALUE(_S10.AGG_3) AS AGG_3 - FROM _S10 AS _S10 - JOIN _S11 AS _S11 - ON _S10.NATION_NAME = _S11.NAME_12 AND _S10.SUPPLIER_KEY = _S11.KEY - GROUP BY - _S10.KEY ) SELECT - AGG_3 AS N_NAME, - COALESCE(AGG_0, 0) AS REVENUE -FROM _T1 + ANY_VALUE(_S10.ANYTHING_N_NAME) AS N_NAME, + COALESCE(SUM(_S10.SUM_SUM_VALUE), 0) AS REVENUE +FROM _S10 AS _S10 +JOIN _S11 AS _S11 + ON _S10.L_SUPPKEY = _S11.S_SUPPKEY AND _S10.N_NAME = _S11.N_NAME +GROUP BY + _S10.N_NATIONKEY ORDER BY REVENUE DESC NULLS LAST diff --git a/tests/test_sql_refsols/tpch_q6_snowflake.sql b/tests/test_sql_refsols/tpch_q6_snowflake.sql index 57e0a99e1..7a58dc75a 100644 --- a/tests/test_sql_refsols/tpch_q6_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q6_snowflake.sql @@ -1,14 +1,9 @@ -WITH _T0 AS ( - SELECT - SUM(l_extendedprice * l_discount) AS AGG_0 - FROM TPCH.LINEITEM - WHERE - l_discount <= 0.07 - AND l_discount >= 0.05 - AND l_quantity < 24 - AND l_shipdate < CAST('1995-01-01' AS DATE) - AND l_shipdate >= CAST('1994-01-01' AS DATE) -) SELECT - COALESCE(AGG_0, 0) AS REVENUE -FROM _T0 + COALESCE(SUM(l_extendedprice * l_discount), 0) AS REVENUE +FROM TPCH.LINEITEM +WHERE + l_discount <= 0.07 + AND l_discount >= 0.05 + AND l_quantity < 24 + AND l_shipdate < CAST('1995-01-01' AS DATE) + AND l_shipdate >= CAST('1994-01-01' AS DATE) diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index f9ff27c4a..7f75cddfb 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -1,53 +1,47 @@ WITH _S1 AS ( SELECT - n_nationkey AS KEY, - n_name AS NAME + n_name AS N_NAME, + n_nationkey AS N_NATIONKEY FROM TPCH.NATION -), _T1 AS ( + WHERE + n_name = 'FRANCE' OR n_name = 'GERMANY' +), _S9 AS ( SELECT - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS AGG_0, - _S7.NAME AS CUST_NATION, - DATE_PART(YEAR, LINEITEM.l_shipdate) AS L_YEAR, - _S1.NAME AS SUPP_NATION - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey - JOIN _S1 AS _S1 - ON SUPPLIER.s_nationkey = _S1.KEY - JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey + _S7.N_NAME, + ORDERS.o_orderkey AS O_ORDERKEY + FROM TPCH.ORDERS AS ORDERS JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_custkey = ORDERS.o_custkey JOIN _S1 AS _S7 - ON CUSTOMER.c_nationkey = _S7.KEY - WHERE - DATE_PART(YEAR, LINEITEM.l_shipdate) IN (1995, 1996) - AND ( - _S1.NAME = 'FRANCE' OR _S1.NAME = 'GERMANY' - ) - AND ( - _S1.NAME = 'FRANCE' OR _S7.NAME = 'FRANCE' - ) - AND ( - _S1.NAME = 'GERMANY' OR _S7.NAME = 'GERMANY' - ) - AND ( - _S7.NAME = 'FRANCE' OR _S7.NAME = 'GERMANY' - ) - GROUP BY - _S7.NAME, - DATE_PART(YEAR, LINEITEM.l_shipdate), - _S1.NAME + ON CUSTOMER.c_nationkey = _S7.N_NATIONKEY ) SELECT - SUPP_NATION, - CUST_NATION, - L_YEAR, - COALESCE(AGG_0, 0) AS REVENUE -FROM _T1 + _S1.N_NAME AS SUPP_NATION, + _S9.N_NAME AS CUST_NATION, + DATE_PART(YEAR, CAST(LINEITEM.l_shipdate AS DATETIME)) AS L_YEAR, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) AS REVENUE +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN _S1 AS _S1 + ON SUPPLIER.s_nationkey = _S1.N_NATIONKEY +JOIN _S9 AS _S9 + ON LINEITEM.l_orderkey = _S9.O_ORDERKEY + AND ( + _S1.N_NAME = 'FRANCE' OR _S9.N_NAME = 'FRANCE' + ) + AND ( + _S1.N_NAME = 'GERMANY' OR _S9.N_NAME = 'GERMANY' + ) +WHERE + DATE_PART(YEAR, CAST(LINEITEM.l_shipdate AS DATETIME)) IN (1995, 1996) +GROUP BY + _S9.N_NAME, + DATE_PART(YEAR, CAST(LINEITEM.l_shipdate AS DATETIME)), + _S1.N_NAME ORDER BY - SUPP_NATION NULLS FIRST, + _S1.N_NAME NULLS FIRST, CUST_NATION NULLS FIRST, L_YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql index 3b6c82727..5d7b22aed 100644 --- a/tests/test_sql_refsols/tpch_q8_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -1,5 +1,6 @@ -WITH _T0 AS ( - SELECT +SELECT + DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) AS O_YEAR, + COALESCE( SUM( IFF( NATION_2.n_name = 'BRAZIL', @@ -8,31 +9,26 @@ WITH _T0 AS ( ), 0 ) - ) AS AGG_0, - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS AGG_1, - DATE_PART(YEAR, ORDERS.o_orderdate) AS O_YEAR - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' - JOIN TPCH.ORDERS AS ORDERS - ON DATE_PART(YEAR, ORDERS.o_orderdate) IN (1995, 1996) - AND LINEITEM.l_orderkey = ORDERS.o_orderkey - JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey - JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey - JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' - JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey - JOIN TPCH.NATION AS NATION_2 - ON NATION_2.n_nationkey = SUPPLIER.s_nationkey - GROUP BY - DATE_PART(YEAR, ORDERS.o_orderdate) -) -SELECT - O_YEAR, - COALESCE(AGG_0, 0) / COALESCE(AGG_1, 0) AS MKT_SHARE -FROM _T0 + ), + 0 + ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) AS MKT_SHARE +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' +JOIN TPCH.ORDERS AS ORDERS + ON DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) IN (1995, 1996) + AND LINEITEM.l_orderkey = ORDERS.o_orderkey +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' +JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.NATION AS NATION_2 + ON NATION_2.n_nationkey = SUPPLIER.s_nationkey +GROUP BY + DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index c655aeaad..e585d6cd6 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -1,34 +1,30 @@ -WITH _T1 AS ( - SELECT +SELECT + NATION.n_name AS NATION, + DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) AS O_YEAR, + COALESCE( SUM( LINEITEM.l_extendedprice * ( 1 - LINEITEM.l_discount ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity - ) AS AGG_0, - NATION.n_name AS NATION_NAME, - DATE_PART(YEAR, ORDERS.o_orderdate) AS O_YEAR - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_name LIKE '%green%' - JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey - JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey - JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - JOIN TPCH.PARTSUPP AS PARTSUPP - ON LINEITEM.l_partkey = PARTSUPP.ps_partkey - AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey - GROUP BY - NATION.n_name, - DATE_PART(YEAR, ORDERS.o_orderdate) -) -SELECT - NATION_NAME AS NATION, - O_YEAR, - COALESCE(AGG_0, 0) AS AMOUNT -FROM _T1 + ), + 0 + ) AS AMOUNT +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_name LIKE '%green%' +JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey +JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey +JOIN TPCH.PARTSUPP AS PARTSUPP + ON LINEITEM.l_partkey = PARTSUPP.ps_partkey + AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey +GROUP BY + NATION.n_name, + DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) ORDER BY - NATION NULLS FIRST, + NATION.n_name NULLS FIRST, O_YEAR DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/week_offset_snowflake.sql b/tests/test_sql_refsols/week_offset_snowflake.sql index 0d3cf45e1..feb57cade 100644 --- a/tests/test_sql_refsols/week_offset_snowflake.sql +++ b/tests/test_sql_refsols/week_offset_snowflake.sql @@ -10,4 +10,5 @@ SELECT DATEADD(WEEK, 2, DATEADD(YEAR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj8 FROM MAIN.SBTRANSACTION WHERE - DATE_PART(DAY, sbtxdatetime) > 1 AND DATE_PART(YEAR, sbtxdatetime) < 2025 + DATE_PART(DAY, CAST(sbtxdatetime AS DATETIME)) > 1 + AND DATE_PART(YEAR, CAST(sbtxdatetime AS DATETIME)) < 2025 From e0a135d392c16572d448938a76fb6495fa9a0eb7 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 7 Jul 2025 13:57:42 -0700 Subject: [PATCH 09/46] [run CI] [run SF] merge and re-run tests --- .../cumulative_stock_analysis_snowflake.sql | 40 +--- .../defog_broker_adv11_snowflake.sql | 16 +- .../defog_broker_adv5_snowflake.sql | 3 +- .../defog_broker_adv7_snowflake.sql | 4 +- .../defog_dealership_adv12_snowflake.sql | 33 ++- .../epoch_culture_events_info_snowflake.sql | 9 +- .../epoch_event_gap_per_era_snowflake.sql | 8 - .../epoch_events_per_season_snowflake.sql | 18 +- .../epoch_intra_season_searches_snowflake.sql | 44 ++-- .../epoch_num_predawn_cold_war_snowflake.sql | 66 ++---- ..._search_other_users_per_user_snowflake.sql | 22 +- ...ping_event_searches_per_user_snowflake.sql | 6 +- ...users_most_cold_war_searches_snowflake.sql | 8 +- .../nation_acctbal_breakdown_snowflake.sql | 2 +- .../quantile_test_1_snowflake.sql | 19 +- .../quantile_test_2_snowflake.sql | 101 +++------ .../region_acctbal_breakdown_snowflake.sql | 2 +- ...hnograph_hot_purchase_window_snowflake.sql | 21 +- ...ncident_rate_by_release_year_snowflake.sql | 12 +- ...ograph_monthly_incident_rate_snowflake.sql | 34 +-- ...incident_rate_goldcopperstar_snowflake.sql | 17 +- ...lative_incident_rate_overall_snowflake.sql | 8 +- .../time_threshold_reached_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q12_snowflake.sql | 22 +- tests/test_sql_refsols/tpch_q14_snowflake.sql | 25 +-- tests/test_sql_refsols/tpch_q16_snowflake.sql | 22 +- tests/test_sql_refsols/tpch_q20_snowflake.sql | 12 +- tests/test_sql_refsols/tpch_q21_snowflake.sql | 195 +++--------------- tests/test_sql_refsols/tpch_q4_snowflake.sql | 37 +--- tests/test_sql_refsols/tpch_q7_snowflake.sql | 42 +--- tests/test_sql_refsols/tpch_q8_snowflake.sql | 53 +++-- tests/test_sql_refsols/tpch_q9_snowflake.sql | 44 ++-- 32 files changed, 235 insertions(+), 712 deletions(-) diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index 98cf74c98..da206777a 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -26,39 +26,17 @@ WITH _T0 AS ( JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid WHERE - DATE_PART(MONTH, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) = 4 - AND DATE_PART(YEAR, CAST(SBTRANSACTION.sbtxdatetime AS DATETIME)) = 2023 + MONTH(SBTRANSACTION.sbtxdatetime) = 4 AND SBTRANSACTION.sbtxstatus = 'success' + AND YEAR(SBTRANSACTION.sbtxdatetime) = 2023 ) SELECT - SBTRANSACTION.sbtxdatetime AS date_time, - COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, - COUNT( - CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END - ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, - ROUND( - ( - 100.0 * SUM(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), - 2 - ) AS pct_apple_txns, - SUM( - IFF( - SBTRANSACTION.sbtxtype = 'buy', - SBTRANSACTION.sbtxshares, - 0 - SBTRANSACTION.sbtxshares - ) - ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, - ROUND( - AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), - 2 - ) AS rolling_avg_amount -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid -WHERE - MONTH(SBTRANSACTION.sbtxdatetime) = 4 - AND SBTRANSACTION.sbtxstatus = 'success' - AND YEAR(SBTRANSACTION.sbtxdatetime) = 2023 + SBTXDATETIME AS date_time, + TXN_WITHIN_DAY AS txn_within_day, + N_BUYS_WITHIN_DAY AS n_buys_within_day, + PCT_APPLE_TXNS AS pct_apple_txns, + SHARE_CHANGE AS share_change, + ROLLING_AVG_AMOUNT AS rolling_avg_amount +FROM _T0 ORDER BY SBTXDATETIME NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql index 988e7c47b..b701e213e 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql @@ -1,18 +1,6 @@ WITH _u_0 AS ( SELECT - SBCUSTOMER.sbcustid AS _ID, - SBCUSTOMER.sbcustemail AS EMAIL - FROM MAIN.SBCUSTOMER AS SBCUSTOMER -), _S2 AS ( - SELECT - _T1._ID AS _ID - FROM _T1 AS _T1 - WHERE - ENDSWITH(_T1.EMAIL, '.com') -), _S0 AS ( - SELECT - SBTRANSACTION.sbtxcustid AS CUSTOMER_ID, - SBTRANSACTION.sbtxtickerid AS TICKER_ID + SBTRANSACTION.sbtxcustid AS _u_1 FROM MAIN.SBTRANSACTION AS SBTRANSACTION JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid @@ -26,4 +14,4 @@ FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _u_0 AS _u_0 ON SBCUSTOMER.sbcustid = _u_0._u_1 WHERE - NOT _u_0._u_1 IS NULL AND SBCUSTOMER.sbcustemail LIKE '%.com' + ENDSWITH(SBCUSTOMER.sbcustemail, '.com') AND NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index bf2ca5f5a..d95875f48 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -3,8 +3,9 @@ WITH _S0 AS ( COUNT(sbdpclose) AS COUNT_SBDPCLOSE, MAX(sbdphigh) AS MAX_HIGH, MIN(sbdplow) AS MIN_LOW, + SUM(sbdpclose) AS SUM_SBDPCLOSE, CONCAT_WS('-', YEAR(sbdpdate), LPAD(MONTH(sbdpdate), 2, '0')) AS MONTH, - sbdptickerid AS TICKER_ID + sbdptickerid AS SBDPTICKERID FROM MAIN.SBDAILYPRICE GROUP BY CONCAT_WS('-', YEAR(sbdpdate), LPAD(MONTH(sbdpdate), 2, '0')), diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index ef192e41f..17d149ed0 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -1,6 +1,6 @@ WITH _S2 AS ( SELECT - COUNT(*) AS AGG_1, + COUNT(*) AS N_ROWS, CONCAT_WS('-', YEAR(sbcustjoindate), LPAD(MONTH(sbcustjoindate), 2, '0')) AS MONTH FROM MAIN.SBCUSTOMER WHERE @@ -10,7 +10,7 @@ WITH _S2 AS ( CONCAT_WS('-', YEAR(sbcustjoindate), LPAD(MONTH(sbcustjoindate), 2, '0')) ), _S3 AS ( SELECT - AVG(SBTRANSACTION.sbtxamount) AS AGG_0, + AVG(SBTRANSACTION.sbtxamount) AS AVG_SBTXAMOUNT, CONCAT_WS('-', YEAR(SBCUSTOMER.sbcustjoindate), LPAD(MONTH(SBCUSTOMER.sbcustjoindate), 2, '0')) AS MONTH FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN MAIN.SBTRANSACTION AS SBTRANSACTION diff --git a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql index 97ea27e78..c330af82b 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql @@ -1,24 +1,17 @@ -WITH _T0 AS ( - SELECT - ANY_VALUE(CARS.make) AS MAKE, - ANY_VALUE(CARS.model) AS MODEL, - ANY_VALUE(SALES.sale_price) AS SALE_PRICE - FROM MAIN.SALES AS SALES - JOIN MAIN.CARS AS CARS - ON CARS._id = SALES.car_id - JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS - ON CARS._id = INVENTORY_SNAPSHOTS.car_id - AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 - AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date - GROUP BY - SALES._id, - CARS._id -) SELECT - MAKE AS make, - MODEL AS model, - SALE_PRICE AS sale_price -FROM _T0 + ANY_VALUE(CARS.make) AS make, + ANY_VALUE(CARS.model) AS model, + ANY_VALUE(SALES.sale_price) AS sale_price +FROM MAIN.SALES AS SALES +JOIN MAIN.CARS AS CARS + ON CARS._id = SALES.car_id +JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS + ON CARS._id = INVENTORY_SNAPSHOTS.car_id + AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 + AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date +GROUP BY + SALES._id, + CARS._id ORDER BY SALE_PRICE DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql index ec8d09bf0..fd28c5ab5 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql @@ -17,14 +17,13 @@ JOIN ERAS AS ERAS JOIN _S2 AS _S2 ON EVENTS.ev_key = _S2.EV_KEY JOIN SEASONS AS SEASONS - ON SEASONS.s_month1 = MONTH(_S2.DATE_TIME) - OR SEASONS.s_month2 = MONTH(_S2.DATE_TIME) - OR SEASONS.s_month3 = MONTH(_S2.DATE_TIME) + ON SEASONS.s_month1 = MONTH(_S2.EV_DT) + OR SEASONS.s_month2 = MONTH(_S2.EV_DT) + OR SEASONS.s_month3 = MONTH(_S2.EV_DT) JOIN _S2 AS _S6 ON EVENTS.ev_key = _S6.EV_KEY JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(_S6.DATE_TIME) - AND TIMES.t_start_hour <= HOUR(_S6.DATE_TIME) + ON TIMES.t_end_hour > HOUR(_S6.EV_DT) AND TIMES.t_start_hour <= HOUR(_S6.EV_DT) WHERE EVENTS.ev_typ = 'culture' ORDER BY diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index 6134e04ee..a3d5ae53a 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -11,14 +11,6 @@ WITH _T1 AS ( JOIN EVENTS AS EVENTS ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) -), _T0 AS ( - SELECT - ANY_VALUE(START_YEAR) AS AGG_3, - AVG(DAY_GAP) AS AVG_EVENT_GAP, - ANY_VALUE(NAME) AS ERA_NAME - FROM _T1 - GROUP BY - NAME ) SELECT ANY_VALUE(ER_NAME) AS era_name, diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql index 4c19e27e9..8a2d27841 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -1,23 +1,11 @@ -WITH _T0 AS ( - SELECT - COUNT(*) AS N_EVENTS, - ANY_VALUE(SEASONS.s_name) AS SEASON_NAME - FROM SEASONS AS SEASONS - JOIN EVENTS AS EVENTS - ON SEASONS.s_month1 = MONTH(EVENTS.ev_dt) - OR SEASONS.s_month2 = MONTH(EVENTS.ev_dt) - OR SEASONS.s_month3 = MONTH(EVENTS.ev_dt) - GROUP BY - SEASONS.s_name -) SELECT ANY_VALUE(SEASONS.s_name) AS season_name, COUNT(*) AS n_events FROM SEASONS AS SEASONS JOIN EVENTS AS EVENTS - ON SEASONS.s_month1 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) - OR SEASONS.s_month2 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) - OR SEASONS.s_month3 = DATE_PART(MONTH, CAST(EVENTS.ev_dt AS DATETIME)) + ON SEASONS.s_month1 = MONTH(EVENTS.ev_dt) + OR SEASONS.s_month2 = MONTH(EVENTS.ev_dt) + OR SEASONS.s_month3 = MONTH(EVENTS.ev_dt) GROUP BY SEASONS.s_name ORDER BY diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index a9842d14f..80acf6c45 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -17,17 +17,17 @@ WITH _S0 AS ( SEARCHES.search_id AS SEARCH_ID FROM _S0 AS _S2 JOIN SEARCHES AS SEARCHES - ON _S2.FIRST_MONTH = MONTH(SEARCHES.search_ts) - OR _S2.SECOND_MONTH = MONTH(SEARCHES.search_ts) - OR _S2.THIRD_MONTH = MONTH(SEARCHES.search_ts) - JOIN EVENTS AS EVENTS - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) - JOIN _S7 AS _S7 - ON _S2.SEASON_NAME = _S7.NAME + ON _S2.S_MONTH1 = MONTH(SEARCHES.search_ts) + OR _S2.S_MONTH2 = MONTH(SEARCHES.search_ts) + OR _S2.S_MONTH3 = MONTH(SEARCHES.search_ts) + JOIN _S5 AS _S5 + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S5.EV_NAME)) + JOIN _S0 AS _S7 + ON _S2.S_NAME = _S7.S_NAME AND ( - _S7.FIRST_MONTH = MONTH(EVENTS.ev_dt) - OR _S7.SECOND_MONTH = MONTH(EVENTS.ev_dt) - OR _S7.THIRD_MONTH = MONTH(EVENTS.ev_dt) + _S7.S_MONTH1 = MONTH(_S5.EV_DT) + OR _S7.S_MONTH2 = MONTH(_S5.EV_DT) + OR _S7.S_MONTH3 = MONTH(_S5.EV_DT) ) GROUP BY _S2.S_NAME, @@ -41,9 +41,9 @@ WITH _S0 AS ( )) AS SUM_IS_INTRA_SEASON FROM _S0 AS _S0 JOIN SEARCHES AS SEARCHES - ON _S0.FIRST_MONTH = MONTH(SEARCHES.search_ts) - OR _S0.SECOND_MONTH = MONTH(SEARCHES.search_ts) - OR _S0.THIRD_MONTH = MONTH(SEARCHES.search_ts) + ON _S0.S_MONTH1 = MONTH(SEARCHES.search_ts) + OR _S0.S_MONTH2 = MONTH(SEARCHES.search_ts) + OR _S0.S_MONTH3 = MONTH(SEARCHES.search_ts) LEFT JOIN _S9 AS _S9 ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.S_NAME = _S9.S_NAME GROUP BY @@ -54,16 +54,16 @@ WITH _S0 AS ( COUNT_IF(_S15.S_NAME = _S10.S_NAME) AS SUM_IS_INTRA_SEASON, _S10.S_NAME FROM _S0 AS _S10 - JOIN EVENTS AS EVENTS - ON _S10.FIRST_MONTH = MONTH(EVENTS.ev_dt) - OR _S10.SECOND_MONTH = MONTH(EVENTS.ev_dt) - OR _S10.THIRD_MONTH = MONTH(EVENTS.ev_dt) + JOIN _S5 AS _S11 + ON _S10.S_MONTH1 = MONTH(_S11.EV_DT) + OR _S10.S_MONTH2 = MONTH(_S11.EV_DT) + OR _S10.S_MONTH3 = MONTH(_S11.EV_DT) JOIN SEARCHES AS SEARCHES - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) - JOIN _S7 AS _S15 - ON _S15.FIRST_MONTH = MONTH(SEARCHES.search_ts) - OR _S15.SECOND_MONTH = MONTH(SEARCHES.search_ts) - OR _S15.THIRD_MONTH = MONTH(SEARCHES.search_ts) + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S11.EV_NAME)) + JOIN _S0 AS _S15 + ON _S15.S_MONTH1 = MONTH(SEARCHES.search_ts) + OR _S15.S_MONTH2 = MONTH(SEARCHES.search_ts) + OR _S15.S_MONTH3 = MONTH(SEARCHES.search_ts) GROUP BY _S10.S_NAME ) diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql index e70fecd02..101b7026d 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -1,66 +1,26 @@ WITH _S0 AS ( SELECT - EVENTS.ev_dt AS DATE_TIME, - EVENTS.ev_key AS KEY - FROM EVENTS AS EVENTS -), _T1 AS ( + ev_dt AS EV_DT, + ev_key AS EV_KEY + FROM EVENTS +), _u_0 AS ( SELECT - TIMES.t_end_hour AS END_HOUR, - TIMES.t_name AS NAME, - TIMES.t_start_hour AS START_HOUR - FROM TIMES AS TIMES -), _S1 AS ( - SELECT - _T1.END_HOUR AS END_HOUR, - _T1.START_HOUR AS START_HOUR - FROM _T1 AS _T1 - WHERE - _T1.NAME = 'Pre-Dawn' -), _S4 AS ( - SELECT - _S0.KEY AS KEY - FROM _S0 AS _S0 - JOIN _S1 AS _S1 - ON _S1.END_HOUR > HOUR(_S0.DATE_TIME) AND _S1.START_HOUR <= HOUR(_S0.DATE_TIME) -), _T2 AS ( - SELECT - ERAS.er_end_year AS END_YEAR, - ERAS.er_name AS NAME, - ERAS.er_start_year AS START_YEAR - FROM ERAS AS ERAS -), _S3 AS ( - SELECT - _T2.END_YEAR AS END_YEAR, - _T2.START_YEAR AS START_YEAR - FROM _T2 AS _T2 - WHERE - _T2.NAME = 'Cold War' -), _S5 AS ( - SELECT - _S2.KEY AS KEY + _S2.EV_KEY AS _u_1 FROM _S0 AS _S2 - JOIN _S3 AS _S3 - ON _S3.END_YEAR > YEAR(_S2.DATE_TIME) AND _S3.START_YEAR <= YEAR(_S2.DATE_TIME) -), _T0 AS ( - SELECT - 1 AS _ - FROM _S4 AS _S4 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S5 AS _S5 - WHERE - _S4.KEY = _S5.KEY - ) + JOIN ERAS AS ERAS + ON ERAS.er_end_year > YEAR(_S2.EV_DT) + AND ERAS.er_name = 'Cold War' + AND ERAS.er_start_year <= YEAR(_S2.EV_DT) + GROUP BY + _S2.EV_KEY ) SELECT COUNT(*) AS n_events FROM _S0 AS _S0 JOIN TIMES AS TIMES - ON TIMES.t_end_hour > DATE_PART(HOUR, CAST(_S0.EV_DT AS DATETIME)) + ON TIMES.t_end_hour > HOUR(_S0.EV_DT) AND TIMES.t_name = 'Pre-Dawn' - AND TIMES.t_start_hour <= DATE_PART(HOUR, CAST(_S0.EV_DT AS DATETIME)) + AND TIMES.t_start_hour <= HOUR(_S0.EV_DT) LEFT JOIN _u_0 AS _u_0 ON _S0.EV_KEY = _u_0._u_1 WHERE diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql index ef7c91343..b1dfa6b1d 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql @@ -8,24 +8,6 @@ WITH _S0 AS ( search_string AS SEARCH_STRING, search_user_id AS SEARCH_USER_ID FROM SEARCHES -), _T0 AS ( - SELECT - ANY_VALUE(USERS.user_name) AS AGG_2, - COUNT(DISTINCT USERS_2.user_id) AS N_OTHER_USERS, - ANY_VALUE(USERS.user_name) AS USER_NAME - FROM USERS AS USERS - JOIN _S1 AS _S1 - ON USERS.user_id = _S1.USER_ID - JOIN EVENTS AS EVENTS - ON CONTAINS(LOWER(_S1.SEARCH_STRING), LOWER(EVENTS.ev_name)) - JOIN _S1 AS _S5 - ON CONTAINS(LOWER(_S5.SEARCH_STRING), LOWER(EVENTS.ev_name)) - JOIN USERS AS USERS_2 - ON USERS_2.user_id = _S5.USER_ID - WHERE - USERS.user_name <> USERS_2.user_name - GROUP BY - USERS.user_id ) SELECT ANY_VALUE(_S0.USER_NAME) AS user_name, @@ -34,9 +16,9 @@ FROM _S0 AS _S0 JOIN _S1 AS _S1 ON _S0.USER_ID = _S1.SEARCH_USER_ID JOIN EVENTS AS EVENTS - ON LOWER(_S1.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(_S1.SEARCH_STRING), LOWER(EVENTS.ev_name)) JOIN _S1 AS _S5 - ON LOWER(_S5.SEARCH_STRING) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON CONTAINS(LOWER(_S5.SEARCH_STRING), LOWER(EVENTS.ev_name)) JOIN _S0 AS _S7 ON _S0.USER_NAME <> _S7.USER_NAME AND _S5.SEARCH_USER_ID = _S7.USER_ID GROUP BY diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql index 9f9c0d642..14f52d8ba 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -15,10 +15,8 @@ WITH _S0 AS ( ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) JOIN SEARCHES AS SEARCHES_2 ON CONTAINS(LOWER(SEARCHES_2.search_string), LOWER(EVENTS.ev_name)) - JOIN USERS AS USERS_2 - ON SEARCHES_2.search_user_id = USERS_2.user_id - WHERE - USERS.user_name <> USERS_2.user_name + JOIN _S0 AS _S7 + ON SEARCHES_2.search_user_id = _S7.USER_ID AND _S0.USER_NAME <> _S7.USER_NAME GROUP BY SEARCHES.search_id, _S0.USER_ID diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql index b702fd27c..15d3bfec3 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -1,6 +1,6 @@ WITH _T0 AS ( SELECT - ANY_VALUE(SEARCHES.search_user_id) AS AGG_5 + ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID FROM SEARCHES AS SEARCHES JOIN EVENTS AS EVENTS ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) @@ -13,17 +13,17 @@ WITH _T0 AS ( ), _S5 AS ( SELECT COUNT(*) AS N_COLD_WAR_SEARCHES, - AGG_5 + ANYTHING_SEARCH_USER_ID FROM _T0 GROUP BY - AGG_5 + ANYTHING_SEARCH_USER_ID ) SELECT USERS.user_name, _S5.N_COLD_WAR_SEARCHES AS n_cold_war_searches FROM USERS AS USERS JOIN _S5 AS _S5 - ON USERS.user_id = _S5.AGG_5 + ON USERS.user_id = _S5.ANYTHING_SEARCH_USER_ID ORDER BY N_COLD_WAR_SEARCHES DESC NULLS LAST, USER_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql index 170005e9e..09e1c1252 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql @@ -5,7 +5,7 @@ WITH _S3 AS ( MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, - c_nationkey AS NATION_KEY + c_nationkey AS C_NATIONKEY FROM TPCH.CUSTOMER GROUP BY c_nationkey diff --git a/tests/test_sql_refsols/quantile_test_1_snowflake.sql b/tests/test_sql_refsols/quantile_test_1_snowflake.sql index 6f5017af6..4c6fa368a 100644 --- a/tests/test_sql_refsols/quantile_test_1_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_1_snowflake.sql @@ -1,15 +1,6 @@ -WITH _T0 AS ( - SELECT - CASE - WHEN CAST(0.30000000000000004 * COUNT(ORDERS.o_totalprice) OVER () AS BIGINT) < ROW_NUMBER() OVER (ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_1 - FROM TPCH.CUSTOMER AS CUSTOMER - JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) = 1998 -) SELECT - MAX(EXPR_1) AS seventieth_order_price -FROM _T0 + PERCENTILE_DISC(0.7) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS seventieth_order_price +FROM TPCH.CUSTOMER AS CUSTOMER +JOIN TPCH.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey AND YEAR(ORDERS.o_orderdate) = 1998 diff --git a/tests/test_sql_refsols/quantile_test_2_snowflake.sql b/tests/test_sql_refsols/quantile_test_2_snowflake.sql index 73ae7f4b9..7c4c58595 100644 --- a/tests/test_sql_refsols/quantile_test_2_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_2_snowflake.sql @@ -7,86 +7,45 @@ WITH _S0 AS ( ORDER BY N_NAME NULLS FIRST LIMIT 5 -), _T1 AS ( +), _S5 AS ( SELECT - CASE - WHEN CAST(0.99 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_10, - CASE - WHEN CAST(0.75 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_11, - CASE - WHEN CAST(0.25 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_12, - CASE - WHEN CAST(0.09999999999999998 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_13, - CASE - WHEN CAST(0.010000000000000009 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_14, - CASE - WHEN CAST(0.0 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_15, - CASE - WHEN CAST(0.5 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_16, - CASE - WHEN CAST(1.0 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_17, - CASE - WHEN CAST(0.9 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS BIGINT) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC NULLS LAST) - THEN ORDERS.o_totalprice - ELSE NULL - END AS EXPR_9, + PERCENTILE_DISC(0.1) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_0, + PERCENTILE_DISC(0.01) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_1, + PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_2, + PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_3, + PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_4, + PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_5, + PERCENTILE_DISC(1.0) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_6, + PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_7, + PERCENTILE_DISC(0.0) WITHIN GROUP (ORDER BY + ORDERS.o_totalprice) AS AGG_8, CUSTOMER.c_nationkey AS C_NATIONKEY FROM TPCH.CUSTOMER AS CUSTOMER JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) = 1998 -), _S5 AS ( - SELECT - MAX(EXPR_10) AS MAX_EXPR_10, - MAX(EXPR_11) AS MAX_EXPR_11, - MAX(EXPR_12) AS MAX_EXPR_12, - MAX(EXPR_13) AS MAX_EXPR_13, - MAX(EXPR_14) AS MAX_EXPR_14, - MAX(EXPR_15) AS MAX_EXPR_15, - MAX(EXPR_16) AS MAX_EXPR_16, - MAX(EXPR_17) AS MAX_EXPR_17, - MAX(EXPR_9) AS MAX_EXPR_9, - C_NATIONKEY - FROM _T1 + ON CUSTOMER.c_custkey = ORDERS.o_custkey AND YEAR(ORDERS.o_orderdate) = 1998 GROUP BY - C_NATIONKEY + CUSTOMER.c_nationkey ) SELECT REGION.r_name AS region_name, _S0.N_NAME AS nation_name, - _S5.MAX_EXPR_17 AS orders_min, - _S5.MAX_EXPR_10 AS orders_1_percent, - _S5.MAX_EXPR_9 AS orders_10_percent, - _S5.MAX_EXPR_11 AS orders_25_percent, - _S5.MAX_EXPR_16 AS orders_median, - _S5.MAX_EXPR_12 AS orders_75_percent, - _S5.MAX_EXPR_13 AS orders_90_percent, - _S5.MAX_EXPR_14 AS orders_99_percent, - _S5.MAX_EXPR_15 AS orders_max + _S5.AGG_8 AS orders_min, + _S5.AGG_1 AS orders_1_percent, + _S5.AGG_0 AS orders_10_percent, + _S5.AGG_2 AS orders_25_percent, + _S5.AGG_7 AS orders_median, + _S5.AGG_3 AS orders_75_percent, + _S5.AGG_4 AS orders_90_percent, + _S5.AGG_5 AS orders_99_percent, + _S5.AGG_6 AS orders_max FROM _S0 AS _S0 JOIN TPCH.REGION AS REGION ON REGION.r_regionkey = _S0.N_REGIONKEY diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql index 9f50fcbea..4c35ec1b0 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql @@ -5,7 +5,7 @@ WITH _S3 AS ( MEDIAN(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, - NATION.n_regionkey AS REGION_KEY + NATION.n_regionkey AS N_REGIONKEY FROM TPCH.NATION AS NATION JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_nationkey = NATION.n_nationkey diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql index b20081c55..cc239b008 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -1,22 +1,3 @@ -WITH _T3 AS ( - SELECT - ca_dt AS CALENDAR_DAY - FROM MAIN.CALENDAR -), _T0 AS ( - SELECT - COUNT(*) AS N_PURCHASES, - ANY_VALUE(_T3.CALENDAR_DAY) AS START_OF_PERIOD - FROM _T3 AS _T3 - CROSS JOIN _T3 AS _S1 - JOIN MAIN.DEVICES AS DEVICES - ON _S1.CALENDAR_DAY = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - WHERE - YEAR(_T3.CALENDAR_DAY) = 2024 - AND _S1.CALENDAR_DAY < DATEADD(DAY, 5, CAST(_T3.CALENDAR_DAY AS TIMESTAMP)) - AND _S1.CALENDAR_DAY >= _T3.CALENDAR_DAY - GROUP BY - _T3.CALENDAR_DAY -) SELECT ANY_VALUE(CALENDAR.ca_dt) AS start_of_period, COUNT(*) AS n_purchases @@ -27,7 +8,7 @@ JOIN MAIN.CALENDAR AS CALENDAR_2 JOIN MAIN.DEVICES AS DEVICES ON CALENDAR_2.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) WHERE - DATE_PART(YEAR, CAST(CALENDAR.ca_dt AS DATETIME)) = 2024 + YEAR(CALENDAR.ca_dt) = 2024 GROUP BY CALENDAR.ca_dt ORDER BY diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index fc4550f73..84e64212f 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -12,24 +12,24 @@ WITH _S0 AS ( FROM MAIN.PRODUCTS ), _S6 AS ( SELECT - SUM(_S0.AGG_1) AS AGG_1, - YEAR(_T4.RELEASE_DATE) AS RELEASE_YEAR + SUM(_S0.N_ROWS) AS SUM_N_ROWS, + YEAR(_T4.PR_RELEASE) AS RELEASE_YEAR FROM _S0 AS _S0 JOIN _T4 AS _T4 ON _S0.DE_PRODUCT_ID = _T4.PR_ID GROUP BY - YEAR(_T4.RELEASE_DATE) + YEAR(_T4.PR_RELEASE) ), _S7 AS ( SELECT - COUNT(*) AS AGG_0, - YEAR(_T6.RELEASE_DATE) AS RELEASE_YEAR + COUNT(*) AS N_ROWS, + YEAR(_T6.PR_RELEASE) AS RELEASE_YEAR FROM MAIN.DEVICES AS DEVICES JOIN _T4 AS _T6 ON DEVICES.de_product_id = _T6.PR_ID JOIN MAIN.INCIDENTS AS INCIDENTS ON DEVICES.de_id = INCIDENTS.in_device_id GROUP BY - YEAR(_T6.RELEASE_DATE) + YEAR(_T6.PR_RELEASE) ) SELECT _S6.RELEASE_YEAR AS year, diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index ff7f70785..419aa3d94 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -3,7 +3,7 @@ WITH _T4 AS ( ca_dt AS CA_DT FROM MAIN.CALENDAR WHERE - DATE_PART(YEAR, CAST(ca_dt AS DATETIME)) IN (2020, 2021) + YEAR(ca_dt) IN (2020, 2021) ), _T8 AS ( SELECT co_id AS CO_ID, @@ -21,9 +21,7 @@ WITH _T4 AS ( JOIN MAIN.DEVICES AS DEVICES ON CALENDAR.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) JOIN _T8 AS _T8 - ON DEVICES.de_production_country_id = _T8._ID AND _T8.NAME = 'CN' - WHERE - YEAR(_T7.CALENDAR_DAY) IN (2020, 2021) + ON DEVICES.de_production_country_id = _T8.CO_ID GROUP BY _T7.CA_DT ), _S15 AS ( @@ -36,30 +34,12 @@ WITH _T4 AS ( JOIN MAIN.DEVICES AS DEVICES ON DEVICES.de_id = INCIDENTS.in_device_id JOIN _T8 AS _T12 - ON DEVICES.de_production_country_id = _T12._ID AND _T12.NAME = 'CN' - WHERE - YEAR(_T11.CALENDAR_DAY) IN (2020, 2021) - GROUP BY - _T11.CALENDAR_DAY -), _T1 AS ( - SELECT - SUM(_S7.AGG_2) AS AGG_4, - SUM(_S15.AGG_5) AS AGG_7, - MONTH(_T4.CALENDAR_DAY) AS MONTH, - YEAR(_T4.CALENDAR_DAY) AS YEAR - FROM _T4 AS _T4 - LEFT JOIN _S7 AS _S7 - ON _S7.CALENDAR_DAY = _T4.CALENDAR_DAY - LEFT JOIN _S15 AS _S15 - ON _S15.CALENDAR_DAY = _T4.CALENDAR_DAY - WHERE - YEAR(_T4.CALENDAR_DAY) IN (2020, 2021) + ON DEVICES.de_production_country_id = _T12.CO_ID GROUP BY - MONTH(_T4.CALENDAR_DAY), - YEAR(_T4.CALENDAR_DAY) + _T11.CA_DT ) SELECT - CONCAT_WS('-', YEAR, LPAD(MONTH, 2, '0')) AS month, + CONCAT_WS('-', YEAR(_T4.CA_DT), LPAD(MONTH(_T4.CA_DT), 2, '0')) AS month, ROUND(( 1000000.0 * COALESCE(SUM(_S15.N_ROWS), 0) ) / COALESCE(SUM(_S7.N_ROWS), 0), 2) AS ir @@ -69,7 +49,7 @@ LEFT JOIN _S7 AS _S7 LEFT JOIN _S15 AS _S15 ON _S15.CA_DT = _T4.CA_DT GROUP BY - DATE_PART(MONTH, CAST(_T4.CA_DT AS DATETIME)), - DATE_PART(YEAR, CAST(_T4.CA_DT AS DATETIME)) + MONTH(_T4.CA_DT), + YEAR(_T4.CA_DT) ORDER BY MONTH NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index 3542193bc..0727ab6e1 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -41,16 +41,16 @@ WITH _S14 AS ( _S8.CA_DT ), _S15 AS ( SELECT - SUM(_S7.AGG_3) AS AGG_5, - SUM(_S13.AGG_6) AS AGG_8, - YEAR(_T6.CALENDAR_DAY) AS YEAR + SUM(_S7.N_ROWS) AS SUM_EXPR_4, + SUM(_S13.N_ROWS) AS SUM_N_ROWS, + YEAR(_T6.CA_DT) AS YEAR FROM _T6 AS _T6 LEFT JOIN _S7 AS _S7 ON _S7.CA_DT = _T6.CA_DT LEFT JOIN _S13 AS _S13 ON _S13.CA_DT = _T6.CA_DT GROUP BY - YEAR(_T6.CALENDAR_DAY) + YEAR(_T6.CA_DT) ), _T0 AS ( SELECT ROUND( @@ -73,11 +73,12 @@ WITH _S14 AS ( ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR), 2 ) AS PCT_INCIDENT_CHANGE, - _S15.YEAR - YEAR(_S14.RELEASE_DATE) AS YEARS_SINCE_RELEASE + _S15.YEAR - YEAR(_S14.RELEASE_DATE) AS YEARS_SINCE_RELEASE, + COALESCE(_S15.SUM_N_ROWS, 0) AS N_DEVICES, + COALESCE(_S15.SUM_EXPR_4, 0) AS N_INCIDENTS FROM _S14 AS _S14 - CROSS JOIN _S15 AS _S15 - WHERE - _S15.YEAR >= YEAR(_S14.RELEASE_DATE) + JOIN _S15 AS _S15 + ON _S15.YEAR >= YEAR(_S14.RELEASE_DATE) ) SELECT YEARS_SINCE_RELEASE AS years_since_release, diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index 07d679a78..33f047de4 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -22,16 +22,16 @@ WITH _T5 AS ( _S4.CA_DT ), _T3 AS ( SELECT - SUM(_S3.AGG_2) AS AGG_4, - SUM(_S7.AGG_5) AS AGG_7, - YEAR(_T5.CALENDAR_DAY) AS YEAR + SUM(_S3.N_ROWS) AS SUM_EXPR_3, + SUM(_S7.N_ROWS) AS SUM_N_ROWS, + YEAR(_T5.CA_DT) AS YEAR FROM _T5 AS _T5 LEFT JOIN _S3 AS _S3 ON _S3.CA_DT = _T5.CA_DT LEFT JOIN _S7 AS _S7 ON _S7.CA_DT = _T5.CA_DT GROUP BY - YEAR(_T5.CALENDAR_DAY) + YEAR(_T5.CA_DT) ), _T0 AS ( SELECT ROUND( diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index c3bd60a48..13d813689 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -8,7 +8,7 @@ WITH _T3 AS ( FROM MAIN.SBTRANSACTION WHERE YEAR(sbtxdatetime) = 2023 -), _T0 AS ( +), _T1 AS ( SELECT SBTXDATETIME FROM _T3 diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql index 944e49941..be986f217 100644 --- a/tests/test_sql_refsols/tpch_q12_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -1,21 +1,3 @@ -WITH _T1 AS ( - SELECT - COUNT_IF(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')) AS AGG_0, - COUNT_IF(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')) AS AGG_1, - LINEITEM.l_shipmode AS SHIP_MODE - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - WHERE - LINEITEM.l_commitdate < LINEITEM.l_receiptdate - AND LINEITEM.l_commitdate > LINEITEM.l_shipdate - AND ( - LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' - ) - AND YEAR(LINEITEM.l_receiptdate) = 1994 - GROUP BY - LINEITEM.l_shipmode -) SELECT LINEITEM.l_shipmode AS L_SHIPMODE, COALESCE(COUNT_IF(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, @@ -24,12 +6,12 @@ FROM TPCH.LINEITEM AS LINEITEM JOIN TPCH.ORDERS AS ORDERS ON LINEITEM.l_orderkey = ORDERS.o_orderkey WHERE - DATE_PART(YEAR, CAST(LINEITEM.l_receiptdate AS DATETIME)) = 1994 - AND LINEITEM.l_commitdate < LINEITEM.l_receiptdate + LINEITEM.l_commitdate < LINEITEM.l_receiptdate AND LINEITEM.l_commitdate > LINEITEM.l_shipdate AND ( LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' ) + AND YEAR(LINEITEM.l_receiptdate) = 1994 GROUP BY LINEITEM.l_shipmode ORDER BY diff --git a/tests/test_sql_refsols/tpch_q14_snowflake.sql b/tests/test_sql_refsols/tpch_q14_snowflake.sql index fb16a2b29..80c07210e 100644 --- a/tests/test_sql_refsols/tpch_q14_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q14_snowflake.sql @@ -1,29 +1,9 @@ -WITH _T0 AS ( - SELECT - SUM( - IFF( - STARTSWITH(PART.p_type, 'PROMO'), - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - ), - 0 - ) - ) AS AGG_0, - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS AGG_1 - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey - WHERE - MONTH(LINEITEM.l_shipdate) = 9 AND YEAR(LINEITEM.l_shipdate) = 1995 -) SELECT ( 100.0 * COALESCE( SUM( IFF( - PART.p_type LIKE 'PROMO%', + STARTSWITH(PART.p_type, 'PROMO'), LINEITEM.l_extendedprice * ( 1 - LINEITEM.l_discount ), @@ -39,5 +19,4 @@ FROM TPCH.LINEITEM AS LINEITEM JOIN TPCH.PART AS PART ON LINEITEM.l_partkey = PART.p_partkey WHERE - DATE_PART(MONTH, CAST(LINEITEM.l_shipdate AS DATETIME)) = 9 - AND DATE_PART(YEAR, CAST(LINEITEM.l_shipdate AS DATETIME)) = 1995 + MONTH(LINEITEM.l_shipdate) = 9 AND YEAR(LINEITEM.l_shipdate) = 1995 diff --git a/tests/test_sql_refsols/tpch_q16_snowflake.sql b/tests/test_sql_refsols/tpch_q16_snowflake.sql index baaa32589..c5d1d0112 100644 --- a/tests/test_sql_refsols/tpch_q16_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q16_snowflake.sql @@ -1,23 +1,3 @@ -WITH _T0 AS ( - SELECT - COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT, - PART.p_brand AS P_BRAND, - PART.p_size AS P_SIZE, - PART.p_type AS P_TYPE - FROM TPCH.PARTSUPP AS PARTSUPP - JOIN TPCH.SUPPLIER AS SUPPLIER - ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' - AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey - JOIN TPCH.PART AS PART - ON NOT STARTSWITH(PART.p_type, 'MEDIUM POLISHED%') - AND PART.p_brand <> 'BRAND#45' - AND PART.p_partkey = PARTSUPP.ps_partkey - AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) - GROUP BY - PART.p_brand, - PART.p_size, - PART.p_type -) SELECT PART.p_brand AS P_BRAND, PART.p_type AS P_TYPE, @@ -28,7 +8,7 @@ JOIN TPCH.SUPPLIER AS SUPPLIER ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey JOIN TPCH.PART AS PART - ON NOT PART.p_type LIKE 'MEDIUM POLISHED%%' + ON NOT STARTSWITH(PART.p_type, 'MEDIUM POLISHED%') AND PART.p_brand <> 'BRAND#45' AND PART.p_partkey = PARTSUPP.ps_partkey AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index b2428d84c..899f457cf 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -15,19 +15,15 @@ WITH _S3 AS ( JOIN _S3 AS _S3 ON PART.p_partkey = _S3.L_PARTKEY WHERE - PART.p_name LIKE 'forest%' + STARTSWITH(PART.p_name, 'forest') ), _T1 AS ( SELECT COUNT(*) AS N_ROWS, PARTSUPP.ps_suppkey AS PS_SUPPKEY FROM TPCH.PARTSUPP AS PARTSUPP - JOIN TPCH.PART AS PART - ON PART.p_partkey = PARTSUPP.ps_partkey AND STARTSWITH(PART.p_name, 'forest') - JOIN _T5 AS _T5 - ON PART.p_partkey = _T5.PART_KEY - WHERE - PARTSUPP.ps_availqty > ( - 0.5 * COALESCE(COALESCE(_T5.AGG_0, 0), 0) + JOIN _S5 AS _S5 + ON PARTSUPP.ps_availqty > ( + 0.5 * COALESCE(_S5.AGG_0, 0) ) AND PARTSUPP.ps_partkey = _S5.P_PARTKEY GROUP BY diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql index 2e2e136fa..e0d909d0a 100644 --- a/tests/test_sql_refsols/tpch_q21_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -7,177 +7,40 @@ WITH _T7 AS ( l_suppkey AS L_SUPPKEY FROM TPCH.LINEITEM WHERE - _T2.NAME = 'SAUDI ARABIA' -), _S12 AS ( - SELECT - _S0.KEY AS KEY, - _S0.NAME AS NAME - FROM _S0 AS _S0 - JOIN _S1 AS _S1 - ON _S0.NATION_KEY = _S1.KEY -), _T7 AS ( - SELECT - LINEITEM.l_commitdate AS COMMIT_DATE, - LINEITEM.l_linenumber AS LINE_NUMBER, - LINEITEM.l_orderkey AS ORDER_KEY, - LINEITEM.l_receiptdate AS RECEIPT_DATE, - LINEITEM.l_suppkey AS SUPPLIER_KEY - FROM TPCH.LINEITEM AS LINEITEM -), _S2 AS ( - SELECT - _T7.SUPPLIER_KEY AS ORIGINAL_KEY, - _T7.LINE_NUMBER AS LINE_NUMBER, - _T7.ORDER_KEY AS ORDER_KEY, - _T7.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _T7 AS _T7 - WHERE - _T7.COMMIT_DATE < _T7.RECEIPT_DATE -), _S3 AS ( - SELECT - ORDERS.o_orderkey AS KEY, - ORDERS.o_orderstatus AS ORDER_STATUS - FROM TPCH.ORDERS AS ORDERS -), _S4 AS ( - SELECT - _S3.KEY AS KEY, - _S2.LINE_NUMBER AS LINE_NUMBER, - _S2.ORDER_KEY AS ORDER_KEY, - _S3.ORDER_STATUS AS ORDER_STATUS, - _S2.ORIGINAL_KEY AS ORIGINAL_KEY, - _S2.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _S2 AS _S2 - JOIN _S3 AS _S3 - ON _S2.ORDER_KEY = _S3.KEY -), _S5 AS ( - SELECT - LINEITEM.l_orderkey AS ORDER_KEY, - LINEITEM.l_suppkey AS SUPPLIER_KEY - FROM TPCH.LINEITEM AS LINEITEM -), _T6 AS ( - SELECT - _S4.ORDER_KEY AS ORDER_KEY, - _S4.SUPPLIER_KEY AS SUPPLIER_KEY, - _S5.SUPPLIER_KEY AS SUPPLIER_KEY_19, - _S4.KEY AS KEY, - _S4.LINE_NUMBER AS LINE_NUMBER, - _S4.ORDER_STATUS AS ORDER_STATUS, - _S4.ORIGINAL_KEY AS ORIGINAL_KEY - FROM _S4 AS _S4 - JOIN _S5 AS _S5 - ON _S4.KEY = _S5.ORDER_KEY -), _T5 AS ( - SELECT - _T6.KEY AS KEY, - _T6.LINE_NUMBER AS LINE_NUMBER, - _T6.ORDER_KEY AS ORDER_KEY, - _T6.ORDER_STATUS AS ORDER_STATUS, - _T6.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _T6 AS _T6 - WHERE - _T6.ORIGINAL_KEY <> _T6.SUPPLIER_KEY_19 + l_commitdate < l_receiptdate ), _T4 AS ( SELECT - ANY_VALUE(_T5.LINE_NUMBER) AS AGG_13, - ANY_VALUE(_T5.ORDER_KEY) AS AGG_14, - ANY_VALUE(_T5.SUPPLIER_KEY) AS AGG_24, - ANY_VALUE(_T5.KEY) AS AGG_3, - ANY_VALUE(_T5.ORDER_STATUS) AS AGG_6 - FROM _T5 AS _T5 + ANY_VALUE(_T7.L_LINENUMBER) AS ANYTHING_L_LINENUMBER, + ANY_VALUE(_T7.L_ORDERKEY) AS ANYTHING_L_ORDERKEY, + ANY_VALUE(_T7.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, + ANY_VALUE(ORDERS.o_orderkey) AS ANYTHING_O_ORDERKEY, + ANY_VALUE(ORDERS.o_orderstatus) AS ANYTHING_O_ORDERSTATUS + FROM _T7 AS _T7 + JOIN TPCH.ORDERS AS ORDERS + ON ORDERS.o_orderkey = _T7.L_ORDERKEY + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T7.L_SUPPKEY GROUP BY - _T5.KEY, - _T5.LINE_NUMBER, - _T5.ORDER_KEY -), _S10 AS ( - SELECT - _T4.AGG_13 AS AGG_13, - _T4.AGG_14 AS AGG_14, - _T4.AGG_24 AS AGG_24, - _T4.AGG_3 AS AGG_3 - FROM _T4 AS _T4 - WHERE - _T4.AGG_6 = 'F' -), _S6 AS ( - SELECT - _T9.SUPPLIER_KEY AS ORIGINAL_KEY, - _T9.LINE_NUMBER AS LINE_NUMBER, - _T9.ORDER_KEY AS ORDER_KEY + _T7.L_LINENUMBER, + _T7.L_ORDERKEY, + ORDERS.o_orderkey +), _u_0 AS ( + SELECT + _T9.L_LINENUMBER AS _u_1, + _T9.L_ORDERKEY AS _u_2, + ORDERS.o_orderkey AS _u_3 FROM _T7 AS _T9 - WHERE - _T9.COMMIT_DATE < _T9.RECEIPT_DATE -), _S7 AS ( - SELECT - ORDERS.o_orderkey AS KEY - FROM TPCH.ORDERS AS ORDERS -), _S8 AS ( - SELECT - _S7.KEY AS KEY, - _S6.LINE_NUMBER AS LINE_NUMBER, - _S6.ORDER_KEY AS ORDER_KEY, - _S6.ORIGINAL_KEY AS ORIGINAL_KEY - FROM _S6 AS _S6 - JOIN _S7 AS _S7 - ON _S6.ORDER_KEY = _S7.KEY -), _T10 AS ( - SELECT - LINEITEM.l_commitdate AS COMMIT_DATE, - LINEITEM.l_orderkey AS ORDER_KEY, - LINEITEM.l_receiptdate AS RECEIPT_DATE, - LINEITEM.l_suppkey AS SUPPLIER_KEY - FROM TPCH.LINEITEM AS LINEITEM -), _S9 AS ( - SELECT - _T10.ORDER_KEY AS ORDER_KEY, - _T10.SUPPLIER_KEY AS SUPPLIER_KEY - FROM _T10 AS _T10 - WHERE - _T10.COMMIT_DATE < _T10.RECEIPT_DATE -), _T8 AS ( - SELECT - _S8.ORDER_KEY AS ORDER_KEY, - _S9.SUPPLIER_KEY AS SUPPLIER_KEY_36, - _S8.KEY AS KEY, - _S8.LINE_NUMBER AS LINE_NUMBER, - _S8.ORIGINAL_KEY AS ORIGINAL_KEY - FROM _S8 AS _S8 - JOIN _S9 AS _S9 - ON _S8.KEY = _S9.ORDER_KEY -), _S11 AS ( - SELECT - _T8.KEY AS KEY, - _T8.LINE_NUMBER AS LINE_NUMBER, - _T8.ORDER_KEY AS ORDER_KEY - FROM _T8 AS _T8 - WHERE - _T8.ORIGINAL_KEY <> _T8.SUPPLIER_KEY_36 -), _T3 AS ( - SELECT - _S10.AGG_24 AS AGG_24 - FROM _S10 AS _S10 - WHERE - NOT EXISTS( - SELECT - 1 AS "1" - FROM _S11 AS _S11 - WHERE - _S10.AGG_13 = _S11.LINE_NUMBER - AND _S10.AGG_14 = _S11.ORDER_KEY - AND _S10.AGG_3 = _S11.KEY - ) -), _S13 AS ( - SELECT - COUNT(*) AS AGG_0, - _T3.AGG_24 AS AGG_24 - FROM _T3 AS _T3 + JOIN TPCH.ORDERS AS ORDERS + ON ORDERS.o_orderkey = _T9.L_ORDERKEY + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate + AND LINEITEM.l_orderkey = ORDERS.o_orderkey + AND LINEITEM.l_suppkey <> _T9.L_SUPPKEY GROUP BY - _T3.AGG_24 -), _T1 AS ( - SELECT - _S13.AGG_0 AS AGG_0, - _S12.NAME AS NAME - FROM _S12 AS _S12 - LEFT JOIN _S13 AS _S13 - ON _S12.KEY = _S13.AGG_24 -), _T0 AS ( + _T9.L_LINENUMBER, + _T9.L_ORDERKEY, + ORDERS.o_orderkey +), _S13 AS ( SELECT COUNT(*) AS N_ROWS, _T4.ANYTHING_L_SUPPKEY diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql index 3d196a7ea..55968be2b 100644 --- a/tests/test_sql_refsols/tpch_q4_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -3,36 +3,7 @@ WITH _u_0 AS ( l_orderkey AS _u_1 FROM TPCH.LINEITEM WHERE - QUARTER(_T2.ORDER_DATE) = 3 AND YEAR(_T2.ORDER_DATE) = 1993 -), _T3 AS ( - SELECT - LINEITEM.l_commitdate AS COMMIT_DATE, - LINEITEM.l_orderkey AS ORDER_KEY, - LINEITEM.l_receiptdate AS RECEIPT_DATE - FROM TPCH.LINEITEM AS LINEITEM -), _S1 AS ( - SELECT - _T3.ORDER_KEY AS ORDER_KEY - FROM _T3 AS _T3 - WHERE - _T3.COMMIT_DATE < _T3.RECEIPT_DATE -), _T1 AS ( - SELECT - _S0.ORDER_PRIORITY AS ORDER_PRIORITY - FROM _S0 AS _S0 - WHERE - EXISTS( - SELECT - 1 AS "1" - FROM _S1 AS _S1 - WHERE - _S0.KEY = _S1.ORDER_KEY - ) -), _T0 AS ( - SELECT - COUNT(*) AS ORDER_COUNT, - _T1.ORDER_PRIORITY AS O_ORDERPRIORITY - FROM _T1 AS _T1 + l_commitdate < l_receiptdate GROUP BY l_orderkey ) @@ -43,9 +14,9 @@ FROM TPCH.ORDERS AS ORDERS LEFT JOIN _u_0 AS _u_0 ON ORDERS.o_orderkey = _u_0._u_1 WHERE - DATE_PART(QUARTER, CAST(ORDERS.o_orderdate AS DATETIME)) = 3 - AND DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) = 1993 - AND NOT _u_0._u_1 IS NULL + NOT _u_0._u_1 IS NULL + AND QUARTER(ORDERS.o_orderdate) = 3 + AND YEAR(ORDERS.o_orderdate) = 1993 GROUP BY ORDERS.o_orderpriority ORDER BY diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index da194d133..6e48d8e75 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -7,46 +7,18 @@ WITH _S1 AS ( n_name = 'FRANCE' OR n_name = 'GERMANY' ), _S9 AS ( SELECT - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS AGG_0, - _S7.NAME AS CUST_NATION, - YEAR(LINEITEM.l_shipdate) AS L_YEAR, - _S1.NAME AS SUPP_NATION - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey - JOIN _S1 AS _S1 - ON SUPPLIER.s_nationkey = _S1.KEY - JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey + _S7.N_NAME, + ORDERS.o_orderkey AS O_ORDERKEY + FROM TPCH.ORDERS AS ORDERS JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_custkey = ORDERS.o_custkey JOIN _S1 AS _S7 - ON CUSTOMER.c_nationkey = _S7.KEY - WHERE - YEAR(LINEITEM.l_shipdate) IN (1995, 1996) - AND ( - _S1.NAME = 'FRANCE' OR _S1.NAME = 'GERMANY' - ) - AND ( - _S1.NAME = 'FRANCE' OR _S7.NAME = 'FRANCE' - ) - AND ( - _S1.NAME = 'GERMANY' OR _S7.NAME = 'GERMANY' - ) - AND ( - _S7.NAME = 'FRANCE' OR _S7.NAME = 'GERMANY' - ) - GROUP BY - _S7.NAME, - YEAR(LINEITEM.l_shipdate), - _S1.NAME + ON CUSTOMER.c_nationkey = _S7.N_NATIONKEY ) SELECT _S1.N_NAME AS SUPP_NATION, _S9.N_NAME AS CUST_NATION, - DATE_PART(YEAR, CAST(LINEITEM.l_shipdate AS DATETIME)) AS L_YEAR, + YEAR(LINEITEM.l_shipdate) AS L_YEAR, COALESCE(SUM(LINEITEM.l_extendedprice * ( 1 - LINEITEM.l_discount )), 0) AS REVENUE @@ -64,10 +36,10 @@ JOIN _S9 AS _S9 _S1.N_NAME = 'GERMANY' OR _S9.N_NAME = 'GERMANY' ) WHERE - DATE_PART(YEAR, CAST(LINEITEM.l_shipdate AS DATETIME)) IN (1995, 1996) + YEAR(LINEITEM.l_shipdate) IN (1995, 1996) GROUP BY _S9.N_NAME, - DATE_PART(YEAR, CAST(LINEITEM.l_shipdate AS DATETIME)), + YEAR(LINEITEM.l_shipdate), _S1.N_NAME ORDER BY _S1.N_NAME NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql index 102912028..2a0f9d0ac 100644 --- a/tests/test_sql_refsols/tpch_q8_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -1,5 +1,5 @@ SELECT - DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) AS O_YEAR, + YEAR(ORDERS.o_orderdate) AS O_YEAR, COALESCE( SUM( IFF( @@ -9,31 +9,26 @@ SELECT ), 0 ) - ) AS AGG_0, - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS AGG_1, - YEAR(ORDERS.o_orderdate) AS O_YEAR - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' - JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - AND YEAR(ORDERS.o_orderdate) IN (1995, 1996) - JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey - JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey - JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' - JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey - JOIN TPCH.NATION AS NATION_2 - ON NATION_2.n_nationkey = SUPPLIER.s_nationkey - GROUP BY - YEAR(ORDERS.o_orderdate) -) -SELECT - O_YEAR, - COALESCE(AGG_0, 0) / COALESCE(AGG_1, 0) AS MKT_SHARE -FROM _T0 + ), + 0 + ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) AS MKT_SHARE +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' +JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + AND YEAR(ORDERS.o_orderdate) IN (1995, 1996) +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' +JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.NATION AS NATION_2 + ON NATION_2.n_nationkey = SUPPLIER.s_nationkey +GROUP BY + YEAR(ORDERS.o_orderdate) diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index 75edab7a7..d8fd374dc 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -1,35 +1,29 @@ SELECT NATION.n_name AS NATION, - DATE_PART(YEAR, CAST(ORDERS.o_orderdate AS DATETIME)) AS O_YEAR, + YEAR(ORDERS.o_orderdate) AS O_YEAR, COALESCE( SUM( LINEITEM.l_extendedprice * ( 1 - LINEITEM.l_discount ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity - ) AS AGG_0, - NATION.n_name AS NATION_NAME, - YEAR(ORDERS.o_orderdate) AS O_YEAR - FROM TPCH.LINEITEM AS LINEITEM - JOIN TPCH.PART AS PART - ON CONTAINS(PART.p_name, 'green') AND LINEITEM.l_partkey = PART.p_partkey - JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey - JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey - JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - JOIN TPCH.PARTSUPP AS PARTSUPP - ON LINEITEM.l_partkey = PARTSUPP.ps_partkey - AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey - GROUP BY - NATION.n_name, - YEAR(ORDERS.o_orderdate) -) -SELECT - NATION_NAME AS NATION, - O_YEAR, - COALESCE(AGG_0, 0) AS AMOUNT -FROM _T1 + ), + 0 + ) AS AMOUNT +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON CONTAINS(PART.p_name, 'green') AND LINEITEM.l_partkey = PART.p_partkey +JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey +JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey +JOIN TPCH.PARTSUPP AS PARTSUPP + ON LINEITEM.l_partkey = PARTSUPP.ps_partkey + AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey +GROUP BY + NATION.n_name, + YEAR(ORDERS.o_orderdate) ORDER BY NATION.n_name NULLS FIRST, O_YEAR DESC NULLS LAST From 95895c8ff3e8e4bc93b82a2f2a5ac20dada22ccf Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 6 Aug 2025 11:34:17 -0700 Subject: [PATCH 10/46] update tests and fix some SF issues --- .../sf_transform_bindings.py | 33 +++++-- .../cumulative_stock_analysis_snowflake.sql | 70 +++++++-------- tests/test_sql_refsols/datediff_snowflake.sql | 2 +- .../defog_broker_adv10_snowflake.sql | 2 +- .../defog_broker_adv15_snowflake.sql | 4 +- .../defog_broker_adv16_snowflake.sql | 13 +-- .../defog_broker_adv1_snowflake.sql | 2 +- .../defog_broker_adv2_snowflake.sql | 2 +- .../defog_broker_adv3_snowflake.sql | 4 +- .../defog_broker_adv4_snowflake.sql | 2 +- .../defog_broker_adv5_snowflake.sql | 13 +-- .../defog_broker_adv7_snowflake.sql | 4 +- .../defog_broker_basic3_snowflake.sql | 2 +- .../defog_broker_gen2_snowflake.sql | 2 +- .../defog_broker_gen4_snowflake.sql | 2 +- .../defog_dealership_adv11_snowflake.sql | 18 ++-- .../defog_dealership_adv16_snowflake.sql | 2 +- .../defog_dealership_adv2_snowflake.sql | 6 +- .../defog_dealership_adv5_snowflake.sql | 26 ++---- .../defog_dealership_basic10_snowflake.sql | 2 +- .../defog_dealership_basic5_snowflake.sql | 10 +-- .../defog_dealership_basic6_snowflake.sql | 2 +- .../defog_dealership_basic7_snowflake.sql | 2 +- .../defog_dealership_basic8_snowflake.sql | 2 +- .../defog_dealership_gen1_snowflake.sql | 2 +- .../defog_dealership_gen4_snowflake.sql | 12 +-- .../defog_ewallet_adv10_snowflake.sql | 4 +- .../defog_ewallet_adv11_snowflake.sql | 13 ++- .../defog_ewallet_adv15_snowflake.sql | 2 +- .../defog_ewallet_adv16_snowflake.sql | 4 +- .../defog_ewallet_adv1_snowflake.sql | 9 +- .../defog_ewallet_adv3_snowflake.sql | 4 +- .../defog_ewallet_basic10_snowflake.sql | 2 +- .../defog_ewallet_basic8_snowflake.sql | 2 +- .../defog_ewallet_basic9_snowflake.sql | 2 +- .../epoch_event_gap_per_era_snowflake.sql | 2 +- .../epoch_intra_season_searches_snowflake.sql | 10 +-- ...ping_event_searches_per_user_snowflake.sql | 9 +- .../epoch_pct_searches_per_tod_snowflake.sql | 14 +-- .../epoch_search_results_by_tod_snowflake.sql | 17 ++-- .../floor_and_ceil_2_snowflake.sql | 2 +- ...tery_failure_rates_anomalies_snowflake.sql | 4 +- ...country_combination_analysis_snowflake.sql | 4 +- ...untry_incident_rate_analysis_snowflake.sql | 8 +- ...percentages_sun_set_by_error_snowflake.sql | 23 +++-- ...e_sun_set_by_factory_country_snowflake.sql | 6 +- ...ncident_rate_by_release_year_snowflake.sql | 20 ++--- ...raph_incident_rate_per_brand_snowflake.sql | 2 +- ...ograph_monthly_incident_rate_snowflake.sql | 40 ++++----- ...aph_most_unreliable_products_snowflake.sql | 7 +- ...incident_rate_goldcopperstar_snowflake.sql | 89 +++++++++---------- ...lative_incident_rate_overall_snowflake.sql | 77 +++++++--------- .../time_threshold_reached_snowflake.sql | 5 +- tests/test_sql_refsols/tpch_q10_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q11_snowflake.sql | 22 ++--- tests/test_sql_refsols/tpch_q15_snowflake.sql | 21 ++--- tests/test_sql_refsols/tpch_q18_snowflake.sql | 12 +-- tests/test_sql_refsols/tpch_q20_snowflake.sql | 19 ++-- tests/test_sql_refsols/tpch_q21_snowflake.sql | 50 +++++------ tests/test_sql_refsols/tpch_q2_snowflake.sql | 4 +- tests/test_sql_refsols/tpch_q3_snowflake.sql | 4 +- tests/test_sql_refsols/tpch_q5_snowflake.sql | 61 +++++-------- tests/test_sql_refsols/tpch_q7_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q9_snowflake.sql | 4 +- tests/testing_utilities.py | 18 ++-- 65 files changed, 390 insertions(+), 451 deletions(-) diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py index 923e08375..abfb0eff2 100644 --- a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -27,16 +27,10 @@ class SnowflakeTransformBindings(BaseTransformBindings): pydop.LPAD: "LPAD", pydop.RPAD: "RPAD", pydop.SIGN: "SIGN", - pydop.YEAR: "YEAR", - pydop.QUARTER: "QUARTER", - pydop.MONTH: "MONTH", - pydop.DAY: "DAY", - pydop.HOUR: "HOUR", - pydop.MINUTE: "MINUTE", - pydop.SECOND: "SECOND", - pydop.DAYNAME: "DAYNAME", + # pydop.DAYNAME: "DAYNAME", pydop.SMALLEST: "LEAST", pydop.LARGEST: "GREATEST", + pydop.GETPART: "SPLIT_PART", } """ Mapping of PyDough operators to equivalent Snowflake SQL function names @@ -77,3 +71,26 @@ def convert_sum( case _: # For other types, use SUM directly return sqlglot_expressions.Sum(this=arg[0]) + + # def convert_extract_datetime( + # self, + # args: list[SQLGlotExpression], + # types: list[PyDoughType], + # unit: DateTimeUnit, + # ) -> SQLGlotExpression: + + # # Update argument type to fit datetime + # dt_expr = self.handle_datetime_base_arg(args[0]) + # match unit: + # case DateTimeUnit.YEAR: + # return sqlglot_expressions.Year(this=dt_expr) + # case DateTimeUnit.QUARTER: + # return sqlglot_expressions.Quarter(this=dt_expr) + # case DateTimeUnit.MONTH: + # return sqlglot_expressions.Month(this=dt_expr) + # case DateTimeUnit.DAY: + # return sqlglot_expressions.Day(this=dt_expr) + # case DateTimeUnit.HOUR | DateTimeUnit.MINUTE | DateTimeUnit.SECOND: + # return sqlglot_expressions.Anonymous( + # this=unit.value.upper(), expressions=[dt_expr] + # ) diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index da206777a..c1ee5df65 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -1,42 +1,32 @@ -WITH _T0 AS ( - SELECT - COUNT( - CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END - ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS N_BUYS_WITHIN_DAY, - ROUND( - ( - 100.0 * SUM(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), - 2 - ) AS PCT_APPLE_TXNS, - ROUND( - AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), - 2 - ) AS ROLLING_AVG_AMOUNT, - SUM( - IFF( - SBTRANSACTION.sbtxtype = 'buy', - SBTRANSACTION.sbtxshares, - 0 - SBTRANSACTION.sbtxshares - ) - ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS SHARE_CHANGE, - COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS TXN_WITHIN_DAY, - SBTRANSACTION.sbtxdatetime AS SBTXDATETIME - FROM MAIN.SBTRANSACTION AS SBTRANSACTION - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid - WHERE - MONTH(SBTRANSACTION.sbtxdatetime) = 4 - AND SBTRANSACTION.sbtxstatus = 'success' - AND YEAR(SBTRANSACTION.sbtxdatetime) = 2023 -) SELECT - SBTXDATETIME AS date_time, - TXN_WITHIN_DAY AS txn_within_day, - N_BUYS_WITHIN_DAY AS n_buys_within_day, - PCT_APPLE_TXNS AS pct_apple_txns, - SHARE_CHANGE AS share_change, - ROLLING_AVG_AMOUNT AS rolling_avg_amount -FROM _T0 + SBTRANSACTION.sbtxdatetime AS date_time, + COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, + COUNT( + CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END + ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, + ROUND( + ( + 100.0 * SUM(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS pct_apple_txns, + SUM( + IFF( + SBTRANSACTION.sbtxtype = 'buy', + SBTRANSACTION.sbtxshares, + 0 - SBTRANSACTION.sbtxshares + ) + ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, + ROUND( + AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS rolling_avg_amount +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid +WHERE + MONTH(SBTRANSACTION.sbtxdatetime) = 4 + AND SBTRANSACTION.sbtxstatus = 'success' + AND YEAR(SBTRANSACTION.sbtxdatetime) = 2023 ORDER BY - SBTXDATETIME NULLS FIRST + SBTRANSACTION.sbtxdatetime NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql index 2a8653dc6..2d243dc2f 100644 --- a/tests/test_sql_refsols/datediff_snowflake.sql +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -12,5 +12,5 @@ FROM MAIN.SBTRANSACTION WHERE YEAR(sbtxdatetime) < 2025 ORDER BY - YEARS_DIFF NULLS FIRST + DATEDIFF(YEAR, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) NULLS FIRST LIMIT 30 diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql index fc3fc5021..dec5fcf70 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -18,5 +18,5 @@ FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S3 AS _S3 ON SBCUSTOMER.sbcustid = _S3.SBCUSTID ORDER BY - NUM_TRANSACTIONS DESC NULLS LAST + COALESCE(_S3.N_ROWS, 0) DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql index ec0d49bc0..322984b9e 100644 --- a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql @@ -1,6 +1,8 @@ SELECT sbcustcountry AS country, - 100 * COALESCE(COALESCE(COUNT_IF(sbcuststatus = 'active'), 0) / COUNT(*), 0.0) AS ar + 100 * ( + COALESCE(COUNT_IF(sbcuststatus = 'active'), 0) / COUNT(*) + ) AS ar FROM MAIN.SBCUSTOMER WHERE sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' diff --git a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql index c990952f1..c205c7a24 100644 --- a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql @@ -1,10 +1,7 @@ WITH _S1 AS ( SELECT - ( - 100.0 * ( - COALESCE(SUM(sbtxamount), 0) - COALESCE(SUM(sbtxtax + sbtxcommission), 0) - ) - ) / COALESCE(SUM(sbtxamount), 0) AS SPM, + SUM(sbtxtax + sbtxcommission) AS SUM_EXPR_2, + SUM(sbtxamount) AS SUM_SBTXAMOUNT, sbtxtickerid AS SBTXTICKERID FROM MAIN.SBTRANSACTION WHERE @@ -14,7 +11,11 @@ WITH _S1 AS ( ) SELECT SBTICKER.sbtickersymbol AS symbol, - _S1.SPM + ( + 100.0 * ( + COALESCE(_S1.SUM_SBTXAMOUNT, 0) - COALESCE(_S1.SUM_EXPR_2, 0) + ) + ) / COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS SPM FROM MAIN.SBTICKER AS SBTICKER JOIN _S1 AS _S1 ON SBTICKER.sbtickerid = _S1.SBTXTICKERID diff --git a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql index 4816d7f34..5bb182759 100644 --- a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql @@ -13,5 +13,5 @@ FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S1 AS _S1 ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID ORDER BY - TOTAL_AMOUNT DESC NULLS LAST + COALESCE(_S1.SUM_SBTXAMOUNT, 0) DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql index e2f1f8c3b..000c414f9 100644 --- a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql @@ -16,5 +16,5 @@ FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY - TX_COUNT DESC NULLS LAST + COALESCE(_S1.N_ROWS, 0) DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql index 768cab354..dadbf74cc 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql @@ -18,4 +18,6 @@ LEFT JOIN _S1 AS _S1 WHERE NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS >= 5 ORDER BY - SUCCESS_RATE NULLS FIRST + ( + 100.0 * COALESCE(_S1.SUM_EXPR_2, 0) + ) / COALESCE(_S1.N_ROWS, 0) NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql index da119fd79..905bdd9b1 100644 --- a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql @@ -16,5 +16,5 @@ FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 ON SBTICKER.sbtickerid = _S1.SBDPTICKERID ORDER BY - PRICE_CHANGE DESC NULLS LAST + _S1.MAX_SBDPHIGH - _S1.MIN_SBDPLOW DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index d95875f48..3912d5a61 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -3,8 +3,8 @@ WITH _S0 AS ( COUNT(sbdpclose) AS COUNT_SBDPCLOSE, MAX(sbdphigh) AS MAX_HIGH, MIN(sbdplow) AS MIN_LOW, - SUM(sbdpclose) AS SUM_SBDPCLOSE, CONCAT_WS('-', YEAR(sbdpdate), LPAD(MONTH(sbdpdate), 2, '0')) AS MONTH, + SUM(sbdpclose) AS SUM_SBDPCLOSE, sbdptickerid AS SBDPTICKERID FROM MAIN.SBDAILYPRICE GROUP BY @@ -12,9 +12,10 @@ WITH _S0 AS ( sbdptickerid ), _T0 AS ( SELECT - SUM(_S0.SUM_SBDPCLOSE) / SUM(_S0.COUNT_SBDPCLOSE) AS AVG_CLOSE, MAX(_S0.MAX_HIGH) AS MAX_HIGH, MIN(_S0.MIN_LOW) AS MIN_LOW, + SUM(_S0.COUNT_SBDPCLOSE) AS SUM_COUNT_SBDPCLOSE, + SUM(_S0.SUM_SBDPCLOSE) AS SUM_SUM_SBDPCLOSE, _S0.MONTH, SBTICKER.sbtickersymbol AS SBTICKERSYMBOL FROM _S0 AS _S0 @@ -27,10 +28,12 @@ WITH _S0 AS ( SELECT SBTICKERSYMBOL AS symbol, MONTH AS month, - AVG_CLOSE AS avg_close, + SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE AS avg_close, MAX_HIGH AS max_high, MIN_LOW AS min_low, ( - AVG_CLOSE - LAG(AVG_CLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) - ) / LAG(AVG_CLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) AS momc + ( + SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE + ) - LAG(SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) + ) / LAG(SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) AS momc FROM _T0 diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index 17d149ed0..9276898c8 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -1,7 +1,7 @@ WITH _S2 AS ( SELECT - COUNT(*) AS N_ROWS, - CONCAT_WS('-', YEAR(sbcustjoindate), LPAD(MONTH(sbcustjoindate), 2, '0')) AS MONTH + CONCAT_WS('-', YEAR(sbcustjoindate), LPAD(MONTH(sbcustjoindate), 2, '0')) AS MONTH, + COUNT(*) AS N_ROWS FROM MAIN.SBCUSTOMER WHERE sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) diff --git a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql index caf59ed97..de87115a9 100644 --- a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql @@ -15,5 +15,5 @@ FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY - TOTAL_AMOUNT DESC NULLS LAST + COALESCE(_S1.SUM_SBTXAMOUNT, 0) DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql index d6ec9910b..f42cf1b23 100644 --- a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql @@ -3,4 +3,4 @@ SELECT FROM MAIN.SBTRANSACTION AS SBTRANSACTION JOIN MAIN.SBCUSTOMER AS SBCUSTOMER ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND SBCUSTOMER.sbcustjoindate >= DATEADD(DAY, -70, CURRENT_TIMESTAMP()) + AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('DAY', DATEADD(DAY, -70, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql index fa4b60b93..10e821272 100644 --- a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql @@ -18,5 +18,5 @@ FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S1 AS _S1 ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID ORDER BY - NUM_TX DESC NULLS LAST + COALESCE(_S1.N_ROWS, 0) DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql index a68f11942..8477e9aa3 100644 --- a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql @@ -1,19 +1,11 @@ -WITH _S0 AS ( - SELECT - SUM(sale_price) AS SUM_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES - WHERE - YEAR(sale_date) = 2023 - GROUP BY - car_id -) SELECT ( ( - COALESCE(SUM(_S0.SUM_SALE_PRICE), 0) - COALESCE(SUM(CARS.cost), 0) + COALESCE(SUM(SALES.sale_price), 0) - COALESCE(SUM(CARS.cost), 0) ) / COALESCE(SUM(CARS.cost), 0) ) * 100 AS GPM -FROM _S0 AS _S0 +FROM MAIN.SALES AS SALES JOIN MAIN.CARS AS CARS - ON CARS._id = _S0.CAR_ID + ON CARS._id = SALES.car_id +WHERE + YEAR(SALES.sale_date) = 2023 diff --git a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql index 1cda502b3..7b22d744b 100644 --- a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql @@ -15,5 +15,5 @@ FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - TOTAL DESC NULLS LAST + COALESCE(_S1.SUM_SALE_PRICE, 0) DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql index bb7deefd3..1942a1747 100644 --- a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - COUNT(*) AS NUM_SALES, + COUNT(*) AS N_ROWS, salesperson_id AS SALESPERSON_ID FROM MAIN.SALES WHERE @@ -12,9 +12,9 @@ SELECT SALESPERSONS._id, SALESPERSONS.first_name, SALESPERSONS.last_name, - _S1.NUM_SALES AS num_sales + _S1.N_ROWS AS num_sales FROM MAIN.SALESPERSONS AS SALESPERSONS JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - NUM_SALES DESC NULLS LAST + _S1.N_ROWS DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql index d704818d1..0d295440f 100644 --- a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql @@ -6,23 +6,15 @@ WITH _S1 AS ( FROM MAIN.SALES GROUP BY salesperson_id -), _T0 AS ( - SELECT - RANK() OVER (ORDER BY COALESCE(_S1.SUM_SALE_PRICE, 0) DESC) AS SALES_RANK, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS TOTAL_SALES, - SALESPERSONS.first_name AS FIRST_NAME, - SALESPERSONS.last_name AS LAST_NAME, - _S1.N_ROWS - FROM MAIN.SALESPERSONS AS SALESPERSONS - JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID ) SELECT - FIRST_NAME AS first_name, - LAST_NAME AS last_name, - TOTAL_SALES AS total_sales, - N_ROWS AS num_sales, - SALES_RANK AS sales_rank -FROM _T0 + SALESPERSONS.first_name, + SALESPERSONS.last_name, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_sales, + _S1.N_ROWS AS num_sales, + RANK() OVER (ORDER BY COALESCE(_S1.SUM_SALE_PRICE, 0) DESC) AS sales_rank +FROM MAIN.SALESPERSONS AS SALESPERSONS +JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - TOTAL_SALES DESC NULLS LAST + COALESCE(_S1.SUM_SALE_PRICE, 0) DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql index e3bec4d22..dd3107f19 100644 --- a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql @@ -18,5 +18,5 @@ FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - TOTAL_REVENUE DESC NULLS LAST + COALESCE(_S1.SUM_SALE_PRICE, 0) DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql index 7556995b1..4d0742e55 100644 --- a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql @@ -1,7 +1,7 @@ WITH _S1 AS ( SELECT - COALESCE(SUM(sale_price), 0) AS TOTAL_REVENUE, - COUNT(*) AS N_ROWS, + COUNT(*) AS N_ROWS_1, + SUM(sale_price) AS SUM_SALE_PRICE, salesperson_id AS SALESPERSON_ID FROM MAIN.SALES WHERE @@ -12,11 +12,11 @@ WITH _S1 AS ( SELECT SALESPERSONS.first_name, SALESPERSONS.last_name, - _S1.N_ROWS AS total_sales, - _S1.TOTAL_REVENUE AS total_revenue + _S1.N_ROWS_1 AS total_sales, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue FROM MAIN.SALESPERSONS AS SALESPERSONS JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - _S1.N_ROWS DESC NULLS LAST + _S1.N_ROWS_1 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql index 11f9ee786..d7aa9e98c 100644 --- a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql @@ -8,5 +8,5 @@ JOIN MAIN.CUSTOMERS AS CUSTOMERS GROUP BY CUSTOMERS.state ORDER BY - TOTAL_REVENUE DESC NULLS LAST + COALESCE(SUM(SALES.sale_price), 0) DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql index edce78dcb..d1f52219d 100644 --- a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql @@ -6,5 +6,5 @@ FROM MAIN.PAYMENTS_RECEIVED GROUP BY payment_method ORDER BY - TOTAL_AMOUNT DESC NULLS LAST + COALESCE(SUM(payment_amount), 0) DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql index 155316e64..3a82a94bc 100644 --- a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql @@ -16,5 +16,5 @@ FROM MAIN.CARS AS CARS LEFT JOIN _S1 AS _S1 ON CARS._id = _S1.CAR_ID ORDER BY - TOTAL_REVENUE DESC NULLS LAST + COALESCE(_S1.SUM_SALE_PRICE, 0) DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql index 33d98a13c..582a2f88a 100644 --- a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql @@ -7,5 +7,5 @@ FROM MAIN.SALESPERSONS WHERE NOT termination_date IS NULL ORDER BY - DAYS_EMPLOYED NULLS FIRST + DATEDIFF(DAY, CAST(hire_date AS DATETIME), CAST(termination_date AS DATETIME)) * 1.0 NULLS FIRST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql index 705631a07..8dc890984 100644 --- a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -1,15 +1,15 @@ WITH _S0 AS ( SELECT + DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS QUARTER, SUM(sale_price) AS SUM_SALE_PRICE, - customer_id AS CUSTOMER_ID, - DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS QUARTER + customer_id AS CUSTOMER_ID FROM MAIN.SALES WHERE YEAR(sale_date) = 2023 GROUP BY - customer_id, - DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) -), _T2 AS ( + DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)), + customer_id +), _T1 AS ( SELECT SUM(_S0.SUM_SALE_PRICE) AS SUM_SUM_SALE_PRICE, _S0.QUARTER, @@ -25,7 +25,7 @@ SELECT QUARTER AS quarter, STATE AS customer_state, COALESCE(SUM_SUM_SALE_PRICE, 0) AS total_sales -FROM _T2 +FROM _T1 WHERE NOT SUM_SUM_SALE_PRICE IS NULL AND SUM_SUM_SALE_PRICE > 0 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql index 005e076fb..9c69a02ca 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - COUNT(*) AS TOTAL_TRANSACTIONS, + COUNT(*) AS N_ROWS, sender_id AS SENDER_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE @@ -10,7 +10,7 @@ WITH _S1 AS ( ) SELECT USERS.uid AS user_id, - _S1.TOTAL_TRANSACTIONS AS total_transactions + _S1.N_ROWS AS total_transactions FROM MAIN.USERS AS USERS JOIN _S1 AS _S1 ON USERS.uid = _S1.SENDER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql index 31ba8da49..2ae28ab6d 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql @@ -1,11 +1,8 @@ WITH _S1 AS ( SELECT - COALESCE( - SUM( - DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) - ), - 0 - ) AS TOTAL_DURATION, + SUM( + DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) + ) AS SUM_DURATION, user_id AS USER_ID FROM MAIN.USER_SESSIONS WHERE @@ -15,9 +12,9 @@ WITH _S1 AS ( ) SELECT USERS.uid, - _S1.TOTAL_DURATION AS total_duration + COALESCE(_S1.SUM_DURATION, 0) AS total_duration FROM MAIN.USERS AS USERS JOIN _S1 AS _S1 ON USERS.uid = _S1.USER_ID ORDER BY - TOTAL_DURATION DESC NULLS LAST + COALESCE(_S1.SUM_DURATION, 0) DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql index 2063902e3..b8c58ba21 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql @@ -17,5 +17,5 @@ FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S3 AS _S3 ON MERCHANTS.mid = _S3.MERCHANT_ID ORDER BY - COUPONS_PER_MERCHANT DESC NULLS LAST + COALESCE(_S3.N_ROWS, 0) DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql index 69f4321be..4d81f0556 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - COUNT(*) AS TOTAL_UNREAD_NOTIFS, + COUNT(*) AS N_ROWS, user_id AS USER_ID FROM MAIN.NOTIFICATIONS WHERE @@ -10,7 +10,7 @@ WITH _S1 AS ( ) SELECT USERS.username, - _S1.TOTAL_UNREAD_NOTIFS AS total_unread_notifs + _S1.N_ROWS AS total_unread_notifs FROM MAIN.USERS AS USERS JOIN _S1 AS _S1 ON USERS.uid = _S1.USER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql index a0f72c7c3..5172f9c71 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql @@ -1,8 +1,7 @@ WITH _S1 AS ( SELECT - ( - COUNT(DISTINCT coupon_id) * 1.0 - ) / COUNT(DISTINCT txid) AS CPUR, + COUNT(DISTINCT coupon_id) AS NDISTINCT_COUPON_ID, + COUNT(DISTINCT txid) AS NDISTINCT_TXID, receiver_id AS RECEIVER_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE @@ -12,7 +11,9 @@ WITH _S1 AS ( ) SELECT MERCHANTS.name, - _S1.CPUR + ( + _S1.NDISTINCT_COUPON_ID * 1.0 + ) / _S1.NDISTINCT_TXID AS CPUR FROM MAIN.MERCHANTS AS MERCHANTS JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.RECEIVER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql index 63c7ca1f7..86ef585f4 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql @@ -1,6 +1,6 @@ WITH _S1 AS ( SELECT - COUNT(*) AS TOTAL_COUPONS, + COUNT(*) AS N_ROWS, merchant_id AS MERCHANT_ID FROM MAIN.COUPONS GROUP BY @@ -8,7 +8,7 @@ WITH _S1 AS ( ) SELECT MERCHANTS.name AS merchant_name, - _S1.TOTAL_COUPONS AS total_coupons + _S1.N_ROWS AS total_coupons FROM MAIN.MERCHANTS AS MERCHANTS JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.MERCHANT_ID diff --git a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql index ce110de8d..5b8237185 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql @@ -18,5 +18,5 @@ FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.RECEIVER_ID ORDER BY - TOTAL_AMOUNT DESC NULLS LAST + COALESCE(_S1.SUM_AMOUNT, 0) DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql index d05e988cb..22ea3482b 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql @@ -15,5 +15,5 @@ FROM MAIN.COUPONS AS COUPONS LEFT JOIN _S1 AS _S1 ON COUPONS.cid = _S1.COUPON_ID ORDER BY - REDEMPTION_COUNT DESC NULLS LAST + COALESCE(_S1.COUNT_TXID, 0) DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql index 291d4fbe5..c10d7347c 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql @@ -16,5 +16,5 @@ WHERE GROUP BY _S1.COUNTRY ORDER BY - TOTAL_AMOUNT DESC NULLS LAST + COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index a3d5ae53a..12aa0ce0f 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -13,7 +13,7 @@ WITH _T1 AS ( AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) ) SELECT - ANY_VALUE(ER_NAME) AS era_name, + ER_NAME AS era_name, AVG(DAY_GAP) AS avg_event_gap FROM _T1 GROUP BY diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index 80acf6c45..9dd496ed8 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -34,11 +34,11 @@ WITH _S0 AS ( SEARCHES.search_id ), _S16 AS ( SELECT - ANY_VALUE(_S0.S_NAME) AS ANYTHING_S_NAME, COUNT(*) AS N_ROWS, COUNT_IF(( NOT _S9.N_ROWS IS NULL AND _S9.N_ROWS > 0 - )) AS SUM_IS_INTRA_SEASON + )) AS SUM_IS_INTRA_SEASON, + _S0.S_NAME FROM _S0 AS _S0 JOIN SEARCHES AS SEARCHES ON _S0.S_MONTH1 = MONTH(SEARCHES.search_ts) @@ -68,7 +68,7 @@ WITH _S0 AS ( _S10.S_NAME ) SELECT - _S16.ANYTHING_S_NAME AS season_name, + _S16.S_NAME AS season_name, ROUND(( 100.0 * COALESCE(_S16.SUM_IS_INTRA_SEASON, 0) ) / _S16.N_ROWS, 2) AS pct_season_searches, @@ -77,6 +77,6 @@ SELECT ) / COALESCE(_S17.N_ROWS, 0), 2) AS pct_event_searches FROM _S16 AS _S16 LEFT JOIN _S17 AS _S17 - ON _S16.ANYTHING_S_NAME = _S17.S_NAME + ON _S16.S_NAME = _S17.S_NAME ORDER BY - _S16.ANYTHING_S_NAME NULLS FIRST + _S16.S_NAME NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql index 14f52d8ba..8809270b1 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -3,11 +3,10 @@ WITH _S0 AS ( user_id AS USER_ID, user_name AS USER_NAME FROM USERS -), _T2 AS ( +), _T1 AS ( SELECT ANY_VALUE(_S0.USER_ID) AS ANYTHING_USER_ID, - ANY_VALUE(_S0.USER_NAME) AS ANYTHING_USER_NAME, - COUNT(*) AS N_ROWS + ANY_VALUE(_S0.USER_NAME) AS ANYTHING_USER_NAME FROM _S0 AS _S0 JOIN SEARCHES AS SEARCHES ON SEARCHES.search_user_id = _S0.USER_ID @@ -24,9 +23,7 @@ WITH _S0 AS ( SELECT ANY_VALUE(ANYTHING_USER_NAME) AS user_name, COUNT(*) AS n_searches -FROM _T2 -WHERE - N_ROWS > 0 +FROM _T1 GROUP BY ANYTHING_USER_ID ORDER BY diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql index aa0ecb528..e990b7e2e 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T1 AS ( +WITH _T0 AS ( SELECT ANY_VALUE(TIMES.t_name) AS ANYTHING_T_NAME, ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, @@ -9,18 +9,12 @@ WITH _T1 AS ( AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) GROUP BY TIMES.t_name -), _T0 AS ( - SELECT - ROUND(( - 100.0 * N_ROWS - ) / SUM(N_ROWS) OVER (), 2) AS PCT_SEARCHES, - ANYTHING_T_NAME, - ANYTHING_T_START_HOUR - FROM _T1 ) SELECT ANYTHING_T_NAME AS tod, - PCT_SEARCHES AS pct_searches + ROUND(( + 100.0 * N_ROWS + ) / SUM(N_ROWS) OVER (), 2) AS pct_searches FROM _T0 ORDER BY ANYTHING_T_START_HOUR NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql index 838b21ce4..6750fd870 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T1 AS ( +WITH _T0 AS ( SELECT ANY_VALUE(TIMES.t_name) AS ANYTHING_T_NAME, ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, @@ -10,20 +10,13 @@ WITH _T1 AS ( AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) GROUP BY TIMES.t_name -), _T0 AS ( - SELECT - ROUND(AVG_SEARCH_NUM_RESULTS, 2) AS AVG_RESULTS, - ROUND(( - 100.0 * N_ROWS - ) / SUM(N_ROWS) OVER (), 2) AS PCT_SEARCHES, - ANYTHING_T_NAME, - ANYTHING_T_START_HOUR - FROM _T1 ) SELECT ANYTHING_T_NAME AS tod, - PCT_SEARCHES AS pct_searches, - AVG_RESULTS AS avg_results + ROUND(( + 100.0 * N_ROWS + ) / SUM(N_ROWS) OVER (), 2) AS pct_searches, + ROUND(AVG_SEARCH_NUM_RESULTS, 2) AS avg_results FROM _T0 ORDER BY ANYTHING_T_START_HOUR NULLS FIRST diff --git a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql index c9f6f23b5..6706daea3 100644 --- a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql +++ b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql @@ -5,5 +5,5 @@ SELECT CEIL(ps_supplycost * FLOOR(ps_availqty)) AS total_cost FROM TPCH.PARTSUPP ORDER BY - TOTAL_COST DESC NULLS LAST + CEIL(ps_supplycost * FLOOR(ps_availqty)) DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql index c07ad3539..1cd7bc98c 100644 --- a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql @@ -11,7 +11,7 @@ WITH _S7 AS ( SELECT COUNTRIES.co_name AS country_name, PRODUCTS.pr_name AS product_name, - ROUND(COALESCE(SUM(COALESCE(_S7.N_ROWS, 0)), 0) / COUNT(*), 2) AS ir + ROUND(COALESCE(SUM(_S7.N_ROWS), 0) / COUNT(*), 2) AS ir FROM MAIN.COUNTRIES AS COUNTRIES JOIN MAIN.DEVICES AS DEVICES ON COUNTRIES.co_id = DEVICES.de_production_country_id @@ -23,7 +23,7 @@ GROUP BY COUNTRIES.co_name, PRODUCTS.pr_name ORDER BY - IR DESC NULLS LAST, + ROUND(COALESCE(SUM(_S7.N_ROWS), 0) / COUNT(*), 2) DESC NULLS LAST, PRODUCTS.pr_name NULLS FIRST, COUNTRIES.co_name NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql index a7dc73a6a..630040a83 100644 --- a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql @@ -42,5 +42,7 @@ CROSS JOIN _S0 AS _S1 LEFT JOIN _S9 AS _S9 ON _S0.CO_ID = _S9.CO_ID AND _S1.CO_ID = _S9._ID_3 ORDER BY - IR DESC NULLS LAST + ROUND(( + 1.0 * COALESCE(_S9.SUM_N_ROWS, 0) + ) / COALESCE(_S9.N_ROWS, 0), 2) DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql index 34a47d357..61579f8a4 100644 --- a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T3 AS ( +WITH _T2 AS ( SELECT in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS @@ -6,7 +6,7 @@ WITH _T3 AS ( SELECT COUNT(*) AS N_ROWS, IN_DEVICE_ID - FROM _T3 + FROM _T2 GROUP BY IN_DEVICE_ID ), _S3 AS ( @@ -23,7 +23,7 @@ WITH _T3 AS ( SELECT COUNT(*) AS N_ROWS, IN_DEVICE_ID - FROM _T3 + FROM _T2 GROUP BY IN_DEVICE_ID ), _S7 AS ( @@ -40,7 +40,7 @@ WITH _T3 AS ( SELECT COUNT(*) AS N_ROWS, IN_DEVICE_ID - FROM _T3 + FROM _T2 GROUP BY IN_DEVICE_ID ), _S13 AS ( diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql index 1155373c8..1c8e6a2b3 100644 --- a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql @@ -9,19 +9,16 @@ WITH _S5 AS ( ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' GROUP BY INCIDENTS.in_error_id -), _T0 AS ( - SELECT - ROUND(( - 100.0 * COALESCE(_S5.N_ROWS, 0) - ) / SUM(COALESCE(_S5.N_ROWS, 0)) OVER (), 2) AS PCT, - ERRORS.er_name AS ER_NAME - FROM MAIN.ERRORS AS ERRORS - LEFT JOIN _S5 AS _S5 - ON ERRORS.er_id = _S5.IN_ERROR_ID ) SELECT - ER_NAME AS error, - PCT AS pct -FROM _T0 + ERRORS.er_name AS error, + ROUND(( + 100.0 * COALESCE(_S5.N_ROWS, 0) + ) / SUM(COALESCE(_S5.N_ROWS, 0)) OVER (), 2) AS pct +FROM MAIN.ERRORS AS ERRORS +LEFT JOIN _S5 AS _S5 + ON ERRORS.er_id = _S5.IN_ERROR_ID ORDER BY - PCT DESC NULLS LAST + ROUND(( + 100.0 * COALESCE(_S5.N_ROWS, 0) + ) / SUM(COALESCE(_S5.N_ROWS, 0)) OVER (), 2) DESC NULLS LAST diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql index 00c3d22f6..e451ce1b7 100644 --- a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql @@ -7,9 +7,9 @@ WITH _S3 AS ( in_device_id ), _S5 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(COALESCE(_S3.N_ROWS, 0)) AS SUM_N_INCIDENTS, - DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID + COALESCE(SUM(_S3.N_ROWS), 0) AS SUM_N_INCIDENTS, + DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID, + COUNT(*) AS N_ROWS FROM MAIN.DEVICES AS DEVICES JOIN MAIN.PRODUCTS AS PRODUCTS ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index 84e64212f..043e554ed 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -5,31 +5,31 @@ WITH _S0 AS ( FROM MAIN.DEVICES GROUP BY de_product_id -), _T4 AS ( +), _S1 AS ( SELECT pr_id AS PR_ID, pr_release AS PR_RELEASE FROM MAIN.PRODUCTS ), _S6 AS ( SELECT - SUM(_S0.N_ROWS) AS SUM_N_ROWS, - YEAR(_T4.PR_RELEASE) AS RELEASE_YEAR + YEAR(_S1.PR_RELEASE) AS RELEASE_YEAR, + SUM(_S0.N_ROWS) AS SUM_N_ROWS FROM _S0 AS _S0 - JOIN _T4 AS _T4 - ON _S0.DE_PRODUCT_ID = _T4.PR_ID + JOIN _S1 AS _S1 + ON _S0.DE_PRODUCT_ID = _S1.PR_ID GROUP BY - YEAR(_T4.PR_RELEASE) + YEAR(_S1.PR_RELEASE) ), _S7 AS ( SELECT COUNT(*) AS N_ROWS, - YEAR(_T6.PR_RELEASE) AS RELEASE_YEAR + YEAR(_S3.PR_RELEASE) AS RELEASE_YEAR FROM MAIN.DEVICES AS DEVICES - JOIN _T4 AS _T6 - ON DEVICES.de_product_id = _T6.PR_ID + JOIN _S1 AS _S3 + ON DEVICES.de_product_id = _S3.PR_ID JOIN MAIN.INCIDENTS AS INCIDENTS ON DEVICES.de_id = INCIDENTS.in_device_id GROUP BY - YEAR(_T6.PR_RELEASE) + YEAR(_S3.PR_RELEASE) ) SELECT _S6.RELEASE_YEAR AS year, diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql index dc87b6aec..01ddc053c 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql @@ -8,7 +8,7 @@ WITH _S3 AS ( ) SELECT PRODUCTS.pr_brand AS brand, - ROUND(COALESCE(SUM(COALESCE(_S3.N_ROWS, 0)), 0) / COUNT(*), 2) AS ir + ROUND(COALESCE(SUM(_S3.N_ROWS), 0) / COUNT(*), 2) AS ir FROM MAIN.DEVICES AS DEVICES JOIN MAIN.PRODUCTS AS PRODUCTS ON DEVICES.de_product_id = PRODUCTS.pr_id diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index 419aa3d94..eab0f7272 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -1,10 +1,10 @@ -WITH _T4 AS ( +WITH _T2 AS ( SELECT ca_dt AS CA_DT FROM MAIN.CALENDAR WHERE YEAR(ca_dt) IN (2020, 2021) -), _T8 AS ( +), _T5 AS ( SELECT co_id AS CO_ID, co_name AS CO_NAME @@ -14,42 +14,42 @@ WITH _T4 AS ( ), _S7 AS ( SELECT COUNT(*) AS N_ROWS, - _T7.CA_DT - FROM _T4 AS _T7 + _T4.CA_DT + FROM _T2 AS _T4 JOIN MAIN.CALENDAR AS CALENDAR - ON CALENDAR.ca_dt >= DATEADD(MONTH, -6, CAST(_T7.CA_DT AS TIMESTAMP)) + ON CALENDAR.ca_dt >= DATEADD(MONTH, -6, CAST(_T4.CA_DT AS TIMESTAMP)) JOIN MAIN.DEVICES AS DEVICES ON CALENDAR.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - JOIN _T8 AS _T8 - ON DEVICES.de_production_country_id = _T8.CO_ID + JOIN _T5 AS _T5 + ON DEVICES.de_production_country_id = _T5.CO_ID GROUP BY - _T7.CA_DT + _T4.CA_DT ), _S15 AS ( SELECT COUNT(*) AS N_ROWS, - _T11.CA_DT - FROM _T4 AS _T11 + _T7.CA_DT + FROM _T2 AS _T7 JOIN MAIN.INCIDENTS AS INCIDENTS - ON _T11.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + ON _T7.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) JOIN MAIN.DEVICES AS DEVICES ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN _T8 AS _T12 - ON DEVICES.de_production_country_id = _T12.CO_ID + JOIN _T5 AS _T8 + ON DEVICES.de_production_country_id = _T8.CO_ID GROUP BY - _T11.CA_DT + _T7.CA_DT ) SELECT - CONCAT_WS('-', YEAR(_T4.CA_DT), LPAD(MONTH(_T4.CA_DT), 2, '0')) AS month, + CONCAT_WS('-', YEAR(_T2.CA_DT), LPAD(MONTH(_T2.CA_DT), 2, '0')) AS month, ROUND(( 1000000.0 * COALESCE(SUM(_S15.N_ROWS), 0) ) / COALESCE(SUM(_S7.N_ROWS), 0), 2) AS ir -FROM _T4 AS _T4 +FROM _T2 AS _T2 LEFT JOIN _S7 AS _S7 - ON _S7.CA_DT = _T4.CA_DT + ON _S7.CA_DT = _T2.CA_DT LEFT JOIN _S15 AS _S15 - ON _S15.CA_DT = _T4.CA_DT + ON _S15.CA_DT = _T2.CA_DT GROUP BY - MONTH(_T4.CA_DT), - YEAR(_T4.CA_DT) + MONTH(_T2.CA_DT), + YEAR(_T2.CA_DT) ORDER BY MONTH NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql index 2a5f51a73..0f4cb915e 100644 --- a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql @@ -7,7 +7,8 @@ WITH _S3 AS ( in_device_id ), _S5 AS ( SELECT - ROUND(COALESCE(SUM(COALESCE(_S3.N_ROWS, 0)), 0) / COUNT(*), 2) AS IR, + COUNT(*) AS N_ROWS, + SUM(_S3.N_ROWS) AS SUM_N_INCIDENTS, DEVICES.de_product_id AS DE_PRODUCT_ID FROM MAIN.DEVICES AS DEVICES JOIN MAIN.PRODUCTS AS PRODUCTS @@ -21,10 +22,10 @@ SELECT PRODUCTS.pr_name AS product, PRODUCTS.pr_brand AS product_brand, PRODUCTS.pr_type AS product_type, - _S5.IR AS ir + ROUND(COALESCE(_S5.SUM_N_INCIDENTS, 0) / _S5.N_ROWS, 2) AS ir FROM MAIN.PRODUCTS AS PRODUCTS JOIN _S5 AS _S5 ON PRODUCTS.pr_id = _S5.DE_PRODUCT_ID ORDER BY - IR DESC NULLS LAST + ROUND(COALESCE(_S5.SUM_N_INCIDENTS, 0) / _S5.N_ROWS, 2) DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index 0727ab6e1..9910089cc 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -4,11 +4,11 @@ WITH _S14 AS ( FROM MAIN.PRODUCTS WHERE pr_name = 'GoldCopper-Star' -), _T6 AS ( +), _S6 AS ( SELECT ca_dt AS CA_DT FROM MAIN.CALENDAR -), _T8 AS ( +), _T6 AS ( SELECT pr_id AS PR_ID, pr_name AS PR_NAME @@ -19,74 +19,65 @@ WITH _S14 AS ( SELECT COUNT(*) AS N_ROWS, _S0.CA_DT - FROM _T6 AS _S0 + FROM _S6 AS _S0 JOIN MAIN.INCIDENTS AS INCIDENTS ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) JOIN MAIN.DEVICES AS DEVICES ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN _T8 AS _T8 - ON DEVICES.de_product_id = _T8.PR_ID + JOIN _T6 AS _T6 + ON DEVICES.de_product_id = _T6.PR_ID GROUP BY _S0.CA_DT ), _S13 AS ( SELECT COUNT(*) AS N_ROWS, _S8.CA_DT - FROM _T6 AS _S8 + FROM _S6 AS _S8 JOIN MAIN.DEVICES AS DEVICES ON _S8.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - JOIN _T8 AS _T10 - ON DEVICES.de_product_id = _T10.PR_ID + JOIN _T6 AS _T8 + ON DEVICES.de_product_id = _T8.PR_ID GROUP BY _S8.CA_DT ), _S15 AS ( SELECT SUM(_S7.N_ROWS) AS SUM_EXPR_4, SUM(_S13.N_ROWS) AS SUM_N_ROWS, - YEAR(_T6.CA_DT) AS YEAR - FROM _T6 AS _T6 + YEAR(_S6.CA_DT) AS YEAR + FROM _S6 AS _S6 LEFT JOIN _S7 AS _S7 - ON _S7.CA_DT = _T6.CA_DT + ON _S6.CA_DT = _S7.CA_DT LEFT JOIN _S13 AS _S13 - ON _S13.CA_DT = _T6.CA_DT + ON _S13.CA_DT = _S6.CA_DT GROUP BY - YEAR(_T6.CA_DT) -), _T0 AS ( - SELECT - ROUND( - SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), - 2 - ) AS CUM_IR, - ROUND( - ( - 100.0 * ( - COALESCE(_S15.SUM_N_ROWS, 0) - LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR) - ) - ) / LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR), - 2 - ) AS PCT_BOUGHT_CHANGE, - ROUND( - ( - 100.0 * ( - COALESCE(_S15.SUM_EXPR_4, 0) - LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR) - ) - ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR), - 2 - ) AS PCT_INCIDENT_CHANGE, - _S15.YEAR - YEAR(_S14.RELEASE_DATE) AS YEARS_SINCE_RELEASE, - COALESCE(_S15.SUM_N_ROWS, 0) AS N_DEVICES, - COALESCE(_S15.SUM_EXPR_4, 0) AS N_INCIDENTS - FROM _S14 AS _S14 - JOIN _S15 AS _S15 - ON _S15.YEAR >= YEAR(_S14.RELEASE_DATE) + YEAR(_S6.CA_DT) ) SELECT - YEARS_SINCE_RELEASE AS years_since_release, - CUM_IR AS cum_ir, - PCT_BOUGHT_CHANGE AS pct_bought_change, - PCT_INCIDENT_CHANGE AS pct_incident_change, - N_DEVICES AS bought, - N_INCIDENTS AS incidents -FROM _T0 + _S15.YEAR - YEAR(_S14.RELEASE_DATE) AS years_since_release, + ROUND( + SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS cum_ir, + ROUND( + ( + 100.0 * ( + COALESCE(_S15.SUM_N_ROWS, 0) - LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR) + ) + ) / LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR), + 2 + ) AS pct_bought_change, + ROUND( + ( + 100.0 * ( + COALESCE(_S15.SUM_EXPR_4, 0) - LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR) + ) + ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR), + 2 + ) AS pct_incident_change, + COALESCE(_S15.SUM_N_ROWS, 0) AS bought, + COALESCE(_S15.SUM_EXPR_4, 0) AS incidents +FROM _S14 AS _S14 +JOIN _S15 AS _S15 + ON _S15.YEAR >= YEAR(_S14.RELEASE_DATE) ORDER BY - YEARS_SINCE_RELEASE NULLS FIRST + _S15.YEAR - YEAR(_S14.RELEASE_DATE) NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index 33f047de4..93e09195b 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T5 AS ( +WITH _S2 AS ( SELECT ca_dt AS CA_DT FROM MAIN.CALENDAR @@ -6,7 +6,7 @@ WITH _T5 AS ( SELECT COUNT(*) AS N_ROWS, _S0.CA_DT - FROM _T5 AS _S0 + FROM _S2 AS _S0 JOIN MAIN.DEVICES AS DEVICES ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) GROUP BY @@ -15,59 +15,50 @@ WITH _T5 AS ( SELECT COUNT(*) AS N_ROWS, _S4.CA_DT - FROM _T5 AS _S4 + FROM _S2 AS _S4 JOIN MAIN.INCIDENTS AS INCIDENTS ON _S4.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) GROUP BY _S4.CA_DT -), _T3 AS ( +), _T1 AS ( SELECT SUM(_S3.N_ROWS) AS SUM_EXPR_3, SUM(_S7.N_ROWS) AS SUM_N_ROWS, - YEAR(_T5.CA_DT) AS YEAR - FROM _T5 AS _T5 + YEAR(_S2.CA_DT) AS YEAR + FROM _S2 AS _S2 LEFT JOIN _S3 AS _S3 - ON _S3.CA_DT = _T5.CA_DT + ON _S2.CA_DT = _S3.CA_DT LEFT JOIN _S7 AS _S7 - ON _S7.CA_DT = _T5.CA_DT + ON _S2.CA_DT = _S7.CA_DT GROUP BY - YEAR(_T5.CA_DT) -), _T0 AS ( - SELECT - ROUND( - SUM(COALESCE(SUM_N_ROWS, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(SUM_EXPR_3, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), - 2 - ) AS CUM_IR, - ROUND( - ( - 100.0 * ( - COALESCE(SUM_EXPR_3, 0) - LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR) - ) - ) / LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR), - 2 - ) AS PCT_BOUGHT_CHANGE, - ROUND( - ( - 100.0 * ( - COALESCE(SUM_N_ROWS, 0) - LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR) - ) - ) / LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR), - 2 - ) AS PCT_INCIDENT_CHANGE, - COALESCE(SUM_EXPR_3, 0) AS N_DEVICES, - COALESCE(SUM_N_ROWS, 0) AS N_INCIDENTS, - YEAR - FROM _T3 - WHERE - NOT SUM_EXPR_3 IS NULL AND SUM_EXPR_3 > 0 + YEAR(_S2.CA_DT) ) SELECT YEAR AS yr, - CUM_IR AS cum_ir, - PCT_BOUGHT_CHANGE AS pct_bought_change, - PCT_INCIDENT_CHANGE AS pct_incident_change, - N_DEVICES AS bought, - N_INCIDENTS AS incidents -FROM _T0 + ROUND( + SUM(COALESCE(SUM_N_ROWS, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(SUM_EXPR_3, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 2 + ) AS cum_ir, + ROUND( + ( + 100.0 * ( + COALESCE(SUM_EXPR_3, 0) - LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR) + ) + ) / LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR), + 2 + ) AS pct_bought_change, + ROUND( + ( + 100.0 * ( + COALESCE(SUM_N_ROWS, 0) - LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR) + ) + ) / LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR), + 2 + ) AS pct_incident_change, + COALESCE(SUM_EXPR_3, 0) AS bought, + COALESCE(SUM_N_ROWS, 0) AS incidents +FROM _T1 +WHERE + NOT SUM_EXPR_3 IS NULL AND SUM_EXPR_3 > 0 ORDER BY YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index 13d813689..918d36d7f 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -3,8 +3,7 @@ WITH _T3 AS ( ( 100.0 * SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS PCT_OF_DAY, - sbtxdatetime AS SBTXDATETIME, - DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) AS TXN_DAY + sbtxdatetime AS SBTXDATETIME FROM MAIN.SBTRANSACTION WHERE YEAR(sbtxdatetime) = 2023 @@ -15,7 +14,7 @@ WITH _T3 AS ( WHERE PCT_OF_DAY >= 50.0 QUALIFY - ROW_NUMBER() OVER (PARTITION BY TXN_DAY ORDER BY PCT_OF_DAY) = 1 + ROW_NUMBER() OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTXDATETIME AS TIMESTAMP)) ORDER BY PCT_OF_DAY) = 1 ) SELECT SBTXDATETIME AS date_time diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql index b3f99f2d6..d7f609d7b 100644 --- a/tests/test_sql_refsols/tpch_q10_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -27,6 +27,6 @@ LEFT JOIN _S3 AS _S3 JOIN TPCH.NATION AS NATION ON CUSTOMER.c_nationkey = NATION.n_nationkey ORDER BY - REVENUE DESC NULLS LAST, + COALESCE(_S3.SUM_EXPR_1, 0) DESC NULLS LAST, C_CUSTKEY NULLS FIRST LIMIT 20 diff --git a/tests/test_sql_refsols/tpch_q11_snowflake.sql b/tests/test_sql_refsols/tpch_q11_snowflake.sql index 5c608a702..f56bbbdd3 100644 --- a/tests/test_sql_refsols/tpch_q11_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q11_snowflake.sql @@ -3,7 +3,7 @@ WITH _S0 AS ( s_nationkey AS S_NATIONKEY, s_suppkey AS S_SUPPKEY FROM TPCH.SUPPLIER -), _T4 AS ( +), _T3 AS ( SELECT n_name AS N_NAME, n_nationkey AS N_NATIONKEY @@ -12,30 +12,32 @@ WITH _S0 AS ( n_name = 'GERMANY' ), _S8 AS ( SELECT - COALESCE(SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty), 0) * 0.0001 AS MIN_MARKET_SHARE + SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_METRIC FROM TPCH.PARTSUPP AS PARTSUPP JOIN _S0 AS _S0 ON PARTSUPP.ps_suppkey = _S0.S_SUPPKEY - JOIN _T4 AS _T4 - ON _S0.S_NATIONKEY = _T4.N_NATIONKEY + JOIN _T3 AS _T3 + ON _S0.S_NATIONKEY = _T3.N_NATIONKEY ), _S9 AS ( SELECT - COALESCE(SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty), 0) AS VALUE, + SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_EXPR_2, PARTSUPP.ps_partkey AS PS_PARTKEY FROM TPCH.PARTSUPP AS PARTSUPP JOIN _S0 AS _S4 ON PARTSUPP.ps_suppkey = _S4.S_SUPPKEY - JOIN _T4 AS _T8 - ON _S4.S_NATIONKEY = _T8.N_NATIONKEY + JOIN _T3 AS _T5 + ON _S4.S_NATIONKEY = _T5.N_NATIONKEY GROUP BY PARTSUPP.ps_partkey ) SELECT _S9.PS_PARTKEY, - _S9.VALUE + COALESCE(_S9.SUM_EXPR_2, 0) AS VALUE FROM _S8 AS _S8 JOIN _S9 AS _S9 - ON _S8.MIN_MARKET_SHARE < _S9.VALUE + ON ( + COALESCE(_S8.SUM_METRIC, 0) * 0.0001 + ) < COALESCE(_S9.SUM_EXPR_2, 0) ORDER BY - VALUE DESC NULLS LAST + COALESCE(_S9.SUM_EXPR_2, 0) DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q15_snowflake.sql b/tests/test_sql_refsols/tpch_q15_snowflake.sql index d1af765d4..ed305ff14 100644 --- a/tests/test_sql_refsols/tpch_q15_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q15_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T5 AS ( +WITH _T3 AS ( SELECT l_discount AS L_DISCOUNT, l_extendedprice AS L_EXTENDEDPRICE, @@ -10,29 +10,26 @@ WITH _T5 AS ( AND l_shipdate >= CAST('1996-01-01' AS DATE) ), _S1 AS ( SELECT - COALESCE(SUM(L_EXTENDEDPRICE * ( + SUM(L_EXTENDEDPRICE * ( 1 - L_DISCOUNT - )), 0) AS TOTAL_REVENUE, + )) AS SUM_EXPR_2, L_SUPPKEY - FROM _T5 + FROM _T3 GROUP BY L_SUPPKEY ), _S2 AS ( SELECT - MAX(_S1.TOTAL_REVENUE) AS MAX_REVENUE + MAX(COALESCE(_S1.SUM_EXPR_2, 0)) AS MAX_REVENUE FROM TPCH.SUPPLIER AS SUPPLIER JOIN _S1 AS _S1 ON SUPPLIER.s_suppkey = _S1.L_SUPPKEY ), _S5 AS ( SELECT - COALESCE(SUM(L_EXTENDEDPRICE * ( - 1 - L_DISCOUNT - )), 0) AS TOTAL_REVENUE, - L_SUPPKEY, SUM(L_EXTENDEDPRICE * ( 1 - L_DISCOUNT - )) AS SUM_EXPR_3 - FROM _T5 + )) AS SUM_EXPR_3, + L_SUPPKEY + FROM _T3 GROUP BY L_SUPPKEY ) @@ -41,7 +38,7 @@ SELECT SUPPLIER.s_name AS S_NAME, SUPPLIER.s_address AS S_ADDRESS, SUPPLIER.s_phone AS S_PHONE, - _S5.TOTAL_REVENUE + COALESCE(_S5.SUM_EXPR_3, 0) AS TOTAL_REVENUE FROM _S2 AS _S2 CROSS JOIN TPCH.SUPPLIER AS SUPPLIER JOIN _S5 AS _S5 diff --git a/tests/test_sql_refsols/tpch_q18_snowflake.sql b/tests/test_sql_refsols/tpch_q18_snowflake.sql index 7db68fbc3..a0bf2a546 100644 --- a/tests/test_sql_refsols/tpch_q18_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q18_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T0 AS ( +WITH _T1 AS ( SELECT SUM(l_quantity) AS SUM_L_QUANTITY, l_orderkey AS L_ORDERKEY @@ -12,14 +12,14 @@ SELECT ORDERS.o_orderkey AS O_ORDERKEY, ORDERS.o_orderdate AS O_ORDERDATE, ORDERS.o_totalprice AS O_TOTALPRICE, - COALESCE(_T0.SUM_L_QUANTITY, 0) AS TOTAL_QUANTITY + COALESCE(_T1.SUM_L_QUANTITY, 0) AS TOTAL_QUANTITY FROM TPCH.ORDERS AS ORDERS JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_custkey = ORDERS.o_custkey -JOIN _T0 AS _T0 - ON NOT _T0.SUM_L_QUANTITY IS NULL - AND ORDERS.o_orderkey = _T0.L_ORDERKEY - AND _T0.SUM_L_QUANTITY > 300 +JOIN _T1 AS _T1 + ON NOT _T1.SUM_L_QUANTITY IS NULL + AND ORDERS.o_orderkey = _T1.L_ORDERKEY + AND _T1.SUM_L_QUANTITY > 300 ORDER BY O_TOTALPRICE DESC NULLS LAST, O_ORDERDATE NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index 899f457cf..c4e08aa26 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -1,6 +1,6 @@ WITH _S3 AS ( SELECT - COALESCE(SUM(l_quantity), 0) AS AGG_0, + SUM(l_quantity) AS SUM_L_QUANTITY, l_partkey AS L_PARTKEY FROM TPCH.LINEITEM WHERE @@ -9,25 +9,22 @@ WITH _S3 AS ( l_partkey ), _S5 AS ( SELECT - _S3.AGG_0, - PART.p_partkey AS P_PARTKEY + PART.p_partkey AS P_PARTKEY, + _S3.SUM_L_QUANTITY FROM TPCH.PART AS PART JOIN _S3 AS _S3 ON PART.p_partkey = _S3.L_PARTKEY WHERE STARTSWITH(PART.p_name, 'forest') -), _T1 AS ( - SELECT - COUNT(*) AS N_ROWS, +), _S7 AS ( + SELECT DISTINCT PARTSUPP.ps_suppkey AS PS_SUPPKEY FROM TPCH.PARTSUPP AS PARTSUPP JOIN _S5 AS _S5 ON PARTSUPP.ps_availqty > ( - 0.5 * COALESCE(_S5.AGG_0, 0) + 0.5 * COALESCE(_S5.SUM_L_QUANTITY, 0) ) AND PARTSUPP.ps_partkey = _S5.P_PARTKEY - GROUP BY - PARTSUPP.ps_suppkey ) SELECT SUPPLIER.s_name AS S_NAME, @@ -35,8 +32,8 @@ SELECT FROM TPCH.SUPPLIER AS SUPPLIER JOIN TPCH.NATION AS NATION ON NATION.n_name = 'CANADA' AND NATION.n_nationkey = SUPPLIER.s_nationkey -JOIN _T1 AS _T1 - ON SUPPLIER.s_suppkey = _T1.PS_SUPPKEY AND _T1.N_ROWS > 0 +JOIN _S7 AS _S7 + ON SUPPLIER.s_suppkey = _S7.PS_SUPPKEY ORDER BY S_NAME NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql index e0d909d0a..97d469e59 100644 --- a/tests/test_sql_refsols/tpch_q21_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T7 AS ( +WITH _T6 AS ( SELECT l_commitdate AS L_COMMITDATE, l_linenumber AS L_LINENUMBER, @@ -8,51 +8,51 @@ WITH _T7 AS ( FROM TPCH.LINEITEM WHERE l_commitdate < l_receiptdate -), _T4 AS ( +), _T3 AS ( SELECT - ANY_VALUE(_T7.L_LINENUMBER) AS ANYTHING_L_LINENUMBER, - ANY_VALUE(_T7.L_ORDERKEY) AS ANYTHING_L_ORDERKEY, - ANY_VALUE(_T7.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, + ANY_VALUE(_T6.L_LINENUMBER) AS ANYTHING_L_LINENUMBER, + ANY_VALUE(_T6.L_ORDERKEY) AS ANYTHING_L_ORDERKEY, + ANY_VALUE(_T6.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, ANY_VALUE(ORDERS.o_orderkey) AS ANYTHING_O_ORDERKEY, ANY_VALUE(ORDERS.o_orderstatus) AS ANYTHING_O_ORDERSTATUS - FROM _T7 AS _T7 + FROM _T6 AS _T6 JOIN TPCH.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _T7.L_ORDERKEY + ON ORDERS.o_orderkey = _T6.L_ORDERKEY JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T7.L_SUPPKEY + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T6.L_SUPPKEY GROUP BY - _T7.L_LINENUMBER, - _T7.L_ORDERKEY, + _T6.L_LINENUMBER, + _T6.L_ORDERKEY, ORDERS.o_orderkey ), _u_0 AS ( SELECT - _T9.L_LINENUMBER AS _u_1, - _T9.L_ORDERKEY AS _u_2, + _T8.L_LINENUMBER AS _u_1, + _T8.L_ORDERKEY AS _u_2, ORDERS.o_orderkey AS _u_3 - FROM _T7 AS _T9 + FROM _T6 AS _T8 JOIN TPCH.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _T9.L_ORDERKEY + ON ORDERS.o_orderkey = _T8.L_ORDERKEY JOIN TPCH.LINEITEM AS LINEITEM ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate AND LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_suppkey <> _T9.L_SUPPKEY + AND LINEITEM.l_suppkey <> _T8.L_SUPPKEY GROUP BY - _T9.L_LINENUMBER, - _T9.L_ORDERKEY, + _T8.L_LINENUMBER, + _T8.L_ORDERKEY, ORDERS.o_orderkey ), _S13 AS ( SELECT COUNT(*) AS N_ROWS, - _T4.ANYTHING_L_SUPPKEY - FROM _T4 AS _T4 + _T3.ANYTHING_L_SUPPKEY + FROM _T3 AS _T3 LEFT JOIN _u_0 AS _u_0 - ON _T4.ANYTHING_L_LINENUMBER = _u_0._u_1 - AND _T4.ANYTHING_L_ORDERKEY = _u_0._u_2 - AND _T4.ANYTHING_O_ORDERKEY = _u_0._u_3 + ON _T3.ANYTHING_L_LINENUMBER = _u_0._u_1 + AND _T3.ANYTHING_L_ORDERKEY = _u_0._u_2 + AND _T3.ANYTHING_O_ORDERKEY = _u_0._u_3 WHERE - _T4.ANYTHING_O_ORDERSTATUS = 'F' AND _u_0._u_1 IS NULL + _T3.ANYTHING_O_ORDERSTATUS = 'F' AND _u_0._u_1 IS NULL GROUP BY - _T4.ANYTHING_L_SUPPKEY + _T3.ANYTHING_L_SUPPKEY ) SELECT SUPPLIER.s_name AS S_NAME, @@ -63,6 +63,6 @@ JOIN TPCH.NATION AS NATION LEFT JOIN _S13 AS _S13 ON SUPPLIER.s_suppkey = _S13.ANYTHING_L_SUPPKEY ORDER BY - NUMWAIT DESC NULLS LAST, + COALESCE(_S13.N_ROWS, 0) DESC NULLS LAST, S_NAME NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q2_snowflake.sql b/tests/test_sql_refsols/tpch_q2_snowflake.sql index da2c8524d..b91ccf2fd 100644 --- a/tests/test_sql_refsols/tpch_q2_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q2_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T0 AS ( +WITH _T1 AS ( SELECT NATION.n_name AS N_NAME, PART.p_mfgr AS P_MFGR, @@ -31,7 +31,7 @@ SELECT S_ADDRESS, S_PHONE, S_COMMENT -FROM _T0 +FROM _T1 ORDER BY S_ACCTBAL DESC NULLS LAST, N_NAME NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q3_snowflake.sql b/tests/test_sql_refsols/tpch_q3_snowflake.sql index 1c65c1c8e..cdfd98527 100644 --- a/tests/test_sql_refsols/tpch_q3_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q3_snowflake.sql @@ -18,7 +18,9 @@ GROUP BY ORDERS.o_orderdate, ORDERS.o_shippriority ORDER BY - REVENUE DESC NULLS LAST, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) DESC NULLS LAST, O_ORDERDATE NULLS FIRST, L_ORDERKEY NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q5_snowflake.sql b/tests/test_sql_refsols/tpch_q5_snowflake.sql index 0c9191ec0..337ca2a1b 100644 --- a/tests/test_sql_refsols/tpch_q5_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q5_snowflake.sql @@ -1,37 +1,4 @@ -WITH _S7 AS ( - SELECT - SUM(l_extendedprice * ( - 1 - l_discount - )) AS SUM_VALUE, - l_orderkey AS L_ORDERKEY, - l_suppkey AS L_SUPPKEY - FROM TPCH.LINEITEM - GROUP BY - l_orderkey, - l_suppkey -), _S10 AS ( - SELECT - ANY_VALUE(NATION.n_name) AS ANYTHING_N_NAME, - SUM(_S7.SUM_VALUE) AS SUM_SUM_VALUE, - _S7.L_SUPPKEY, - NATION.n_name AS N_NAME, - NATION.n_nationkey AS N_NATIONKEY - FROM TPCH.NATION AS NATION - JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' - JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey - JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) - AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) - JOIN _S7 AS _S7 - ON ORDERS.o_orderkey = _S7.L_ORDERKEY - GROUP BY - _S7.L_SUPPKEY, - NATION.n_name, - NATION.n_nationkey -), _S11 AS ( +WITH _S11 AS ( SELECT NATION.n_name AS N_NAME, SUPPLIER.s_suppkey AS S_SUPPKEY @@ -40,12 +7,26 @@ WITH _S7 AS ( ON NATION.n_nationkey = SUPPLIER.s_nationkey ) SELECT - ANY_VALUE(_S10.ANYTHING_N_NAME) AS N_NAME, - COALESCE(SUM(_S10.SUM_SUM_VALUE), 0) AS REVENUE -FROM _S10 AS _S10 + ANY_VALUE(NATION.n_name) AS N_NAME, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) AS REVENUE +FROM TPCH.NATION AS NATION +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN TPCH.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) + AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) +JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey JOIN _S11 AS _S11 - ON _S10.L_SUPPKEY = _S11.S_SUPPKEY AND _S10.N_NAME = _S11.N_NAME + ON LINEITEM.l_suppkey = _S11.S_SUPPKEY AND NATION.n_name = _S11.N_NAME GROUP BY - _S10.N_NATIONKEY + NATION.n_nationkey ORDER BY - REVENUE DESC NULLS LAST + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )), 0) DESC NULLS LAST diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index 6e48d8e75..36b416f04 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -38,8 +38,8 @@ JOIN _S9 AS _S9 WHERE YEAR(LINEITEM.l_shipdate) IN (1995, 1996) GROUP BY - _S9.N_NAME, YEAR(LINEITEM.l_shipdate), + _S9.N_NAME, _S1.N_NAME ORDER BY _S1.N_NAME NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index d8fd374dc..fc7b6fb4b 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -22,8 +22,8 @@ JOIN TPCH.PARTSUPP AS PARTSUPP ON LINEITEM.l_partkey = PARTSUPP.ps_partkey AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey GROUP BY - NATION.n_name, - YEAR(ORDERS.o_orderdate) + YEAR(ORDERS.o_orderdate), + NATION.n_name ORDER BY NATION.n_name NULLS FIRST, O_YEAR DESC NULLS LAST diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index 596322474..6b227318a 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -3,6 +3,8 @@ build QDAG nodes for unit tests. """ +from dateutil import parser # type: ignore[import-untyped] + __all__ = [ "AstNodeTestInfo", "BackReferenceExpressionInfo", @@ -1299,33 +1301,29 @@ def harmonize_types(column_a, column_b): isinstance(elem, Decimal) for elem in column_b ): return column_a, column_b.apply(lambda x: pd.NA if pd.isna(x) else float(x)) - if any(isinstance(elem, datetime.date) for elem in column_a) and any( + if any(isinstance(elem, pd.Timestamp) for elem in column_a) and any( isinstance(elem, str) for elem in column_b ): return column_a, column_b.apply( - lambda x: datetime.datetime.strptime(x, "%Y-%m-%d").date() - if isinstance(x, str) - else x + lambda x: pd.NA if pd.isna(x) else pd.Timestamp(x) ) if any(isinstance(elem, str) for elem in column_a) and any( isinstance(elem, datetime.date) for elem in column_b ): return column_a.apply( - lambda x: datetime.datetime.strptime(x, "%Y-%m-%d").date() - if isinstance(x, str) - else x + lambda x: pd.NA if pd.isna(x) else pd.Timestamp(x) ), column_b - if any(isinstance(elem, pd.Timestamp) for elem in column_a) and any( + if any(isinstance(elem, datetime.date) for elem in column_a) and any( isinstance(elem, str) for elem in column_b ): return column_a, column_b.apply( - lambda x: pd.NA if pd.isna(x) else pd.Timestamp(x) + lambda x: parser.parse(x).date() if isinstance(x, str) else x ) if any(isinstance(elem, str) for elem in column_a) and any( isinstance(elem, datetime.date) for elem in column_b ): return column_a.apply( - lambda x: pd.NA if pd.isna(x) else pd.Timestamp(x) + lambda x: parser.parse(x).date() if isinstance(x, str) else x ), column_b return column_a, column_b From a2c4d1f17b40e161d5e4cf0151eda86f9243a770 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 6 Aug 2025 11:35:19 -0700 Subject: [PATCH 11/46] add new test files --- .../agg_simplification_1_snowflake.sql | 87 ++ .../agg_simplification_2_snowflake.sql | 16 + .../aggregation_functions_snowflake.sql | 47 + ...thmetic_and_binary_operators_snowflake.sql | 16 + .../casting_functions_snowflake.sql | 6 + ...risons_and_logical_operators_snowflake.sql | 24 + .../conditional_functions_snowflake.sql | 20 + .../datetime_functions_snowflake.sql | 31 + .../extract_colors_snowflake.sql | 283 ++++++ .../get_part_multiple_snowflake.sql | 843 ++++++++++++++++++ .../get_part_single_snowflake.sql | 49 + .../numerical_functions_snowflake.sql | 11 + .../simplification_1_snowflake.sql | 26 + .../simplification_2_snowflake.sql | 50 ++ .../simplification_3_snowflake.sql | 66 ++ tests/test_sql_refsols/smoke_a_snowflake.sql | 147 +++ tests/test_sql_refsols/smoke_b_snowflake.sql | 36 + tests/test_sql_refsols/smoke_c_snowflake.sql | 21 + tests/test_sql_refsols/smoke_d_snowflake.sql | 29 + .../string_functions_snowflake.sql | 24 + .../unary_and_slicing_operators_snowflake.sql | 64 ++ .../window_functions_snowflake.sql | 15 + 22 files changed, 1911 insertions(+) create mode 100644 tests/test_sql_refsols/agg_simplification_1_snowflake.sql create mode 100644 tests/test_sql_refsols/agg_simplification_2_snowflake.sql create mode 100644 tests/test_sql_refsols/aggregation_functions_snowflake.sql create mode 100644 tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql create mode 100644 tests/test_sql_refsols/casting_functions_snowflake.sql create mode 100644 tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql create mode 100644 tests/test_sql_refsols/conditional_functions_snowflake.sql create mode 100644 tests/test_sql_refsols/datetime_functions_snowflake.sql create mode 100644 tests/test_sql_refsols/extract_colors_snowflake.sql create mode 100644 tests/test_sql_refsols/get_part_multiple_snowflake.sql create mode 100644 tests/test_sql_refsols/get_part_single_snowflake.sql create mode 100644 tests/test_sql_refsols/numerical_functions_snowflake.sql create mode 100644 tests/test_sql_refsols/simplification_1_snowflake.sql create mode 100644 tests/test_sql_refsols/simplification_2_snowflake.sql create mode 100644 tests/test_sql_refsols/simplification_3_snowflake.sql create mode 100644 tests/test_sql_refsols/smoke_a_snowflake.sql create mode 100644 tests/test_sql_refsols/smoke_b_snowflake.sql create mode 100644 tests/test_sql_refsols/smoke_c_snowflake.sql create mode 100644 tests/test_sql_refsols/smoke_d_snowflake.sql create mode 100644 tests/test_sql_refsols/string_functions_snowflake.sql create mode 100644 tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql create mode 100644 tests/test_sql_refsols/window_functions_snowflake.sql diff --git a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql new file mode 100644 index 000000000..719ee41bb --- /dev/null +++ b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql @@ -0,0 +1,87 @@ +SELECT + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS aug_exchange, + COUNT(*) AS su1, + COUNT(*) * 2 AS su2, + COUNT(*) * -1 AS su3, + COUNT(*) * -3 AS su4, + 0 AS su5, + COUNT(*) * 0.5 AS su6, + 0 AS su7, + COALESCE( + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END), + 0 + ) AS su8, + COUNT(*) AS co1, + COUNT(*) AS co2, + COUNT(*) AS co3, + COUNT(*) AS co4, + COUNT(*) AS co5, + COUNT(*) AS co6, + 0 AS co7, + COUNT(*) * CAST(NOT ( + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) IS NULL + ) AS BIGINT) AS co8, + 1 AS nd1, + 1 AS nd2, + 1 AS nd3, + 1 AS nd4, + 1 AS nd5, + 1 AS nd6, + 0 AS nd7, + CAST(NOT ( + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) IS NULL + ) AS BIGINT) AS nd8, + 1 AS av1, + 2 AS av2, + -1 AS av3, + -3 AS av4, + 0 AS av5, + 0.5 AS av6, + NULL AS av7, + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS av8, + 1 AS mi1, + 2 AS mi2, + -1 AS mi3, + -3 AS mi4, + 0 AS mi5, + 0.5 AS mi6, + NULL AS mi7, + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS mi8, + 1 AS ma1, + 2 AS ma2, + -1 AS ma3, + -3 AS ma4, + 0 AS ma5, + 0.5 AS ma6, + NULL AS ma7, + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS ma8, + 1 AS an1, + 2 AS an2, + -1 AS an3, + -3 AS an4, + 0 AS an5, + 0.5 AS an6, + NULL AS an7, + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS an8, + 1 AS me1, + 2 AS me2, + -1 AS me3, + -3 AS me4, + 0 AS me5, + 0.5 AS me6, + NULL AS me7, + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS me8, + 1 AS qu1, + 2 AS qu2, + -1 AS qu3, + -3 AS qu4, + 0 AS qu5, + 0.5 AS qu6, + NULL AS qu7, + PERCENTILE_DISC(0.8) WITHIN GROUP (ORDER BY + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END)) AS qu8 +FROM MAIN.SBTICKER +GROUP BY + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) +ORDER BY + AUG_EXCHANGE NULLS FIRST diff --git a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql new file mode 100644 index 000000000..0b88d95d2 --- /dev/null +++ b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql @@ -0,0 +1,16 @@ +SELECT + sbcuststate AS state, + COUNT(DISTINCT sbcustcity) AS a1, + COUNT(*) AS a2, + COUNT(CASE WHEN STARTSWITH(LOWER(sbcustname), 'j') THEN sbcustname ELSE NULL END) AS a3, + COALESCE(SUM(CAST(sbcustpostalcode AS BIGINT)), 0) AS a4, + MIN(sbcustphone) AS a5, + MAX(sbcustphone) AS a6, + ANY_VALUE(LOWER(sbcuststate)) AS a7, + ANY_VALUE(LOWER(sbcuststate)) AS a8, + ANY_VALUE(LOWER(sbcuststate)) AS a9 +FROM MAIN.SBCUSTOMER +GROUP BY + sbcuststate +ORDER BY + sbcuststate NULLS FIRST diff --git a/tests/test_sql_refsols/aggregation_functions_snowflake.sql b/tests/test_sql_refsols/aggregation_functions_snowflake.sql new file mode 100644 index 000000000..9c42b42a5 --- /dev/null +++ b/tests/test_sql_refsols/aggregation_functions_snowflake.sql @@ -0,0 +1,47 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS N_ROWS, + o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS + GROUP BY + o_custkey +), _T1 AS ( + SELECT + PERCENTILE_DISC(0.8) WITHIN GROUP (ORDER BY + CUSTOMER.c_acctbal) AS AGG_7, + ANY_VALUE(CUSTOMER.c_acctbal) AS ANYTHING_C_ACCTBAL, + AVG(CUSTOMER.c_acctbal) AS AVG_C_ACCTBAL, + COUNT(CUSTOMER.c_acctbal) AS COUNT_C_ACCTBAL, + MAX(CUSTOMER.c_acctbal) AS MAX_C_ACCTBAL, + MEDIAN(CUSTOMER.c_acctbal) AS MEDIAN_C_ACCTBAL, + MIN(CUSTOMER.c_acctbal) AS MIN_C_ACCTBAL, + COUNT(DISTINCT CUSTOMER.c_acctbal) AS NDISTINCT_C_ACCTBAL, + STDDEV(CUSTOMER.c_acctbal) AS SAMPLE_STD_C_ACCTBAL, + VARIANCE(CUSTOMER.c_acctbal) AS SAMPLE_VARIANCE_C_ACCTBAL, + SUM(CUSTOMER.c_acctbal) AS SUM_C_ACCTBAL, + SUM(_S1.N_ROWS) AS SUM_N_ROWS, + CUSTOMER.c_nationkey AS C_NATIONKEY + FROM TPCH.CUSTOMER AS CUSTOMER + LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.O_CUSTKEY + GROUP BY + CUSTOMER.c_nationkey +) +SELECT + COALESCE(_T1.SUM_C_ACCTBAL, 0) AS sum_value, + _T1.AVG_C_ACCTBAL AS avg_value, + _T1.MEDIAN_C_ACCTBAL AS median_value, + _T1.MIN_C_ACCTBAL AS min_value, + _T1.MAX_C_ACCTBAL AS max_value, + _T1.AGG_7 AS quantile_value, + _T1.ANYTHING_C_ACCTBAL AS anything_value, + _T1.COUNT_C_ACCTBAL AS count_value, + _T1.NDISTINCT_C_ACCTBAL AS count_distinct_value, + _T1.SAMPLE_VARIANCE_C_ACCTBAL AS variance_value, + _T1.SAMPLE_STD_C_ACCTBAL AS stddev_value +FROM TPCH.NATION AS NATION +JOIN _T1 AS _T1 + ON NATION.n_nationkey = _T1.C_NATIONKEY + AND ( + _T1.SUM_N_ROWS = 0 OR _T1.SUM_N_ROWS IS NULL + ) diff --git a/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql b/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql new file mode 100644 index 000000000..21058a870 --- /dev/null +++ b/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql @@ -0,0 +1,16 @@ +SELECT + ( + LINEITEM.l_extendedprice * ( + 1 - ( + POWER(LINEITEM.l_discount, 2) + ) + ) + 1.0 + ) / PART.p_retailprice AS computed_value, + LINEITEM.l_quantity + LINEITEM.l_extendedprice AS total, + LINEITEM.l_extendedprice - LINEITEM.l_quantity AS delta, + LINEITEM.l_quantity * LINEITEM.l_discount AS product, + LINEITEM.l_extendedprice / LINEITEM.l_quantity AS ratio, + POWER(LINEITEM.l_discount, 2) AS exponent +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey diff --git a/tests/test_sql_refsols/casting_functions_snowflake.sql b/tests/test_sql_refsols/casting_functions_snowflake.sql new file mode 100644 index 000000000..1ac6e57cc --- /dev/null +++ b/tests/test_sql_refsols/casting_functions_snowflake.sql @@ -0,0 +1,6 @@ +SELECT + TO_CHAR(CAST(o_orderdate AS TIMESTAMP), 'yyyy-mm-DD') AS cast_to_string, + CAST(o_totalprice AS TEXT) AS cast_to_string2, + CAST(o_totalprice AS BIGINT) AS cast_to_integer, + CAST(o_shippriority AS DOUBLE) AS cast_to_float +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql new file mode 100644 index 000000000..8559c422a --- /dev/null +++ b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql @@ -0,0 +1,24 @@ +WITH _S1 AS ( + SELECT + COUNT(*) AS N_ROWS, + o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS + GROUP BY + o_custkey +) +SELECT + CUSTOMER.c_acctbal < 0 AS in_debt, + _S1.N_ROWS <= 12 OR _S1.N_ROWS IS NULL AS at_most_12_orders, + REGION.r_name = 'EUROPE' AS is_european, + NATION.n_name <> 'GERMANY' AS non_german, + CUSTOMER.c_acctbal > 0 AS non_empty_acct, + NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS >= 5 AS at_least_5_orders, + REGION.r_name = 'ASIA' OR REGION.r_name = 'EUROPE' AS is_eurasian, + CUSTOMER.c_acctbal < 0 AND REGION.r_name = 'EUROPE' AS is_european_in_debt +FROM TPCH.CUSTOMER AS CUSTOMER +LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.O_CUSTKEY +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey diff --git a/tests/test_sql_refsols/conditional_functions_snowflake.sql b/tests/test_sql_refsols/conditional_functions_snowflake.sql new file mode 100644 index 000000000..06b2aa89f --- /dev/null +++ b/tests/test_sql_refsols/conditional_functions_snowflake.sql @@ -0,0 +1,20 @@ +WITH _S1 AS ( + SELECT + MIN(o_totalprice) AS MIN_O_TOTALPRICE, + o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS + GROUP BY + o_custkey +) +SELECT + IFF(CUSTOMER.c_acctbal > 1000, 'High', 'Low') AS iff_col, + CUSTOMER.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, + COALESCE(_S1.MIN_O_TOTALPRICE, 0.0) AS default_val, + NOT _S1.MIN_O_TOTALPRICE IS NULL AS has_acct_bal, + _S1.MIN_O_TOTALPRICE IS NULL AS no_acct_bal, + CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS no_debt_bal +FROM TPCH.CUSTOMER AS CUSTOMER +LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.O_CUSTKEY +WHERE + CUSTOMER.c_acctbal <= 1000 AND CUSTOMER.c_acctbal >= 100 diff --git a/tests/test_sql_refsols/datetime_functions_snowflake.sql b/tests/test_sql_refsols/datetime_functions_snowflake.sql new file mode 100644 index 000000000..6b45a0b5b --- /dev/null +++ b/tests/test_sql_refsols/datetime_functions_snowflake.sql @@ -0,0 +1,31 @@ +SELECT + CURRENT_TIMESTAMP() AS ts_now_1, + DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) AS ts_now_2, + DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AS ts_now_3, + DATEADD(HOUR, 1, CURRENT_TIMESTAMP()) AS ts_now_4, + CAST('2025-01-01 00:00:00' AS TIMESTAMP) AS ts_now_5, + CAST('1995-10-08 00:00:00' AS TIMESTAMP) AS ts_now_6, + YEAR(o_orderdate) AS year_col, + YEAR(CAST('2020-05-01 00:00:00' AS TIMESTAMP)) AS year_py, + YEAR(CAST('1995-10-10 00:00:00' AS TIMESTAMP)) AS year_pd, + MONTH(o_orderdate) AS month_col, + MONTH('2025-02-25') AS month_str, + MONTH(CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS month_dt, + DAY(o_orderdate) AS day_col, + DAY('1996-11-25 10:45:00') AS day_str, + HOUR('1995-12-01 23:59:59') AS hour_str, + MINUTE('1995-12-01 23:59:59') AS minute_str, + SECOND(CAST('1992-01-01 00:00:59' AS TIMESTAMP)) AS second_ts, + DATEDIFF(DAY, CAST(o_orderdate AS DATETIME), CAST('1992-01-01' AS TIMESTAMP)) AS dd_col_str, + DATEDIFF(DAY, CAST('1992-01-01' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS dd_str_col, + DATEDIFF(MONTH, CAST('1995-10-10 00:00:00' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS dd_pd_col, + DATEDIFF(YEAR, CAST(o_orderdate AS DATETIME), CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS dd_col_dt, + DATEDIFF(WEEK, CAST('1992-01-01' AS TIMESTAMP), CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS dd_dt_str, + DAYOFWEEK(o_orderdate) AS dow_col, + DAYOFWEEK('1992-07-01') AS dow_str, + DAYOFWEEK(CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS dow_dt, + DAYOFWEEK(CAST('1995-10-10 00:00:00' AS TIMESTAMP)) AS dow_pd, + DAYNAME(o_orderdate) AS dayname_col, + DAYNAME('1995-06-30') AS dayname_str, + DAYNAME(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) AS dayname_dt +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/extract_colors_snowflake.sql b/tests/test_sql_refsols/extract_colors_snowflake.sql new file mode 100644 index 000000000..1ef9eb3fb --- /dev/null +++ b/tests/test_sql_refsols/extract_colors_snowflake.sql @@ -0,0 +1,283 @@ +WITH _S0 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + P_NAME AS REST, + ' ' AS DELIM, + 1 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S0 + WHERE + rest <> '' +), _S1 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S0 +), _S2 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + P_NAME AS REST, + ' ' AS DELIM, + 2 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S2 + WHERE + rest <> '' +), _S3 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S2 +), _S4 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + P_NAME AS REST, + ' ' AS DELIM, + 3 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S4 + WHERE + rest <> '' +), _S5 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S4 +), _S6 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + P_NAME AS REST, + ' ' AS DELIM, + 4 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S6 + WHERE + rest <> '' +), _S7 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S6 +), _S8 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + P_NAME AS REST, + ' ' AS DELIM, + 5 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S8 + WHERE + rest <> '' +), _S9 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S8 +), _S10 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + P_NAME AS REST, + ' ' AS DELIM, + 6 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S10 + WHERE + rest <> '' +), _S11 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S10 +) +SELECT + p_partkey AS key, + UPPER( + ( + SELECT + _S0.PART + FROM _S0 AS _S0 + CROSS JOIN _S1 AS _S1 + WHERE + _S0.PART_INDEX <> 0 + AND _S0.PART_INDEX = CASE + WHEN _S0.IDX > 0 + THEN _S0.IDX + WHEN _S0.IDX < 0 + THEN _S1.TOTAL_PARTS + _S0.IDX + 1 + ELSE 1 + END + ) + ) AS c1, + UPPER( + ( + SELECT + _S2.PART + FROM _S2 AS _S2 + CROSS JOIN _S3 AS _S3 + WHERE + _S2.PART_INDEX <> 0 + AND _S2.PART_INDEX = CASE + WHEN _S2.IDX > 0 + THEN _S2.IDX + WHEN _S2.IDX < 0 + THEN _S3.TOTAL_PARTS + _S2.IDX + 1 + ELSE 1 + END + ) + ) AS c2, + UPPER( + ( + SELECT + _S4.PART + FROM _S4 AS _S4 + CROSS JOIN _S5 AS _S5 + WHERE + _S4.PART_INDEX <> 0 + AND _S4.PART_INDEX = CASE + WHEN _S4.IDX > 0 + THEN _S4.IDX + WHEN _S4.IDX < 0 + THEN _S5.TOTAL_PARTS + _S4.IDX + 1 + ELSE 1 + END + ) + ) AS c3, + UPPER( + ( + SELECT + _S6.PART + FROM _S6 AS _S6 + CROSS JOIN _S7 AS _S7 + WHERE + _S6.PART_INDEX <> 0 + AND _S6.PART_INDEX = CASE + WHEN _S6.IDX > 0 + THEN _S6.IDX + WHEN _S6.IDX < 0 + THEN _S7.TOTAL_PARTS + _S6.IDX + 1 + ELSE 1 + END + ) + ) AS c4, + UPPER( + ( + SELECT + _S8.PART + FROM _S8 AS _S8 + CROSS JOIN _S9 AS _S9 + WHERE + _S8.PART_INDEX <> 0 + AND _S8.PART_INDEX = CASE + WHEN _S8.IDX > 0 + THEN _S8.IDX + WHEN _S8.IDX < 0 + THEN _S9.TOTAL_PARTS + _S8.IDX + 1 + ELSE 1 + END + ) + ) AS c5, + UPPER( + ( + SELECT + _S10.PART + FROM _S10 AS _S10 + CROSS JOIN _S11 AS _S11 + WHERE + _S10.PART_INDEX <> 0 + AND _S10.PART_INDEX = CASE + WHEN _S10.IDX > 0 + THEN _S10.IDX + WHEN _S10.IDX < 0 + THEN _S11.TOTAL_PARTS + _S10.IDX + 1 + ELSE 1 + END + ) + ) AS c6 +FROM TPCH.PART +ORDER BY + p_partkey NULLS FIRST +LIMIT 5 diff --git a/tests/test_sql_refsols/get_part_multiple_snowflake.sql b/tests/test_sql_refsols/get_part_multiple_snowflake.sql new file mode 100644 index 000000000..168291c30 --- /dev/null +++ b/tests/test_sql_refsols/get_part_multiple_snowflake.sql @@ -0,0 +1,843 @@ +WITH _S0 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + ' ' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S0 + WHERE + rest <> '' +), _S1 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S0 +), _S2 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + ' ' AS DELIM, + 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S2 + WHERE + rest <> '' +), _S3 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S2 +), _S4 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTEMAIL AS REST, + '.' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S4 + WHERE + rest <> '' +), _S5 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S4 +), _S6 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTEMAIL AS REST, + '.' AS DELIM, + 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S6 + WHERE + rest <> '' +), _S7 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S6 +), _S8 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTPHONE AS REST, + '-' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S8 + WHERE + rest <> '' +), _S9 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S8 +), _S10 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTPHONE AS REST, + '-' AS DELIM, + 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S10 + WHERE + rest <> '' +), _S11 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S10 +), _S12 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTPOSTALCODE AS REST, + '00' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S12 + WHERE + rest <> '' +), _S13 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S12 +), _S14 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTPOSTALCODE AS REST, + '00' AS DELIM, + 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S14 + WHERE + rest <> '' +), _S15 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S14 +), _S16 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + '!' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S16 + WHERE + rest <> '' +), _S17 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S16 +), _S18 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + '@' AS DELIM, + 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S18 + WHERE + rest <> '' +), _S19 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S18 +), _S20 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + 'aa' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S20 + WHERE + rest <> '' +), _S21 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S20 +), _S22 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + '#$*' AS DELIM, + 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S22 + WHERE + rest <> '' +), _S23 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S22 +), _S24 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + '' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S24 + WHERE + rest <> '' +), _S25 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S24 +), _S26 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + '' AS REST, + ' ' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S26 + WHERE + rest <> '' +), _S27 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S26 +), _S28 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + ' ' AS DELIM, + 0 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S28 + WHERE + rest <> '' +), _S29 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S28 +), _S30 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTSTATE AS REST, + SBCUSTSTATE AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S30 + WHERE + rest <> '' +), _S31 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S30 +), _S32 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTPHONE AS REST, + '-' AS DELIM, + 1 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S32 + WHERE + rest <> '' +), _S33 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S32 +), _S34 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + ( + SELECT + _S32.PART + FROM _S32 AS _S32 + CROSS JOIN _S33 AS _S33 + WHERE + _S32.PART_INDEX <> 0 + AND _S32.PART_INDEX = CASE + WHEN _S32.IDX > 0 + THEN _S32.IDX + WHEN _S32.IDX < 0 + THEN _S33.TOTAL_PARTS + _S32.IDX + 1 + ELSE 1 + END + ) AS REST, + '5' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S34 + WHERE + rest <> '' +), _S35 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S34 +), _S36 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTPOSTALCODE AS REST, + '0' AS DELIM, + CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S36 + WHERE + rest <> '' +), _S37 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S36 +) +SELECT + CAST(SUBSTRING(sbcustid, 2) AS BIGINT) AS _expr0, + ( + SELECT + _S0.PART + FROM _S0 AS _S0 + CROSS JOIN _S1 AS _S1 + WHERE + _S0.PART_INDEX <> 0 + AND _S0.PART_INDEX = CASE + WHEN _S0.IDX > 0 + THEN _S0.IDX + WHEN _S0.IDX < 0 + THEN _S1.TOTAL_PARTS + _S0.IDX + 1 + ELSE 1 + END + ) AS p1, + ( + SELECT + _S2.PART + FROM _S2 AS _S2 + CROSS JOIN _S3 AS _S3 + WHERE + _S2.PART_INDEX <> 0 + AND _S2.PART_INDEX = CASE + WHEN _S2.IDX > 0 + THEN _S2.IDX + WHEN _S2.IDX < 0 + THEN _S3.TOTAL_PARTS + _S2.IDX + 1 + ELSE 1 + END + ) AS p2, + ( + SELECT + _S4.PART + FROM _S4 AS _S4 + CROSS JOIN _S5 AS _S5 + WHERE + _S4.PART_INDEX <> 0 + AND _S4.PART_INDEX = CASE + WHEN _S4.IDX > 0 + THEN _S4.IDX + WHEN _S4.IDX < 0 + THEN _S5.TOTAL_PARTS + _S4.IDX + 1 + ELSE 1 + END + ) AS p3, + ( + SELECT + _S6.PART + FROM _S6 AS _S6 + CROSS JOIN _S7 AS _S7 + WHERE + _S6.PART_INDEX <> 0 + AND _S6.PART_INDEX = CASE + WHEN _S6.IDX > 0 + THEN _S6.IDX + WHEN _S6.IDX < 0 + THEN _S7.TOTAL_PARTS + _S6.IDX + 1 + ELSE 1 + END + ) AS p4, + ( + SELECT + _S8.PART + FROM _S8 AS _S8 + CROSS JOIN _S9 AS _S9 + WHERE + _S8.PART_INDEX <> 0 + AND _S8.PART_INDEX = CASE + WHEN _S8.IDX > 0 + THEN _S8.IDX + WHEN _S8.IDX < 0 + THEN _S9.TOTAL_PARTS + _S8.IDX + 1 + ELSE 1 + END + ) AS p5, + ( + SELECT + _S10.PART + FROM _S10 AS _S10 + CROSS JOIN _S11 AS _S11 + WHERE + _S10.PART_INDEX <> 0 + AND _S10.PART_INDEX = CASE + WHEN _S10.IDX > 0 + THEN _S10.IDX + WHEN _S10.IDX < 0 + THEN _S11.TOTAL_PARTS + _S10.IDX + 1 + ELSE 1 + END + ) AS p6, + ( + SELECT + _S12.PART + FROM _S12 AS _S12 + CROSS JOIN _S13 AS _S13 + WHERE + _S12.PART_INDEX <> 0 + AND _S12.PART_INDEX = CASE + WHEN _S12.IDX > 0 + THEN _S12.IDX + WHEN _S12.IDX < 0 + THEN _S13.TOTAL_PARTS + _S12.IDX + 1 + ELSE 1 + END + ) AS p7, + ( + SELECT + _S14.PART + FROM _S14 AS _S14 + CROSS JOIN _S15 AS _S15 + WHERE + _S14.PART_INDEX <> 0 + AND _S14.PART_INDEX = CASE + WHEN _S14.IDX > 0 + THEN _S14.IDX + WHEN _S14.IDX < 0 + THEN _S15.TOTAL_PARTS + _S14.IDX + 1 + ELSE 1 + END + ) AS p8, + ( + SELECT + _S16.PART + FROM _S16 AS _S16 + CROSS JOIN _S17 AS _S17 + WHERE + _S16.PART_INDEX <> 0 + AND _S16.PART_INDEX = CASE + WHEN _S16.IDX > 0 + THEN _S16.IDX + WHEN _S16.IDX < 0 + THEN _S17.TOTAL_PARTS + _S16.IDX + 1 + ELSE 1 + END + ) AS p9, + ( + SELECT + _S18.PART + FROM _S18 AS _S18 + CROSS JOIN _S19 AS _S19 + WHERE + _S18.PART_INDEX <> 0 + AND _S18.PART_INDEX = CASE + WHEN _S18.IDX > 0 + THEN _S18.IDX + WHEN _S18.IDX < 0 + THEN _S19.TOTAL_PARTS + _S18.IDX + 1 + ELSE 1 + END + ) AS p10, + ( + SELECT + _S20.PART + FROM _S20 AS _S20 + CROSS JOIN _S21 AS _S21 + WHERE + _S20.PART_INDEX <> 0 + AND _S20.PART_INDEX = CASE + WHEN _S20.IDX > 0 + THEN _S20.IDX + WHEN _S20.IDX < 0 + THEN _S21.TOTAL_PARTS + _S20.IDX + 1 + ELSE 1 + END + ) AS p11, + ( + SELECT + _S22.PART + FROM _S22 AS _S22 + CROSS JOIN _S23 AS _S23 + WHERE + _S22.PART_INDEX <> 0 + AND _S22.PART_INDEX = CASE + WHEN _S22.IDX > 0 + THEN _S22.IDX + WHEN _S22.IDX < 0 + THEN _S23.TOTAL_PARTS + _S22.IDX + 1 + ELSE 1 + END + ) AS p12, + ( + SELECT + _S24.PART + FROM _S24 AS _S24 + CROSS JOIN _S25 AS _S25 + WHERE + _S24.PART_INDEX <> 0 + AND _S24.PART_INDEX = CASE + WHEN _S24.IDX > 0 + THEN _S24.IDX + WHEN _S24.IDX < 0 + THEN _S25.TOTAL_PARTS + _S24.IDX + 1 + ELSE 1 + END + ) AS p13, + ( + SELECT + _S26.PART + FROM _S26 AS _S26 + CROSS JOIN _S27 AS _S27 + WHERE + _S26.PART_INDEX <> 0 + AND _S26.PART_INDEX = CASE + WHEN _S26.IDX > 0 + THEN _S26.IDX + WHEN _S26.IDX < 0 + THEN _S27.TOTAL_PARTS + _S26.IDX + 1 + ELSE 1 + END + ) AS p14, + ( + SELECT + _S28.PART + FROM _S28 AS _S28 + CROSS JOIN _S29 AS _S29 + WHERE + _S28.PART_INDEX <> 0 + AND _S28.PART_INDEX = CASE + WHEN _S28.IDX > 0 + THEN _S28.IDX + WHEN _S28.IDX < 0 + THEN _S29.TOTAL_PARTS + _S28.IDX + 1 + ELSE 1 + END + ) AS p15, + ( + SELECT + _S30.PART + FROM _S30 AS _S30 + CROSS JOIN _S31 AS _S31 + WHERE + _S30.PART_INDEX <> 0 + AND _S30.PART_INDEX = CASE + WHEN _S30.IDX > 0 + THEN _S30.IDX + WHEN _S30.IDX < 0 + THEN _S31.TOTAL_PARTS + _S30.IDX + 1 + ELSE 1 + END + ) AS p16, + ( + SELECT + _S34.PART + FROM _S34 AS _S34 + CROSS JOIN _S35 AS _S35 + WHERE + _S34.PART_INDEX <> 0 + AND _S34.PART_INDEX = CASE + WHEN _S34.IDX > 0 + THEN _S34.IDX + WHEN _S34.IDX < 0 + THEN _S35.TOTAL_PARTS + _S34.IDX + 1 + ELSE 1 + END + ) AS p17, + ( + SELECT + _S36.PART + FROM _S36 AS _S36 + CROSS JOIN _S37 AS _S37 + WHERE + _S36.PART_INDEX <> 0 + AND _S36.PART_INDEX = CASE + WHEN _S36.IDX > 0 + THEN _S36.IDX + WHEN _S36.IDX < 0 + THEN _S37.TOTAL_PARTS + _S36.IDX + 1 + ELSE 1 + END + ) AS p18 +FROM MAIN.SBCUSTOMER +WHERE + CAST(SUBSTRING(sbcustid, 2) AS BIGINT) <= 4 +ORDER BY + CAST(SUBSTRING(sbcustid, 2) AS BIGINT) NULLS FIRST diff --git a/tests/test_sql_refsols/get_part_single_snowflake.sql b/tests/test_sql_refsols/get_part_single_snowflake.sql new file mode 100644 index 000000000..5e79ab067 --- /dev/null +++ b/tests/test_sql_refsols/get_part_single_snowflake.sql @@ -0,0 +1,49 @@ +WITH _S0 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + SBCUSTNAME AS REST, + ' ' AS DELIM, + -1 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S0 + WHERE + rest <> '' +), _S1 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S0 +) +SELECT + ( + SELECT + _S0.PART + FROM _S0 AS _S0 + CROSS JOIN _S1 AS _S1 + WHERE + _S0.PART_INDEX <> 0 + AND _S0.PART_INDEX = CASE + WHEN _S0.IDX > 0 + THEN _S0.IDX + WHEN _S0.IDX < 0 + THEN _S1.TOTAL_PARTS + _S0.IDX + 1 + ELSE 1 + END + ) AS last_name +FROM MAIN.SBCUSTOMER +WHERE + sbcustname = 'Alex Rodriguez' diff --git a/tests/test_sql_refsols/numerical_functions_snowflake.sql b/tests/test_sql_refsols/numerical_functions_snowflake.sql new file mode 100644 index 000000000..b138f575b --- /dev/null +++ b/tests/test_sql_refsols/numerical_functions_snowflake.sql @@ -0,0 +1,11 @@ +SELECT + ABS(c_acctbal) AS abs_value, + ROUND(c_acctbal, 2) AS round_value, + CEIL(c_acctbal) AS ceil_value, + FLOOR(c_acctbal) AS floor_value, + POWER(c_acctbal, 2) AS power_value, + POWER(c_acctbal, 0.5) AS sqrt_value, + SIGN(c_acctbal) AS sign_value, + LEAST(c_acctbal, 0) AS smallest_value, + GREATEST(c_acctbal, 0) AS largest_value +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/simplification_1_snowflake.sql b/tests/test_sql_refsols/simplification_1_snowflake.sql new file mode 100644 index 000000000..295d976e7 --- /dev/null +++ b/tests/test_sql_refsols/simplification_1_snowflake.sql @@ -0,0 +1,26 @@ +SELECT + 13 AS s00, + 0 AS s01, + COUNT(*) AS s02, + COUNT(*) + 5 AS s03, + COUNT(*) * 2 AS s04, + COUNT(*) / 8.0 AS s05, + 10 AS s06, + COUNT(*) AS s07, + ABS(COUNT(*) - 25) AS s08, + COUNT(*) + 1 AS s09, + COUNT(*) - 3 AS s10, + COUNT(*) * -1 AS s11, + COUNT(*) / 2.5 AS s12, + COUNT(*) > 10 AS s13, + COUNT(*) >= 10 AS s14, + COUNT(*) = 20 AS s15, + COUNT(*) <> 25 AS s16, + COUNT(*) < 25 AS s17, + COUNT(*) <= 25 AS s18, + COUNT(*) AS s19, + AVG(COALESCE(LENGTH(sbcustname), 0)) AS s20, + TRUE AS s21, + TRUE AS s22, + TRUE AS s23 +FROM MAIN.SBCUSTOMER diff --git a/tests/test_sql_refsols/simplification_2_snowflake.sql b/tests/test_sql_refsols/simplification_2_snowflake.sql new file mode 100644 index 000000000..b4df6c451 --- /dev/null +++ b/tests/test_sql_refsols/simplification_2_snowflake.sql @@ -0,0 +1,50 @@ +SELECT + TRUE AS s00, + FALSE AS s01, + TRUE AS s02, + FALSE AS s03, + TRUE AS s04, + FALSE AS s05, + NULL AS s06, + NULL AS s07, + NULL AS s08, + NULL AS s09, + NULL AS s10, + NULL AS s11, + FALSE AS s12, + TRUE AS s13, + FALSE AS s14, + FALSE AS s15, + TRUE AS s16, + TRUE AS s17, + TRUE AS s18, + FALSE AS s19, + TRUE AS s20, + FALSE AS s21, + TRUE AS s22, + FALSE AS s23, + FALSE AS s24, + TRUE AS s25, + TRUE AS s26, + FALSE AS s27, + TRUE AS s28, + FALSE AS s29, + 8 AS s30, + 'alphabet' AS s31, + 'SOUP' AS s32, + TRUE AS s33, + FALSE AS s34, + FALSE AS s35, + TRUE AS s36, + 3.0 AS s37, + NULL AS s38, + NULL AS s39, + NULL AS s40, + NULL AS s41, + NULL AS s42, + NULL AS s43, + NULL AS s44, + NULL AS s45, + NULL AS s46, + COALESCE(MAX(sbcustname), '') LIKE '%r%' AS s47 +FROM MAIN.SBCUSTOMER diff --git a/tests/test_sql_refsols/simplification_3_snowflake.sql b/tests/test_sql_refsols/simplification_3_snowflake.sql new file mode 100644 index 000000000..422f38d7e --- /dev/null +++ b/tests/test_sql_refsols/simplification_3_snowflake.sql @@ -0,0 +1,66 @@ +WITH _T1 AS ( + SELECT + ROW_NUMBER() OVER (ORDER BY sbcustname) AS RANK, + AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS RAVG1, + COALESCE( + AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), + 0.1 + ) AS RAVG2, + COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER () AS RCNT1, + COALESCE( + COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 0.1 + ) AS RCNT2, + COUNT(*) OVER () AS RSIZ1, + COALESCE( + COUNT(*) OVER (ORDER BY sbcustname ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING), + 0.1 + ) AS RSIZ2, + SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS RSUM1, + COALESCE( + SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 0.1 + ) AS RSUM2, + sbcustpostalcode AS SBCUSTPOSTALCODE + FROM MAIN.SBCUSTOMER +) +SELECT + TRUE AS s00, + TRUE AS s01, + FALSE AS s02, + FALSE AS s03, + FALSE AS s04, + FALSE AS s05, + COUNT(*) >= 3 AS s06, + FALSE AS s07, + COUNT(*) <= 6 AS s08, + FALSE AS s09, + 91 AS s10, + 0 AS s11, + 50 AS s12, + 35 AS s13, + 25.0 AS s14, + ABS(COUNT(*) * -0.75) AS s15, + 10 AS s16, + COUNT(*) AS s17, + COUNT(*) AS s18, + FALSE AS s19, + TRUE AS s20, + FALSE AS s21, + TRUE AS s22, + FALSE AS s23, + TRUE AS s24, + PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY + ABS(CAST(SBCUSTPOSTALCODE AS BIGINT))) AS s25, + MEDIAN(ABS(CAST(SBCUSTPOSTALCODE AS BIGINT))) AS s26, + MIN(RANK) AS s27, + MAX(RANK) AS s28, + ANY_VALUE(RSUM1) AS s29, + ROUND(SUM(RSUM2), 2) AS s30, + ANY_VALUE(RAVG1) AS s31, + ROUND(SUM(RAVG2), 2) AS s32, + ANY_VALUE(RCNT1) AS s33, + ROUND(SUM(RCNT2), 2) AS s34, + ANY_VALUE(RSIZ1) AS s35, + ROUND(SUM(RSIZ2), 2) AS s36 +FROM _T1 diff --git a/tests/test_sql_refsols/smoke_a_snowflake.sql b/tests/test_sql_refsols/smoke_a_snowflake.sql new file mode 100644 index 000000000..e38752eaa --- /dev/null +++ b/tests/test_sql_refsols/smoke_a_snowflake.sql @@ -0,0 +1,147 @@ +WITH _S2 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + P_NAME AS REST, + ' ' AS DELIM, + 2 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S2 + WHERE + rest <> '' +), _S3 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S2 +), _S0 AS ( + SELECT + 0 AS PART_INDEX, + '' AS PART, + P_NAME AS REST, + ' ' AS DELIM, + -1 AS IDX + UNION ALL + SELECT + part_index + 1 AS PART_INDEX, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN rest + ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) + END AS PART, + CASE + WHEN CHARINDEX(delim, rest) = 0 OR delim = '' + THEN '' + ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) + END AS REST, + delim AS DELIM, + idx AS IDX + FROM _S0 + WHERE + rest <> '' +), _S1 AS ( + SELECT + COUNT(*) - 1 AS TOTAL_PARTS + FROM _S0 +) +SELECT + p_partkey AS key, + CAST(CONCAT_WS( + '', + SUBSTRING( + p_brand, + CASE WHEN ( + LENGTH(p_brand) + -1 + ) < 1 THEN 1 ELSE ( + LENGTH(p_brand) + -1 + ) END + ), + SUBSTRING(p_brand, 8), + SUBSTRING( + p_brand, + CASE WHEN ( + LENGTH(p_brand) + -1 + ) < 1 THEN 1 ELSE ( + LENGTH(p_brand) + -1 + ) END, + CASE + WHEN ( + LENGTH(p_brand) + 0 + ) < 1 + THEN 0 + ELSE ( + LENGTH(p_brand) + 0 + ) - CASE WHEN ( + LENGTH(p_brand) + -1 + ) < 1 THEN 1 ELSE ( + LENGTH(p_brand) + -1 + ) END + END + ) + ) AS BIGINT) AS a, + UPPER( + LEAST( + ( + SELECT + _S2.PART + FROM _S2 AS _S2 + CROSS JOIN _S3 AS _S3 + WHERE + _S2.PART_INDEX <> 0 + AND _S2.PART_INDEX = CASE + WHEN _S2.IDX > 0 + THEN _S2.IDX + WHEN _S2.IDX < 0 + THEN _S3.TOTAL_PARTS + _S2.IDX + 1 + ELSE 1 + END + ), + ( + SELECT + _S0.PART + FROM _S0 AS _S0 + CROSS JOIN _S1 AS _S1 + WHERE + _S0.PART_INDEX <> 0 + AND _S0.PART_INDEX = CASE + WHEN _S0.IDX > 0 + THEN _S0.IDX + WHEN _S0.IDX < 0 + THEN _S1.TOTAL_PARTS + _S0.IDX + 1 + ELSE 1 + END + ) + ) + ) AS b, + TRIM(SUBSTRING(p_name, 1, 2), 'o') AS c, + LPAD(CAST(p_size AS TEXT), 3, '0') AS d, + RPAD(CAST(p_size AS TEXT), 3, '0') AS e, + REPLACE(p_mfgr, 'Manufacturer#', 'm') AS f, + REPLACE(LOWER(p_container), ' ', '') AS g, + CASE + WHEN LENGTH('o') = 0 + THEN 0 + ELSE CAST(LENGTH(p_name) - LENGTH(REPLACE(p_name, 'o', '')) / LENGTH('o') AS BIGINT) + END + ( + ( + CHARINDEX('o', p_name) - 1 + ) / 100.0 + ) AS h, + ROUND(POWER(GREATEST(p_size, 10), 0.5), 3) AS i +FROM TPCH.PART +ORDER BY + p_partkey NULLS FIRST +LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql new file mode 100644 index 000000000..700498475 --- /dev/null +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -0,0 +1,36 @@ +SELECT + o_orderkey AS key, + CONCAT_WS('_', YEAR(o_orderdate), QUARTER(o_orderdate), MONTH(o_orderdate), DAY(o_orderdate)) AS a, + CONCAT_WS(':', DAYNAME(o_orderdate), DAYOFWEEK(o_orderdate)) AS b, + DATEADD(DAY, -13, DATEADD(MONTH, 6, DATE_TRUNC('YEAR', CAST(o_orderdate AS TIMESTAMP)))) AS c, + DATEADD(HOUR, 25, DATEADD(YEAR, 1, DATE_TRUNC('QUARTER', CAST(o_orderdate AS TIMESTAMP)))) AS d, + DATE_TRUNC('MINUTE', CAST('2025-01-01 12:35:13' AS TIMESTAMP)) AS e, + DATEADD( + WEEK, + 3, + DATEADD(QUARTER, 2, DATE_TRUNC('HOUR', CAST('2025-01-01 12:35:13' AS TIMESTAMP))) + ) AS f, + CAST('2025-01-01 12:35:13' AS TIMESTAMP) AS g, + CONCAT_WS( + ';', + HOUR('2025-01-01 12:35:13'), + MINUTE(CAST('2025-01-01 13:20:13' AS TIMESTAMP)), + SECOND(CAST('2025-01-01 12:35:06' AS TIMESTAMP)) + ) AS h, + DATEDIFF(YEAR, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS i, + DATEDIFF(QUARTER, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS j, + DATEDIFF(MONTH, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS k, + DATEDIFF(WEEK, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS l, + DATEDIFF(DAY, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS m, + DATEDIFF(HOUR, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS n, + DATEDIFF(MINUTE, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS o, + DATEDIFF(SECOND, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS p, + DATE_TRUNC('WEEK', CAST(o_orderdate AS TIMESTAMP)) AS q +FROM TPCH.ORDERS +WHERE + CONTAINS(o_comment, 'fo') + AND ENDSWITH(o_clerk, '5') + AND STARTSWITH(o_orderpriority, '3') +ORDER BY + o_orderkey NULLS FIRST +LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_c_snowflake.sql b/tests/test_sql_refsols/smoke_c_snowflake.sql new file mode 100644 index 000000000..c80e86cfe --- /dev/null +++ b/tests/test_sql_refsols/smoke_c_snowflake.sql @@ -0,0 +1,21 @@ +SELECT + COUNT(*) AS a, + COALESCE(SUM(FLOOR(c_acctbal)), 0) AS b, + COALESCE(SUM(CEIL(c_acctbal)), 0) AS c, + COUNT(DISTINCT c_mktsegment) AS d, + ROUND(AVG(ABS(c_acctbal)), 4) AS e, + MIN(c_acctbal) AS f, + MAX(c_acctbal) AS g, + ANY_VALUE(SUBSTRING(c_name, 1, 1)) AS h, + COUNT(CASE WHEN c_acctbal > 0 THEN c_acctbal ELSE NULL END) AS i, + CEIL(VARIANCE_POP(CASE WHEN c_acctbal > 0 THEN c_acctbal ELSE NULL END)) AS j, + ROUND(VARIANCE(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END), 4) AS k, + FLOOR(STDDEV_POP(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END)) AS l, + ROUND(STDDEV(CASE WHEN c_acctbal > 0 THEN c_acctbal ELSE NULL END), 4) AS m, + ROUND(AVG(COALESCE(CASE WHEN c_acctbal > 0 THEN c_acctbal ELSE NULL END, 0)), 2) AS n, + COUNT_IF(NOT CASE WHEN c_acctbal > 1000 THEN c_acctbal ELSE NULL END IS NULL) AS o, + COUNT_IF(CASE WHEN c_acctbal > 1000 THEN c_acctbal ELSE NULL END IS NULL) AS p, + PERCENTILE_DISC(0.2) WITHIN GROUP (ORDER BY + c_acctbal) AS q, + MEDIAN(c_acctbal) AS r +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/smoke_d_snowflake.sql b/tests/test_sql_refsols/smoke_d_snowflake.sql new file mode 100644 index 000000000..a524b7104 --- /dev/null +++ b/tests/test_sql_refsols/smoke_d_snowflake.sql @@ -0,0 +1,29 @@ +SELECT + CUSTOMER.c_custkey AS key, + ROW_NUMBER() OVER (ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS a, + ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS b, + RANK() OVER (ORDER BY CUSTOMER.c_mktsegment) AS c, + DENSE_RANK() OVER (ORDER BY CUSTOMER.c_mktsegment) AS d, + NTILE(100) OVER (ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS e, + NTILE(12) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS f, + LAG(CUSTOMER.c_custkey, 1) OVER (ORDER BY CUSTOMER.c_custkey) AS g, + LAG(CUSTOMER.c_custkey, 2, -1) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey) AS h, + LEAD(CUSTOMER.c_custkey, 1) OVER (ORDER BY CUSTOMER.c_custkey) AS i, + LEAD(CUSTOMER.c_custkey, 6000) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey) AS j, + SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) AS k, + SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, + ROUND(AVG(CUSTOMER.c_acctbal) OVER (), 2) AS m, + ROUND( + AVG(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), + 2 + ) AS n, + COUNT(CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS o, + COUNT(*) OVER () AS p +FROM TPCH.NATION AS NATION +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey +ORDER BY + CUSTOMER.c_custkey NULLS FIRST +LIMIT 10 diff --git a/tests/test_sql_refsols/string_functions_snowflake.sql b/tests/test_sql_refsols/string_functions_snowflake.sql new file mode 100644 index 000000000..88a43f3fe --- /dev/null +++ b/tests/test_sql_refsols/string_functions_snowflake.sql @@ -0,0 +1,24 @@ +SELECT + LOWER(CUSTOMER.c_name) AS lowercase_name, + UPPER(CUSTOMER.c_name) AS uppercase_name, + LENGTH(CUSTOMER.c_name) AS name_length, + STARTSWITH(CUSTOMER.c_name, 'A') AS starts_with_A, + ENDSWITH(CUSTOMER.c_name, 'z') AS ends_with_z, + CONTAINS(CUSTOMER.c_name, 'sub') AS contains_sub, + CUSTOMER.c_name LIKE '%test%' AS matches_like, + CONCAT_WS('::', CUSTOMER.c_name, NATION.n_name) AS joined_string, + LPAD(CUSTOMER.c_name, 20, '*') AS lpad_name, + RPAD(CUSTOMER.c_name, 20, '-') AS rpad_name, + TRIM(CUSTOMER.c_name, '\n\t ') AS stripped, + TRIM(CUSTOMER.c_name, 'aeiou') AS stripped_vowels, + REPLACE(CUSTOMER.c_name, 'Corp', 'Inc') AS replaced_name, + REPLACE(CUSTOMER.c_name, 'Ltd', '') AS removed_substr, + CASE + WHEN LENGTH('e') = 0 + THEN 0 + ELSE CAST(LENGTH(CUSTOMER.c_name) - LENGTH(REPLACE(CUSTOMER.c_name, 'e', '')) / LENGTH('e') AS BIGINT) + END AS count_e, + CHARINDEX('Alex', CUSTOMER.c_name) - 1 AS idx_Alex +FROM TPCH.CUSTOMER AS CUSTOMER +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql new file mode 100644 index 000000000..3a863b1fd --- /dev/null +++ b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql @@ -0,0 +1,64 @@ +SELECT + SUBSTRING(c_phone, 1, 3) AS country_code, + SUBSTRING(c_name, 2) AS name_without_first_char, + SUBSTRING( + c_phone, + CASE WHEN ( + LENGTH(c_phone) + 0 + ) < 1 THEN 1 ELSE ( + LENGTH(c_phone) + 0 + ) END + ) AS last_digit, + SUBSTRING( + c_name, + 2, + CASE + WHEN ( + LENGTH(c_name) + 0 + ) < 1 + THEN 0 + ELSE CASE + WHEN ( + ( + LENGTH(c_name) + 0 + ) - 2 + ) <= 0 + THEN '' + ELSE ( + LENGTH(c_name) + 0 + ) - 2 + END + END + ) AS name_without_start_and_end_char, + SUBSTRING( + c_phone, + 1, + CASE WHEN ( + LENGTH(c_phone) + -5 + ) < 0 THEN 0 ELSE ( + LENGTH(c_phone) + -5 + ) END + ) AS phone_without_last_5_chars, + SUBSTRING( + c_name, + CASE WHEN ( + LENGTH(c_name) + -1 + ) < 1 THEN 1 ELSE ( + LENGTH(c_name) + -1 + ) END, + CASE + WHEN ( + LENGTH(c_name) + 0 + ) < 1 + THEN 0 + ELSE ( + LENGTH(c_name) + 0 + ) - CASE WHEN ( + LENGTH(c_name) + -1 + ) < 1 THEN 1 ELSE ( + LENGTH(c_name) + -1 + ) END + END + ) AS name_second_to_last_char, + c_acctbal >= 0 AS is_not_in_debt +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/window_functions_snowflake.sql b/tests/test_sql_refsols/window_functions_snowflake.sql new file mode 100644 index 000000000..a2ac63af7 --- /dev/null +++ b/tests/test_sql_refsols/window_functions_snowflake.sql @@ -0,0 +1,15 @@ +SELECT + DENSE_RANK() OVER (ORDER BY CUSTOMER.c_acctbal DESC) AS rank_value, + NTILE(10) OVER (ORDER BY CUSTOMER.c_acctbal) AS precentile_value, + LAG(CUSTOMER.c_acctbal, 2, 0.0) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal) AS two_prev_value, + LEAD(CUSTOMER.c_acctbal, 2) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal) AS two_next_value, + SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, + SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, + CUSTOMER.c_acctbal / AVG(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, + CUSTOMER.c_acctbal / COUNT(CASE WHEN CUSTOMER.c_acctbal > 0.0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS relcount_value, + CUSTOMER.c_acctbal / COUNT(*) OVER () AS relsize_value +FROM TPCH.REGION AS REGION +JOIN TPCH.NATION AS NATION + ON NATION.n_regionkey = REGION.r_regionkey +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey From 7fbcdc647e254a22af1645b9434fb4ed430a144c Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 6 Aug 2025 12:09:39 -0700 Subject: [PATCH 12/46] update dayname --- .../sf_transform_bindings.py | 47 +- .../cumulative_stock_analysis_snowflake.sql | 4 +- tests/test_sql_refsols/datediff_snowflake.sql | 2 +- .../datetime_functions_snowflake.sql | 65 +- .../datetime_sampler_snowflake.sql | 28 +- .../defog_broker_adv10_snowflake.sql | 4 +- .../defog_broker_adv5_snowflake.sql | 12 +- .../defog_broker_adv7_snowflake.sql | 28 +- .../defog_broker_gen5_snowflake.sql | 4 +- .../defog_dealership_adv11_snowflake.sql | 2 +- .../defog_dealership_gen4_snowflake.sql | 2 +- .../defog_dealership_gen5_snowflake.sql | 3 +- .../defog_ewallet_basic1_snowflake.sql | 2 +- .../defog_ewallet_gen2_snowflake.sql | 4 +- .../epoch_culture_events_info_snowflake.sql | 15 +- .../epoch_event_gap_per_era_snowflake.sql | 4 +- .../epoch_events_per_season_snowflake.sql | 6 +- .../epoch_first_event_per_era_snowflake.sql | 4 +- .../epoch_intra_season_searches_snowflake.sql | 30 +- ...opular_search_engine_per_tod_snowflake.sql | 4 +- .../epoch_num_predawn_cold_war_snowflake.sql | 8 +- .../epoch_pct_searches_per_tod_snowflake.sql | 4 +- .../epoch_search_results_by_tod_snowflake.sql | 4 +- ...epoch_summer_events_per_type_snowflake.sql | 6 +- ...poch_unique_users_per_engine_snowflake.sql | 3 +- ...users_most_cold_war_searches_snowflake.sql | 4 +- .../extract_colors_snowflake.sql | 283 +----- .../get_part_multiple_snowflake.sql | 854 +----------------- .../get_part_single_snowflake.sql | 46 +- .../hour_minute_day_snowflake.sql | 6 +- .../quantile_test_1_snowflake.sql | 3 +- .../quantile_test_2_snowflake.sql | 3 +- tests/test_sql_refsols/smoke_a_snowflake.sql | 94 +- tests/test_sql_refsols/smoke_b_snowflake.sql | 35 +- ...tion_week_sampler_friday_one_snowflake.sql | 20 +- ...ion_week_sampler_friday_zero_snowflake.sql | 20 +- ...tion_week_sampler_monday_one_snowflake.sql | 20 +- ...ion_week_sampler_monday_zero_snowflake.sql | 20 +- ...on_week_sampler_saturday_one_snowflake.sql | 20 +- ...n_week_sampler_saturday_zero_snowflake.sql | 20 +- ...tion_week_sampler_sunday_one_snowflake.sql | 20 +- ...ion_week_sampler_sunday_zero_snowflake.sql | 20 +- ...on_week_sampler_thursday_one_snowflake.sql | 20 +- ...n_week_sampler_thursday_zero_snowflake.sql | 20 +- ...ion_week_sampler_tuesday_one_snowflake.sql | 20 +- ...on_week_sampler_tuesday_zero_snowflake.sql | 20 +- ...n_week_sampler_wednesday_one_snowflake.sql | 20 +- ..._week_sampler_wednesday_zero_snowflake.sql | 20 +- ...hnograph_hot_purchase_window_snowflake.sql | 2 +- ...ncident_rate_by_release_year_snowflake.sql | 8 +- ...ograph_monthly_incident_rate_snowflake.sql | 12 +- ...incident_rate_goldcopperstar_snowflake.sql | 10 +- ...lative_incident_rate_overall_snowflake.sql | 4 +- .../time_threshold_reached_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q10_snowflake.sql | 3 +- tests/test_sql_refsols/tpch_q12_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q14_snowflake.sql | 3 +- tests/test_sql_refsols/tpch_q20_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q4_snowflake.sql | 4 +- tests/test_sql_refsols/tpch_q7_snowflake.sql | 6 +- tests/test_sql_refsols/tpch_q8_snowflake.sql | 6 +- tests/test_sql_refsols/tpch_q9_snowflake.sql | 4 +- .../week_offset_snowflake.sql | 3 +- 63 files changed, 541 insertions(+), 1433 deletions(-) diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py index abfb0eff2..05bec6bd3 100644 --- a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -13,6 +13,7 @@ from pydough.types.boolean_type import BooleanType from .base_transform_bindings import BaseTransformBindings +from .sqlglot_transform_utils import DateTimeUnit class SnowflakeTransformBindings(BaseTransformBindings): @@ -27,7 +28,6 @@ class SnowflakeTransformBindings(BaseTransformBindings): pydop.LPAD: "LPAD", pydop.RPAD: "RPAD", pydop.SIGN: "SIGN", - # pydop.DAYNAME: "DAYNAME", pydop.SMALLEST: "LEAST", pydop.LARGEST: "GREATEST", pydop.GETPART: "SPLIT_PART", @@ -72,25 +72,26 @@ def convert_sum( # For other types, use SUM directly return sqlglot_expressions.Sum(this=arg[0]) - # def convert_extract_datetime( - # self, - # args: list[SQLGlotExpression], - # types: list[PyDoughType], - # unit: DateTimeUnit, - # ) -> SQLGlotExpression: - - # # Update argument type to fit datetime - # dt_expr = self.handle_datetime_base_arg(args[0]) - # match unit: - # case DateTimeUnit.YEAR: - # return sqlglot_expressions.Year(this=dt_expr) - # case DateTimeUnit.QUARTER: - # return sqlglot_expressions.Quarter(this=dt_expr) - # case DateTimeUnit.MONTH: - # return sqlglot_expressions.Month(this=dt_expr) - # case DateTimeUnit.DAY: - # return sqlglot_expressions.Day(this=dt_expr) - # case DateTimeUnit.HOUR | DateTimeUnit.MINUTE | DateTimeUnit.SECOND: - # return sqlglot_expressions.Anonymous( - # this=unit.value.upper(), expressions=[dt_expr] - # ) + def convert_extract_datetime( + self, + args: list[SQLGlotExpression], + types: list[PyDoughType], + unit: DateTimeUnit, + ) -> SQLGlotExpression: + # Update argument type to fit datetime + dt_expr = self.handle_datetime_base_arg(args[0]) + func_expr: SQLGlotExpression + match unit: + case DateTimeUnit.YEAR: + func_expr = sqlglot_expressions.Year(this=dt_expr) + case DateTimeUnit.QUARTER: + func_expr = sqlglot_expressions.Quarter(this=dt_expr) + case DateTimeUnit.MONTH: + func_expr = sqlglot_expressions.Month(this=dt_expr) + case DateTimeUnit.DAY: + func_expr = sqlglot_expressions.Day(this=dt_expr) + case DateTimeUnit.HOUR | DateTimeUnit.MINUTE | DateTimeUnit.SECOND: + func_expr = sqlglot_expressions.Anonymous( + this=unit.value.upper(), expressions=[dt_expr] + ) + return func_expr diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index c1ee5df65..71e602233 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -25,8 +25,8 @@ FROM MAIN.SBTRANSACTION AS SBTRANSACTION JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid WHERE - MONTH(SBTRANSACTION.sbtxdatetime) = 4 + MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 4 AND SBTRANSACTION.sbtxstatus = 'success' - AND YEAR(SBTRANSACTION.sbtxdatetime) = 2023 + AND YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 ORDER BY SBTRANSACTION.sbtxdatetime NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql index 2d243dc2f..ad357d4fe 100644 --- a/tests/test_sql_refsols/datediff_snowflake.sql +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -10,7 +10,7 @@ SELECT DATEDIFF(SECOND, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS seconds_diff FROM MAIN.SBTRANSACTION WHERE - YEAR(sbtxdatetime) < 2025 + YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 ORDER BY DATEDIFF(YEAR, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) NULLS FIRST LIMIT 30 diff --git a/tests/test_sql_refsols/datetime_functions_snowflake.sql b/tests/test_sql_refsols/datetime_functions_snowflake.sql index 6b45a0b5b..e7c3489c9 100644 --- a/tests/test_sql_refsols/datetime_functions_snowflake.sql +++ b/tests/test_sql_refsols/datetime_functions_snowflake.sql @@ -5,16 +5,16 @@ SELECT DATEADD(HOUR, 1, CURRENT_TIMESTAMP()) AS ts_now_4, CAST('2025-01-01 00:00:00' AS TIMESTAMP) AS ts_now_5, CAST('1995-10-08 00:00:00' AS TIMESTAMP) AS ts_now_6, - YEAR(o_orderdate) AS year_col, + YEAR(CAST(o_orderdate AS TIMESTAMP)) AS year_col, YEAR(CAST('2020-05-01 00:00:00' AS TIMESTAMP)) AS year_py, YEAR(CAST('1995-10-10 00:00:00' AS TIMESTAMP)) AS year_pd, - MONTH(o_orderdate) AS month_col, - MONTH('2025-02-25') AS month_str, + MONTH(CAST(o_orderdate AS TIMESTAMP)) AS month_col, + MONTH(CAST('2025-02-25' AS TIMESTAMP)) AS month_str, MONTH(CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS month_dt, - DAY(o_orderdate) AS day_col, - DAY('1996-11-25 10:45:00') AS day_str, - HOUR('1995-12-01 23:59:59') AS hour_str, - MINUTE('1995-12-01 23:59:59') AS minute_str, + DAY(CAST(o_orderdate AS TIMESTAMP)) AS day_col, + DAY(CAST('1996-11-25 10:45:00' AS TIMESTAMP)) AS day_str, + HOUR(CAST('1995-12-01 23:59:59' AS TIMESTAMP)) AS hour_str, + MINUTE(CAST('1995-12-01 23:59:59' AS TIMESTAMP)) AS minute_str, SECOND(CAST('1992-01-01 00:00:59' AS TIMESTAMP)) AS second_ts, DATEDIFF(DAY, CAST(o_orderdate AS DATETIME), CAST('1992-01-01' AS TIMESTAMP)) AS dd_col_str, DATEDIFF(DAY, CAST('1992-01-01' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS dd_str_col, @@ -25,7 +25,52 @@ SELECT DAYOFWEEK('1992-07-01') AS dow_str, DAYOFWEEK(CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS dow_dt, DAYOFWEEK(CAST('1995-10-10 00:00:00' AS TIMESTAMP)) AS dow_pd, - DAYNAME(o_orderdate) AS dayname_col, - DAYNAME('1995-06-30') AS dayname_str, - DAYNAME(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) AS dayname_dt + CASE + WHEN DAYOFWEEK(o_orderdate) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(o_orderdate) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(o_orderdate) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(o_orderdate) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(o_orderdate) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(o_orderdate) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(o_orderdate) = 6 + THEN 'Saturday' + END AS dayname_col, + CASE + WHEN DAYOFWEEK('1995-06-30') = 0 + THEN 'Sunday' + WHEN DAYOFWEEK('1995-06-30') = 1 + THEN 'Monday' + WHEN DAYOFWEEK('1995-06-30') = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK('1995-06-30') = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK('1995-06-30') = 4 + THEN 'Thursday' + WHEN DAYOFWEEK('1995-06-30') = 5 + THEN 'Friday' + WHEN DAYOFWEEK('1995-06-30') = 6 + THEN 'Saturday' + END AS dayname_str, + CASE + WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 6 + THEN 'Saturday' + END AS dayname_dt FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/datetime_sampler_snowflake.sql b/tests/test_sql_refsols/datetime_sampler_snowflake.sql index 1bbaa6730..51a0b1870 100644 --- a/tests/test_sql_refsols/datetime_sampler_snowflake.sql +++ b/tests/test_sql_refsols/datetime_sampler_snowflake.sql @@ -111,24 +111,24 @@ SELECT DATEADD(MONTH, -104, DATEADD(MINUTE, 104, DATEADD(HOUR, 136, CURRENT_TIMESTAMP()))) ) AS _expr57, DATEADD(SECOND, -135, DATEADD(MONTH, 45, CURRENT_TIMESTAMP())) AS _expr58, - YEAR('Current Date') AS _expr59, + YEAR(CURRENT_TIMESTAMP()) AS _expr59, YEAR(CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr60, - YEAR('1999-03-14') AS _expr61, - MONTH('Current Date') AS _expr62, - MONTH(CAST('2001-06-30' AS DATE)) AS _expr63, - MONTH('1999-03-14') AS _expr64, - DAY('Current Date') AS _expr65, + YEAR(CAST('1999-03-14' AS TIMESTAMP)) AS _expr61, + MONTH(CURRENT_TIMESTAMP()) AS _expr62, + MONTH(CAST(CAST('2001-06-30' AS DATE) AS TIMESTAMP)) AS _expr63, + MONTH(CAST('1999-03-14' AS TIMESTAMP)) AS _expr64, + DAY(CURRENT_TIMESTAMP()) AS _expr65, DAY(CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr66, - DAY('2025-07-04 12:58:45') AS _expr67, - HOUR('CURRENT_TIMESTAMP') AS _expr68, - HOUR(CAST('2001-06-30' AS DATE)) AS _expr69, - HOUR('2024-01-01') AS _expr70, - MINUTE('CURRENT_TIMESTAMP') AS _expr71, + DAY(CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr67, + HOUR(CURRENT_TIMESTAMP()) AS _expr68, + HOUR(CAST(CAST('2001-06-30' AS DATE) AS TIMESTAMP)) AS _expr69, + HOUR(CAST('2024-01-01' AS TIMESTAMP)) AS _expr70, + MINUTE(CURRENT_TIMESTAMP()) AS _expr71, MINUTE(CAST('2024-12-25 20:30:59' AS TIMESTAMP)) AS _expr72, - MINUTE('2024-01-01') AS _expr73, - SECOND('now') AS _expr74, + MINUTE(CAST('2024-01-01' AS TIMESTAMP)) AS _expr73, + SECOND(CURRENT_TIMESTAMP()) AS _expr74, SECOND(CAST('2025-07-04 12:58:45' AS TIMESTAMP)) AS _expr75, - SECOND('1999-03-14') AS _expr76, + SECOND(CAST('1999-03-14' AS TIMESTAMP)) AS _expr76, DATEDIFF(YEAR, CAST('2018-02-14 12:41:06' AS TIMESTAMP), CURRENT_TIMESTAMP()) AS _expr77, DATEDIFF(YEAR, CAST(o_orderdate AS DATETIME), CAST('2022-11-24' AS DATE)) AS _expr78, DATEDIFF(MONTH, CAST('2005-06-30' AS DATE), CAST('1999-03-14' AS TIMESTAMP)) AS _expr79, diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql index dec5fcf70..a8c93348c 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -4,9 +4,9 @@ WITH _S3 AS ( SBCUSTOMER.sbcustid AS SBCUSTID FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON MONTH(SBCUSTOMER.sbcustjoindate) = MONTH(SBTRANSACTION.sbtxdatetime) + ON MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND YEAR(SBCUSTOMER.sbcustjoindate) = YEAR(SBTRANSACTION.sbtxdatetime) + AND YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) GROUP BY SBCUSTOMER.sbcustid ) diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index 3912d5a61..ff929340d 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -3,12 +3,20 @@ WITH _S0 AS ( COUNT(sbdpclose) AS COUNT_SBDPCLOSE, MAX(sbdphigh) AS MAX_HIGH, MIN(sbdplow) AS MIN_LOW, - CONCAT_WS('-', YEAR(sbdpdate), LPAD(MONTH(sbdpdate), 2, '0')) AS MONTH, + CONCAT_WS( + '-', + YEAR(CAST(sbdpdate AS TIMESTAMP)), + LPAD(MONTH(CAST(sbdpdate AS TIMESTAMP)), 2, '0') + ) AS MONTH, SUM(sbdpclose) AS SUM_SBDPCLOSE, sbdptickerid AS SBDPTICKERID FROM MAIN.SBDAILYPRICE GROUP BY - CONCAT_WS('-', YEAR(sbdpdate), LPAD(MONTH(sbdpdate), 2, '0')), + CONCAT_WS( + '-', + YEAR(CAST(sbdpdate AS TIMESTAMP)), + LPAD(MONTH(CAST(sbdpdate AS TIMESTAMP)), 2, '0') + ), sbdptickerid ), _T0 AS ( SELECT diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index 9276898c8..8892b2587 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -1,27 +1,43 @@ WITH _S2 AS ( SELECT - CONCAT_WS('-', YEAR(sbcustjoindate), LPAD(MONTH(sbcustjoindate), 2, '0')) AS MONTH, + CONCAT_WS( + '-', + YEAR(CAST(sbcustjoindate AS TIMESTAMP)), + LPAD(MONTH(CAST(sbcustjoindate AS TIMESTAMP)), 2, '0') + ) AS MONTH, COUNT(*) AS N_ROWS FROM MAIN.SBCUSTOMER WHERE sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY - CONCAT_WS('-', YEAR(sbcustjoindate), LPAD(MONTH(sbcustjoindate), 2, '0')) + CONCAT_WS( + '-', + YEAR(CAST(sbcustjoindate AS TIMESTAMP)), + LPAD(MONTH(CAST(sbcustjoindate AS TIMESTAMP)), 2, '0') + ) ), _S3 AS ( SELECT AVG(SBTRANSACTION.sbtxamount) AS AVG_SBTXAMOUNT, - CONCAT_WS('-', YEAR(SBCUSTOMER.sbcustjoindate), LPAD(MONTH(SBCUSTOMER.sbcustjoindate), 2, '0')) AS MONTH + CONCAT_WS( + '-', + YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), + LPAD(MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), 2, '0') + ) AS MONTH FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON MONTH(SBCUSTOMER.sbcustjoindate) = MONTH(SBTRANSACTION.sbtxdatetime) + ON MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND YEAR(SBCUSTOMER.sbcustjoindate) = YEAR(SBTRANSACTION.sbtxdatetime) + AND YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) WHERE SBCUSTOMER.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY - CONCAT_WS('-', YEAR(SBCUSTOMER.sbcustjoindate), LPAD(MONTH(SBCUSTOMER.sbcustjoindate), 2, '0')) + CONCAT_WS( + '-', + YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), + LPAD(MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), 2, '0') + ) ) SELECT _S2.MONTH AS month, diff --git a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql index 86273f241..591ba564e 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql @@ -3,7 +3,9 @@ SELECT AVG(sbtxprice) AS avg_price FROM MAIN.SBTRANSACTION WHERE - QUARTER(sbtxdatetime) = 1 AND sbtxstatus = 'success' AND YEAR(sbtxdatetime) = 2023 + QUARTER(CAST(sbtxdatetime AS TIMESTAMP)) = 1 + AND sbtxstatus = 'success' + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 GROUP BY DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql index 8477e9aa3..5d3582b3f 100644 --- a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql @@ -8,4 +8,4 @@ FROM MAIN.SALES AS SALES JOIN MAIN.CARS AS CARS ON CARS._id = SALES.car_id WHERE - YEAR(SALES.sale_date) = 2023 + YEAR(CAST(SALES.sale_date AS TIMESTAMP)) = 2023 diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql index 8dc890984..1163d94a4 100644 --- a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -5,7 +5,7 @@ WITH _S0 AS ( customer_id AS CUSTOMER_ID FROM MAIN.SALES WHERE - YEAR(sale_date) = 2023 + YEAR(CAST(sale_date AS TIMESTAMP)) = 2023 GROUP BY DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)), customer_id diff --git a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql index d19ec8fda..067021c1d 100644 --- a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql @@ -3,7 +3,8 @@ WITH _T0 AS ( car_id AS CAR_ID FROM MAIN.INVENTORY_SNAPSHOTS WHERE - MONTH(snapshot_date) = 3 AND YEAR(snapshot_date) = 2023 + MONTH(CAST(snapshot_date AS TIMESTAMP)) = 3 + AND YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 QUALIFY is_in_inventory AND RANK() OVER (ORDER BY snapshot_date DESC) = 1 ) diff --git a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql index 8ffa4c94e..743b77a83 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql @@ -7,6 +7,6 @@ JOIN MAIN.USERS AS USERS WHERE WALLET_TRANSACTIONS_DAILY.sender_type = 0 AND WALLET_TRANSACTIONS_DAILY.status = 'success' - AND YEAR(WALLET_TRANSACTIONS_DAILY.created_at) = 2023 + AND YEAR(CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) = 2023 GROUP BY DATE_TRUNC('MONTH', CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql index 39bc9b48e..313181e4b 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql @@ -3,7 +3,7 @@ WITH _S0 AS ( MIN(snapshot_date) AS MIN_DATE FROM MAIN.USER_SETTING_SNAPSHOT WHERE - YEAR(snapshot_date) = 2023 + YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 ) SELECT AVG(USER_SETTING_SNAPSHOT.tx_limit_daily) AS avg_daily_limit, @@ -11,4 +11,4 @@ SELECT FROM _S0 AS _S0 JOIN MAIN.USER_SETTING_SNAPSHOT AS USER_SETTING_SNAPSHOT ON USER_SETTING_SNAPSHOT.snapshot_date = _S0.MIN_DATE - AND YEAR(USER_SETTING_SNAPSHOT.snapshot_date) = 2023 + AND YEAR(CAST(USER_SETTING_SNAPSHOT.snapshot_date AS TIMESTAMP)) = 2023 diff --git a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql index fd28c5ab5..37b479c66 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql @@ -7,23 +7,24 @@ WITH _S2 AS ( SELECT EVENTS.ev_name AS event_name, ERAS.er_name AS era_name, - YEAR(EVENTS.ev_dt) AS event_year, + YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) AS event_year, SEASONS.s_name AS season_name, TIMES.t_name AS tod FROM EVENTS AS EVENTS JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) - AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) + ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) JOIN _S2 AS _S2 ON EVENTS.ev_key = _S2.EV_KEY JOIN SEASONS AS SEASONS - ON SEASONS.s_month1 = MONTH(_S2.EV_DT) - OR SEASONS.s_month2 = MONTH(_S2.EV_DT) - OR SEASONS.s_month3 = MONTH(_S2.EV_DT) + ON SEASONS.s_month1 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) + OR SEASONS.s_month2 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) + OR SEASONS.s_month3 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) JOIN _S2 AS _S6 ON EVENTS.ev_key = _S6.EV_KEY JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(_S6.EV_DT) AND TIMES.t_start_hour <= HOUR(_S6.EV_DT) + ON TIMES.t_end_hour > HOUR(CAST(_S6.EV_DT AS TIMESTAMP)) + AND TIMES.t_start_hour <= HOUR(CAST(_S6.EV_DT AS TIMESTAMP)) WHERE EVENTS.ev_typ = 'culture' ORDER BY diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index 12aa0ce0f..3db319864 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -9,8 +9,8 @@ WITH _T1 AS ( ERAS.er_start_year AS ER_START_YEAR FROM ERAS AS ERAS JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) - AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) + ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) ) SELECT ER_NAME AS era_name, diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql index 8a2d27841..810fa39c0 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -3,9 +3,9 @@ SELECT COUNT(*) AS n_events FROM SEASONS AS SEASONS JOIN EVENTS AS EVENTS - ON SEASONS.s_month1 = MONTH(EVENTS.ev_dt) - OR SEASONS.s_month2 = MONTH(EVENTS.ev_dt) - OR SEASONS.s_month3 = MONTH(EVENTS.ev_dt) + ON SEASONS.s_month1 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) GROUP BY SEASONS.s_name ORDER BY diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql index c59513506..155d48459 100644 --- a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql @@ -5,8 +5,8 @@ WITH _T1 AS ( EVENTS.ev_name AS EV_NAME FROM ERAS AS ERAS JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) - AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) + ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) QUALIFY ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) = 1 ) diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index 9dd496ed8..43bc660a8 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -17,17 +17,17 @@ WITH _S0 AS ( SEARCHES.search_id AS SEARCH_ID FROM _S0 AS _S2 JOIN SEARCHES AS SEARCHES - ON _S2.S_MONTH1 = MONTH(SEARCHES.search_ts) - OR _S2.S_MONTH2 = MONTH(SEARCHES.search_ts) - OR _S2.S_MONTH3 = MONTH(SEARCHES.search_ts) + ON _S2.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S2.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S2.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) JOIN _S5 AS _S5 ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S5.EV_NAME)) JOIN _S0 AS _S7 ON _S2.S_NAME = _S7.S_NAME AND ( - _S7.S_MONTH1 = MONTH(_S5.EV_DT) - OR _S7.S_MONTH2 = MONTH(_S5.EV_DT) - OR _S7.S_MONTH3 = MONTH(_S5.EV_DT) + _S7.S_MONTH1 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) + OR _S7.S_MONTH2 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) + OR _S7.S_MONTH3 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) ) GROUP BY _S2.S_NAME, @@ -41,9 +41,9 @@ WITH _S0 AS ( _S0.S_NAME FROM _S0 AS _S0 JOIN SEARCHES AS SEARCHES - ON _S0.S_MONTH1 = MONTH(SEARCHES.search_ts) - OR _S0.S_MONTH2 = MONTH(SEARCHES.search_ts) - OR _S0.S_MONTH3 = MONTH(SEARCHES.search_ts) + ON _S0.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S0.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S0.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) LEFT JOIN _S9 AS _S9 ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.S_NAME = _S9.S_NAME GROUP BY @@ -55,15 +55,15 @@ WITH _S0 AS ( _S10.S_NAME FROM _S0 AS _S10 JOIN _S5 AS _S11 - ON _S10.S_MONTH1 = MONTH(_S11.EV_DT) - OR _S10.S_MONTH2 = MONTH(_S11.EV_DT) - OR _S10.S_MONTH3 = MONTH(_S11.EV_DT) + ON _S10.S_MONTH1 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) + OR _S10.S_MONTH2 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) + OR _S10.S_MONTH3 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) JOIN SEARCHES AS SEARCHES ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S11.EV_NAME)) JOIN _S0 AS _S15 - ON _S15.S_MONTH1 = MONTH(SEARCHES.search_ts) - OR _S15.S_MONTH2 = MONTH(SEARCHES.search_ts) - OR _S15.S_MONTH3 = MONTH(SEARCHES.search_ts) + ON _S15.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S15.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S15.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY _S10.S_NAME ) diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql index 2fe18c20e..031ee65f6 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql @@ -5,8 +5,8 @@ WITH _T1 AS ( TIMES.t_name AS T_NAME FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) - AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) + ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY SEARCHES.search_engine, TIMES.t_name diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql index 101b7026d..f5cceb2f4 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -8,9 +8,9 @@ WITH _S0 AS ( _S2.EV_KEY AS _u_1 FROM _S0 AS _S2 JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(_S2.EV_DT) + ON ERAS.er_end_year > YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) AND ERAS.er_name = 'Cold War' - AND ERAS.er_start_year <= YEAR(_S2.EV_DT) + AND ERAS.er_start_year <= YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) GROUP BY _S2.EV_KEY ) @@ -18,9 +18,9 @@ SELECT COUNT(*) AS n_events FROM _S0 AS _S0 JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(_S0.EV_DT) + ON TIMES.t_end_hour > HOUR(CAST(_S0.EV_DT AS TIMESTAMP)) AND TIMES.t_name = 'Pre-Dawn' - AND TIMES.t_start_hour <= HOUR(_S0.EV_DT) + AND TIMES.t_start_hour <= HOUR(CAST(_S0.EV_DT AS TIMESTAMP)) LEFT JOIN _u_0 AS _u_0 ON _S0.EV_KEY = _u_0._u_1 WHERE diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql index e990b7e2e..cfde1fc40 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -5,8 +5,8 @@ WITH _T0 AS ( COUNT(*) AS N_ROWS FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) - AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) + ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY TIMES.t_name ) diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql index 6750fd870..f9e12c3b9 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -6,8 +6,8 @@ WITH _T0 AS ( COUNT(*) AS N_ROWS FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) - AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) + ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY TIMES.t_name ) diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql index 63da593db..c3c5b89dd 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql @@ -4,9 +4,9 @@ SELECT FROM EVENTS AS EVENTS JOIN SEASONS AS SEASONS ON ( - SEASONS.s_month1 = MONTH(EVENTS.ev_dt) - OR SEASONS.s_month2 = MONTH(EVENTS.ev_dt) - OR SEASONS.s_month3 = MONTH(EVENTS.ev_dt) + SEASONS.s_month1 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) ) AND SEASONS.s_name = 'Summer' GROUP BY diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql index f5788c696..ca3a1d1c5 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql @@ -10,7 +10,8 @@ WITH _S2 AS ( JOIN USERS AS USERS ON SEARCHES.search_user_id = USERS.user_id WHERE - YEAR(SEARCHES.search_ts) <= 2019 AND YEAR(SEARCHES.search_ts) >= 2010 + YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) <= 2019 + AND YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) >= 2010 GROUP BY SEARCHES.search_engine ) diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql index 15d3bfec3..3fd205f61 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -5,9 +5,9 @@ WITH _T0 AS ( JOIN EVENTS AS EVENTS ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(EVENTS.ev_dt) + ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) AND ERAS.er_name = 'Cold War' - AND ERAS.er_start_year <= YEAR(EVENTS.ev_dt) + AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) GROUP BY SEARCHES.search_id ), _S5 AS ( diff --git a/tests/test_sql_refsols/extract_colors_snowflake.sql b/tests/test_sql_refsols/extract_colors_snowflake.sql index 1ef9eb3fb..ead5cca20 100644 --- a/tests/test_sql_refsols/extract_colors_snowflake.sql +++ b/tests/test_sql_refsols/extract_colors_snowflake.sql @@ -1,282 +1,11 @@ -WITH _S0 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - P_NAME AS REST, - ' ' AS DELIM, - 1 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S0 - WHERE - rest <> '' -), _S1 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S0 -), _S2 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - P_NAME AS REST, - ' ' AS DELIM, - 2 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S2 - WHERE - rest <> '' -), _S3 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S2 -), _S4 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - P_NAME AS REST, - ' ' AS DELIM, - 3 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S4 - WHERE - rest <> '' -), _S5 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S4 -), _S6 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - P_NAME AS REST, - ' ' AS DELIM, - 4 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S6 - WHERE - rest <> '' -), _S7 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S6 -), _S8 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - P_NAME AS REST, - ' ' AS DELIM, - 5 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S8 - WHERE - rest <> '' -), _S9 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S8 -), _S10 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - P_NAME AS REST, - ' ' AS DELIM, - 6 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S10 - WHERE - rest <> '' -), _S11 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S10 -) SELECT p_partkey AS key, - UPPER( - ( - SELECT - _S0.PART - FROM _S0 AS _S0 - CROSS JOIN _S1 AS _S1 - WHERE - _S0.PART_INDEX <> 0 - AND _S0.PART_INDEX = CASE - WHEN _S0.IDX > 0 - THEN _S0.IDX - WHEN _S0.IDX < 0 - THEN _S1.TOTAL_PARTS + _S0.IDX + 1 - ELSE 1 - END - ) - ) AS c1, - UPPER( - ( - SELECT - _S2.PART - FROM _S2 AS _S2 - CROSS JOIN _S3 AS _S3 - WHERE - _S2.PART_INDEX <> 0 - AND _S2.PART_INDEX = CASE - WHEN _S2.IDX > 0 - THEN _S2.IDX - WHEN _S2.IDX < 0 - THEN _S3.TOTAL_PARTS + _S2.IDX + 1 - ELSE 1 - END - ) - ) AS c2, - UPPER( - ( - SELECT - _S4.PART - FROM _S4 AS _S4 - CROSS JOIN _S5 AS _S5 - WHERE - _S4.PART_INDEX <> 0 - AND _S4.PART_INDEX = CASE - WHEN _S4.IDX > 0 - THEN _S4.IDX - WHEN _S4.IDX < 0 - THEN _S5.TOTAL_PARTS + _S4.IDX + 1 - ELSE 1 - END - ) - ) AS c3, - UPPER( - ( - SELECT - _S6.PART - FROM _S6 AS _S6 - CROSS JOIN _S7 AS _S7 - WHERE - _S6.PART_INDEX <> 0 - AND _S6.PART_INDEX = CASE - WHEN _S6.IDX > 0 - THEN _S6.IDX - WHEN _S6.IDX < 0 - THEN _S7.TOTAL_PARTS + _S6.IDX + 1 - ELSE 1 - END - ) - ) AS c4, - UPPER( - ( - SELECT - _S8.PART - FROM _S8 AS _S8 - CROSS JOIN _S9 AS _S9 - WHERE - _S8.PART_INDEX <> 0 - AND _S8.PART_INDEX = CASE - WHEN _S8.IDX > 0 - THEN _S8.IDX - WHEN _S8.IDX < 0 - THEN _S9.TOTAL_PARTS + _S8.IDX + 1 - ELSE 1 - END - ) - ) AS c5, - UPPER( - ( - SELECT - _S10.PART - FROM _S10 AS _S10 - CROSS JOIN _S11 AS _S11 - WHERE - _S10.PART_INDEX <> 0 - AND _S10.PART_INDEX = CASE - WHEN _S10.IDX > 0 - THEN _S10.IDX - WHEN _S10.IDX < 0 - THEN _S11.TOTAL_PARTS + _S10.IDX + 1 - ELSE 1 - END - ) - ) AS c6 + UPPER(SPLIT_PART(p_name, ' ', 1)) AS c1, + UPPER(SPLIT_PART(p_name, ' ', 2)) AS c2, + UPPER(SPLIT_PART(p_name, ' ', 3)) AS c3, + UPPER(SPLIT_PART(p_name, ' ', 4)) AS c4, + UPPER(SPLIT_PART(p_name, ' ', 5)) AS c5, + UPPER(SPLIT_PART(p_name, ' ', 6)) AS c6 FROM TPCH.PART ORDER BY p_partkey NULLS FIRST diff --git a/tests/test_sql_refsols/get_part_multiple_snowflake.sql b/tests/test_sql_refsols/get_part_multiple_snowflake.sql index 168291c30..ce5991f8e 100644 --- a/tests/test_sql_refsols/get_part_multiple_snowflake.sql +++ b/tests/test_sql_refsols/get_part_multiple_snowflake.sql @@ -1,841 +1,23 @@ -WITH _S0 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - ' ' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S0 - WHERE - rest <> '' -), _S1 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S0 -), _S2 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - ' ' AS DELIM, - 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S2 - WHERE - rest <> '' -), _S3 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S2 -), _S4 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTEMAIL AS REST, - '.' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S4 - WHERE - rest <> '' -), _S5 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S4 -), _S6 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTEMAIL AS REST, - '.' AS DELIM, - 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S6 - WHERE - rest <> '' -), _S7 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S6 -), _S8 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTPHONE AS REST, - '-' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S8 - WHERE - rest <> '' -), _S9 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S8 -), _S10 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTPHONE AS REST, - '-' AS DELIM, - 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S10 - WHERE - rest <> '' -), _S11 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S10 -), _S12 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTPOSTALCODE AS REST, - '00' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S12 - WHERE - rest <> '' -), _S13 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S12 -), _S14 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTPOSTALCODE AS REST, - '00' AS DELIM, - 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S14 - WHERE - rest <> '' -), _S15 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S14 -), _S16 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - '!' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S16 - WHERE - rest <> '' -), _S17 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S16 -), _S18 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - '@' AS DELIM, - 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S18 - WHERE - rest <> '' -), _S19 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S18 -), _S20 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - 'aa' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S20 - WHERE - rest <> '' -), _S21 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S20 -), _S22 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - '#$*' AS DELIM, - 0 - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S22 - WHERE - rest <> '' -), _S23 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S22 -), _S24 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - '' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S24 - WHERE - rest <> '' -), _S25 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S24 -), _S26 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - '' AS REST, - ' ' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S26 - WHERE - rest <> '' -), _S27 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S26 -), _S28 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - ' ' AS DELIM, - 0 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S28 - WHERE - rest <> '' -), _S29 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S28 -), _S30 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTSTATE AS REST, - SBCUSTSTATE AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S30 - WHERE - rest <> '' -), _S31 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S30 -), _S32 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTPHONE AS REST, - '-' AS DELIM, - 1 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S32 - WHERE - rest <> '' -), _S33 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S32 -), _S34 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - ( - SELECT - _S32.PART - FROM _S32 AS _S32 - CROSS JOIN _S33 AS _S33 - WHERE - _S32.PART_INDEX <> 0 - AND _S32.PART_INDEX = CASE - WHEN _S32.IDX > 0 - THEN _S32.IDX - WHEN _S32.IDX < 0 - THEN _S33.TOTAL_PARTS + _S32.IDX + 1 - ELSE 1 - END - ) AS REST, - '5' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S34 - WHERE - rest <> '' -), _S35 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S34 -), _S36 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTPOSTALCODE AS REST, - '0' AS DELIM, - CAST(SUBSTRING(SBCUSTID, 2) AS BIGINT) AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S36 - WHERE - rest <> '' -), _S37 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S36 -) SELECT CAST(SUBSTRING(sbcustid, 2) AS BIGINT) AS _expr0, - ( - SELECT - _S0.PART - FROM _S0 AS _S0 - CROSS JOIN _S1 AS _S1 - WHERE - _S0.PART_INDEX <> 0 - AND _S0.PART_INDEX = CASE - WHEN _S0.IDX > 0 - THEN _S0.IDX - WHEN _S0.IDX < 0 - THEN _S1.TOTAL_PARTS + _S0.IDX + 1 - ELSE 1 - END - ) AS p1, - ( - SELECT - _S2.PART - FROM _S2 AS _S2 - CROSS JOIN _S3 AS _S3 - WHERE - _S2.PART_INDEX <> 0 - AND _S2.PART_INDEX = CASE - WHEN _S2.IDX > 0 - THEN _S2.IDX - WHEN _S2.IDX < 0 - THEN _S3.TOTAL_PARTS + _S2.IDX + 1 - ELSE 1 - END - ) AS p2, - ( - SELECT - _S4.PART - FROM _S4 AS _S4 - CROSS JOIN _S5 AS _S5 - WHERE - _S4.PART_INDEX <> 0 - AND _S4.PART_INDEX = CASE - WHEN _S4.IDX > 0 - THEN _S4.IDX - WHEN _S4.IDX < 0 - THEN _S5.TOTAL_PARTS + _S4.IDX + 1 - ELSE 1 - END - ) AS p3, - ( - SELECT - _S6.PART - FROM _S6 AS _S6 - CROSS JOIN _S7 AS _S7 - WHERE - _S6.PART_INDEX <> 0 - AND _S6.PART_INDEX = CASE - WHEN _S6.IDX > 0 - THEN _S6.IDX - WHEN _S6.IDX < 0 - THEN _S7.TOTAL_PARTS + _S6.IDX + 1 - ELSE 1 - END - ) AS p4, - ( - SELECT - _S8.PART - FROM _S8 AS _S8 - CROSS JOIN _S9 AS _S9 - WHERE - _S8.PART_INDEX <> 0 - AND _S8.PART_INDEX = CASE - WHEN _S8.IDX > 0 - THEN _S8.IDX - WHEN _S8.IDX < 0 - THEN _S9.TOTAL_PARTS + _S8.IDX + 1 - ELSE 1 - END - ) AS p5, - ( - SELECT - _S10.PART - FROM _S10 AS _S10 - CROSS JOIN _S11 AS _S11 - WHERE - _S10.PART_INDEX <> 0 - AND _S10.PART_INDEX = CASE - WHEN _S10.IDX > 0 - THEN _S10.IDX - WHEN _S10.IDX < 0 - THEN _S11.TOTAL_PARTS + _S10.IDX + 1 - ELSE 1 - END - ) AS p6, - ( - SELECT - _S12.PART - FROM _S12 AS _S12 - CROSS JOIN _S13 AS _S13 - WHERE - _S12.PART_INDEX <> 0 - AND _S12.PART_INDEX = CASE - WHEN _S12.IDX > 0 - THEN _S12.IDX - WHEN _S12.IDX < 0 - THEN _S13.TOTAL_PARTS + _S12.IDX + 1 - ELSE 1 - END - ) AS p7, - ( - SELECT - _S14.PART - FROM _S14 AS _S14 - CROSS JOIN _S15 AS _S15 - WHERE - _S14.PART_INDEX <> 0 - AND _S14.PART_INDEX = CASE - WHEN _S14.IDX > 0 - THEN _S14.IDX - WHEN _S14.IDX < 0 - THEN _S15.TOTAL_PARTS + _S14.IDX + 1 - ELSE 1 - END - ) AS p8, - ( - SELECT - _S16.PART - FROM _S16 AS _S16 - CROSS JOIN _S17 AS _S17 - WHERE - _S16.PART_INDEX <> 0 - AND _S16.PART_INDEX = CASE - WHEN _S16.IDX > 0 - THEN _S16.IDX - WHEN _S16.IDX < 0 - THEN _S17.TOTAL_PARTS + _S16.IDX + 1 - ELSE 1 - END - ) AS p9, - ( - SELECT - _S18.PART - FROM _S18 AS _S18 - CROSS JOIN _S19 AS _S19 - WHERE - _S18.PART_INDEX <> 0 - AND _S18.PART_INDEX = CASE - WHEN _S18.IDX > 0 - THEN _S18.IDX - WHEN _S18.IDX < 0 - THEN _S19.TOTAL_PARTS + _S18.IDX + 1 - ELSE 1 - END - ) AS p10, - ( - SELECT - _S20.PART - FROM _S20 AS _S20 - CROSS JOIN _S21 AS _S21 - WHERE - _S20.PART_INDEX <> 0 - AND _S20.PART_INDEX = CASE - WHEN _S20.IDX > 0 - THEN _S20.IDX - WHEN _S20.IDX < 0 - THEN _S21.TOTAL_PARTS + _S20.IDX + 1 - ELSE 1 - END - ) AS p11, - ( - SELECT - _S22.PART - FROM _S22 AS _S22 - CROSS JOIN _S23 AS _S23 - WHERE - _S22.PART_INDEX <> 0 - AND _S22.PART_INDEX = CASE - WHEN _S22.IDX > 0 - THEN _S22.IDX - WHEN _S22.IDX < 0 - THEN _S23.TOTAL_PARTS + _S22.IDX + 1 - ELSE 1 - END - ) AS p12, - ( - SELECT - _S24.PART - FROM _S24 AS _S24 - CROSS JOIN _S25 AS _S25 - WHERE - _S24.PART_INDEX <> 0 - AND _S24.PART_INDEX = CASE - WHEN _S24.IDX > 0 - THEN _S24.IDX - WHEN _S24.IDX < 0 - THEN _S25.TOTAL_PARTS + _S24.IDX + 1 - ELSE 1 - END - ) AS p13, - ( - SELECT - _S26.PART - FROM _S26 AS _S26 - CROSS JOIN _S27 AS _S27 - WHERE - _S26.PART_INDEX <> 0 - AND _S26.PART_INDEX = CASE - WHEN _S26.IDX > 0 - THEN _S26.IDX - WHEN _S26.IDX < 0 - THEN _S27.TOTAL_PARTS + _S26.IDX + 1 - ELSE 1 - END - ) AS p14, - ( - SELECT - _S28.PART - FROM _S28 AS _S28 - CROSS JOIN _S29 AS _S29 - WHERE - _S28.PART_INDEX <> 0 - AND _S28.PART_INDEX = CASE - WHEN _S28.IDX > 0 - THEN _S28.IDX - WHEN _S28.IDX < 0 - THEN _S29.TOTAL_PARTS + _S28.IDX + 1 - ELSE 1 - END - ) AS p15, - ( - SELECT - _S30.PART - FROM _S30 AS _S30 - CROSS JOIN _S31 AS _S31 - WHERE - _S30.PART_INDEX <> 0 - AND _S30.PART_INDEX = CASE - WHEN _S30.IDX > 0 - THEN _S30.IDX - WHEN _S30.IDX < 0 - THEN _S31.TOTAL_PARTS + _S30.IDX + 1 - ELSE 1 - END - ) AS p16, - ( - SELECT - _S34.PART - FROM _S34 AS _S34 - CROSS JOIN _S35 AS _S35 - WHERE - _S34.PART_INDEX <> 0 - AND _S34.PART_INDEX = CASE - WHEN _S34.IDX > 0 - THEN _S34.IDX - WHEN _S34.IDX < 0 - THEN _S35.TOTAL_PARTS + _S34.IDX + 1 - ELSE 1 - END - ) AS p17, - ( - SELECT - _S36.PART - FROM _S36 AS _S36 - CROSS JOIN _S37 AS _S37 - WHERE - _S36.PART_INDEX <> 0 - AND _S36.PART_INDEX = CASE - WHEN _S36.IDX > 0 - THEN _S36.IDX - WHEN _S36.IDX < 0 - THEN _S37.TOTAL_PARTS + _S36.IDX + 1 - ELSE 1 - END - ) AS p18 + SPLIT_PART(sbcustname, ' ', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p1, + SPLIT_PART(sbcustname, ' ', 0 - CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p2, + SPLIT_PART(sbcustemail, '.', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p3, + SPLIT_PART(sbcustemail, '.', 0 - CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p4, + SPLIT_PART(sbcustphone, '-', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p5, + SPLIT_PART(sbcustphone, '-', 0 - CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p6, + SPLIT_PART(sbcustpostalcode, '00', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p7, + SPLIT_PART(sbcustpostalcode, '00', 0 - CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p8, + SPLIT_PART(sbcustname, '!', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p9, + SPLIT_PART(sbcustname, '@', 0 - CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p10, + SPLIT_PART(sbcustname, 'aa', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p11, + SPLIT_PART(sbcustname, '#$*', 0 - CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p12, + SPLIT_PART(sbcustname, '', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p13, + SPLIT_PART('', ' ', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p14, + SPLIT_PART(sbcustname, ' ', 0) AS p15, + SPLIT_PART(sbcuststate, sbcuststate, CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p16, + SPLIT_PART(SPLIT_PART(sbcustphone, '-', 1), '5', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p17, + SPLIT_PART(sbcustpostalcode, '0', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p18 FROM MAIN.SBCUSTOMER WHERE CAST(SUBSTRING(sbcustid, 2) AS BIGINT) <= 4 diff --git a/tests/test_sql_refsols/get_part_single_snowflake.sql b/tests/test_sql_refsols/get_part_single_snowflake.sql index 5e79ab067..4a85cbc15 100644 --- a/tests/test_sql_refsols/get_part_single_snowflake.sql +++ b/tests/test_sql_refsols/get_part_single_snowflake.sql @@ -1,49 +1,5 @@ -WITH _S0 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - SBCUSTNAME AS REST, - ' ' AS DELIM, - -1 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S0 - WHERE - rest <> '' -), _S1 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S0 -) SELECT - ( - SELECT - _S0.PART - FROM _S0 AS _S0 - CROSS JOIN _S1 AS _S1 - WHERE - _S0.PART_INDEX <> 0 - AND _S0.PART_INDEX = CASE - WHEN _S0.IDX > 0 - THEN _S0.IDX - WHEN _S0.IDX < 0 - THEN _S1.TOTAL_PARTS + _S0.IDX + 1 - ELSE 1 - END - ) AS last_name + SPLIT_PART(sbcustname, ' ', -1) AS last_name FROM MAIN.SBCUSTOMER WHERE sbcustname = 'Alex Rodriguez' diff --git a/tests/test_sql_refsols/hour_minute_day_snowflake.sql b/tests/test_sql_refsols/hour_minute_day_snowflake.sql index 8d946f1b4..07b3a77e5 100644 --- a/tests/test_sql_refsols/hour_minute_day_snowflake.sql +++ b/tests/test_sql_refsols/hour_minute_day_snowflake.sql @@ -1,8 +1,8 @@ SELECT SBTRANSACTION.sbtxid AS transaction_id, - HOUR(SBTRANSACTION.sbtxdatetime) AS _expr0, - MINUTE(SBTRANSACTION.sbtxdatetime) AS _expr1, - SECOND(SBTRANSACTION.sbtxdatetime) AS _expr2 + HOUR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr0, + MINUTE(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr1, + SECOND(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr2 FROM MAIN.SBTRANSACTION AS SBTRANSACTION JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid diff --git a/tests/test_sql_refsols/quantile_test_1_snowflake.sql b/tests/test_sql_refsols/quantile_test_1_snowflake.sql index 4c6fa368a..f1352353d 100644 --- a/tests/test_sql_refsols/quantile_test_1_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_1_snowflake.sql @@ -3,4 +3,5 @@ SELECT ORDERS.o_totalprice) AS seventieth_order_price FROM TPCH.CUSTOMER AS CUSTOMER JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey AND YEAR(ORDERS.o_orderdate) = 1998 + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 diff --git a/tests/test_sql_refsols/quantile_test_2_snowflake.sql b/tests/test_sql_refsols/quantile_test_2_snowflake.sql index 7c4c58595..779e0818e 100644 --- a/tests/test_sql_refsols/quantile_test_2_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_2_snowflake.sql @@ -30,7 +30,8 @@ WITH _S0 AS ( CUSTOMER.c_nationkey AS C_NATIONKEY FROM TPCH.CUSTOMER AS CUSTOMER JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey AND YEAR(ORDERS.o_orderdate) = 1998 + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 GROUP BY CUSTOMER.c_nationkey ) diff --git a/tests/test_sql_refsols/smoke_a_snowflake.sql b/tests/test_sql_refsols/smoke_a_snowflake.sql index e38752eaa..7a9508034 100644 --- a/tests/test_sql_refsols/smoke_a_snowflake.sql +++ b/tests/test_sql_refsols/smoke_a_snowflake.sql @@ -1,62 +1,3 @@ -WITH _S2 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - P_NAME AS REST, - ' ' AS DELIM, - 2 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S2 - WHERE - rest <> '' -), _S3 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S2 -), _S0 AS ( - SELECT - 0 AS PART_INDEX, - '' AS PART, - P_NAME AS REST, - ' ' AS DELIM, - -1 AS IDX - UNION ALL - SELECT - part_index + 1 AS PART_INDEX, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN rest - ELSE SUBSTRING(rest, 1, CHARINDEX(delim, rest) - 1) - END AS PART, - CASE - WHEN CHARINDEX(delim, rest) = 0 OR delim = '' - THEN '' - ELSE SUBSTRING(rest, CHARINDEX(delim, rest) + LENGTH(delim)) - END AS REST, - delim AS DELIM, - idx AS IDX - FROM _S0 - WHERE - rest <> '' -), _S1 AS ( - SELECT - COUNT(*) - 1 AS TOTAL_PARTS - FROM _S0 -) SELECT p_partkey AS key, CAST(CONCAT_WS( @@ -92,40 +33,7 @@ SELECT END ) ) AS BIGINT) AS a, - UPPER( - LEAST( - ( - SELECT - _S2.PART - FROM _S2 AS _S2 - CROSS JOIN _S3 AS _S3 - WHERE - _S2.PART_INDEX <> 0 - AND _S2.PART_INDEX = CASE - WHEN _S2.IDX > 0 - THEN _S2.IDX - WHEN _S2.IDX < 0 - THEN _S3.TOTAL_PARTS + _S2.IDX + 1 - ELSE 1 - END - ), - ( - SELECT - _S0.PART - FROM _S0 AS _S0 - CROSS JOIN _S1 AS _S1 - WHERE - _S0.PART_INDEX <> 0 - AND _S0.PART_INDEX = CASE - WHEN _S0.IDX > 0 - THEN _S0.IDX - WHEN _S0.IDX < 0 - THEN _S1.TOTAL_PARTS + _S0.IDX + 1 - ELSE 1 - END - ) - ) - ) AS b, + UPPER(LEAST(SPLIT_PART(p_name, ' ', 2), SPLIT_PART(p_name, ' ', -1))) AS b, TRIM(SUBSTRING(p_name, 1, 2), 'o') AS c, LPAD(CAST(p_size AS TEXT), 3, '0') AS d, RPAD(CAST(p_size AS TEXT), 3, '0') AS e, diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql index 700498475..8dd6198d8 100644 --- a/tests/test_sql_refsols/smoke_b_snowflake.sql +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -1,7 +1,32 @@ SELECT o_orderkey AS key, - CONCAT_WS('_', YEAR(o_orderdate), QUARTER(o_orderdate), MONTH(o_orderdate), DAY(o_orderdate)) AS a, - CONCAT_WS(':', DAYNAME(o_orderdate), DAYOFWEEK(o_orderdate)) AS b, + CONCAT_WS( + '_', + YEAR(CAST(o_orderdate AS TIMESTAMP)), + QUARTER(CAST(o_orderdate AS TIMESTAMP)), + MONTH(CAST(o_orderdate AS TIMESTAMP)), + DAY(CAST(o_orderdate AS TIMESTAMP)) + ) AS a, + CONCAT_WS( + ':', + CASE + WHEN DAYOFWEEK(o_orderdate) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(o_orderdate) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(o_orderdate) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(o_orderdate) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(o_orderdate) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(o_orderdate) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(o_orderdate) = 6 + THEN 'Saturday' + END, + DAYOFWEEK(o_orderdate) + ) AS b, DATEADD(DAY, -13, DATEADD(MONTH, 6, DATE_TRUNC('YEAR', CAST(o_orderdate AS TIMESTAMP)))) AS c, DATEADD(HOUR, 25, DATEADD(YEAR, 1, DATE_TRUNC('QUARTER', CAST(o_orderdate AS TIMESTAMP)))) AS d, DATE_TRUNC('MINUTE', CAST('2025-01-01 12:35:13' AS TIMESTAMP)) AS e, @@ -13,9 +38,9 @@ SELECT CAST('2025-01-01 12:35:13' AS TIMESTAMP) AS g, CONCAT_WS( ';', - HOUR('2025-01-01 12:35:13'), - MINUTE(CAST('2025-01-01 13:20:13' AS TIMESTAMP)), - SECOND(CAST('2025-01-01 12:35:06' AS TIMESTAMP)) + HOUR(CAST('2025-01-01 12:35:13' AS TIMESTAMP)), + MINUTE(CAST(CAST('2025-01-01 13:20:13' AS TIMESTAMP) AS TIMESTAMP)), + SECOND(CAST(CAST('2025-01-01 12:35:06' AS TIMESTAMP) AS TIMESTAMP)) ) AS h, DATEDIFF(YEAR, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS i, DATEDIFF(QUARTER, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS j, diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql index 322cf643c..a2c995411 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql @@ -1,7 +1,22 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 2 @@ -9,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql index bb7216557..45b52d1b0 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql @@ -1,10 +1,26 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( DAYOFWEEK(sbtxdatetime) + 2 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql index 22caf973a..b07dab0be 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql @@ -1,7 +1,22 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 6 @@ -9,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql index 133633d57..f099aa40a 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql @@ -1,10 +1,26 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( DAYOFWEEK(sbtxdatetime) + 6 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql index dbc69fff9..1a0acf73f 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql @@ -1,7 +1,22 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 1 @@ -9,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql index 0a566c60d..1a300402d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql @@ -1,10 +1,26 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( DAYOFWEEK(sbtxdatetime) + 1 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql index 2c8336149..7d256d300 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql @@ -1,8 +1,24 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, DAYOFWEEK(sbtxdatetime) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql index 259778752..ae3dc4ef6 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql @@ -1,8 +1,24 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, DAYOFWEEK(sbtxdatetime) AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql index d017e2de6..1903bf107 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql @@ -1,7 +1,22 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 3 @@ -9,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql index bd88dffad..034f14b90 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql @@ -1,10 +1,26 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( DAYOFWEEK(sbtxdatetime) + 3 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql index d5440d28c..e6d981819 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql @@ -1,7 +1,22 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 5 @@ -9,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql index adf1a6132..9fe22d6a6 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql @@ -1,10 +1,26 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( DAYOFWEEK(sbtxdatetime) + 5 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql index bef13245d..68348bfbc 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql @@ -1,7 +1,22 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( ( DAYOFWEEK(sbtxdatetime) + 4 @@ -9,4 +24,5 @@ SELECT ) + 1 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql index 2a7bd5b6e..04563bd7e 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql @@ -1,10 +1,26 @@ SELECT sbtxdatetime AS date_time, DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, - DAYNAME(sbtxdatetime) AS dayname, + CASE + WHEN DAYOFWEEK(sbtxdatetime) = 0 + THEN 'Sunday' + WHEN DAYOFWEEK(sbtxdatetime) = 1 + THEN 'Monday' + WHEN DAYOFWEEK(sbtxdatetime) = 2 + THEN 'Tuesday' + WHEN DAYOFWEEK(sbtxdatetime) = 3 + THEN 'Wednesday' + WHEN DAYOFWEEK(sbtxdatetime) = 4 + THEN 'Thursday' + WHEN DAYOFWEEK(sbtxdatetime) = 5 + THEN 'Friday' + WHEN DAYOFWEEK(sbtxdatetime) = 6 + THEN 'Saturday' + END AS dayname, ( DAYOFWEEK(sbtxdatetime) + 4 ) % 7 AS dayofweek FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql index cc239b008..8472a793a 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -8,7 +8,7 @@ JOIN MAIN.CALENDAR AS CALENDAR_2 JOIN MAIN.DEVICES AS DEVICES ON CALENDAR_2.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) WHERE - YEAR(CALENDAR.ca_dt) = 2024 + YEAR(CAST(CALENDAR.ca_dt AS TIMESTAMP)) = 2024 GROUP BY CALENDAR.ca_dt ORDER BY diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index 043e554ed..e5078e80f 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -12,24 +12,24 @@ WITH _S0 AS ( FROM MAIN.PRODUCTS ), _S6 AS ( SELECT - YEAR(_S1.PR_RELEASE) AS RELEASE_YEAR, + YEAR(CAST(_S1.PR_RELEASE AS TIMESTAMP)) AS RELEASE_YEAR, SUM(_S0.N_ROWS) AS SUM_N_ROWS FROM _S0 AS _S0 JOIN _S1 AS _S1 ON _S0.DE_PRODUCT_ID = _S1.PR_ID GROUP BY - YEAR(_S1.PR_RELEASE) + YEAR(CAST(_S1.PR_RELEASE AS TIMESTAMP)) ), _S7 AS ( SELECT COUNT(*) AS N_ROWS, - YEAR(_S3.PR_RELEASE) AS RELEASE_YEAR + YEAR(CAST(_S3.PR_RELEASE AS TIMESTAMP)) AS RELEASE_YEAR FROM MAIN.DEVICES AS DEVICES JOIN _S1 AS _S3 ON DEVICES.de_product_id = _S3.PR_ID JOIN MAIN.INCIDENTS AS INCIDENTS ON DEVICES.de_id = INCIDENTS.in_device_id GROUP BY - YEAR(_S3.PR_RELEASE) + YEAR(CAST(_S3.PR_RELEASE AS TIMESTAMP)) ) SELECT _S6.RELEASE_YEAR AS year, diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index eab0f7272..789e05e25 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -3,7 +3,7 @@ WITH _T2 AS ( ca_dt AS CA_DT FROM MAIN.CALENDAR WHERE - YEAR(ca_dt) IN (2020, 2021) + YEAR(CAST(ca_dt AS TIMESTAMP)) IN (2020, 2021) ), _T5 AS ( SELECT co_id AS CO_ID, @@ -39,7 +39,11 @@ WITH _T2 AS ( _T7.CA_DT ) SELECT - CONCAT_WS('-', YEAR(_T2.CA_DT), LPAD(MONTH(_T2.CA_DT), 2, '0')) AS month, + CONCAT_WS( + '-', + YEAR(CAST(_T2.CA_DT AS TIMESTAMP)), + LPAD(MONTH(CAST(_T2.CA_DT AS TIMESTAMP)), 2, '0') + ) AS month, ROUND(( 1000000.0 * COALESCE(SUM(_S15.N_ROWS), 0) ) / COALESCE(SUM(_S7.N_ROWS), 0), 2) AS ir @@ -49,7 +53,7 @@ LEFT JOIN _S7 AS _S7 LEFT JOIN _S15 AS _S15 ON _S15.CA_DT = _T2.CA_DT GROUP BY - MONTH(_T2.CA_DT), - YEAR(_T2.CA_DT) + MONTH(CAST(_T2.CA_DT AS TIMESTAMP)), + YEAR(CAST(_T2.CA_DT AS TIMESTAMP)) ORDER BY MONTH NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index 9910089cc..e35617cfd 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -43,17 +43,17 @@ WITH _S14 AS ( SELECT SUM(_S7.N_ROWS) AS SUM_EXPR_4, SUM(_S13.N_ROWS) AS SUM_N_ROWS, - YEAR(_S6.CA_DT) AS YEAR + YEAR(CAST(_S6.CA_DT AS TIMESTAMP)) AS YEAR FROM _S6 AS _S6 LEFT JOIN _S7 AS _S7 ON _S6.CA_DT = _S7.CA_DT LEFT JOIN _S13 AS _S13 ON _S13.CA_DT = _S6.CA_DT GROUP BY - YEAR(_S6.CA_DT) + YEAR(CAST(_S6.CA_DT AS TIMESTAMP)) ) SELECT - _S15.YEAR - YEAR(_S14.RELEASE_DATE) AS years_since_release, + _S15.YEAR - YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) AS years_since_release, ROUND( SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 @@ -78,6 +78,6 @@ SELECT COALESCE(_S15.SUM_EXPR_4, 0) AS incidents FROM _S14 AS _S14 JOIN _S15 AS _S15 - ON _S15.YEAR >= YEAR(_S14.RELEASE_DATE) + ON _S15.YEAR >= YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) ORDER BY - _S15.YEAR - YEAR(_S14.RELEASE_DATE) NULLS FIRST + _S15.YEAR - YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index 93e09195b..0cc826cc8 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -24,14 +24,14 @@ WITH _S2 AS ( SELECT SUM(_S3.N_ROWS) AS SUM_EXPR_3, SUM(_S7.N_ROWS) AS SUM_N_ROWS, - YEAR(_S2.CA_DT) AS YEAR + YEAR(CAST(_S2.CA_DT AS TIMESTAMP)) AS YEAR FROM _S2 AS _S2 LEFT JOIN _S3 AS _S3 ON _S2.CA_DT = _S3.CA_DT LEFT JOIN _S7 AS _S7 ON _S2.CA_DT = _S7.CA_DT GROUP BY - YEAR(_S2.CA_DT) + YEAR(CAST(_S2.CA_DT AS TIMESTAMP)) ) SELECT YEAR AS yr, diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index 918d36d7f..346c1ea25 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -6,7 +6,7 @@ WITH _T3 AS ( sbtxdatetime AS SBTXDATETIME FROM MAIN.SBTRANSACTION WHERE - YEAR(sbtxdatetime) = 2023 + YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 ), _T1 AS ( SELECT SBTXDATETIME diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql index d7f609d7b..44fc31a7c 100644 --- a/tests/test_sql_refsols/tpch_q10_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -8,7 +8,8 @@ WITH _S3 AS ( JOIN TPCH.LINEITEM AS LINEITEM ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' WHERE - QUARTER(ORDERS.o_orderdate) = 4 AND YEAR(ORDERS.o_orderdate) = 1993 + QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 4 + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY ORDERS.o_custkey ) diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql index be986f217..0f8630598 100644 --- a/tests/test_sql_refsols/tpch_q12_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -11,7 +11,7 @@ WHERE AND ( LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' ) - AND YEAR(LINEITEM.l_receiptdate) = 1994 + AND YEAR(CAST(LINEITEM.l_receiptdate AS TIMESTAMP)) = 1994 GROUP BY LINEITEM.l_shipmode ORDER BY diff --git a/tests/test_sql_refsols/tpch_q14_snowflake.sql b/tests/test_sql_refsols/tpch_q14_snowflake.sql index 80c07210e..cf4f6d086 100644 --- a/tests/test_sql_refsols/tpch_q14_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q14_snowflake.sql @@ -19,4 +19,5 @@ FROM TPCH.LINEITEM AS LINEITEM JOIN TPCH.PART AS PART ON LINEITEM.l_partkey = PART.p_partkey WHERE - MONTH(LINEITEM.l_shipdate) = 9 AND YEAR(LINEITEM.l_shipdate) = 1995 + MONTH(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) = 9 + AND YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) = 1995 diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index c4e08aa26..efb446700 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -4,7 +4,7 @@ WITH _S3 AS ( l_partkey AS L_PARTKEY FROM TPCH.LINEITEM WHERE - YEAR(l_shipdate) = 1994 + YEAR(CAST(l_shipdate AS TIMESTAMP)) = 1994 GROUP BY l_partkey ), _S5 AS ( diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql index 55968be2b..e2ca5ec0b 100644 --- a/tests/test_sql_refsols/tpch_q4_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -15,8 +15,8 @@ LEFT JOIN _u_0 AS _u_0 ON ORDERS.o_orderkey = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL - AND QUARTER(ORDERS.o_orderdate) = 3 - AND YEAR(ORDERS.o_orderdate) = 1993 + AND QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 3 + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY ORDERS.o_orderpriority ORDER BY diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index 36b416f04..7020673d4 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -18,7 +18,7 @@ WITH _S1 AS ( SELECT _S1.N_NAME AS SUPP_NATION, _S9.N_NAME AS CUST_NATION, - YEAR(LINEITEM.l_shipdate) AS L_YEAR, + YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) AS L_YEAR, COALESCE(SUM(LINEITEM.l_extendedprice * ( 1 - LINEITEM.l_discount )), 0) AS REVENUE @@ -36,9 +36,9 @@ JOIN _S9 AS _S9 _S1.N_NAME = 'GERMANY' OR _S9.N_NAME = 'GERMANY' ) WHERE - YEAR(LINEITEM.l_shipdate) IN (1995, 1996) + YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) IN (1995, 1996) GROUP BY - YEAR(LINEITEM.l_shipdate), + YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)), _S9.N_NAME, _S1.N_NAME ORDER BY diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql index 2a0f9d0ac..847aa3334 100644 --- a/tests/test_sql_refsols/tpch_q8_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -1,5 +1,5 @@ SELECT - YEAR(ORDERS.o_orderdate) AS O_YEAR, + YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) AS O_YEAR, COALESCE( SUM( IFF( @@ -19,7 +19,7 @@ JOIN TPCH.PART AS PART ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' JOIN TPCH.ORDERS AS ORDERS ON LINEITEM.l_orderkey = ORDERS.o_orderkey - AND YEAR(ORDERS.o_orderdate) IN (1995, 1996) + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) IN (1995, 1996) JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_custkey = ORDERS.o_custkey JOIN TPCH.NATION AS NATION @@ -31,4 +31,4 @@ JOIN TPCH.SUPPLIER AS SUPPLIER JOIN TPCH.NATION AS NATION_2 ON NATION_2.n_nationkey = SUPPLIER.s_nationkey GROUP BY - YEAR(ORDERS.o_orderdate) + YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index fc7b6fb4b..56477571d 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -1,6 +1,6 @@ SELECT NATION.n_name AS NATION, - YEAR(ORDERS.o_orderdate) AS O_YEAR, + YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) AS O_YEAR, COALESCE( SUM( LINEITEM.l_extendedprice * ( @@ -22,7 +22,7 @@ JOIN TPCH.PARTSUPP AS PARTSUPP ON LINEITEM.l_partkey = PARTSUPP.ps_partkey AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey GROUP BY - YEAR(ORDERS.o_orderdate), + YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)), NATION.n_name ORDER BY NATION.n_name NULLS FIRST, diff --git a/tests/test_sql_refsols/week_offset_snowflake.sql b/tests/test_sql_refsols/week_offset_snowflake.sql index 35d023659..5be64739e 100644 --- a/tests/test_sql_refsols/week_offset_snowflake.sql +++ b/tests/test_sql_refsols/week_offset_snowflake.sql @@ -10,4 +10,5 @@ SELECT DATEADD(WEEK, 2, DATEADD(YEAR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj8 FROM MAIN.SBTRANSACTION WHERE - DAY(sbtxdatetime) > 1 AND YEAR(sbtxdatetime) < 2025 + DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 From 0a8ac030a67bce4bae81dccf13811d0f90c7f1e9 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 6 Aug 2025 16:15:50 -0700 Subject: [PATCH 13/46] fix date_trunc --- pydough/sqlglot/execute_relational.py | 2 +- pydough/sqlglot/override_simplify.py | 227 ++++++++++++++++++ .../base_transform_bindings.py | 15 +- .../datetime_functions_ansi.sql | 2 +- .../datetime_functions_snowflake.sql | 2 +- .../datetime_sampler_ansi.sql | 52 ++-- .../datetime_sampler_snowflake.sql | 10 +- tests/test_sql_refsols/smoke_b_ansi.sql | 6 +- tests/test_sql_refsols/smoke_b_snowflake.sql | 2 +- tests/testing_utilities.py | 17 +- 10 files changed, 298 insertions(+), 37 deletions(-) create mode 100644 pydough/sqlglot/override_simplify.py diff --git a/pydough/sqlglot/execute_relational.py b/pydough/sqlglot/execute_relational.py index 3b00b8222..328bbd223 100644 --- a/pydough/sqlglot/execute_relational.py +++ b/pydough/sqlglot/execute_relational.py @@ -21,7 +21,6 @@ from sqlglot.optimizer.normalize import normalize from sqlglot.optimizer.optimize_joins import optimize_joins from sqlglot.optimizer.qualify import qualify -from sqlglot.optimizer.simplify import simplify from sqlglot.optimizer.unnest_subqueries import unnest_subqueries from pydough.configs import PyDoughConfigs @@ -38,6 +37,7 @@ from .override_merge_subqueries import merge_subqueries from .override_pushdown_predicates import pushdown_predicates from .override_pushdown_projections import pushdown_projections +from .override_simplify import simplify from .sqlglot_relational_visitor import SQLGlotRelationalVisitor __all__ = ["convert_relation_to_sql", "execute_df"] diff --git a/pydough/sqlglot/override_simplify.py b/pydough/sqlglot/override_simplify.py new file mode 100644 index 000000000..c1b695a17 --- /dev/null +++ b/pydough/sqlglot/override_simplify.py @@ -0,0 +1,227 @@ +""" +Overridden version of the simplify.py file from sqlglot. +""" + +from __future__ import annotations + +import datetime +import typing as t + +from sqlglot import Dialect, exp +from sqlglot.helper import merge_ranges, while_changing +from sqlglot.optimizer.simplify import ( + DATETRUNC_BINARY_COMPARISONS, + DATETRUNC_COMPARISONS, + DATETRUNCS, + FINAL, + UnsupportedUnit, + _datetrunc_eq_expression, + _datetrunc_range, + _is_datetrunc_predicate, + absorb_and_eliminate, + catch, + connector_depth, + date_floor, + date_literal, + extract_date, + extract_type, + flatten, + logger, + propagate_constants, + remove_complements, + remove_where_true, + rewrite_between, + simplify_coalesce, + simplify_concat, + simplify_conditionals, + simplify_connectors, + simplify_equality, + simplify_literals, + simplify_not, + simplify_parens, + simplify_startswith, + sort_comparison, + uniq_sort, +) + +if t.TYPE_CHECKING: + from sqlglot.dialects.dialect import DialectType + + DateTruncBinaryTransform = t.Callable[ + [exp.Expression, datetime.date, str, Dialect, exp.DataType], + exp.Expression | None, + ] + + +def simplify( + expression: exp.Expression, + constant_propagation: bool = False, + dialect: DialectType = None, + max_depth: int | None = None, +): + """ + Rewrite sqlglot AST to simplify expressions. + + Example: + >>> import sqlglot + >>> expression = sqlglot.parse_one("TRUE AND TRUE") + >>> simplify(expression).sql() + 'TRUE' + + Args: + expression: expression to simplify + constant_propagation: whether the constant propagation rule should be used + max_depth: Chains of Connectors (AND, OR, etc) exceeding `max_depth` will be skipped + Returns: + sqlglot.Expression: simplified expression + """ + + dialect = Dialect.get_or_raise(dialect) + + def _simplify(expression, root=True): + if ( + max_depth + and isinstance(expression, exp.Connector) + and not isinstance(expression.parent, exp.Connector) + ): + depth = connector_depth(expression) + if depth > max_depth: + logger.info( + f"Skipping simplification because connector depth {depth} exceeds max {max_depth}" + ) + return expression + + if expression.meta.get(FINAL): + return expression + + # group by expressions cannot be simplified, for example + # select x + 1 + 1 FROM y GROUP BY x + 1 + 1 + # the projection must exactly match the group by key + group = expression.args.get("group") + + if group and hasattr(expression, "selects"): + groups = set(group.expressions) + group.meta[FINAL] = True + + for e in expression.selects: + for node in e.walk(): + if node in groups: + e.meta[FINAL] = True + break + + having = expression.args.get("having") + if having: + for node in having.walk(): + if node in groups: + having.meta[FINAL] = True + break + + # Pre-order transformations + node = expression + node = rewrite_between(node) + node = uniq_sort(node, root) + node = absorb_and_eliminate(node, root) + node = simplify_concat(node) + node = simplify_conditionals(node) + + if constant_propagation: + node = propagate_constants(node, root) + + exp.replace_children(node, lambda e: _simplify(e, False)) + + # Post-order transformations + node = simplify_not(node) + node = flatten(node) + node = simplify_connectors(node, root) + node = remove_complements(node, root) + node = simplify_coalesce(node) + node.parent = expression.parent + node = simplify_literals(node, root) + node = simplify_equality(node) + node = simplify_parens(node) + node = simplify_datetrunc(node, dialect) + node = sort_comparison(node) + node = simplify_startswith(node) + + if root: + expression.replace(node) + return node + + expression = while_changing(expression, _simplify) + remove_where_true(expression) + return expression + + +@catch(ModuleNotFoundError, UnsupportedUnit) +def simplify_datetrunc(expression: exp.Expression, dialect: Dialect) -> exp.Expression: + """Simplify expressions like `DATE_TRUNC('year', x) >= CAST('2021-01-01' AS DATE)`""" + comparison = expression.__class__ + + if isinstance(expression, DATETRUNCS): + this = expression.this + trunc_type = extract_type(this) + date = extract_date(this) + #### Start of PyDough Change #### + # If date is datetime.datetime, it should NOT enter the if statement + # because `date_floor` only works correctly on datetime.date + if date and not isinstance(date, datetime.datetime) and expression.unit: + return date_literal( + date_floor(date, expression.unit.name.lower(), dialect), trunc_type + ) + #### End of PyDough Change #### + elif comparison not in DATETRUNC_COMPARISONS: + return expression + + if isinstance(expression, exp.Binary): + l, r = expression.left, expression.right # noqa: E741 + + if not _is_datetrunc_predicate(l, r): + return expression + + l = t.cast(exp.DateTrunc, l) # noqa: E741 + trunc_arg = l.this + unit = l.unit.name.lower() + date = extract_date(r) + + if not date: + return expression + + return ( + DATETRUNC_BINARY_COMPARISONS[comparison]( + trunc_arg, date, unit, dialect, extract_type(r) + ) + or expression + ) + + if isinstance(expression, exp.In): + l = expression.this # noqa: E741 + rs = expression.expressions + + if rs and all(_is_datetrunc_predicate(l, r) for r in rs): + l = t.cast(exp.DateTrunc, l) # noqa: E741 + unit = l.unit.name.lower() + + ranges = [] + for r in rs: + date = extract_date(r) + if not date: + return expression + drange = _datetrunc_range(date, unit, dialect) + if drange: + ranges.append(drange) + + if not ranges: + return expression + + ranges = merge_ranges(ranges) + target_type = extract_type(*rs) + + return exp.or_( + *[ + _datetrunc_eq_expression(l, drange, target_type) + for drange in ranges + ], + copy=False, + ) + + return expression diff --git a/pydough/sqlglot/transform_bindings/base_transform_bindings.py b/pydough/sqlglot/transform_bindings/base_transform_bindings.py index 18c9a30c9..4d62e7057 100644 --- a/pydough/sqlglot/transform_bindings/base_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/base_transform_bindings.py @@ -1362,10 +1362,17 @@ def apply_datetime_truncation( Returns: The SQLGlot expression to truncate `base`. """ - return sqlglot_expressions.DateTrunc( - this=self.make_datetime_arg(base), - unit=sqlglot_expressions.Var(this=unit.value), - ) + match unit: + case DateTimeUnit.HOUR | DateTimeUnit.MINUTE | DateTimeUnit.SECOND: + return sqlglot_expressions.TimestampTrunc( + this=self.make_datetime_arg(base), + unit=sqlglot_expressions.Var(this=unit.value.lower()), + ) + case _: + return sqlglot_expressions.DateTrunc( + this=self.make_datetime_arg(base), + unit=sqlglot_expressions.Var(this=unit.value.lower()), + ) def apply_datetime_offset( self, base: SQLGlotExpression, amt: int, unit: DateTimeUnit diff --git a/tests/test_sql_refsols/datetime_functions_ansi.sql b/tests/test_sql_refsols/datetime_functions_ansi.sql index 021f5b708..fa4939796 100644 --- a/tests/test_sql_refsols/datetime_functions_ansi.sql +++ b/tests/test_sql_refsols/datetime_functions_ansi.sql @@ -3,7 +3,7 @@ SELECT DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) AS ts_now_2, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AS ts_now_3, DATE_ADD(CURRENT_TIMESTAMP(), 1, 'HOUR') AS ts_now_4, - CAST('2025-01-01 00:00:00' AS TIMESTAMP) AS ts_now_5, + DATE_TRUNC('MONTH', CAST('2025-01-01 00:00:00' AS TIMESTAMP)) AS ts_now_5, CAST('1995-10-08 00:00:00' AS TIMESTAMP) AS ts_now_6, EXTRACT(YEAR FROM CAST(o_orderdate AS DATETIME)) AS year_col, EXTRACT(YEAR FROM CAST('2020-05-01 00:00:00' AS TIMESTAMP)) AS year_py, diff --git a/tests/test_sql_refsols/datetime_functions_snowflake.sql b/tests/test_sql_refsols/datetime_functions_snowflake.sql index e7c3489c9..1eacacc03 100644 --- a/tests/test_sql_refsols/datetime_functions_snowflake.sql +++ b/tests/test_sql_refsols/datetime_functions_snowflake.sql @@ -3,7 +3,7 @@ SELECT DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) AS ts_now_2, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AS ts_now_3, DATEADD(HOUR, 1, CURRENT_TIMESTAMP()) AS ts_now_4, - CAST('2025-01-01 00:00:00' AS TIMESTAMP) AS ts_now_5, + DATE_TRUNC('MONTH', CAST('2025-01-01 00:00:00' AS TIMESTAMP)) AS ts_now_5, CAST('1995-10-08 00:00:00' AS TIMESTAMP) AS ts_now_6, YEAR(CAST(o_orderdate AS TIMESTAMP)) AS year_col, YEAR(CAST('2020-05-01 00:00:00' AS TIMESTAMP)) AS year_py, diff --git a/tests/test_sql_refsols/datetime_sampler_ansi.sql b/tests/test_sql_refsols/datetime_sampler_ansi.sql index 23a502279..2d55f5a3b 100644 --- a/tests/test_sql_refsols/datetime_sampler_ansi.sql +++ b/tests/test_sql_refsols/datetime_sampler_ansi.sql @@ -19,29 +19,29 @@ SELECT CURRENT_TIMESTAMP() AS _expr17, CURRENT_TIMESTAMP() AS _expr18, CAST(o_orderdate AS TIMESTAMP) AS _expr19, - DATE_TRUNC('SECOND', CURRENT_TIMESTAMP()) AS _expr20, + TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), SECOND) AS _expr20, DATE_ADD(DATE_ADD(DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()), 8, 'MINUTE'), -141, 'MONTH') AS _expr21, - DATE_TRUNC('HOUR', DATE_TRUNC('SECOND', DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()))) AS _expr22, - DATE_TRUNC('HOUR', DATE_TRUNC('SECOND', DATE_TRUNC('HOUR', CURRENT_TIMESTAMP()))) AS _expr23, + TIMESTAMP_TRUNC(TIMESTAMP_TRUNC(DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()), SECOND), HOUR) AS _expr22, + TIMESTAMP_TRUNC(TIMESTAMP_TRUNC(TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), HOUR), SECOND), HOUR) AS _expr23, DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -96, 'HOUR'), 15, 'YEAR') AS _expr24, DATE_ADD( - DATE_TRUNC('MINUTE', DATE_ADD(DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()), -3, 'YEAR')), + TIMESTAMP_TRUNC(DATE_ADD(DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()), -3, 'YEAR'), MINUTE), 65, 'MONTH' ) AS _expr25, DATE_TRUNC('YEAR', DATE_ADD(CAST(o_orderdate AS TIMESTAMP), -56, 'HOUR')) AS _expr26, - DATE_TRUNC('SECOND', DATE_TRUNC('MINUTE', DATE_ADD(CURRENT_TIMESTAMP(), -63, 'DAY'))) AS _expr27, + TIMESTAMP_TRUNC(TIMESTAMP_TRUNC(DATE_ADD(CURRENT_TIMESTAMP(), -63, 'DAY'), MINUTE), SECOND) AS _expr27, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AS _expr28, - DATE_ADD(DATE_TRUNC('SECOND', DATE_ADD(CURRENT_TIMESTAMP(), -312, 'HOUR')), 48, 'YEAR') AS _expr29, + DATE_ADD(TIMESTAMP_TRUNC(DATE_ADD(CURRENT_TIMESTAMP(), -312, 'HOUR'), SECOND), 48, 'YEAR') AS _expr29, DATE_ADD( DATE_ADD(DATE_TRUNC('DAY', DATE_ADD(CURRENT_TIMESTAMP(), 75, 'DAY')), 600, 'MINUTE'), -294, 'DAY' ) AS _expr30, DATE_ADD(DATE_ADD(DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()), 480, 'MONTH'), -45, 'YEAR') AS _expr31, - DATE_TRUNC( - 'SECOND', - DATE_TRUNC('DAY', DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -270, 'MINUTE'), -34, 'SECOND')) + TIMESTAMP_TRUNC( + DATE_TRUNC('DAY', DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -270, 'MINUTE'), -34, 'SECOND')), + SECOND ) AS _expr32, DATE_ADD(DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()), 213, 'SECOND') AS _expr33, DATE_ADD( @@ -51,13 +51,13 @@ SELECT ) AS _expr34, DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) AS _expr35, DATE_ADD( - DATE_ADD(DATE_TRUNC('HOUR', CAST('2025-01-01' AS TIMESTAMP)), 49, 'MINUTE'), + DATE_ADD(TIMESTAMP_TRUNC(CAST('2025-01-01' AS TIMESTAMP), HOUR), 49, 'MINUTE'), 91, 'YEAR' ) AS _expr36, DATE_TRUNC('DAY', DATE_TRUNC('YEAR', CURRENT_TIMESTAMP())) AS _expr37, DATE_TRUNC('YEAR', DATE_TRUNC('DAY', CURRENT_TIMESTAMP())) AS _expr38, - CAST('2025-07-01 13:20:45' AS TIMESTAMP) AS _expr39, + DATE_ADD(DATE_TRUNC('MONTH', CAST('2025-07-04 12:58:45' AS TIMESTAMP)), 22, 'MINUTE') AS _expr39, DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()) AS _expr40, DATE_TRUNC( 'YEAR', @@ -69,14 +69,14 @@ SELECT ) AS _expr41, DATE_ADD(CURRENT_TIMESTAMP(), 192, 'MONTH') AS _expr42, DATE_ADD( - DATE_TRUNC('HOUR', DATE_TRUNC('MINUTE', DATE_TRUNC('HOUR', CURRENT_TIMESTAMP()))), + TIMESTAMP_TRUNC(TIMESTAMP_TRUNC(TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), HOUR), MINUTE), HOUR), 486, 'MINUTE' ) AS _expr43, - DATE_ADD(DATE_TRUNC('SECOND', CURRENT_TIMESTAMP()), -50, 'HOUR') AS _expr44, - DATE_TRUNC( - 'HOUR', - DATE_ADD(DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), 297, 'DAY'), 72, 'MONTH'), -92, 'MONTH') + DATE_ADD(TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), SECOND), -50, 'HOUR') AS _expr44, + TIMESTAMP_TRUNC( + DATE_ADD(DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), 297, 'DAY'), 72, 'MONTH'), -92, 'MONTH'), + HOUR ) AS _expr45, DATE_TRUNC('DAY', DATE_ADD(CURRENT_TIMESTAMP(), 285, 'SECOND')) AS _expr46, CAST('1999-05-15 00:00:00' AS TIMESTAMP) AS _expr47, @@ -86,26 +86,32 @@ SELECT 'DAY' ) AS _expr48, DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), 212, 'MINUTE'), 368, 'YEAR') AS _expr49, - DATE_TRUNC('MINUTE', DATE_TRUNC('MINUTE', CAST('2024-01-01 11:59:00' AS TIMESTAMP))) AS _expr50, - DATE_TRUNC('DAY', DATE_TRUNC('HOUR', CAST('1999-03-14' AS TIMESTAMP))) AS _expr51, + TIMESTAMP_TRUNC( + TIMESTAMP_TRUNC( + DATE_TRUNC('YEAR', DATE_TRUNC('MONTH', CAST('2024-12-31 11:59:00' AS TIMESTAMP))), + MINUTE + ), + MINUTE + ) AS _expr50, + DATE_TRUNC('DAY', TIMESTAMP_TRUNC(CAST('1999-03-14' AS TIMESTAMP), HOUR)) AS _expr51, DATE_ADD( - DATE_TRUNC('MINUTE', DATE_TRUNC('DAY', DATE_ADD(CURRENT_TIMESTAMP(), -60, 'HOUR'))), + TIMESTAMP_TRUNC(DATE_TRUNC('DAY', DATE_ADD(CURRENT_TIMESTAMP(), -60, 'HOUR')), MINUTE), 196, 'YEAR' ) AS _expr52, DATE_ADD( - DATE_TRUNC('MINUTE', DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -40, 'HOUR'), -385, 'DAY')), + TIMESTAMP_TRUNC(DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -40, 'HOUR'), -385, 'DAY'), MINUTE), 29, 'HOUR' ) AS _expr53, - DATE_TRUNC('MINUTE', DATE_TRUNC('HOUR', DATE_ADD(CURRENT_TIMESTAMP(), 405, 'DAY'))) AS _expr54, + TIMESTAMP_TRUNC(TIMESTAMP_TRUNC(DATE_ADD(CURRENT_TIMESTAMP(), 405, 'DAY'), HOUR), MINUTE) AS _expr54, DATE_ADD( - DATE_ADD(DATE_TRUNC('SECOND', DATE_TRUNC('YEAR', CURRENT_TIMESTAMP())), 98, 'YEAR'), + DATE_ADD(TIMESTAMP_TRUNC(DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()), SECOND), 98, 'YEAR'), 96, 'MONTH' ) AS _expr55, DATE_ADD( - DATE_TRUNC('DAY', DATE_TRUNC('SECOND', DATE_TRUNC('MINUTE', CURRENT_TIMESTAMP()))), + DATE_TRUNC('DAY', TIMESTAMP_TRUNC(TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), MINUTE), SECOND)), 78, 'SECOND' ) AS _expr56, diff --git a/tests/test_sql_refsols/datetime_sampler_snowflake.sql b/tests/test_sql_refsols/datetime_sampler_snowflake.sql index 51a0b1870..c8697dd70 100644 --- a/tests/test_sql_refsols/datetime_sampler_snowflake.sql +++ b/tests/test_sql_refsols/datetime_sampler_snowflake.sql @@ -53,7 +53,7 @@ SELECT DATEADD(YEAR, 91, DATEADD(MINUTE, 49, DATE_TRUNC('HOUR', CAST('2025-01-01' AS TIMESTAMP)))) AS _expr36, DATE_TRUNC('DAY', DATE_TRUNC('YEAR', CURRENT_TIMESTAMP())) AS _expr37, DATE_TRUNC('YEAR', DATE_TRUNC('DAY', CURRENT_TIMESTAMP())) AS _expr38, - CAST('2025-07-01 13:20:45' AS TIMESTAMP) AS _expr39, + DATEADD(MINUTE, 22, DATE_TRUNC('MONTH', CAST('2025-07-04 12:58:45' AS TIMESTAMP))) AS _expr39, DATE_TRUNC('YEAR', CURRENT_TIMESTAMP()) AS _expr40, DATE_TRUNC( 'YEAR', @@ -82,7 +82,13 @@ SELECT DATE_TRUNC('MONTH', DATEADD(HOUR, 1, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()))) ) AS _expr48, DATEADD(YEAR, 368, DATEADD(MINUTE, 212, CURRENT_TIMESTAMP())) AS _expr49, - DATE_TRUNC('MINUTE', DATE_TRUNC('MINUTE', CAST('2024-01-01 11:59:00' AS TIMESTAMP))) AS _expr50, + DATE_TRUNC( + 'MINUTE', + DATE_TRUNC( + 'MINUTE', + DATE_TRUNC('YEAR', DATE_TRUNC('MONTH', CAST('2024-12-31 11:59:00' AS TIMESTAMP))) + ) + ) AS _expr50, DATE_TRUNC('DAY', DATE_TRUNC('HOUR', CAST('1999-03-14' AS TIMESTAMP))) AS _expr51, DATEADD( YEAR, diff --git a/tests/test_sql_refsols/smoke_b_ansi.sql b/tests/test_sql_refsols/smoke_b_ansi.sql index 9b9680ff6..beb750c70 100644 --- a/tests/test_sql_refsols/smoke_b_ansi.sql +++ b/tests/test_sql_refsols/smoke_b_ansi.sql @@ -33,13 +33,13 @@ SELECT 25, 'HOUR' ) AS d, - DATE_TRUNC('MINUTE', CAST('2025-01-01 12:35:13' AS TIMESTAMP)) AS e, + TIMESTAMP_TRUNC(CAST('2025-01-01 12:35:13' AS TIMESTAMP), MINUTE) AS e, DATE_ADD( - DATE_ADD(DATE_TRUNC('HOUR', CAST('2025-01-01 12:35:13' AS TIMESTAMP)), 2, 'QUARTER'), + DATE_ADD(TIMESTAMP_TRUNC(CAST('2025-01-01 12:35:13' AS TIMESTAMP), HOUR), 2, 'QUARTER'), 3, 'WEEK' ) AS f, - CAST('2025-01-01 12:35:13' AS TIMESTAMP) AS g, + DATE_TRUNC('DAY', CAST('2025-01-01 12:35:13' AS TIMESTAMP)) AS g, CONCAT_WS( ';', EXTRACT(HOUR FROM CAST('2025-01-01 12:35:13' AS TIMESTAMP)), diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql index 8dd6198d8..7916eae92 100644 --- a/tests/test_sql_refsols/smoke_b_snowflake.sql +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -35,7 +35,7 @@ SELECT 3, DATEADD(QUARTER, 2, DATE_TRUNC('HOUR', CAST('2025-01-01 12:35:13' AS TIMESTAMP))) ) AS f, - CAST('2025-01-01 12:35:13' AS TIMESTAMP) AS g, + DATE_TRUNC('DAY', CAST('2025-01-01 12:35:13' AS TIMESTAMP)) AS g, CONCAT_WS( ';', HOUR(CAST('2025-01-01 12:35:13' AS TIMESTAMP)), diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index 6b227318a..9957955ec 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -1291,7 +1291,22 @@ def run_e2e_test( def harmonize_types(column_a, column_b): """ - TODO ADD DOCSTRING + Harmonizes data types between two Pandas columns to ensure compatibility + for comparison equality check operations. + + The function performs type conversions based on common mismatches, including: + - Decimal to float conversion + - String to datetime or date conversion + - Date to string or datetime conversion + + If no known mismatch pattern is found, the original columns are returned unchanged. + + Parameters: + `column_a`: The first column to harmonize. + `column_b`: The second column to harmonize. + + Returns: + A tuple of the two harmonized columns. """ if any(isinstance(elem, Decimal) for elem in column_a) and any( isinstance(elem, float) for elem in column_b From 1b6a84b6c8c92157b64a467b1800d1a18c551a7d Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 6 Aug 2025 16:31:29 -0700 Subject: [PATCH 14/46] [run SF] [run CI] handle change in start of week --- tests/test_pipeline_tpch.py | 1 + tests/testing_utilities.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/tests/test_pipeline_tpch.py b/tests/test_pipeline_tpch.py index daa1a21ea..fdc137a5e 100644 --- a/tests/test_pipeline_tpch.py +++ b/tests/test_pipeline_tpch.py @@ -385,6 +385,7 @@ } ), "smoke_b", + fix_output_dialect="snowflake", ), id="smoke_b", ), diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index 9957955ec..805e3e275 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -1059,6 +1059,7 @@ class PyDoughPandasTest: relational plan testing. Default is False. - `skip_sql`: (optional): if True, does not run the test as part of SQL testing. Default is False. + - `fix_output_dialect`: (optional): update refsol to match Dialect behavior """ pydough_function: Callable[..., UnqualifiedNode] | str @@ -1117,6 +1118,11 @@ class PyDoughPandasTest: If True, does not run the test as part of SQL testing. """ + fix_output_dialect: str = "sqlite" + """ + Dialect name to update output + """ + def run_relational_test( self, fetcher: graph_fetcher, @@ -1273,6 +1279,18 @@ def run_e2e_test( assert len(result.columns) == len(refsol.columns) result.columns = refsol.columns + if self.fix_output_dialect == "snowflake": + # Update column "q" + # Start of Week in Snowflake is Monday + if self.test_name == "smoke_b": + refsol["q"] = [ + "1994-06-06", + "1994-05-23", + "1998-02-16", + "1993-06-07", + "1992-10-19", + ] + # If the query is not order-sensitive, sort the DataFrames before comparison if not self.order_sensitive: result = result.sort_values(by=list(result.columns)).reset_index(drop=True) From 15c024234d32e733eb6166bb5551bfd83a1038ad Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 6 Aug 2025 16:50:40 -0700 Subject: [PATCH 15/46] comment --- tests/test_pipeline_tpch.py | 1 - tests/testing_utilities.py | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_pipeline_tpch.py b/tests/test_pipeline_tpch.py index fdc137a5e..daa1a21ea 100644 --- a/tests/test_pipeline_tpch.py +++ b/tests/test_pipeline_tpch.py @@ -385,7 +385,6 @@ } ), "smoke_b", - fix_output_dialect="snowflake", ), id="smoke_b", ), diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index 805e3e275..8639ba8de 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -1279,6 +1279,7 @@ def run_e2e_test( assert len(result.columns) == len(refsol.columns) result.columns = refsol.columns + # FIXME: if self.fix_output_dialect == "snowflake": # Update column "q" # Start of Week in Snowflake is Monday From 91dc3bb6e8d8c729c460c89df55c5c2d0aea59d8 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 11 Aug 2025 12:21:46 -0700 Subject: [PATCH 16/46] [run CI] [run SF] fix week --- .../sf_transform_bindings.py | 21 +++++++++++++++++++ tests/test_sql_refsols/smoke_b_snowflake.sql | 5 ++++- tests/testing_utilities.py | 19 ----------------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py index 05bec6bd3..157300fc8 100644 --- a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -95,3 +95,24 @@ def convert_extract_datetime( this=unit.value.upper(), expressions=[dt_expr] ) return func_expr + + def apply_datetime_truncation( + self, base: SQLGlotExpression, unit: DateTimeUnit + ) -> SQLGlotExpression: + if unit is DateTimeUnit.WEEK: + # 1. Get shifted_weekday (# of days since the start of week) + # 2. Subtract shifted_weekday DAYS from the datetime + # 3. Truncate the result to the nearest day + shifted_weekday: SQLGlotExpression = self.days_from_start_of_week(base) + date_sub: SQLGlotExpression = sqlglot_expressions.DateSub( + this=base, + expression=shifted_weekday, + unit=sqlglot_expressions.Var(this="DAY"), + ) + return sqlglot_expressions.DateTrunc( + this=date_sub, + unit=sqlglot_expressions.Var(this="DAY"), + ) + else: + # For other units, use the standard SQLGlot truncation + return super().apply_datetime_truncation(base, unit) diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql index 7916eae92..7b4e7c0db 100644 --- a/tests/test_sql_refsols/smoke_b_snowflake.sql +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -50,7 +50,10 @@ SELECT DATEDIFF(HOUR, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS n, DATEDIFF(MINUTE, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS o, DATEDIFF(SECOND, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS p, - DATE_TRUNC('WEEK', CAST(o_orderdate AS TIMESTAMP)) AS q + DATE_TRUNC( + 'DAY', + DATEADD(DAY, DAYOFWEEK(CAST(o_orderdate AS TIMESTAMP)) * -1, CAST(o_orderdate AS TIMESTAMP)) + ) AS q FROM TPCH.ORDERS WHERE CONTAINS(o_comment, 'fo') diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index 8639ba8de..9957955ec 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -1059,7 +1059,6 @@ class PyDoughPandasTest: relational plan testing. Default is False. - `skip_sql`: (optional): if True, does not run the test as part of SQL testing. Default is False. - - `fix_output_dialect`: (optional): update refsol to match Dialect behavior """ pydough_function: Callable[..., UnqualifiedNode] | str @@ -1118,11 +1117,6 @@ class PyDoughPandasTest: If True, does not run the test as part of SQL testing. """ - fix_output_dialect: str = "sqlite" - """ - Dialect name to update output - """ - def run_relational_test( self, fetcher: graph_fetcher, @@ -1279,19 +1273,6 @@ def run_e2e_test( assert len(result.columns) == len(refsol.columns) result.columns = refsol.columns - # FIXME: - if self.fix_output_dialect == "snowflake": - # Update column "q" - # Start of Week in Snowflake is Monday - if self.test_name == "smoke_b": - refsol["q"] = [ - "1994-06-06", - "1994-05-23", - "1998-02-16", - "1993-06-07", - "1992-10-19", - ] - # If the query is not order-sensitive, sort the DataFrames before comparison if not self.order_sensitive: result = result.sort_values(by=list(result.columns)).reset_index(drop=True) From c8cc53f905ab079105260b130120fea34d36a6a7 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 11 Aug 2025 12:33:09 -0700 Subject: [PATCH 17/46] [run CI] [run SF] update some SQL files --- .../defog_broker_adv3_snowflake.sql | 16 +++--- .../defog_broker_adv8_snowflake.sql | 30 +++++++++- .../defog_broker_adv9_snowflake.sql | 56 +++++++++++++++++-- .../defog_dealership_adv1_snowflake.sql | 26 ++++++++- .../defog_ewallet_adv2_snowflake.sql | 56 +++++++++++++++++-- ...tion_week_sampler_friday_one_snowflake.sql | 13 ++++- ...ion_week_sampler_friday_zero_snowflake.sql | 13 ++++- ...tion_week_sampler_monday_one_snowflake.sql | 13 ++++- ...ion_week_sampler_monday_zero_snowflake.sql | 13 ++++- ...on_week_sampler_saturday_one_snowflake.sql | 13 ++++- ...n_week_sampler_saturday_zero_snowflake.sql | 13 ++++- ...tion_week_sampler_sunday_one_snowflake.sql | 9 ++- ...ion_week_sampler_sunday_zero_snowflake.sql | 9 ++- ...on_week_sampler_thursday_one_snowflake.sql | 13 ++++- ...n_week_sampler_thursday_zero_snowflake.sql | 13 ++++- ...ion_week_sampler_tuesday_one_snowflake.sql | 13 ++++- ...on_week_sampler_tuesday_zero_snowflake.sql | 13 ++++- ...n_week_sampler_wednesday_one_snowflake.sql | 13 ++++- ..._week_sampler_wednesday_zero_snowflake.sql | 13 ++++- 19 files changed, 323 insertions(+), 35 deletions(-) diff --git a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql index dadbf74cc..f6dfb4130 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql @@ -1,4 +1,4 @@ -WITH _S1 AS ( +WITH _T1 AS ( SELECT COUNT(*) AS N_ROWS, COUNT_IF(sbtxstatus = 'success') AS SUM_EXPR_2, @@ -10,14 +10,12 @@ WITH _S1 AS ( SELECT SBCUSTOMER.sbcustname AS name, ( - 100.0 * COALESCE(_S1.SUM_EXPR_2, 0) - ) / COALESCE(_S1.N_ROWS, 0) AS success_rate + 100.0 * COALESCE(_T1.SUM_EXPR_2, 0) + ) / _T1.N_ROWS AS success_rate FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID -WHERE - NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS >= 5 +JOIN _T1 AS _T1 + ON SBCUSTOMER.sbcustid = _T1.SBTXCUSTID AND _T1.N_ROWS >= 5 ORDER BY ( - 100.0 * COALESCE(_S1.SUM_EXPR_2, 0) - ) / COALESCE(_S1.N_ROWS, 0) NULLS FIRST + 100.0 * COALESCE(_T1.SUM_EXPR_2, 0) + ) / _T1.N_ROWS NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql index a2c0bd075..192b96327 100644 --- a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql @@ -15,5 +15,31 @@ LEFT JOIN _u_0 AS _u_0 ON SBTRANSACTION.sbtxcustid = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL - AND SBTRANSACTION.sbtxdatetime < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) - AND SBTRANSACTION.sbtxdatetime >= DATEADD(WEEK, -1, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) + AND SBTRANSACTION.sbtxdatetime < DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) + AND SBTRANSACTION.sbtxdatetime >= DATEADD( + WEEK, + -1, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) + ) diff --git a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql index a43b2ec6a..79a85b0b5 100644 --- a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql @@ -1,5 +1,16 @@ SELECT - DATE_TRUNC('WEEK', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS week, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + 6 + ) % 7 + ) * -1, + CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP) + ) + ) AS week, COUNT(*) AS num_transactions, COALESCE( COUNT_IF(( @@ -14,7 +25,44 @@ JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid AND SBTICKER.sbtickertype = 'stock' WHERE - SBTRANSACTION.sbtxdatetime < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) - AND SBTRANSACTION.sbtxdatetime >= DATEADD(WEEK, -8, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) + SBTRANSACTION.sbtxdatetime < DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) + AND SBTRANSACTION.sbtxdatetime >= DATEADD( + WEEK, + -8, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) + ) GROUP BY - DATE_TRUNC('WEEK', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + 6 + ) % 7 + ) * -1, + CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP) + ) + ) diff --git a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql index f38af8dfb..582be2f94 100644 --- a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql @@ -1,5 +1,16 @@ SELECT - DATE_TRUNC('WEEK', CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) AS payment_week, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) + 6 + ) % 7 + ) * -1, + CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP) + ) + ) AS payment_week, COUNT(*) AS total_payments, COALESCE( COUNT_IF(( @@ -16,4 +27,15 @@ WHERE DATEDIFF(WEEK, CAST(PAYMENTS_RECEIVED.payment_date AS DATETIME), CURRENT_TIMESTAMP()) <= 8 AND DATEDIFF(WEEK, CAST(PAYMENTS_RECEIVED.payment_date AS DATETIME), CURRENT_TIMESTAMP()) >= 1 GROUP BY - DATE_TRUNC('WEEK', CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) + 6 + ) % 7 + ) * -1, + CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP) + ) + ) diff --git a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql index 2a10f378b..76026ee21 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql @@ -1,5 +1,16 @@ SELECT - DATE_TRUNC('WEEK', CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) AS week, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) + 6 + ) % 7 + ) * -1, + CAST(NOTIFICATIONS.created_at AS TIMESTAMP) + ) + ) AS week, COUNT(*) AS num_notifs, COALESCE(COUNT_IF(( ( @@ -10,7 +21,44 @@ FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS JOIN MAIN.USERS AS USERS ON NOTIFICATIONS.user_id = USERS.uid AND USERS.country IN ('US', 'CA') WHERE - NOTIFICATIONS.created_at < DATE_TRUNC('WEEK', CURRENT_TIMESTAMP()) - AND NOTIFICATIONS.created_at >= DATEADD(WEEK, -3, DATE_TRUNC('WEEK', CURRENT_TIMESTAMP())) + NOTIFICATIONS.created_at < DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) + AND NOTIFICATIONS.created_at >= DATEADD( + WEEK, + -3, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) + ) GROUP BY - DATE_TRUNC('WEEK', CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) + 6 + ) % 7 + ) * -1, + CAST(NOTIFICATIONS.created_at AS TIMESTAMP) + ) + ) diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql index a2c995411..7c055025b 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 2 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql index 45b52d1b0..c3878ac5d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 2 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql index b07dab0be..ed2d77fe4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 6 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql index f099aa40a..087eca477 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 6 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql index 1a0acf73f..75693c067 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 1 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql index 1a300402d..096676be4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 1 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql index 7d256d300..301b5bde4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql @@ -1,6 +1,13 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql index ae3dc4ef6..70a72d914 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql @@ -1,6 +1,13 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql index 1903bf107..b85cc65a2 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 3 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql index 034f14b90..9481d96f6 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 3 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql index e6d981819..81db985e0 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 5 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql index 9fe22d6a6..f37c1cef8 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 5 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql index 68348bfbc..2dac3db47 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 4 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql index 04563bd7e..113a907a3 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql @@ -1,6 +1,17 @@ SELECT sbtxdatetime AS date_time, - DATE_TRUNC('WEEK', CAST(sbtxdatetime AS TIMESTAMP)) AS sow, + DATE_TRUNC( + 'DAY', + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CAST(sbtxdatetime AS TIMESTAMP)) + 4 + ) % 7 + ) * -1, + CAST(sbtxdatetime AS TIMESTAMP) + ) + ) AS sow, CASE WHEN DAYOFWEEK(sbtxdatetime) = 0 THEN 'Sunday' From ad0a1dda9276549e46e14a63d9ea9d631e1a037b Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 11 Aug 2025 14:44:38 -0700 Subject: [PATCH 18/46] [run SF][run CI] fix date_diff, add defog, 1 test only for params, docs --- documentation/usage.md | 22 ++ .../sf_transform_bindings.py | 49 +++++ tests/test_pipeline_correl.py | 1 - tests/test_pipeline_tpch.py | 35 --- tests/test_pipeline_tpch_sf.py | 208 ++++++++++++++++++ .../datetime_functions_snowflake.sql | 14 +- .../defog_dealership_adv1_snowflake.sql | 44 +++- .../defog_dealership_gen3_snowflake.sql | 18 +- tests/test_sql_refsols/smoke_b_snowflake.sql | 10 +- 9 files changed, 360 insertions(+), 41 deletions(-) create mode 100644 tests/test_pipeline_tpch_sf.py diff --git a/documentation/usage.md b/documentation/usage.md index 7a9ed3026..1846bc9a2 100644 --- a/documentation/usage.md +++ b/documentation/usage.md @@ -242,6 +242,7 @@ The following configs are used in the behavior of `DAYOFWEEK`, `DATETIME`, and ` - `DAYOFWEEK` : A function that returns the number of days since the start of the week. Start of week is relative to the `start_of_week` config. - `DATETIME` : This function also supports the `start of week` unit, which is relative to the `start_of_week` config. - `DATEDIFF` : This function also supports difference between two dates in terms of weeks, which is relative to the `start_of_week` config. +- `DATE_TRUNC` : This function also supports truncating a date to the start of the week, which is relative to the `start_of_week` config. The value must be one of the following `DayOfWeek` enum values: @@ -254,6 +255,10 @@ The value must be one of the following `DayOfWeek` enum values: - `DayOfWeek.SATURDAY` The `DayOfWeek` enum is defined in the `pydough.configs` module. + +**Note:** In Snowflake, PyDough does not automatically detect changes to `WEEK_START` session parameter. Please configure the `start_of_week` in your PyDough configurations. + + 6. `start_week_as_zero` (default=True): if True, then the first day of the week is considered to be 0. If False, then the first day of the week is considered to be 1. This config is used by `DAYOFWEEK` function. ```py @@ -336,6 +341,8 @@ Just like the knowledge graph & miscellaneous configurations, the database conte Below is a list of all supported values for the database name: - `sqlite`: uses a SQLite database. [See here](https://docs.python.org/3/library/sqlite3.html#sqlite3.connect) for details on the connection API and what keyword arguments can be passed in. +- `snowflake`: uses a Snowflake database. [See here](https://docs.snowflake.com/en/user-guide/python-connector.html#connecting-to-snowflake) for details on the connection API and what keyword arguments can be passed in. + Below are examples of how to access the context and switch it out for a newly created one, either by manually setting it or by using `session.load_database`. These examples assume that there are two different sqlite database files located at `db_files/education.db` and `db_files/shakespeare.db`. ```py @@ -359,6 +366,21 @@ It is important to ensure that the correct database context is being used for se - It controls what SQL dialect is used when translating from PyDough to SQL. - The context's database connection is used to execute queries once translated to SQL. +#### Examples with different supported database connectors with PyDough +- Snowflake: You can connect to a Snowflake database using `load_metadata_graph` and `connect_database` APIs. For example: + ```py + pydough.active_session.load_metadata_graph("../../tests/test_metadata/snowflake_sample_graphs.json", "TPCH"), + pydough.active_session.connect_database("snowflake", + user=snowflake_username, + password=snowflake_password, + account=snowflake_account, + warehouse=snowflake_warehouse, + database=snowflake_database, + schema=snowflake_schema + ) + ``` +You can find a full example of using Snowflake database with PyDough in [this usage guide](./../demos/notebooks/Snowflake_TPCH.ipynb). + ## Evaluation APIs diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py index 157300fc8..ef6418c92 100644 --- a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -116,3 +116,52 @@ def apply_datetime_truncation( else: # For other units, use the standard SQLGlot truncation return super().apply_datetime_truncation(base, unit) + + def convert_datediff( + self, + args: list[SQLGlotExpression], + types: list[PyDoughType], + ) -> SQLGlotExpression: + assert len(args) == 3 + if not isinstance(args[0], sqlglot_expressions.Literal): + raise ValueError( + f"Unsupported argument {args[0]} for DATEDIFF.It should be a string." + ) + elif not args[0].is_string: + raise ValueError( + f"Unsupported argument {args[0]} for DATEDIFF.It should be a string." + ) + unit: DateTimeUnit | None = DateTimeUnit.from_string(args[0].this) + if unit is DateTimeUnit.WEEK: + args = [ + args[0], + self.make_datetime_arg(args[1]), + self.make_datetime_arg(args[2]), + ] + # 1. For both dates, get # of shifted of days since the start of week + shifted_start: SQLGlotExpression = self.days_from_start_of_week(args[1]) + shifted_end: SQLGlotExpression = self.days_from_start_of_week(args[2]) + + # 2. Subtract shifted_weekday DAYS from the datetime + + date_sub_start: SQLGlotExpression = sqlglot_expressions.DateSub( + this=args[1], + expression=shifted_start, + unit=sqlglot_expressions.Var(this="DAY"), + ) + + date_sub_end: SQLGlotExpression = sqlglot_expressions.DateSub( + this=args[2], + expression=shifted_end, + unit=sqlglot_expressions.Var(this="DAY"), + ) + + # 3. Call DATEDIFF in weeks with the shifted dates + return sqlglot_expressions.DateDiff( + unit=sqlglot_expressions.Var(this=unit.value), + this=date_sub_end, + expression=date_sub_start, + ) + else: + # For other units, use base implementation + return super().convert_datediff(args, types) diff --git a/tests/test_pipeline_correl.py b/tests/test_pipeline_correl.py index d7e4d8459..6a7aecc28 100644 --- a/tests/test_pipeline_correl.py +++ b/tests/test_pipeline_correl.py @@ -341,7 +341,6 @@ "correl_16", ), id="correl_16", - marks=pytest.mark.skip("TODO: fix window squishing in CTE merge step"), ), pytest.param( PyDoughPandasTest( diff --git a/tests/test_pipeline_tpch.py b/tests/test_pipeline_tpch.py index daa1a21ea..296b93d78 100644 --- a/tests/test_pipeline_tpch.py +++ b/tests/test_pipeline_tpch.py @@ -615,38 +615,3 @@ def test_pipeline_e2e_tpch( get_sample_graph, sqlite_tpch_db_context, ) - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_pipeline_e2e_tpch_sf_conn( - tpch_pipeline_test_data: PyDoughPandasTest, - get_sf_sample_graph: graph_fetcher, - sf_conn_tpch_db_context: DatabaseContext, -): - """ - Test executing the TPC-H queries from the original code generation, - with Snowflake as the executing database. - Using the `connection` as keyword argument to the DatabaseContext. - """ - tpch_pipeline_test_data.run_e2e_test( - get_sf_sample_graph, sf_conn_tpch_db_context, coerce_types=True - ) - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_pipeline_e2e_tpch_sf_params( - tpch_pipeline_test_data: PyDoughPandasTest, - get_sf_sample_graph: graph_fetcher, - sf_params_tpch_db_context: DatabaseContext, -): - """ - Test executing the TPC-H queries from the original code generation, - with Snowflake as the executing database. - Using the `user`, `password`, `account`, `database`, `schema`, and `warehouse` - as keyword arguments to the DatabaseContext. - """ - tpch_pipeline_test_data.run_e2e_test( - get_sf_sample_graph, sf_params_tpch_db_context, coerce_types=True - ) diff --git a/tests/test_pipeline_tpch_sf.py b/tests/test_pipeline_tpch_sf.py new file mode 100644 index 000000000..75334004f --- /dev/null +++ b/tests/test_pipeline_tpch_sf.py @@ -0,0 +1,208 @@ +""" +Integration tests for the PyDough workflow on the TPC-H queries using Snowflake. +""" + +# ruff: noqa +# mypy: ignore-errors +# ruff & mypy should not try to typecheck or verify any of this + +import pandas as pd +import pytest +import datetime +from tests.test_pipeline_defog_custom import get_start_of_week, get_day_of_week +from pydough.metadata import GraphMetadata +from pydough.unqualified import UnqualifiedNode +from pydough.configs import DayOfWeek, PyDoughConfigs +from pydough.database_connectors import DatabaseContext +from tests.test_pydough_functions.tpch_outputs import ( + tpch_q16_output, +) +from tests.test_pydough_functions.tpch_test_functions import ( + impl_tpch_q16, +) +from tests.testing_utilities import ( + graph_fetcher, + harmonize_types, +) +from .test_pipeline_tpch import tpch_pipeline_test_data + +from .testing_utilities import PyDoughPandasTest +from pydough import init_pydough_context, to_df, to_sql + + +@pytest.fixture( + params=[ + pytest.param( + PyDoughPandasTest( + impl_tpch_q16, + "TPCH", + tpch_q16_output, + "tpch_q16_params", + ), + id="tpch_q16_params", + ), + ], +) +def snowflake_params_tpch_q16_data(request) -> PyDoughPandasTest: + """ + Test data for e2e tests for the TPC-H query 16. Returns an instance of + PyDoughPandasTest containing information about the test. + """ + return request.param + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_tpch_sf_conn( + tpch_pipeline_test_data: PyDoughPandasTest, + get_sf_sample_graph: graph_fetcher, + sf_conn_tpch_db_context: DatabaseContext, +): + """ + Test executing the TPC-H queries from the original code generation, + with Snowflake as the executing database. + Using the `connection` as keyword argument to the DatabaseContext. + """ + tpch_pipeline_test_data.run_e2e_test( + get_sf_sample_graph, sf_conn_tpch_db_context, coerce_types=True + ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_tpch_sf_params( + snowflake_params_tpch_q16_data: PyDoughPandasTest, + get_sf_sample_graph: graph_fetcher, + sf_params_tpch_db_context: DatabaseContext, +): + """ + Test executing the TPC-H queries from the original code generation, + with Snowflake as the executing database. + Using the `user`, `password`, `account`, `database`, `schema`, and `warehouse` + as keyword arguments to the DatabaseContext. + """ + snowflake_params_tpch_q16_data.run_e2e_test( + get_sf_sample_graph, sf_params_tpch_db_context, coerce_types=True + ) + + +def simple_week_sampler(): + x_dt = datetime.datetime(2025, 3, 10, 11, 00, 0) + y_dt = datetime.datetime(2025, 3, 14, 11, 00, 0) + y_dt2 = datetime.datetime(2025, 3, 15, 11, 00, 0) + y_dt3 = datetime.datetime(2025, 3, 16, 11, 00, 0) + y_dt4 = datetime.datetime(2025, 3, 17, 11, 00, 0) + y_dt5 = datetime.datetime(2025, 3, 18, 11, 00, 0) + y_dt6 = datetime.datetime(2025, 3, 19, 11, 00, 0) + y_dt7 = datetime.datetime(2025, 3, 20, 11, 00, 0) + y_dt8 = datetime.datetime(2025, 3, 21, 11, 00, 0) + return TPCH.CALCULATE( + weeks_diff=DATEDIFF("weeks", x_dt, y_dt), + sow1=DATETIME(y_dt, "start of week"), + sow2=DATETIME(y_dt2, "start of week"), + sow3=DATETIME(y_dt3, "start of week"), + sow4=DATETIME(y_dt4, "start of week"), + sow5=DATETIME(y_dt5, "start of week"), + sow6=DATETIME(y_dt6, "start of week"), + sow7=DATETIME(y_dt7, "start of week"), + sow8=DATETIME(y_dt8, "start of week"), + dayname1=DAYNAME(y_dt), + dayname2=DAYNAME(y_dt2), + dayname3=DAYNAME(y_dt3), + dayname4=DAYNAME(y_dt4), + dayname5=DAYNAME(y_dt5), + dayname6=DAYNAME(y_dt6), + dayname7=DAYNAME(y_dt7), + dayname8=DAYNAME(y_dt8), + dayofweek1=DAYOFWEEK(y_dt), + dayofweek2=DAYOFWEEK(y_dt2), + dayofweek3=DAYOFWEEK(y_dt3), + dayofweek4=DAYOFWEEK(y_dt4), + dayofweek5=DAYOFWEEK(y_dt5), + dayofweek6=DAYOFWEEK(y_dt6), + dayofweek7=DAYOFWEEK(y_dt7), + dayofweek8=DAYOFWEEK(y_dt8), + ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_tpch_simple_week( + get_sf_sample_graph: graph_fetcher, + sf_conn_tpch_db_context: DatabaseContext, + week_handling_config: PyDoughConfigs, +): + """ + Test executing simple_week_sampler using the tpch schemas with different + week configurations, comparing against expected results. + """ + graph: GraphMetadata = get_sf_sample_graph("TPCH") + root: UnqualifiedNode = init_pydough_context(graph)(simple_week_sampler)() + result: pd.DataFrame = to_df( + root, + metadata=graph, + database=sf_conn_tpch_db_context, + config=week_handling_config, + ) + + # Generate expected DataFrame based on week_handling_config + start_of_week = week_handling_config.start_of_week + start_week_as_zero = week_handling_config.start_week_as_zero + + x_dt = pd.Timestamp(2025, 3, 10, 11, 0, 0) + y_dt = pd.Timestamp(2025, 3, 14, 11, 0, 0) + y_dt2 = pd.Timestamp(2025, 3, 15, 11, 0, 0) + y_dt3 = pd.Timestamp(2025, 3, 16, 11, 0, 0) + y_dt4 = pd.Timestamp(2025, 3, 17, 11, 0, 0) + y_dt5 = pd.Timestamp(2025, 3, 18, 11, 0, 0) + y_dt6 = pd.Timestamp(2025, 3, 19, 11, 0, 0) + y_dt7 = pd.Timestamp(2025, 3, 20, 11, 0, 0) + y_dt8 = pd.Timestamp(2025, 3, 21, 11, 0, 0) + + # Calculate weeks difference + x_sow = get_start_of_week(x_dt, start_of_week) + y_sow = get_start_of_week(y_dt, start_of_week) + weeks_diff = (y_sow - x_sow).days // 7 + + # Create lists to store calculated values + dates = [y_dt, y_dt2, y_dt3, y_dt4, y_dt5, y_dt6, y_dt7, y_dt8] + sows = [] + daynames = [] + dayofweeks = [] + + # Calculate values for each date in a loop + for dt in dates: + # Calculate start of week + sow = get_start_of_week(dt, start_of_week).strftime("%Y-%m-%d") + sows.append(sow) + + # Get day name + dayname = dt.day_name() + daynames.append(dayname) + + # Calculate day of week + dayofweek = get_day_of_week(dt, start_of_week, start_week_as_zero) + dayofweeks.append(dayofweek) + + # Create dictionary for DataFrame + data_dict = {"WEEKS_DIFF": [weeks_diff]} + + # Add start of week columns + for i in range(len(dates)): + data_dict[f"SOW{i + 1}"] = [sows[i]] + + # Add day name columns + for i in range(len(dates)): + data_dict[f"DAYNAME{i + 1}"] = [daynames[i]] + + # Add day of week columns + for i in range(len(dates)): + data_dict[f"DAYOFWEEK{i + 1}"] = [dayofweeks[i]] + + # Create DataFrame with expected results + expected_df = pd.DataFrame(data_dict) + for col_name in result.columns: + result[col_name], expected_df[col_name] = harmonize_types( + result[col_name], expected_df[col_name] + ) + pd.testing.assert_frame_equal(result, expected_df, check_dtype=False) diff --git a/tests/test_sql_refsols/datetime_functions_snowflake.sql b/tests/test_sql_refsols/datetime_functions_snowflake.sql index 1eacacc03..da530defe 100644 --- a/tests/test_sql_refsols/datetime_functions_snowflake.sql +++ b/tests/test_sql_refsols/datetime_functions_snowflake.sql @@ -20,7 +20,19 @@ SELECT DATEDIFF(DAY, CAST('1992-01-01' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS dd_str_col, DATEDIFF(MONTH, CAST('1995-10-10 00:00:00' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS dd_pd_col, DATEDIFF(YEAR, CAST(o_orderdate AS DATETIME), CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS dd_col_dt, - DATEDIFF(WEEK, CAST('1992-01-01' AS TIMESTAMP), CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS dd_dt_str, + DATEDIFF( + WEEK, + DATEADD( + DAY, + DAYOFWEEK(CAST('1992-01-01' AS TIMESTAMP)) * -1, + CAST('1992-01-01' AS TIMESTAMP) + ), + DATEADD( + DAY, + DAYOFWEEK(CAST('1992-01-01 12:30:45' AS TIMESTAMP)) * -1, + CAST('1992-01-01 12:30:45' AS TIMESTAMP) + ) + ) AS dd_dt_str, DAYOFWEEK(o_orderdate) AS dow_col, DAYOFWEEK('1992-07-01') AS dow_str, DAYOFWEEK(CAST('1992-01-01 12:30:45' AS TIMESTAMP)) AS dow_dt, diff --git a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql index 582be2f94..b842c787e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql @@ -24,8 +24,48 @@ FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED JOIN MAIN.SALES AS SALES ON PAYMENTS_RECEIVED.sale_id = SALES._id AND SALES.sale_price > 30000 WHERE - DATEDIFF(WEEK, CAST(PAYMENTS_RECEIVED.payment_date AS DATETIME), CURRENT_TIMESTAMP()) <= 8 - AND DATEDIFF(WEEK, CAST(PAYMENTS_RECEIVED.payment_date AS DATETIME), CURRENT_TIMESTAMP()) >= 1 + DATEDIFF( + WEEK, + CAST(DATEADD( + DAY, + ( + ( + DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + ) % 7 + ) * -1, + PAYMENTS_RECEIVED.payment_date + ) AS DATETIME), + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) <= 8 + AND DATEDIFF( + WEEK, + CAST(DATEADD( + DAY, + ( + ( + DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + ) % 7 + ) * -1, + PAYMENTS_RECEIVED.payment_date + ) AS DATETIME), + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) >= 1 GROUP BY DATE_TRUNC( 'DAY', diff --git a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql index a30e98dbf..6e813383f 100644 --- a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql @@ -4,7 +4,23 @@ SELECT COALESCE(SUM(payment_amount), 0) AS total_amount FROM MAIN.PAYMENTS_RECEIVED WHERE - DATEDIFF(WEEK, CAST(payment_date AS DATETIME), CURRENT_TIMESTAMP()) = 1 + DATEDIFF( + WEEK, + CAST(DATEADD(DAY, ( + ( + DAYOFWEEK(payment_date) + 6 + ) % 7 + ) * -1, payment_date) AS DATETIME), + DATEADD( + DAY, + ( + ( + DAYOFWEEK(CURRENT_TIMESTAMP()) + 6 + ) % 7 + ) * -1, + CURRENT_TIMESTAMP() + ) + ) = 1 GROUP BY payment_date, payment_method diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql index 7b4e7c0db..6cb86a8a8 100644 --- a/tests/test_sql_refsols/smoke_b_snowflake.sql +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -45,7 +45,15 @@ SELECT DATEDIFF(YEAR, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS i, DATEDIFF(QUARTER, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS j, DATEDIFF(MONTH, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS k, - DATEDIFF(WEEK, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS l, + DATEDIFF( + WEEK, + DATEADD( + DAY, + DAYOFWEEK(CAST('1993-05-25 12:45:36' AS TIMESTAMP)) * -1, + CAST('1993-05-25 12:45:36' AS TIMESTAMP) + ), + CAST(DATEADD(DAY, DAYOFWEEK(o_orderdate) * -1, o_orderdate) AS DATETIME) + ) AS l, DATEDIFF(DAY, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS m, DATEDIFF(HOUR, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS n, DATEDIFF(MINUTE, CAST('1993-05-25 12:45:36' AS TIMESTAMP), CAST(o_orderdate AS DATETIME)) AS o, From a24829d43f5dd0540688981b294beb7118ba802b Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 13 Aug 2025 13:33:22 -0700 Subject: [PATCH 19/46] add decimal/int none/empty to harmonize [run CI] --- tests/testing_utilities.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index 9957955ec..ed29892a8 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -3,6 +3,8 @@ build QDAG nodes for unit tests. """ +from types import NoneType + from dateutil import parser # type: ignore[import-untyped] __all__ = [ @@ -1295,6 +1297,8 @@ def harmonize_types(column_a, column_b): for comparison equality check operations. The function performs type conversions based on common mismatches, including: + - None to ' ' for string and NoneType columns + - Decimal to integer conversion - Decimal to float conversion - String to datetime or date conversion - Date to string or datetime conversion @@ -1308,6 +1312,20 @@ def harmonize_types(column_a, column_b): Returns: A tuple of the two harmonized columns. """ + if any(isinstance(elem, (str, NoneType)) for elem in column_a) and any( + isinstance(elem, (str, NoneType)) for elem in column_b + ): + return column_a.apply(lambda x: "" if pd.isna(x) else str(x)), column_b.apply( + lambda x: "" if pd.isna(x) else str(x) + ) + if any(isinstance(elem, Decimal) for elem in column_a) and any( + isinstance(elem, int) for elem in column_b + ): + return column_a.apply(lambda x: pd.NA if pd.isna(x) else int(x)), column_b + if any(isinstance(elem, int) for elem in column_a) and any( + isinstance(elem, Decimal) for elem in column_b + ): + return column_a, column_b.apply(lambda x: pd.NA if pd.isna(x) else int(x)) if any(isinstance(elem, Decimal) for elem in column_a) and any( isinstance(elem, float) for elem in column_b ): From 7a8763024ab4ddf6f8b51211dc83d4bbbeb2055c Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 13 Aug 2025 14:28:52 -0700 Subject: [PATCH 20/46] add defog tests --- tests/gen_data/init_defog_sf.sql | 229 ++ .../test_metadata/snowflake_defog_graphs.json | 3396 +++++++++++++++++ tests/test_pipeline_tpch_sf.py | 26 +- 3 files changed, 3647 insertions(+), 4 deletions(-) create mode 100644 tests/gen_data/init_defog_sf.sql create mode 100644 tests/test_metadata/snowflake_defog_graphs.json diff --git a/tests/gen_data/init_defog_sf.sql b/tests/gen_data/init_defog_sf.sql new file mode 100644 index 000000000..0d66078a5 --- /dev/null +++ b/tests/gen_data/init_defog_sf.sql @@ -0,0 +1,229 @@ +-- Modified version of the defog.ai schema setup for the broker schema: +-- https://github.com/defog-ai/defog-data/blob/main/defog_data/broker/broker.sql +-- Changed NOW() to CURRENT_DATE for Snowflake dialect compatibility. +-- Cast timestamp strings e.g. +-- '2023-04-01 09:30:00' -> '2023-04-01 09:30:00'::timestamp + +------------------------------------------------------------------------------- +-- DEFOG DATABASE +-- BROKER SCHEMA +------------------------------------------------------------------------------- +-- Dimension tables +CREATE TABLE sbCustomer ( + sbCustId varchar(20) PRIMARY KEY, + sbCustName varchar(100) NOT NULL, + sbCustEmail varchar(100) NOT NULL, + sbCustPhone varchar(20), + sbCustAddress1 varchar(200), + sbCustAddress2 varchar(200), + sbCustCity varchar(50), + sbCustState varchar(20), + sbCustCountry varchar(50), + sbCustPostalCode varchar(20), + sbCustJoinDate date NOT NULL, + sbCustStatus varchar(20) NOT NULL -- possible values: active, inactive, suspended, closed +); + +CREATE TABLE sbTicker ( + sbTickerId varchar(20) PRIMARY KEY, + sbTickerSymbol varchar(10) NOT NULL, + sbTickerName varchar(100) NOT NULL, + sbTickerType varchar(20) NOT NULL, -- possible values: stock, etf, mutualfund + sbTickerExchange varchar(50) NOT NULL, + sbTickerCurrency varchar(10) NOT NULL, + sbTickerDb2x varchar(20), -- 2 letter exchange code + sbTickerIsActive boolean NOT NULL +); + +-- Fact tables +CREATE TABLE sbDailyPrice ( + sbDpTickerId varchar(20) NOT NULL, + sbDpDate date NOT NULL, + sbDpOpen numeric(10,2) NOT NULL, + sbDpHigh numeric(10,2) NOT NULL, + sbDpLow numeric(10,2) NOT NULL, + sbDpClose numeric(10,2) NOT NULL, + sbDpVolume bigint NOT NULL, + sbDpEpochMs bigint NOT NULL, -- epoch milliseconds for timestamp + sbDpSource varchar(50) +); + +CREATE TABLE sbTransaction ( + sbTxId varchar(50) PRIMARY KEY, + sbTxCustId varchar(20) NOT NULL, + sbTxTickerId varchar(20) NOT NULL, + sbTxDateTime timestamp NOT NULL, + sbTxType varchar(20) NOT NULL, -- possible values: buy, sell + sbTxShares numeric(10,2) NOT NULL, + sbTxPrice numeric(10,2) NOT NULL, + sbTxAmount numeric(10,2) NOT NULL, + sbTxCcy varchar(10), -- transaction currency + sbTxTax numeric(10,2) NOT NULL, + sbTxCommission numeric(10,2) NOT NULL, + sbTxKpx varchar(10), -- internal code + sbTxSettlementDateStr varchar(25), -- settlement date as string in yyyyMMdd HH:mm:ss format. NULL if not settled + sbTxStatus varchar(10) NOT NULL -- possible values: success, fail, pending +); + + +-- sbCustomer +INSERT INTO sbCustomer (sbCustId, sbCustName, sbCustEmail, sbCustPhone, sbCustAddress1, sbCustCity, sbCustState, sbCustCountry, sbCustPostalCode, sbCustJoinDate, sbCustStatus) VALUES +('C001', 'john doe', 'john.doe@email.com', '555-123-4567', '123 Main St', 'Anytown', 'CA', 'USA', '90001', '2020-01-01', 'active'), +('C002', 'Jane Smith', 'jane.smith@email.com', '555-987-6543', '456 Oak Rd', 'Someville', 'NY', 'USA', '10002', '2019-03-15', 'active'), +('C003', 'Bob Johnson', 'bob.johnson@email.com', '555-246-8135', '789 Pine Ave', 'Mytown', 'TX', 'USA', '75000', '2022-06-01', 'inactive'), +('C004', 'Samantha Lee', 'samantha.lee@email.com', '555-135-7902', '246 Elm St', 'Yourtown', 'CA', 'USA', '92101', '2018-09-22', 'suspended'), +('C005', 'Michael Chen', 'michael.chen@email.com', '555-864-2319', '159 Cedar Ln', 'Anothertown', 'FL', 'USA', '33101', '2021-02-28', 'active'), +('C006', 'Emily Davis', 'emily.davis@email.com', '555-753-1904', '753 Maple Dr', 'Mytown', 'TX', 'USA', '75000', '2020-07-15', 'active'), +('C007', 'David Kim', 'david.kim@email.com', '555-370-2648', '864 Oak St', 'Anothertown', 'FL', 'USA', '33101', '2022-11-05', 'active'), +('C008', 'Sarah Nguyen', 'sarah.nguyen@email.com', '555-623-7419', '951 Pine Rd', 'Yourtown', 'CA', 'USA', '92101', '2019-04-01', 'closed'), +('C009', 'William Garcia', 'william.garcia@email.com', '555-148-5326', '258 Elm Ave', 'Anytown', 'CA', 'USA', '90001', '2021-08-22', 'active'), +('C010', 'Jessica Hernandez', 'jessica.hernandez@email.com', '555-963-8520', '147 Cedar Blvd', 'Someville', 'NY', 'USA', '10002', '2020-03-10', 'inactive'), +('C011', 'Alex Rodriguez', 'alex.rodriguez@email.com', '555-246-1357', '753 Oak St', 'Newtown', 'NJ', 'USA', '08801', '2023-01-15', 'active'), +('C012', 'Olivia Johnson', 'olivia.johnson@email.com', '555-987-6543', '321 Elm St', 'Newtown', 'NJ', 'USA', '08801', '2023-01-05', 'active'), +('C013', 'Ethan Davis', 'ethan.davis@email.com', '555-246-8135', '654 Oak Ave', 'Someville', 'NY', 'USA', '10002', '2023-02-12', 'active'), +('C014', 'Ava Wilson', 'ava.wilson@email.com', '555-135-7902', '987 Pine Rd', 'Anytown', 'CA', 'USA', '90001', '2023-03-20', 'active'), +('C015', 'Emma Brown', 'emma.brown@email.com', '555-987-6543', '789 Oak St', 'Newtown', 'NJ', 'USA', '08801', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '5 months', 'active'), +('C016', 'sophia martinez', 'sophia.martinez@email.com', '555-246-8135', '159 Elm Ave', 'Anytown', 'CA', 'USA', '90001', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '4 months', 'active'), +('C017', 'Jacob Taylor', 'jacob.taylor@email.com', '555-135-7902', '753 Pine Rd', 'Someville', 'NY', 'USA', '10002', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '3 months', 'active'), +('C018', 'Michael Anderson', 'michael.anderson@email.com', '555-864-2319', '321 Cedar Ln', 'Yourtown', 'CA', 'USA', '92101', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months', 'active'), +('C019', 'Isabella Thompson', 'isabella.thompson@email.com', '555-753-1904', '987 Maple Dr', 'Anothertown', 'FL', 'USA', '33101', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month', 'active'), +('C020', 'Maurice Lee', 'maurice.lee@email.com', '555-370-2648', '654 Oak St', 'Mytown', 'TX', 'USA', '75000', DATE_TRUNC('month', CURRENT_DATE), 'active'); + + +-- sbTicker +INSERT INTO sbTicker (sbTickerId, sbTickerSymbol, sbTickerName, sbTickerType, sbTickerExchange, sbTickerCurrency, sbTickerDb2x, sbTickerIsActive) VALUES +('T001', 'AAPL', 'Apple Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T002', 'MSFT', 'Microsoft Corporation', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T003', 'AMZN', 'Amazon.com, Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T004', 'TSLA', 'Tesla, Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T005', 'GOOGL', 'Alphabet Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T006', 'FB', 'Meta Platforms, Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T007', 'BRK.B', 'Berkshire Hathaway Inc.', 'stock', 'NYSE', 'USD', 'NY', true), +('T008', 'JPM', 'JPMorgan Chase & Co.', 'stock', 'NYSE', 'USD', 'NY', true), +('T009', 'V', 'Visa Inc.', 'stock', 'NYSE', 'USD', 'NY', true), +('T010', 'PG', 'Procter & Gamble Company', 'stock', 'NYSE', 'USD', 'NY', true), +('T011', 'SPY', 'SPDR S&P 500 ETF Trust', 'etf', 'NYSE Arca', 'USD', 'NX', true), +('T012', 'QQQ', 'Invesco QQQ Trust', 'etf', 'NASDAQ', 'USD', 'NQ', true), +('T013', 'VTI', 'Vanguard Total Stock Market ETF', 'etf', 'NYSE Arca', 'USD', 'NX', true), +('T014', 'VXUS', 'Vanguard Total International Stock ETF', 'etf', 'NASDAQ', 'USD', 'NQ', true), +('T015', 'VFINX', 'Vanguard 500 Index Fund', 'mutualfund', 'Vanguard', 'USD', 'VG', true), +('T016', 'VTSAX', 'Vanguard Total Stock Market Index Fund', 'mutualfund', 'Vanguard', 'USD', 'VG', true), +('T017', 'VIGAX', 'Vanguard Growth Index Fund', 'mutualfund', 'Vanguard', 'USD', 'VG', true), +('T018', 'GOOG', 'Alphabet Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T019', 'VTI', 'Vanguard Total Stock Market ETF', 'etf', 'NYSE Arca', 'USD', 'NX', true), +('T020', 'VTSAX', 'Vanguard Total Stock Market Index Fund', 'mutualfund', 'Vanguard', 'USD', 'VG', true), +('T021', 'NFLX', 'Netflix, Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true); + +-- sbDailyPrice +INSERT INTO sbDailyPrice (sbDpTickerId, sbDpDate, sbDpOpen, sbDpHigh, sbDpLow, sbDpClose, sbDpVolume, sbDpEpochMs, sbDpSource) VALUES +('T001', '2023-04-01', 150.00, 152.50, 148.75, 151.25, 75000000, 1680336000000, 'NYSE'), +('T002', '2023-04-01', 280.00, 282.75, 279.50, 281.00, 35000000, 1680336000000, 'NASDAQ'), +('T003', '2023-04-01', 3200.00, 3225.00, 3180.00, 3210.00, 4000000, 1680336000000, 'NASDAQ'), +('T004', '2023-04-01', 180.00, 185.00, 178.50, 184.25, 20000000, 1680336000000, 'NASDAQ'), +('T005', '2023-04-01', 2500.00, 2525.00, 2475.00, 2510.00, 1500000, 1680336000000, 'NASDAQ'), +('T006', '2023-04-01', 200.00, 205.00, 198.00, 202.50, 15000000, 1680336000000, 'NASDAQ'), +('T007', '2023-04-01', 400000.00, 402500.00, 398000.00, 401000.00, 10000, 1680336000000, 'NYSE'), +('T008', '2023-04-01', 130.00, 132.50, 128.75, 131.00, 12000000, 1680336000000, 'NYSE'), +('T009', '2023-04-01', 220.00, 222.50, 218.00, 221.00, 8000000, 1680336000000, 'NYSE'), +('T010', '2023-04-01', 140.00, 142.00, 139.00, 141.50, 6000000, 1680336000000, 'NYSE'), +('T001', '2023-04-02', 151.50, 153.00, 150.00, 152.00, 70000000, 1680422400000, 'NYSE'), +('T002', '2023-04-02', 281.25, 283.50, 280.00, 282.75, 32000000, 1680422400000, 'NASDAQ'), +('T003', '2023-04-02', 3212.00, 3230.00, 3200.00, 3225.00, 3800000, 1680422400000, 'NASDAQ'), +('T004', '2023-04-02', 184.50, 187.00, 183.00, 186.00, 18000000, 1680422400000, 'NASDAQ'), +('T005', '2023-04-02', 2512.00, 2530.00, 2500.00, 2520.00, 1400000, 1680422400000, 'NASDAQ'), +('T006', '2023-04-02', 203.00, 206.50, 201.00, 205.00, 14000000, 1680422400000, 'NASDAQ'), +('T007', '2023-04-02', 401500.00, 403000.00, 400000.00, 402000.00, 9500, 1680422400000, 'NYSE'), +('T008', '2023-04-02', 131.25, 133.00, 130.00, 132.50, 11000000, 1680422400000, 'NYSE'), +('T009', '2023-04-02', 221.50, 223.00, 220.00, 222.00, 7500000, 1680422400000, 'NYSE'), +('T010', '2023-04-02', 141.75, 143.00, 140.50, 142.25, 5500000, 1680422400000, 'NYSE'), +('T001', '2023-04-03', 152.25, 154.00, 151.00, 153.50, 65000000, 1680508800000, 'NYSE'), +('T002', '2023-04-03', 283.00, 285.00, 281.50, 284.00, 30000000, 1680508800000, 'NASDAQ'), +('T003', '2023-04-03', 3227.00, 3240.00, 3220.00, 3235.00, 3600000, 1680508800000, 'NASDAQ'), +('T004', '2023-04-03', 186.25, 188.50, 185.00, 187.75, 16000000, 1680508800000, 'NASDAQ'), +('T005', '2023-04-03', 2522.00, 2540.00, 2515.00, 2535.00, 1300000, 1680508800000, 'NASDAQ'), +('T006', '2023-04-03', 205.50, 208.00, 203.50, 207.00, 13000000, 1680508800000, 'NASDAQ'), +('T007', '2023-04-03', 402500.00, 404000.00, 401000.00, 403500.00, 9000, 1680508800000, 'NYSE'), +('T008', '2023-04-03', 132.75, 134.50, 131.50, 133.75, 10000000, 1680508800000, 'NYSE'), +('T009', '2023-04-03', 222.25, 224.00, 221.00, 223.50, 7000000, 1680508800000, 'NYSE'), +('T010', '2023-04-03', 142.50, 144.00, 141.50, 143.25, 5000000, 1680508800000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '8 days', 204.00, 204.50, 202.75, 203.25, 8000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '8 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '6 days', 205.00, 207.50, 203.75, 206.25, 8000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '6 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '5 days', 206.50, 208.00, 205.00, 207.00, 7500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '5 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '4 days', 207.25, 209.00, 206.50, 208.50, 7000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '4 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '3 days', 208.75, 210.50, 207.75, 209.75, 6500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '3 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '2 days', 210.00, 211.75, 209.25, 211.00, 6000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '2 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '1 day', 211.25, 213.00, 210.50, 212.25, 5500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '1 day') * 1000, 'NYSE'), +('T019', CURRENT_DATE, 212.50, 214.25, 211.75, 213.50, 5000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000, 'NYSE'), +('T020', CURRENT_DATE - INTERVAL '6 days', 82.00, 83.00, 81.50, 82.50, 1000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '6 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '5 days', 82.60, 83.60, 82.10, 83.10, 950000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '5 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '4 days', 83.20, 84.20, 82.70, 83.70, 900000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '4 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '3 days', 83.80, 84.80, 83.30, 84.30, 850000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '3 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '2 days', 84.40, 85.40, 83.90, 84.90, 800000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '2 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '1 day', 85.00, 86.00, 84.50, 85.50, 750000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '1 day') * 1000, 'Vanguard'), +('T020', CURRENT_DATE, 85.60, 86.60, 85.10, 86.10, 700000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000, 'Vanguard'), +('T021', CURRENT_DATE - INTERVAL '6 days', 300.00, 305.00, 297.50, 302.50, 10000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '6 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '5 days', 303.00, 308.00, 300.50, 305.50, 9500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '5 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '4 days', 306.00, 311.00, 303.50, 308.50, 9000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '4 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '3 days', 309.00, 314.00, 306.50, 311.50, 8500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '3 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '2 days', 312.00, 317.00, 309.50, 314.50, 8000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '2 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '1 day', 315.00, 320.00, 312.50, 317.50, 7500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '1 day') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE, 318.00, 323.00, 315.50, 320.50, 7000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000, 'NASDAQ'); + +-- sbTransaction +INSERT INTO sbTransaction (sbTxId, sbTxCustId, sbTxTickerId, sbTxDateTime, sbTxType, sbTxShares, sbTxPrice, sbTxAmount, sbTxCcy, sbTxTax, sbTxCommission, sbTxKpx, sbTxSettlementDateStr, sbTxStatus) VALUES +('TX001', 'C001', 'T001', '2023-04-01 09:30:00'::timestamp, 'buy', 100, 150.00, 15000.00, 'USD', 75.00, 10.00, 'KP001', '20230401 09:30:00', 'success'), +('TX002', 'C002', 'T002', '2023-04-01 10:15:00'::timestamp, 'sell', 50, 280.00, 14000.00, 'USD', 70.00, 10.00, 'KP002', '20230401 10:15:00', 'success'), +('TX003', 'C003', 'T003', '2023-04-01 11:00:00'::timestamp, 'buy', 10, 3200.00, 32000.00, 'USD', 160.00, 20.00, 'KP003', '20230401 11:00:00', 'success'), +('TX004', 'C003', 'T004', '2023-04-01 11:45:00'::timestamp, 'sell', 25, 180.00, 4500.00, 'USD', 22.50, 5.00, 'KP004', '20230401 11:45:00', 'success'), +('TX005', 'C005', 'T005', '2023-04-01 12:30:00'::timestamp, 'buy', 5, 2500.00, 12500.00, 'USD', 62.50, 15.00, 'KP005', '20230401 12:30:00', 'success'), +('TX006', 'C002', 'T006', '2023-04-01 13:15:00'::timestamp, 'sell', 75, 200.00, 15000.00, 'USD', 75.00, 10.00, 'KP006', '20230401 13:15:00', 'success'), +('TX007', 'C003', 'T007', '2023-04-01 14:00:00'::timestamp, 'buy', 1, 400000.00, 400000.00, 'USD', 2000.00, 100.00, 'KP007', '20230401 14:00:00', 'success'), +('TX008', 'C003', 'T008', '2023-04-01 14:45:00'::timestamp, 'sell', 100, 130.00, 13000.00, 'USD', 65.00, 10.00, 'KP008', '20230401 14:45:00', 'success'), +('TX009', 'C009', 'T009', '2023-04-01 15:30:00'::timestamp, 'buy', 50, 220.00, 11000.00, 'USD', 55.00, 10.00, 'KP009', '20230401 15:30:00', 'success'), +('TX010', 'C002', 'T010', '2023-04-01 16:15:00'::timestamp, 'sell', 80, 140.00, 11200.00, 'USD', 56.00, 10.00, 'KP010', '20230401 16:15:00', 'success'), +('TX011', 'C001', 'T001', '2023-04-02 09:30:00'::timestamp, 'sell', 50, 151.50, 7575.00, 'USD', 37.88, 5.00, 'KP011', '20230402 09:30:00', 'success'), +('TX012', 'C002', 'T002', '2023-04-02 10:15:00'::timestamp, 'buy', 30, 281.25, 8437.50, 'USD', 42.19, 7.50, 'KP012', '20230402 10:15:00', 'fail'), +('TX013', 'C003', 'T003', '2023-04-02 11:00:00'::timestamp, 'sell', 5, 3212.00, 16060.00, 'USD', 80.30, 15.00, 'KP013', '20230402 11:00:00', 'success'), +('TX014', 'C004', 'T004', '2023-04-02 11:45:00'::timestamp, 'buy', 15, 184.50, 2767.50, 'USD', 13.84, 5.00, 'KP014', '20230402 11:45:00', 'success'), +('TX015', 'C005', 'T005', '2023-04-02 12:30:00'::timestamp, 'sell', 2, 2512.00, 5024.00, 'USD', 25.12, 10.00, 'KP015', '20230402 12:30:00', 'success'), +('TX016', 'C006', 'T006', '2023-04-02 13:15:00'::timestamp, 'buy', 50, 203.00, 10150.00, 'USD', 50.75, 10.00, 'KP016', '20230402 13:15:00', 'success'), +('TX017', 'C007', 'T007', '2023-04-02 14:00:00'::timestamp, 'sell', 1, 401500.00, 401500.00, 'USD', 2007.50, 100.00, 'KP017', '20230402 14:00:00', 'success'), +('TX018', 'C008', 'T008', '2023-04-02 14:45:00'::timestamp, 'buy', 75, 131.25, 9843.75, 'USD', 49.22, 7.50, 'KP018', '20230402 14:45:00', 'success'), +('TX019', 'C009', 'T009', '2023-04-02 15:30:00'::timestamp, 'sell', 25, 221.50, 5537.50, 'USD', 27.69, 5.00, 'KP019', '20230402 15:30:00', 'success'), +('TX020', 'C010', 'T010', '2023-04-02 16:15:00'::timestamp, 'buy', 60, 141.75, 8505.00, 'USD', 42.53, 7.50, 'KP020', '20230402 16:15:00', 'success'), +('TX021', 'C001', 'T001', '2023-04-03 09:30:00'::timestamp, 'buy', 75, 152.25, 11418.75, 'USD', 57.09, 10.00, 'KP021', '20230403 09:30:00', 'fail'), +('TX022', 'C002', 'T002', '2023-04-03 10:15:00'::timestamp, 'sell', 40, 283.00, 11320.00, 'USD', 56.60, 10.00, 'KP022', '20230403 10:15:00', 'success'), +('TX023', 'C003', 'T003', '2023-04-03 11:00:00'::timestamp, 'buy', 8, 3227.00, 25816.00, 'USD', 129.08, 20.00, 'KP023', '20230403 11:00:00', 'success'), +('TX024', 'C004', 'T004', '2023-04-03 11:45:00'::timestamp, 'sell', 20, 186.25, 3725.00, 'USD', 18.63, 5.00, 'KP024', '20230403 11:45:00', 'success'), +('TX025', 'C005', 'T005', '2023-04-03 12:30:00'::timestamp, 'buy', 3, 2522.00, 7566.00, 'USD', 37.83, 15.00, 'KP025', '20230403 12:30:00', 'success'), +('TX026', 'C006', 'T006', '2023-04-03 13:15:00'::timestamp, 'sell', 60, 205.50, 12330.00, 'USD', 61.65, 10.00, 'KP026', '20230403 13:15:00', 'success'), +('TX027', 'C007', 'T007', '2023-04-03 14:00:00'::timestamp, 'buy', 1, 402500.00, 402500.00, 'USD', 2012.50, 100.00, 'KP027', '20230403 14:00:00', 'success'), +('TX028', 'C008', 'T008', '2023-04-03 14:45:00'::timestamp, 'sell', 90, 132.75, 11947.50, 'USD', 59.74, 7.50, 'KP028', '20230403 14:45:00', 'success'), +('TX029', 'C009', 'T009', '2023-04-03 15:30:00'::timestamp, 'buy', 40, 222.25, 8890.00, 'USD', 44.45, 10.00, 'KP029', '20230403 15:30:00', 'success'), +('TX030', 'C010', 'T010', '2023-04-03 16:15:00'::timestamp, 'sell', 70, 142.50, 9975.00, 'USD', 49.88, 10.00, 'KP030', '20230403 16:15:00', 'success'), +('TX031', 'C001', 'T001', CURRENT_DATE - INTERVAL '9 days', 'buy', 100, 150.00, 15000.00, 'USD', 75.00, 10.00, 'KP031', NULL, 'fail'), +('TX032', 'C002', 'T002', CURRENT_DATE - INTERVAL '8 days', 'sell', 80, 280.00, 14000.00, 'USD', 70.00, 10.00, 'KP032', TO_CHAR(CURRENT_DATE - INTERVAL '8 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX033', 'C003', 'T001', CURRENT_DATE - INTERVAL '7 days', 'buy', 120, 200.00, 24000.00, 'USD', 120.00, 15.00, 'KP033', TO_CHAR(CURRENT_DATE - INTERVAL '7 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX034', 'C004', 'T004', CURRENT_DATE - INTERVAL '6 days', 'sell', 90, 320.00, 28800.00, 'USD', 144.00, 12.00, 'KP034', TO_CHAR(CURRENT_DATE - INTERVAL '6 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX035', 'C005', 'T001', CURRENT_DATE - INTERVAL '5 days', 'buy', 150, 180.00, 27000.00, 'USD', 135.00, 20.00, 'KP035', NULL, 'fail'), +('TX036', 'C006', 'T006', CURRENT_DATE - INTERVAL '4 days', 'sell', 70, 300.00, 21000.00, 'USD', 105.00, 15.00, 'KP036', TO_CHAR(CURRENT_DATE - INTERVAL '4 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX037', 'C007', 'T007', CURRENT_DATE - INTERVAL '3 days', 'buy', 110, 220.00, 24200.00, 'USD', 121.00, 10.00, 'KP037', TO_CHAR(CURRENT_DATE - INTERVAL '3 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX038', 'C008', 'T008', CURRENT_DATE - INTERVAL '2 days', 'sell', 100, 350.00, 35000.00, 'USD', 175.00, 25.00, 'KP038', TO_CHAR(CURRENT_DATE - INTERVAL '2 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX039', 'C009', 'T007', CURRENT_DATE - INTERVAL '1 day', 'buy', 80, 230.00, 18400.00, 'USD', 92.00, 18.00, 'KP039', NULL, 'pending'), +('TX040', 'C001', 'T011', CURRENT_DATE - INTERVAL '10 days', 'buy', 50, 400.00, 20000.00, 'USD', 100.00, 20.00, 'KP040', TO_CHAR(CURRENT_DATE - INTERVAL '10 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX041', 'C002', 'T012', CURRENT_DATE - INTERVAL '9 days', 'sell', 30, 320.00, 9600.00, 'USD', 48.00, 15.00, 'KP041', TO_CHAR(CURRENT_DATE - INTERVAL '9 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX042', 'C003', 'T013', CURRENT_DATE - INTERVAL '8 days', 'buy', 80, 180.00, 14400.00, 'USD', 72.00, 10.00, 'KP042', TO_CHAR(CURRENT_DATE - INTERVAL '8 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX043', 'C004', 'T014', CURRENT_DATE - INTERVAL '7 days', 'sell', 60, 220.00, 13200.00, 'USD', 66.00, 12.00, 'KP043', NULL, 'pending'), +('TX044', 'C012', 'T001', '2023-01-15 10:00:00'::timestamp, 'buy', 80, 155.00, 12400.00, 'USD', 62.00, 10.00, 'KP044', '20230115 10:00:00', 'success'), +('TX045', 'C012', 'T001', '2023-01-16 10:30:00'::timestamp, 'buy', 80, 155.00, 12400.00, 'USD', 62.00, 10.00, 'KP045', '20230116 10:30:00', 'success'), +('TX046', 'C013', 'T002', '2023-02-20 11:30:00'::timestamp, 'sell', 60, 285.00, 17100.00, 'USD', 85.50, 15.00, 'KP046', '20230220 11:30:00', 'success'), +('TX047', 'C014', 'T003', '2023-03-25 14:45:00'::timestamp, 'buy', 5, 3250.00, 16250.00, 'USD', 81.25, 20.00, 'KP047', '20230325 14:45:00', 'success'), +('TX048', 'C012', 'T004', '2023-01-30 13:15:00'::timestamp, 'sell', 40, 190.00, 7600.00, 'USD', 38.00, 10.00, 'KP048', '20230130 13:15:00', 'success'), +('TX049', 'C013', 'T005', '2023-02-28 16:00:00'::timestamp, 'buy', 2, 2550.00, 5100.00, 'USD', 25.50, 15.00, 'KP049', '20230228 16:00:00', 'success'), +('TX050', 'C014', 'T006', '2023-03-30 09:45:00'::timestamp, 'sell', 30, 210.00, 6300.00, 'USD', 31.50, 10.00, 'KP050', '20230331 09:45:00', 'success'), +('TX051', 'C015', 'T001', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '5 months' + INTERVAL '1 day', 'buy', 50, 150.00, 7500.00, 'USD', 37.50, 10.00, 'KP051', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '5 months' + INTERVAL '1 day', '%Y%m%d %H:%i:%s'), 'success'), +('TX052', 'C016', 'T002', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '4 months' + INTERVAL '2 days', 'sell', 40, 280.00, 11200.00, 'USD', 56.00, 10.00, 'KP052', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '4 months' + INTERVAL '2 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX053', 'C017', 'T003', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '3 months' + INTERVAL '3 days', 'buy', 15, 3200.00, 48000.00, 'USD', 240.00, 20.00, 'KP053', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '3 months' + INTERVAL '3 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX054', 'C018', 'T004', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months' + INTERVAL '4 days', 'sell', 30, 180.00, 5400.00, 'USD', 27.00, 5.00, 'KP054', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months' + INTERVAL '4 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX055', 'C019', 'T005', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month' + INTERVAL '5 days', 'buy', 10, 2500.00, 25000.00, 'USD', 125.00, 15.00, 'KP055', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month' + INTERVAL '5 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX056', 'C002', 'T006', DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 day', 'sell', 20, 200.00, 4000.00, 'USD', 20.00, 10.00, 'KP056', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 day', '%Y%m%d %H:%i:%s'), 'success'); \ No newline at end of file diff --git a/tests/test_metadata/snowflake_defog_graphs.json b/tests/test_metadata/snowflake_defog_graphs.json new file mode 100644 index 000000000..c135ce96d --- /dev/null +++ b/tests/test_metadata/snowflake_defog_graphs.json @@ -0,0 +1,3396 @@ +[ + { + "name": "Broker", + "version": "V2", + "collections": [ + { + "name": "customers", + "type": "simple table", + "table path": "BROKER.sbCustomer", + "unique properties": ["_id"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "sbCustId", + "data type": "string", + "description": "The unique identifying string for the customer", + "sample values": ["C001", "C005", "C014"], + "synonyms": ["customer key"] + }, + { + "name": "name", + "type": "table column", + "column name": "sbCustName", + "data type": "string", + "description": "The name of the customer", + "sample values": ["Ava Wilson", "Bob Johnson", "David Kim", "Emily Davis"], + "synonyms": ["customer name", "first and last name"] + }, + { + "name": "email", + "type": "table column", + "column name": "sbCustEmail", + "data type": "string", + "description": "The email of the customer", + "sample values": ["alex.rodriguez@email.com", "ava.wilson@email.com", "arah.nguyen@email.com", "samantha.lee@email.com"], + "synonyms": ["email address", "customer email"] + }, + { + "name": "phone", + "type": "table column", + "column name": "sbCustPhone", + "data type": "string", + "description": "The phone number of the customer", + "sample values": ["555-123-4567", "555-623-7419", "555-135-7902"], + "synonyms": ["phone number", "customer phone"] + }, + { + "name": "address1", + "type": "table column", + "column name": "sbCustAddress1", + "data type": "string", + "description": "The address of the customer", + "sample values": ["123 Main St", "951 Pine Rd", "246 Elm St", "258 Elm Ave"], + "synonyms": ["first address line", "street address"] + }, + { + "name": "address2", + "type": "table column", + "column name": "sbCustAddress2", + "data type": "string", + "description": "The second address of the customer, if one exists", + "synonyms": ["second address line"] + }, + { + "name": "city", + "type": "table column", + "column name": "sbCustCity", + "data type": "string", + "description": "The city the customer lives in", + "sample values": ["Anytown", "Yourtown", "Someville", "Mytown"], + "synonyms": ["customer address city"] + }, + { + "name": "state", + "type": "table column", + "column name": "sbCustState", + "data type": "string", + "description": "The state the customer lives in, by its capitalized two-letter abbreviation", + "sample values": ["CA", "NY", "TX", "FL", "NJ"], + "synonyms": ["customer address state"] + }, + { + "name": "country", + "type": "table column", + "column name": "sbCustCountry", + "data type": "string", + "description": "The country the customer lives in", + "sample values": ["USA"], + "synonyms": ["customer address country"] + }, + { + "name": "postal_code", + "type": "table column", + "column name": "sbCustPostalCode", + "data type": "string", + "description": "The postal/zip code of the customer's address", + "sample values": ["90001", "10002", "08801"], + "synonyms": ["zip code", "customer address postal code"] + }, + { + "name": "join_date", + "type": "table column", + "column name": "sbCustJoinDate", + "data type": "datetime", + "description": "The date the customer joined the brokerage", + "synonyms": ["signup date", "customer join date", "account creation date"] + }, + { + "name": "status", + "type": "table column", + "column name": "sbCustStatus", + "data type": "string", + "description": "The state of the customer's account, which is either 'active', 'inactive', or 'suspended'", + "sample values": ["active", "inactive", "suspended"], + "synonyms": ["customer account status", "activity state"] + } + ], + "description": "The customers who have accounts with the the brokerage", + "synonyms": ["users", "clients", "members", "subscribers"] + }, + { + "name": "tickers", + "type": "simple table", + "table path": "BROKER.sbTicker", + "unique properties": ["_id"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "sbTickerId", + "data type": "string", + "description": "The unique identifying string for each ticker", + "sample values": ["T001", "T003", "T007", "T0018"], + "synonyms": ["ticker key"] + }, + { + "name": "symbol", + "type": "table column", + "column name": "sbTickerSymbol", + "data type": "string", + "description": "The symbol used to abbreviate the ticker name in a recognizable manner, e.g. APPL for Apple, or GOOG for Google", + "sample values": ["APPL", "AMZN", "BRK.B", "FB", "GOOG", "NFLX", "MSFT"], + "synonyms": ["ticker symbol", "ticker abbreviation"] + }, + { + "name": "name", + "type": "table column", + "column name": "sbTickerName", + "data type": "string", + "description": "The full name of the ticker, e.g. the company name", + "sample values": ["Berkshire Hathaway Inc.", "Alphabet Inc.", "Apple Inc.", "Microsoft Corporation"], + "synonyms": ["company name", "business name"] + }, + { + "name": "ticker_type", + "type": "table column", + "column name": "sbTickerType", + "data type": "string", + "description": "The category of ticker, which is either 'stock', 'etf', or 'mutual fund'", + "sample values": ["stock", "etf", "mutual fund"], + "synonyms": ["category", "classification"] + }, + { + "name": "exchange", + "type": "table column", + "column name": "sbTickerExchange", + "data type": "string", + "description": "The exchange that the ticker is listed on, which is either 'NASDAQ', 'NYSE', 'NYSE Arca', or 'Vanguard'", + "sample values": ["NASDAQ", "NYSE", "NYSE Arca", "Vanguard"], + "synonyms": [] + }, + { + "name": "currency", + "type": "table column", + "column name": "sbTickerCurrency", + "data type": "string", + "description": "The currency that the ticker is traded in, which is always 'USD'", + "sample values": ["USD"] + }, + { + "name": "db2x", + "type": "table column", + "column name": "sbTickerDb2x", + "data type": "string", + "description": "The two-letter exchange code corresponding to the ticker's exchange, which is either 'NQ' for NASDAQ, 'NY' for NYSE, 'NX' for 'NYSE Arca', or 'VA' for Vanguard", + "sample values": ["NQ", "NY", "NX", "VG"], + "synonyms": ["exchange code"] + }, + { + "name": "is_active", + "type": "table column", + "column name": "sbTickerIsActive", + "data type": "bool", + "description": "Whether the ticker is still active", + "synonyms": ["ticker in use"] + } + ], + "description": "All of the tickers that the brokerage trades", + "synonyms": ["stocks", "etfs", "mutual funds"] + }, + { + "name": "daily_prices", + "type": "simple table", + "table path": "BROKER.sbDailyPrice", + "unique properties": [["ticker_id", "date"]], + "properties": [ + { + "name": "ticker_id", + "type": "table column", + "column name": "sbDpTickerId", + "data type": "string", + "description": "The ticker id from the ticker whose price is being record", + "sample values": ["T002", "T003", "T005", "T007", "T011"], + "synonyms": ["ticker key"] + }, + { + "name": "date", + "type": "table column", + "column name": "sbDpDate", + "data type": "datetime", + "description": "The date of the price record", + "synonyms": ["record datetime", "price update date"] + }, + { + "name": "open", + "type": "table column", + "column name": "sbDpOpen", + "data type": "numeric", + "description": "The opening price of the ticker on the day of the record", + "sample values": [150, 3200, 2500, 280], + "synonyms": ["opening price"] + }, + { + "name": "high", + "type": "table column", + "column name": "sbDpHigh", + "data type": "numeric", + "description": "The highest price of the ticker during the day of the record", + "sample values": [152.5, 282.75, 3225, 185, 2525], + "synonyms": ["high price", "high-point", "maximum price during day"] + }, + { + "name": "low", + "type": "table column", + "column name": "sbDpLow", + "data type": "numeric", + "description": "The lowest price of the ticker during the day of the record", + "sample values": [148.75, 279.5, 3180, 178.5, 2475], + "synonyms": ["low price", "low-point", "minimum price during day"] + }, + { + "name": "close", + "type": "table column", + "column name": "sbDpClose", + "data type": "numeric", + "description": "The close price of the ticker on the day of the record", + "sample values": [151.25, 281, 3210, 184.25, 2510], + "synonyms": ["closing price"] + }, + { + "name": "volume", + "type": "table column", + "column name": "sbDpVolume", + "data type": "numeric", + "description": "The total number of shares of the ticker traded during the day", + "sample values": [75000000, 4000000, 1500000, 35000000], + "synonyms": ["daily trading volume"] + }, + { + "name": "epoch_ms", + "type": "table column", + "column name": "sbDpEpochMs", + "data type": "numeric", + "description": "The number of milliseconds since the epoch (January 1, 1970) that the record was created", + "sample values": [1680336000000, 1680336000000, 1680336000000], + "synonyms": ["created timestamp in epoch milliseconds"] + }, + { + "name": "source", + "type": "table column", + "column name": "sbDpSource", + "data type": "string", + "description": "The exchange where the price record originated from, which is either 'NASDAQ', 'NYSE' or 'Vanguard'", + "sample values": ["NYSE", "NASDAQ", "Vanguard"], + "synonyms": ["price record origin"] + } + ], + "description": "The daily updates on tickers including their price information within a single day", + "synonyms": ["historical stock prices", "daily ticker price data"] + }, + { + "name": "transactions", + "type": "simple table", + "table path": "BROKER.sbTransaction", + "unique properties": ["transaction_id", "kpx"], + "properties": [ + { + "name": "transaction_id", + "type": "table column", + "column name": "sbTxId", + "data type": "string", + "description": "The unique identifying string for each transaction", + "sample values": ["TX035", "TX001", "TX008", "TX033"], + "synonyms": ["transaction key"] + }, + { + "name": "customer_id", + "type": "table column", + "column name": "sbTxCustId", + "data type": "string", + "description": "The id of the customer who made the transaction", + "sample values": ["C003", "C005", "C007", "C001", "C008"], + "synonyms": ["customer key"] + }, + { + "name": "ticker_id", + "type": "table column", + "column name": "sbTxTickerId", + "data type": "string", + "description": "The id of the ticker being bought/sold in the transaction", + "sample values": ["T001", "T007", "T008"], + "synonyms": ["ticker key"] + }, + { + "name": "date_time", + "type": "table column", + "column name": "sbTxDateTime", + "data type": "datetime", + "description": "The timestamp that the transaction was made at", + "synonyms": ["transaction timestamp", "buy/sell datetime"] + }, + { + "name": "transaction_type", + "type": "table column", + "column name": "sbTxType", + "data type": "string", + "description": "The type of transaction, which is either 'buy' or 'sell'", + "sample values": ["buy", "sell"], + "synonyms": ["category", "classification"] + }, + { + "name": "shares", + "type": "table column", + "column name": "sbTxShares", + "data type": "numeric", + "description": "The number of shares being bought/sold in the transaction", + "sample values": [150, 120, 110], + "synonyms": ["volume traded", "transaction size"] + }, + { + "name": "price", + "type": "table column", + "column name": "sbTxPrice", + "data type": "numeric", + "description": "The price that the ticker was bought/sold at in the transaction", + "sample values": [180, 200, 220, 150, 130], + "synonyms": ["buy price", "sell price", "cost", "per-share value"] + }, + { + "name": "amount", + "type": "table column", + "column name": "sbTxAmount", + "data type": "numeric", + "description": "The total monetary value of the transaction (cost for buy, revenue for sell), which is the price multiplied by the number of shares", + "sample values": [27000, 24000, 24200, 15000, 13000], + "synonyms": ["total cost", "total revenue", "transaction value"] + }, + { + "name": "currency", + "type": "table column", + "column name": "sbTxCcy", + "data type": "string", + "description": "The currency that the transaction was made in, which is always 'USD'", + "sample values": ["USD"] + }, + { + "name": "tax", + "type": "table column", + "column name": "sbTxTax", + "data type": "numeric", + "description": "The tax applied by the brokerage onto the transaction", + "sample values": [135, 120, 121, 75, 65], + "synonyms": ["levy", "duty", "tariff"] + }, + { + "name": "commission", + "type": "table column", + "column name": "sbTxCommission", + "data type": "numeric", + "description": "The commission taken by the brokerage for the transaction", + "sample values": [20, 15, 10], + "synonyms": ["brokerage fee", "transaction fee"] + }, + { + "name": "kpx", + "type": "table column", + "column name": "sbTxKpx", + "data type": "string", + "description": "The internal code used for the transaction, which corresponds to the transaction id", + "sample values": ["KP056", "KP053", "KP011"], + "synonyms": [] + }, + { + "name": "settlement_date_str", + "type": "table column", + "column name": "sbTxSettlementDateStr", + "data type": "string", + "description": "The date the transaction was settled, which is a string in the form YYYYMMDD HH:MM:SS, or null if not settled yet", + "sample values": ["20230401 09:30:00", "20230401 10:15:00", "20230401 11:00:00"], + "synonyms": ["settlement timestamp", "datetime of transaction finalization"] + }, + { + "name": "status", + "type": "table column", + "column name": "sbTxStatus", + "data type": "string", + "description": "The status of the transaction, which is either 'success', 'fail', or 'pending'", + "sample values": ["success", "fail", "pending"], + "synonyms": ["transaction state"] + } + ], + "description": "All transactions made through the brokerage", + "synonyms": ["exchanges", "trades", "buy/sell orders"] + } + ], + "relationships": [ + { + "name": "transactions_made", + "type": "simple join", + "parent collection": "customers", + "child collection": "transactions", + "singular": false, + "always matches": false, + "keys": { + "_id": [ + "customer_id" + ] + }, + "description": "All of the transactions made by the customer, including both buys and sells", + "synonyms": ["exchanges made", "trades made", "stock purchases and sales"] + }, + { + "name": "customer", + "type": "reverse", + "original parent": "customers", + "original property": "transactions_made", + "singular": true, + "always matches": true, + "description": "The customer who made the transaction", + "synonyms": ["user", "client", "stock buyer/seller"] + }, + { + "name": "transactions_of", + "type": "simple join", + "parent collection": "tickers", + "child collection": "transactions", + "singular": false, + "always matches": false, + "keys": { + "_id": [ + "ticker_id" + ] + }, + "description": "The transactions made of a ticker, including both buys and sells of the ticker", + "synonyms": ["purchases", "sales", "exchanges", "trades of ticker"] + }, + { + "name": "ticker", + "type": "reverse", + "original parent": "tickers", + "original property": "transactions_of", + "singular": true, + "always matches": true, + "description": "The ticker that the transaction was made of", + "synonyms": ["stock", "etf", "fund", "company"] + }, + { + "name": "ticker", + "type": "simple join", + "parent collection": "daily_prices", + "child collection": "tickers", + "singular": true, + "always matches": true, + "keys": { + "ticker_id": [ + "_id" + ] + }, + "description": "The ticker that the daily price record corresponds to", + "synonyms": ["stock", "etf", "fund", "company"] + }, + { + "name": "daily_prices", + "type": "reverse", + "original parent": "daily_prices", + "original property": "ticker", + "singular": false, + "always matches": false, + "description": "The daily price records for the ticker", + "synonyms": ["historical prices", "price updates"] + } + ], + "additional definitions": [], + "verified pydough analysis": [], + "extra semantic info": {} + }, + { + "name": "Dealership", + "version": "V2", + "collections": [ + { + "name": "cars", + "type": "simple table", + "table path": "BROKER.cars", + "unique properties": ["_id", "vin_number"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "Unique identifier for each car", + "sample values": [1, 3, 5, 6, 18], + "synonyms": ["car key", "car id"] + }, + { + "name": "make", + "type": "table column", + "column name": "make", + "data type": "string", + "description": "The make of the car, e.g. Ford, Toyota, etc.", + "sample values": ["Toyota", "Honda", "Ford", "Tesla", "Nissan"], + "synonyms": ["car brand", "car manufacturer"] + }, + { + "name": "model", + "type": "table column", + "column name": "model", + "data type": "string", + "description": "The model name of the car, e..g Civic, Model 3, A4, RX350, Equinox, etc.", + "sample values": ["Camry", "Accord", "Mustang", "Civic", "Altima", "Tiguan"], + "synonyms": ["car model", "car type"] + }, + { + "name": "year", + "type": "table column", + "column name": "year", + "data type": "numeric", + "description": "Year the car was manufactured", + "sample values": [2021, 2022, 2023], + "synonyms": ["year of production", "manufacturing year"] + }, + { + "name": "color", + "type": "table column", + "column name": "color", + "data type": "string", + "description": "Color of the car", + "sample values": ["Silver", "platinum/grey", "blue", "Titan Silver", "black", "ebony black", "baby blue", "Black", "Jade", "Fiery red"], + "synonyms": ["paint color"] + }, + { + "name": "vin_number", + "type": "table column", + "column name": "vin_number", + "data type": "string", + "description": "Vehicle identification number, a unique code used to identify individual motor vehicles", + "sample values": ["1C4HJXDG3NW123456", "1C6SRFFT3NN123456", "3VV2B7AX1NM123456"], + "synonyms": ["VIN", "vehicle ID"] + }, + { + "name": "engine_type", + "type": "table column", + "column name": "engine_type", + "data type": "string", + "description": "Type of engine (e.g., V6, V8, Electric)", + "sample values": [ + "Boxer 4", + "Electric", + "Flat 6", + "Inline 4", + "Inline 6", + "V6", + "V8" + ], + "synonyms": ["motor", "engine model"] + }, + { + "name": "transmission", + "type": "table column", + "column name": "transmission", + "data type": "string", + "description": "Type of transmission, which is always either 'Automatic', 'Manual', or 'CVT'", + "sample values": ["Automatic", "Manual", "CVT"], + "synonyms": ["gearbox", "transmission type"] + }, + { + "name": "cost", + "type": "table column", + "column name": "cost", + "data type": "numeric", + "description": "Cost of the car", + "sample values": [38000.0, 45000.0, 22000.0, 32000.0], + "synonyms": ["value"] + }, + { + "name": "crtd_ts", + "type": "table column", + "column name": "crtd_ts", + "data type": "datetime", + "description": "Timestamp when the car was added to the system", + "synonyms": ["created timestamp", "system entry date"] + } + ], + "description": "All cars recorded in the dealership system", + "synonyms": ["vehicles", "automobiles"] + }, + { + "name": "salespeople", + "type": "simple table", + "table path": "BROKER.salespersons", + "unique properties": ["_id", "email"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "Unique identifier for each salesperson in the dealership", + "sample values": [1, 5, 10, 13], + "synonyms": ["salesperson key", "salesperson id", "salesperson number"] + }, + { + "name": "first_name", + "type": "table column", + "column name": "first_name", + "data type": "string", + "description": "The first name of the salesperson", + "sample values": ["John", "Jane", "David", "Sarah"] + }, + { + "name": "last_name", + "type": "table column", + "column name": "last_name", + "data type": "string", + "description": "The last name of the salesperson", + "sample values": ["Doe", "Smith", "Taylor", "Thomas"], + "synonyms": ["surname"] + }, + { + "name": "email", + "type": "table column", + "column name": "email", + "data type": "string", + "description": "Work email of the salesperson", + "sample values": ["john.doe@autonation.com", "michael.johnson@autonation.com", "jennifer.davis@directauto.com"], + "synonyms": ["email address", "work email"] + }, + { + "name": "phone", + "type": "table column", + "column name": "phone", + "data type": "string", + "description": "Contact phone number of the salesperson, where tte first 3 digits are the area code. Format: (123)-456-7890", + "sample values": ["(555)-123-4567", "(444)-333-4444", "(001)-415-5678", "(555)-789-0123"], + "synonyms": ["phone number", "contact information"] + }, + { + "name": "hire_date", + "type": "table column", + "column name": "hire_date", + "data type": "datetime", + "description": "The date the salesperson was hired", + "synonyms": ["employment date", "start date"] + }, + { + "name": "termination_date", + "type": "table column", + "column name": "termination_date", + "data type": "datetime", + "description": "The date the salesperson left the dealership, if applicable (null if still working there)", + "synonyms": ["firing date", "exit date", "quitting date", "end date"] + }, + { + "name": "crtd_ts", + "type": "table column", + "column name": "crtd_ts", + "data type": "datetime", + "description": "Timestamp when the salesperson record was created", + "synonyms": ["created timestamp", "system entry date"] + } + ], + "description": "The salespeople working at the dealership, current and former", + "synonyms": ["dealership employees", "sales staff", "sales associates"] + }, + { + "name": "customers", + "type": "simple table", + "table path": "BROKER.customers", + "unique properties": ["_id", "email"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "Unique identifier for each customer", + "sample values": [1, 5, 9, 12], + "synonyms": ["customer key", "customer id"] + }, + { + "name": "first_name", + "type": "table column", + "column name": "first_name", + "data type": "string", + "description": "The first name of the customer", + "sample values": ["William", "Ava", "Sophia", "Mia"] + }, + { + "name": "last_name", + "type": "table column", + "column name": "last_name", + "data type": "string", + "description": "The last name of the customer", + "sample values": ["Davis", "Miller", "Jackson", "Lee"], + "synonyms": ["surname"] + }, + { + "name": "email", + "type": "table column", + "column name": "email", + "data type": "string", + "description": "The email address of the customer", + "sample values": ["william.davis@example.com", "charlotte.anderson@example.com", "sophia.lee@microsoft.com", "christopher.brown@ai.com", "abigail.harris@company.io"], + "synonyms": ["contact email", "email address"] + }, + { + "name": "phone", + "type": "table column", + "column name": "phone", + "data type": "string", + "description": "The phone number of the customer listed with the dealership", + "sample values": ["555-888-9999", "555-666-5555", "555-456-7890", "555-444-3333"], + "synonyms": ["contact information", "phone number"] + }, + { + "name": "address", + "type": "table column", + "column name": "address", + "data type": "string", + "description": "The home address of the customer given to the dealership", + "sample values": ["123 Main St", "456 Oak Ave", "987 Birch Dr", "951 Oak Ln"], + "synonyms": ["street address", "home address", "street name and street number"] + }, + { + "name": "city", + "type": "table column", + "column name": "city", + "data type": "string", + "description": "The city of the customer's home address", + "sample values": ["New York", "Los Angeles", "Chicago", "Dallas"] + }, + { + "name": "state", + "type": "table column", + "column name": "state", + "data type": "string", + "description": "The state of the customer's home address, by its capitalized two-letter abbreviation", + "sample values": ["NY", "CA", "TX", "IL"] + }, + { + "name": "zip_code", + "type": "table column", + "column name": "zip_code", + "data type": "string", + "description": "The zip-code of the customer's home address", + "sample values": ["10001", "60007", "95101", "94101"], + "synonyms": [] + }, + { + "name": "crtd_ts", + "type": "table column", + "column name": "crtd_ts", + "data type": "datetime", + "description": "Timestamp when the customer record was created", + "synonyms": ["created timestamp", "system entry date"] + } + ], + "description": "All the customers who are registered with the dealership", + "synonyms": ["clients", "users", "buyers", "consumers"] + }, + { + "name": "payments_made", + "type": "simple table", + "table path": "BROKER.payments_made", + "unique properties": ["_id", "invoice_number"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "Unique identifier for each payment made", + "sample values": [1, 11, 16, 17], + "synonyms": ["payment key", "payment id"] + }, + { + "name": "vendor_name", + "type": "table column", + "column name": "vendor_name", + "data type": "string", + "description": "Name of the vendor to whom the payment was made", + "sample values": ["Chevrolet Auto", "Marketing Agency", "Car Manufacturer Inc"], + "synonyms": ["payment recipient", "vendor"] + }, + { + "name": "payment_date", + "type": "table column", + "column name": "payment_date", + "data type": "datetime", + "description": "Date that the payment was made" + }, + { + "name": "payment_amount", + "type": "table column", + "column name": "payment_amount", + "data type": "numeric", + "description": "The amount that was paid in the payment in USD", + "sample values": [150000.0, 1500.0, 22000.0], + "synonyms": ["payment sum", "dollar value"] + }, + { + "name": "payment_method", + "type": "table column", + "column name": "payment_method", + "data type": "string", + "description": "Method of payment, which is either 'bank_transfer', 'credit_card', 'check', or 'credit_card'", + "sample values": ["bank_transfer", "credit_card", "check", "credit_card"], + "synonyms": ["transfer medium", "payment type"] + }, + { + "name": "invoice_number", + "type": "table column", + "column name": "invoice_number", + "data type": "string", + "description": "Invoice number associated with the payment", + "sample values": ["INV-001", "INV-017", "INV-008"], + "synonyms": ["invoice id", "invoice key", "invoice serial"] + }, + { + "name": "invoice_date", + "type": "table column", + "column name": "invoice_date", + "data type": "datetime", + "description": "Date of the invoice", + "synonyms": ["date of payment"] + }, + { + "name": "due_date", + "type": "table column", + "column name": "due_date", + "data type": "datetime", + "description": "Due date of the invoice", + "synonyms": ["deadline", "expected payment date"] + }, + { + "name": "crtd_ts", + "type": "table column", + "column name": "crtd_ts", + "data type": "datetime", + "description": "Timestamp when the payment made record was created", + "synonyms": ["system entry date", "created timestamp"] + } + ], + "description": "Records of payments made by the dealership to vendors", + "synonyms": ["vendor payments", "vendor transactions", "vendor expenditures"] + }, + { + "name": "payments_received", + "type": "simple table", + "table path": "BROKER.payments_received", + "unique properties": ["_id"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "Unique identifier for each payment received record", + "sample values": [1, 2, 10, 19, 23], + "synonyms": ["payment key", "payment id"] + }, + { + "name": "sale_id", + "type": "table column", + "column name": "sale_id", + "data type": "numeric", + "description": "The id of the sale that the payment is associated with", + "sample values": [1, 5, 9, 20, 21], + "synonyms": ["sale key", "sale id"] + }, + { + "name": "payment_date", + "type": "table column", + "column name": "payment_date", + "data type": "datetime", + "description": "Date when the payment was received. Can take place after the sale date, or in installments.", + "synonyms": ["transaction date", "installment date"] + }, + { + "name": "payment_amount", + "type": "table column", + "column name": "payment_amount", + "data type": "numeric", + "description": "Amount of the payment received. Can be less than the sale price if the payment is made in installments.", + "sample values": [115000.0, 5000.0, 44000.0, 26000.0], + "synonyms": ["cash received", "payment sum"] + }, + { + "name": "payment_method", + "type": "table column", + "column name": "payment_method", + "data type": "string", + "description": "Method used to make the payment, which can be 'check', 'financing', 'credit_card', 'debit_card', or 'cash'", + "sample values": ["check", "financing", "credit_card", "debit_card", "cash"], + "synonyms": ["transfer method", "payment type"] + }, + { + "name": "crtd_ts", + "type": "table column", + "column name": "crtd_ts", + "data type": "datetime", + "description": "Timestamp when the payment received record was created", + "synonyms": ["system entry date", "created timestamp"] + } + ], + "description": "Records of payments received by the dealership from customers as part of a sale", + "synonyms": ["car purchase payments", "customer payments", "customer transactions", "car purchase installments"] + }, + { + "name": "sales", + "type": "simple table", + "table path": "BROKER.sales", + "unique properties": ["_id"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "Unique identifier for each car sale", + "sample values": [5, 11, 12, 18, 22], + "synonyms": ["sale key", "sale id"] + }, + { + "name": "car_id", + "type": "table column", + "column name": "car_id", + "data type": "numeric", + "description": "The id of the car being purchased in the sale", + "sample values": [1, 3, 5, 6, 18], + "synonyms": ["car key", "car id"] + }, + { + "name": "salesperson_id", + "type": "table column", + "column name": "salesperson_id", + "data type": "numeric", + "description": "The id of the salesperson who brokered the sale", + "sample values": [1, 5, 10, 13], + "synonyms": ["salesperson key", "salesperson id"] + }, + { + "name": "customer_id", + "type": "table column", + "column name": "customer_id", + "data type": "numeric", + "description": "The id of the customer who purchased the car in the sale", + "sample values": [1, 5, 9, 12], + "synonyms": ["customer key", "customer id"] + }, + { + "name": "sale_price", + "type": "table column", + "column name": "sale_price", + "data type": "numeric", + "description": "Price at which the car was sold", + "sample values": [43500.0, 30500.0, 38000.0, 49000.0, 26500.0], + "synonyms": ["purchase cost", "sale amount", "dollar value"] + }, + { + "name": "sale_date", + "type": "table column", + "column name": "sale_date", + "data type": "datetime", + "description": "Date when the car was sold", + "synonyms": ["purchase date", "transaction date"] + }, + { + "name": "crtd_ts", + "type": "table column", + "column name": "crtd_ts", + "data type": "datetime", + "description": "Timestamp when the sale record was created", + "synonyms": ["system entry date", "created timestamp"] + } + ], + "description": "Records of cars being purchased from the dealership from a customer via one of the salespeople", + "synonyms": ["car purchases", "sale records", "vehicle sale transactions"] + }, + { + "name": "inventory_snapshots", + "type": "simple table", + "table path": "BROKER.inventory_snapshots", + "unique properties": ["_id"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "Unique identifier for each inventory snapshot entry", + "sample values": [1, 4, 13, 19, 23], + "synonyms": ["inventory snapshot key", "snapshot id"] + }, + { + "name": "snapshot_date", + "type": "table column", + "column name": "snapshot_date", + "data type": "datetime", + "description": "Date of the inventory snapshot", + "synonyms": ["date of snapshot", "inventory date"] + }, + { + "name": "car_id", + "type": "table column", + "column name": "car_id", + "data type": "numeric", + "description": "The key of the car that the inventory snapshot is for", + "sample values": [2, 10, 1, 4, 9], + "synonyms": ["car key", "car id"] + }, + { + "name": "is_in_inventory", + "type": "table column", + "column name": "is_in_inventory", + "data type": "bool", + "description": "Whether that specific car was in the dealership's inventory at the time of the snapshot", + "synonyms": ["car in inventory", "car availability"] + }, + { + "name": "crtd_ts", + "type": "table column", + "column name": "crtd_ts", + "data type": "datetime", + "description": "Timestamp when the inventory snapshot record was created", + "synonyms": ["system entry date", "created timestamp"] + } + ], + "description": "Records of whether specific individual cars were in the dealership's inventory as of specific dates", + "synonyms": ["inventory records", "stock records", "car availability manifest"] + } + ], + "relationships": [ + { + "name": "sale_records", + "type": "simple join", + "parent collection": "cars", + "child collection": "sales", + "singular": false, + "always matches": false, + "keys": { + "_id": [ + "car_id" + ] + }, + "description": "All sales made where the car was sold", + "synonyms": ["purchases of vehicle", "car sales", "vehicle transactions"] + }, + { + "name": "car", + "type": "reverse", + "original parent": "cars", + "original property": "sale_records", + "singular": true, + "always matches": true, + "description": "The car being purchased in the sale", + "synonyms": ["vehicle", "automobile"] + }, + { + "name": "inventory_snapshots", + "type": "simple join", + "parent collection": "cars", + "child collection": "inventory_snapshots", + "singular": false, + "always matches": false, + "keys": { + "_id": [ + "car_id" + ] + }, + "description": "The inventory snapshots for the car, which show whether it was in the dealership's inventory at specific dates", + "synonyms": ["availability records", "inventory history"] + }, + { + "name": "car", + "type": "reverse", + "original parent": "cars", + "original property": "inventory_snapshots", + "singular": true, + "always matches": true, + "description": "The car that the inventory snapshot belongs to", + "synonyms": ["vehicle", "automobile"] + }, + { + "name": "sales_made", + "type": "simple join", + "parent collection": "salespeople", + "child collection": "sales", + "singular": false, + "always matches": false, + "keys": { + "_id": [ + "salesperson_id" + ] + }, + "description": "All the sales brokered by the salesperson", + "synonyms": ["sales records", "transactions made", "deals closed"] + }, + { + "name": "salesperson", + "type": "reverse", + "original parent": "salespeople", + "original property": "sales_made", + "singular": true, + "always matches": true, + "description": "The salesperson who brokered the car purchase deal", + "synonyms": ["broker", "sales associate", "sales staff", "dealer"] + }, + { + "name": "car_purchases", + "type": "simple join", + "parent collection": "customers", + "child collection": "sales", + "singular": false, + "always matches": false, + "keys": { + "_id": [ + "customer_id" + ] + }, + "description": "All car purchases made by the customer", + "synonyms": ["vehicle purchase records", "car transactions", "automobile purchases"] + }, + { + "name": "customer", + "type": "reverse", + "original parent": "customers", + "original property": "car_purchases", + "singular": true, + "always matches": true, + "description": "The customer who purchased the car", + "synonyms": ["client", "buyer", "purchaser", "consumer", "user"] + }, + { + "name": "payment", + "type": "simple join", + "parent collection": "sales", + "child collection": "payments_received", + "singular": false, + "always matches": false, + "keys": { + "_id": [ + "sale_id" + ] + }, + "description": "The payment installments made for the sale, which can be one or multiple installments for a single sale", + "synonyms": ["sale purchase installments", "payment records"] + }, + { + "name": "sale_record", + "type": "reverse", + "original parent": "sales", + "original property": "payment", + "singular": true, + "always matches": true, + "description": "The sale that the payment is a part of", + "synonyms": ["purchase record", "vehicle sale", "car purchase"] + } + ], + "additional definitions": [], + "verified pydough analysis": [], + "extra semantic info": {} + }, + { + "name": "DermTreatment", + "version": "V2", + "collections": [ + { + "name": "doctors", + "type": "simple table", + "table path": "BROKER.doctors", + "unique properties": ["doc_id"], + "properties": [ + { + "name": "doc_id", + "type": "table column", + "column name": "doc_id", + "data type": "numeric", + "description": "Unique identifier for each doctor in the system", + "sample values": [1, 2, 4, 8, 10], + "synonyms": ["doctor key", "doctor id"] + }, + { + "name": "first_name", + "type": "table column", + "column name": "first_name", + "data type": "string", + "description": "The first name of the doctor", + "sample values": ["John", "Michael", "Daniel", "Olivia"] + }, + { + "name": "last_name", + "type": "table column", + "column name": "last_name", + "data type": "string", + "description": "The last name of the doctor", + "sample values": ["Smith", "Brown", "Wilson", "Garcia"], + "synonyms": ["surname"] + }, + { + "name": "specialty", + "type": "table column", + "column name": "specialty", + "data type": "string", + "description": "The specialty of the doctor, which can be one of the following: dermatology, immunology, general, or oncology", + "sample values": ["dermatology", "immunology", "general", "oncology"], + "synonyms": ["focus", "area", "specialization", "expertise", "type of doctor"] + }, + { + "name": "year_reg", + "type": "table column", + "column name": "year_reg", + "data type": "numeric", + "description": "Year the doctor was registered and obtained license", + "sample values": [1998, 2006, 2012, 2015, 2018], + "synonyms": ["registration year", "year received license"] + }, + { + "name": "med_school_name", + "type": "table column", + "column name": "med_school_name", + "data type": "string", + "description": "The name of the medical school where the doctor graduated", + "sample values": ["University of Pennsylvania", "Johns Hopkins University", "Columbia University"], + "synonyms": ["alma matter", "medical school", "graduated from"] + }, + { + "name": "city", + "type": "table column", + "column name": "loc_city", + "data type": "string", + "description": "The city where the doctor is located", + "sample values": ["San Francisco", "Durham", "Ann Arbour", "New York"], + "synonyms": ["city of practice", "city of work", "location city", "city of residence"] + }, + { + "name": "state", + "type": "table column", + "column name": "loc_state", + "data type": "string", + "description": "The state where the doctor is located, by its capitalized two-letter abbreviation", + "sample values": ["CA", "NC", "NY", "MI"], + "synonyms": ["state of practice", "state of work", "location state", "state of residence"] + }, + { + "name": "zip_code", + "type": "table column", + "column name": "loc_zip", + "data type": "string", + "description": "The zip code where the doctor is located", + "sample values": ["21201", "02115", "94304", "10027"], + "synonyms": ["zip code of practice", "zip code of work", "location zip code", "zip code of residence"] + }, + { + "name": "board_certification_number", + "type": "table column", + "column name": "bd_cert_num", + "data type": "string", + "description": "The board certification number of the doctor", + "sample values": ["YZA890", "ABC123", "GHI012", "JKL345"], + "synonyms": ["board certification number", "certification number"] + } + ], + "description": "All the doctors registered in the system", + "synonyms": ["practitioners", "physicians", "medical professionals"] + }, + { + "name": "patients", + "type": "simple table", + "table path": "BROKER.patients", + "unique properties": ["patient_id", "email", "phone"], + "properties": [ + { + "name": "patient_id", + "type": "table column", + "column name": "patient_id", + "data type": "numeric", + "description": "The unique identifier for each patient in the system", + "sample values": [1, 3, 5, 7, 9], + "synonyms": ["patient key", "patient id"] + }, + { + "name": "first_name", + "type": "table column", + "column name": "first_name", + "data type": "string", + "description": "The first name of the patient", + "sample values": ["Alice", "Bob", "Carol", "David", "Eve"] + }, + { + "name": "last_name", + "type": "table column", + "column name": "last_name", + "data type": "string", + "description": "The last name of the patient", + "sample values": ["Smith", "Richter", "Martinez", "Taylor"], + "synonyms": ["surname"] + }, + { + "name": "date_of_birth", + "type": "table column", + "column name": "date_of_birth", + "data type": "datetime", + "description": "The date the patient was born", + "synonyms": ["birthday"] + }, + { + "name": "date_of_registration", + "type": "table column", + "column name": "date_of_registration", + "data type": "datetime", + "description": "The date the patient was registered in the system", + "synonyms": ["registration date", "system entry date"] + }, + { + "name": "gender", + "type": "table column", + "column name": "gender", + "data type": "string", + "description": "The gender of the patient, which can either 'Male', 'Female', or 'Others'", + "sample values": ["Male", "Female", "Others"], + "synonyms": ["sex"] + }, + { + "name": "email", + "type": "table column", + "column name": "email", + "data type": "string", + "description": "The email of the patient used for contact information", + "sample values": ["alice@email.com", "eve@email.com", "frank@email.com", "john@qwik.com'"], + "synonyms": ["email address", "contact email"] + }, + { + "name": "phone", + "type": "table column", + "column name": "phone", + "data type": "string", + "description": "The phone number of the patient used for contact information", + "sample values": ["555-123-4567", "555-987-6543", "555-123-4567"], + "synonyms": ["contact phone", "phone number"] + }, + { + "name": "street_address", + "type": "table column", + "column name": "addr_city", + "data type": "string", + "description": "The street address of the patient's home, including street name and number", + "sample values": ["987 Birch Dr", "753 Walnut Ave", "951 Spruce Blvd"], + "synonyms": ["street name and number", "home address"] + }, + { + "name": "city", + "type": "table column", + "column name": "addr_city", + "data type": "string", + "description": "The city of the patient's address", + "sample values": ["Anytown", "Somecity", "Somewhere", "Somewhere"], + "synonyms": ["home city", "town", "city of residence"] + }, + { + "name": "state", + "type": "table column", + "column name": "addr_state", + "data type": "string", + "description": "The state of the patient's address, by its capitalized two-letter abbreviation", + "sample values": ["CA", "TX", "FL", "OH"], + "synonyms": ["home state", "state of residence"] + }, + { + "name": "zip_code", + "type": "table column", + "column name": "addr_zip", + "data type": "string", + "description": "The zip code of the patient's address", + "sample values": ["12345", "54321", "86420"], + "synonyms": ["home zip code", "postal code", "zip code of residence"] + }, + { + "name": "insurance_type", + "type": "table column", + "column name": "ins_type", + "data type": "string", + "description": "The type of insurance the patient has, which can be one of the following: private, medicare, medicaid, or uninsured", + "sample values": ["private", "medicare", "medicaid", "uninsured"], + "synonyms": [] + }, + { + "name": "insurance_policy_number", + "type": "table column", + "column name": "ins_policy_num", + "data type": "string", + "description": "The policy number of the patient's insurance (null if uninsured)", + "sample values": ["ABC123456", "XYZ789012", "JKL567890", "PQR135790"], + "synonyms": ["policy number"] + }, + { + "name": "height", + "type": "table column", + "column name": "height_cm", + "data type": "numeric", + "description": "The height of the patient in centimeters", + "sample values": [165, 180, 160, 178], + "synonyms": ["centimeter height"] + }, + { + "name": "weight", + "type": "table column", + "column name": "weight_kg", + "data type": "numeric", + "description": "The weight of the patient in kilograms", + "sample values": [60, 78, 90, 60], + "synonyms": ["kilogram weight"] + } + ], + "description": "The personal & registration information about every patient registered in the system", + "synonyms": ["patient records", "patient information", "patient data", "clients", "trial subjects", "participants"] + }, + { + "name": "drugs", + "type": "simple table", + "table path": "BROKER.drugs", + "unique properties": ["drug_id", "national_drug_code"], + "properties": [ + { + "name": "drug_id", + "type": "table column", + "column name": "drug_id", + "data type": "numeric", + "description": "The unique identifier for each drug in the system", + "sample values": [1, 2, 4, 8], + "synonyms": ["drug key", "drug id"] + }, + { + "name": "drug_name", + "type": "table column", + "column name": "drug_name", + "data type": "string", + "description": "The brand name of the drug", + "sample values": ["Drugalin", "Topizol", "Biologic-X", "Topicalin"], + "synonyms": ["brand name", "pharmaceutical name", "medication name"] + }, + { + "name": "manufacturer", + "type": "table column", + "column name": "manufacturer", + "data type": "string", + "description": "The name of the company who produces the drug", + "sample values": ["Pharma Inc", "Acme Pharma", "Derma Rx", "BioMed Ltd"], + "synonyms": ["producer", "drug manufacturer", "pharmaceutical company", "drug company"] + }, + { + "name": "drug_type", + "type": "table column", + "column name": "drug_type", + "data type": "string", + "description": "The category of drug, which can be one of the following: 'biologic', 'small molecule', or 'topical'", + "sample values": ["biologic", "small molecule", "topical"], + "synonyms": ["category", "classification", "type of drug"] + }, + { + "name": "mechanism_of_activation", + "type": "table column", + "column name": "moa", + "data type": "string", + "description": "The mechanism of activation of the drug", + "sample values": ["TNF-alpha inhibitor", "PDE4 inhibitor", "IL-12/23 inhibitor"], + "synonyms": ["moa"] + }, + { + "name": "fda_approval_date", + "type": "table column", + "column name": "fda_appr_dt", + "data type": "datetime", + "description": "The date the drug was approved by the FDA (null if not approved because it is still under trial)", + "synonyms": ["approval date"] + }, + { + "name": "administration_route", + "type": "table column", + "column name": "admin_route", + "data type": "string", + "description": "The means used to administer the drug, which can be one of the following: 'oral', 'injection' or 'topical'", + "sample values": ["oral", "injection", "topical"], + "synonyms": ["method of procedure", "administration method", "delivery means"] + }, + { + "name": "recommended_dosage_amount", + "type": "table column", + "column name": "dos_amt", + "data type": "numeric", + "description": "The recommended amount of the drug to be taken per dose, where the unit is specified in the dosage_units property", + "sample values": [40, 30, 15, 5], + "synonyms": ["dose size", "quantity per dose", "amount taken per administration"] + }, + { + "name": "dosage_units", + "type": "table column", + "column name": "dos_unit", + "data type": "string", + "description": "The unit used by recommended_dosage_amount, which is either `mg` (for milligrams) or `g` (for grams)", + "sample values": ["mg", "g"], + "synonyms": ["units of measurement", "dosage unit", "dose quantity scale factor"] + }, + { + "name": "dose_frequency_hours", + "type": "table column", + "column name": "dos_freq_hrs", + "data type": "numeric", + "description": "The recommended number of hours between dosages", + "sample values": [336, 24, 12, 672], + "synonyms": ["gap between doses", "administration hour intervals", "time between doses"] + }, + { + "name": "national_drug_code", + "type": "table column", + "column name": "ndc", + "data type": "string", + "description": "The national drug code of the drug, which is a unique identifier assigned to each drug by the FDA", + "sample values": ["12345-678-90", "13579-246-80", "95146-753-19"], + "synonyms": [] + } + ], + "description": "The drugs listed in the system, which are used for treatment of patients", + "synonyms": ["medications", "pharmaceuticals"] + }, + { + "name": "diagnoses", + "type": "simple table", + "table path": "BROKER.diagnoses", + "unique properties": ["_id", "code", "name"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "diagnosis_id", + "data type": "numeric", + "description": "The unique identifier for each diagnosis in the system", + "sample values": [1, 3, 5, 7, 9], + "synonyms": ["diagnosis key", "diagnosis id"] + }, + { + "name": "code", + "type": "table column", + "column name": "diag_code", + "data type": "string", + "description": "The code of the diagnosis, which is a unique identifier assigned to each diagnosis by the ICD-10 system", + "sample values": ["L40.0", "L40.59", "F40.8", "L40.50"], + "synonyms": ["diagnosis code", "ICD-10 code"] + }, + { + "name": "name", + "type": "table column", + "column name": "diag_name", + "data type": "string", + "description": "Name of the diagnosis, in medical terms", + "sample values": ["Psoriasis vulgaris", "Generalized pustular psoriasis", "Psoriasis, unspecified", "Other psoriatic arthropathy", "Psoriatic arthritis mutilans"], + "synonyms": ["title"] + }, + { + "name": "description", + "type": "table column", + "column name": "diag_desc", + "data type": "string", + "description": "An elaboration of the diagnosis, in more layman's terms and/or with some symptoms included", + "sample values": ["Plaque psoriasis, the most common form", "Psoriasis not further specified", "Includes flexural, erythrodermic, and other rare types", "Small, teardrop-shaped lesions", "Widespread pustules on top of red skin"], + "synonyms": ["details", "symptoms", "explanation"] + } + ], + "description": "Records of each diagnosis in the system, which are identified when treating patients", + "synonyms": ["medical conditions", "diagnostic codes"] + }, + { + "name": "treatments", + "type": "simple table", + "table path": "BROKER.treatments", + "unique properties": ["treatment_id"], + "properties": [ + { + "name": "treatment_id", + "type": "table column", + "column name": "treatment_id", + "data type": "numeric", + "description": "Unique identifier for each treatment record in the system", + "sample values": [1, 4, 7, 16, 26], + "synonyms": ["treatment id", "treatment key"] + }, + { + "name": "patient_id", + "type": "table column", + "column name": "patient_id", + "data type": "numeric", + "description": "The id of the patient who is receiving the treatment", + "sample values": [1, 3, 5, 7, 9], + "synonyms": ["patient key", "patient id"] + }, + { + "name": "doc_id", + "type": "table column", + "column name": "doc_id", + "data type": "numeric", + "description": "The id of the doctor who is administering the treatment", + "sample values": [1, 2, 4, 8], + "synonyms": ["doctor key", "doctor id"] + }, + { + "name": "drug_id", + "type": "table column", + "column name": "drug_id", + "data type": "numeric", + "description": "The id of the drug being used in the treatment", + "sample values": [1, 2, 3, 5], + "synonyms": ["drug key", "drug id"] + }, + { + "name": "diagnosis_id", + "type": "table column", + "column name": "diagnosis_id", + "data type": "numeric", + "description": "The id of the diagnosis the patient is being treated for", + "sample values": [2, 4, 5, 6, 8], + "synonyms": ["diagnosis key", "diagnosis id"] + }, + { + "name": "start_date", + "type": "table column", + "column name": "start_dt", + "data type": "datetime", + "description": "The date the treatment began", + "synonyms": ["treatment start date", "treatment initiation date"] + }, + { + "name": "end_date", + "type": "table column", + "column name": "end_dt", + "data type": "datetime", + "description": "The date the treatment ended (null if ongoing)", + "synonyms": ["treatment end date", "treatment completion date"] + }, + { + "name": "is_placebo", + "type": "table column", + "column name": "is_placebo", + "data type": "bool", + "description": "True if the treatment is a placebo, false otherwise", + "synonyms": ["placebo treatment", "dummy treatment"] + }, + { + "name": "total_drug_amount", + "type": "table column", + "column name": "tot_drug_amt", + "data type": "numeric", + "description": "The total quantity of the drug used in the treatment, where the unit is specified in the drug_unit property", + "sample values": [240, 180, 720, 360], + "synonyms": ["amount of drug used", "total drug quantity", "total dosage"] + }, + { + "name": "drug_unit", + "type": "table column", + "column name": "drug_unit", + "data type": "string", + "description": "The unit used by total_drug_amount, which is either `mg` (for milligrams) or `g` (for grams)", + "sample values": ["mg", "g"], + "synonyms": ["dosage unit", "unit of measurement", "drug quantity scale factor"] + } + ], + "description": "The records of each treatment administered to patients in the system, which can be either a drug or a placebo", + "synonyms": ["treatment records", "medical treatments", "therapies"] + }, + { + "name": "outcomes", + "type": "simple table", + "table path": "BROKER.outcomes", + "unique properties": ["outcome_id"], + "properties": [ + { + "name": "outcome_id", + "type": "table column", + "column name": "outcome_id", + "data type": "numeric", + "description": "The unique identifier for each treatment outcome in the system", + "sample values": [1, 5, 16, 20, 21], + "synonyms": ["outcome key", "outcome id"] + }, + { + "name": "treatment_id", + "type": "table column", + "column name": "treatment_id", + "data type": "numeric", + "description": "The id for the treatment that the outcome is related to", + "sample values": [3, 5, 9, 25, 26], + "synonyms": ["treatment key", "treatment id"] + }, + { + "name": "assessment_date", + "type": "table column", + "column name": "assess_dt", + "data type": "datetime", + "description": "The date when the outcome assessment was made", + "synonyms": ["date of assessment", "evaluation date"] + }, + { + "name": "day7_lesion_count", + "type": "table column", + "column name": "day7_lesion_cnt", + "data type": "numeric", + "description": "The number of lesions counted on the patient's skin at day 7 after treatment started", + "sample values": [20, 25, 18, 30, 22], + "synonyms": ["lesions observed on day 7"] + }, + { + "name": "day30_lesion_count", + "type": "table column", + "column name": "day30_lesion_cnt", + "data type": "numeric", + "description": "The number of lesions counted on the patient's skin at day 30 after treatment started (null if not enough time has passed)", + "sample values": [15, 18, 12, 25, 16], + "synonyms": ["lesions observed on day 30"] + }, + { + "name": "day100_lesion_count", + "type": "table column", + "column name": "day100_lesion_cnt", + "data type": "numeric", + "description": "The number of lesions counted on the patient's skin at day 100 after treatment started (null if not enough time has passed)", + "sample values": [5, 8, 3, 12, 6], + "synonyms": ["lesions observed on day 100"] + }, + { + "name": "day7_pasi_score", + "type": "table column", + "column name": "day7_pasi_score", + "data type": "numeric", + "description": "The PASI score calculated at day 7 after treatment started, (Psoriasis Area and Severity Index) which is a measure of the severity of psoriasis from 0 to 72", + "sample values": [12.5, 15.0, 10.8, 18.2, 13.1], + "synonyms": ["PASI on day 7"] + }, + { + "name": "day30_pasi_score", + "type": "table column", + "column name": "day30_pasi_score", + "data type": "numeric", + "description": "The PASI score calculated at day 30 after treatment started, (Psoriasis Area and Severity Index) which is a measure of the severity of psoriasis from 0 to 72 (null if not enough time has passed)", + "sample values": [8.2, 10.1, 6.4, 18.2, 13.1], + "synonyms": ["PASI on day 30"] + }, + { + "name": "day100_pasi_score", + "type": "table column", + "column name": "day100_pasi_score", + "data type": "numeric", + "description": "The PASI score calculated at day 100 after treatment started, (Psoriasis Area and Severity Index) which is a measure of the severity of psoriasis from 0 to 72 (null if not enough time has passed)", + "sample values": [2.1, 3.5, 1.2, 5.8, 2.6], + "synonyms": ["PASI on day 100"] + }, + { + "name": "day7_tewl", + "type": "table column", + "column name": "day7_tewl", + "data type": "numeric", + "description": "TEWL score (Transepidermal Water Loss) calculated at day 7 after treatment started, which is a measure of skin hydration", + "sample values": [18.2, 20.1, 16.5, 22.4], + "synonyms": ["TEWL on day 7"] + }, + { + "name": "day30_tewl", + "type": "table column", + "column name": "day30_tewl", + "data type": "numeric", + "description": "TEWL score (Transepidermal Water Loss) calculated at day 30 after treatment started, which is a measure of skin hydration, in n g/m^2/h (null if not enough time has passed)", + "sample values": [15.6, 17.2, 14.0, 19.1], + "synonyms": ["TEWL on day 30"] + }, + { + "name": "day100_tewl", + "type": "table column", + "column name": "day100_tewl", + "data type": "numeric", + "description": "TEWL score (Transepidermal Water Loss) calculated at day 100 after treatment started, which is a measure of skin hydration, in n g/m^2/h (null if not enough time has passed)", + "sample values": [12.1, 13.5, 10.8, 15.2], + "synonyms": ["TEWL on day 100"] + }, + { + "name": "day7_itch_vas", + "type": "table column", + "column name": "day7_itch_vas", + "data type": "numeric", + "description": "The itch visual analog scale (VAS) score at day 7 after treatment started, which is a measure of itch severity from 0 to 100", + "sample values": [60, 70, 55, 80, 65], + "synonyms": ["VAS on day 7"] + }, + { + "name": "day30_itch_vas", + "type": "table column", + "column name": "day30_itch_vas", + "data type": "numeric", + "description": "The itch visual analog scale (VAS) score at day 30 after treatment started, which is a measure of itch severity from 0 to 100 (null if not enough time has passed)", + "sample values": [40, 50, 35, 60, 45], + "synonyms": ["VAS on day 30"] + }, + { + "name": "day100_itch_vas", + "type": "table column", + "column name": "day100_itch_vas", + "data type": "numeric", + "description": "The itch visual analog scale (VAS) score at day 100 after treatment started, which is a measure of itch severity from 0 to 100 (null if not enough time has passed)", + "sample values": [20, 30, 15, 40, 25], + "synonyms": ["VAS on day 100"] + }, + { + "name": "day7_hfg", + "type": "table column", + "column name": "day7_hfg", + "data type": "numeric", + "description": "Hair growth factor (HGF) score at day 7 after treatment started, on a scale from 0 to 5", + "sample values": [1.5, 1.0, 2.0, 0.5, 1.2], + "synonyms": ["HFG on day 7"] + }, + { + "name": "day30_hfg", + "type": "table column", + "column name": "day30_hfg", + "data type": "numeric", + "description": "Hair growth factor (HGF) score at day 30 after treatment started, on a scale from 0 to 5 (null if not enough time has passed)", + "sample values": [2.5, 2.0, 3.0, 1.5, 2.2], + "synonyms": ["HFG on day 30"] + }, + { + "name": "day100_hfg", + "type": "table column", + "column name": "day100_hfg", + "data type": "numeric", + "description": "Hair growth factor (HGF) score at day 100 after treatment started, on a scale from 0 to 5 (null if not enough time has passed)", + "sample values": [4.0, 3.5, 4.5, 3.0, 3.8], + "synonyms": ["HFG on day 100"] + } + ], + "description": "The recorded outcomes of treatments, which can include the same treatment at different points in time if not enough time has elapsed to record the complete outcome for a treatment", + "synonyms": ["results", "treatment evaluations", "assessments"] + }, + { + "name": "concomitant_meds", + "type": "simple table", + "table path": "BROKER.concomitant_meds", + "unique properties": ["_id", ["treatment_id", "medicine_name"]], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "The unique identifier for each concomitant medication record in the system", + "sample values": [1, 5, 12, 14, 15], + "synonyms": ["concomitant drug key", "concomitant drug id"] + }, + { + "name": "treatment_id", + "type": "table column", + "column name": "treatment_id", + "data type": "numeric", + "description": "The id of the treatment that the concomitant medication record is related to", + "sample values": [1, 4, 8, 11, 13, 14], + "synonyms": [] + }, + { + "name": "medicine_name", + "type": "table column", + "column name": "med_name", + "data type": "string", + "description": "The name of the medicine being taken by the patient as a concomitant drug", + "sample values": ["Acetaminophen", "Ibuprofen", "Loratadine", "Multivitamin", "Calcium supplement", "Vitamin D", "Hydrocortisone cream"], + "synonyms": ["concomitant drug name"] + }, + { + "name": "start_date", + "type": "table column", + "column name": "start_dt", + "data type": "string", + "description": "Date the concomitant drug treatment was started", + "synonyms": ["concomitant drug start date", "first date"] + }, + { + "name": "end_date", + "type": "table column", + "column name": "end_dt", + "data type": "string", + "description": "Date the concomitant drug treatment finished (null if ongoing)", + "synonyms": ["last date", "concomitant drug end date"] + }, + { + "name": "dose_amount", + "type": "table column", + "column name": "dose_amt", + "data type": "numeric", + "description": "The amount of the medicine taken per dose, where the unit is specified in the dose_unit property", + "sample values": [500, 200, 10, 1, 50], + "synonyms": ["amount of dose", "quantity per dose", "dose size"] + }, + { + "name": "dose_unit", + "type": "table column", + "column name": "dose_unit", + "data type": "string", + "description": "The unit used by dose_amount", + "sample values": ["mg", "g", "tablet", "IU"], + "synonyms": [] + }, + { + "name": "dose_frequency", + "type": "table column", + "column name": "freq_hrs", + "data type": "numeric", + "description": "The frequency of the dose in hours (null if one-time use)", + "sample values": [6, 24, 8, 12], + "synonyms": ["gap between doses", "administration hour intervals", "time between doses"] + } + ], + "description": "Records of medications that are taken by patients in addition to the treatment they are receiving during their treatment", + "synonyms": ["additional drugs", "ancillary medications", "concomitant drugs", "accompanying medications", "concurrent drugs"] + }, + { + "name": "adverse_events", + "type": "simple table", + "table path": "BROKER.adverse_events", + "unique properties": ["_id"], + "properties": [ + { + "name": "_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "The unique identifier for each adverse event record in the system", + "sample values": [1, 3, 5, 7, 8], + "synonyms": ["adverse event key", "adverse event id"] + }, + { + "name": "treatment_id", + "type": "table column", + "column name": "treatment_id", + "data type": "numeric", + "description": "The id for the treatment that the adverse event occurred during", + "sample values": [2, 5, 9, 11, 14], + "synonyms": ["treatment key", "treatment id"] + }, + { + "name": "reported_date", + "type": "table column", + "column name": "reported_dt", + "data type": "datetime", + "description": "The date the adverse event was reported", + "synonyms": ["incident date", "date of reaction"] + }, + { + "name": "description", + "type": "table column", + "column name": "description", + "data type": "string", + "description": "Descriptor of the adverse event, which can be a single word or a phrase", + "sample values": ["Mild injection site reaction", "Headache, nausea", "Severe allergic reaction, hospitalization required", "Diarrhea"], + "synonyms": [] + } + ], + "description": "All records of adverse events that have been reported in the system related to a treatment", + "synonyms": ["incidents during treatment", "adverse reactions", "side effects"] + } + ], + "relationships": [ + { + "name": "doctor", + "type": "simple join", + "parent collection": "treatments", + "child collection": "doctors", + "singular": true, + "always matches": true, + "keys": { + "doc_id": [ + "doc_id" + ] + }, + "description": "The doctor who administered the treatment", + "synonyms": ["medical professional", "treatment administrator", "prescribing doctor"] + }, + { + "name": "prescribed_treatments", + "type": "reverse", + "original parent": "treatments", + "original property": "doctor", + "singular": false, + "always matches": false, + "description": "The treatments prescribed/administered by the doctor", + "synonyms": ["regimens", "treatment plans", "medical prescriptions"] + }, + { + "name": "patient", + "type": "simple join", + "parent collection": "treatments", + "child collection": "patients", + "singular": true, + "always matches": true, + "keys": { + "patient_id": [ + "patient_id" + ] + }, + "description": "The patient who the treatment was administered to", + "synonyms": ["trial subject", "participant", "client", "drug recipient"] + }, + { + "name": "treatments_received", + "type": "reverse", + "original parent": "treatments", + "original property": "patient", + "singular": false, + "always matches": false, + "description": "The drug treatment regimens the patient has been a part of", + "synonyms": ["Drug regimens", "medical treatments", "therapies", "treatment history"] + }, + { + "name": "drug", + "type": "simple join", + "parent collection": "treatments", + "child collection": "drugs", + "singular": true, + "always matches": true, + "keys": { + "drug_id": [ + "drug_id" + ] + }, + "description": "The drug being used as part of the treatment", + "synonyms": ["medication", "pharmaceutical", "drug product", "therapy"] + }, + { + "name": "treatments_used_in", + "type": "reverse", + "original parent": "treatments", + "original property": "drug", + "singular": false, + "always matches": false, + "description": "The treatments the drug was used in", + "synonyms": ["therapies", "uses", "regimens", "prescriptions"] + }, + { + "name": "diagnosis", + "type": "simple join", + "parent collection": "treatments", + "child collection": "diagnoses", + "singular": true, + "always matches": true, + "keys": { + "diagnosis_id": [ + "_id" + ] + }, + "description": "The diagnosis associated with the treatment which the drug is treating", + "synonyms": ["medical condition", "associated condition", "cause of treatment"] + }, + { + "name": "treatments_for", + "type": "reverse", + "original parent": "treatments", + "original property": "diagnosis", + "singular": false, + "always matches": false, + "description": "The drug treatment regimens targeted at a patient with this diagnosis", + "synonyms": [] + }, + { + "name": "outcome_records", + "type": "simple join", + "parent collection": "treatments", + "child collection": "outcomes", + "singular": false, + "always matches": false, + "keys": { + "treatment_id": [ + "treatment_id" + ] + }, + "description": "The reported outcomes of the treatment, which can include the same treatment at different points in time if not enough time has elapsed to record the complete outcome for a treatment", + "synonyms": ["quality reports", "evaluations", "assessments"] + }, + { + "name": "treatment", + "type": "reverse", + "original parent": "treatments", + "original property": "outcome_records", + "singular": true, + "always matches": true, + "description": "The treatment that the outcome record is reporting on", + "synonyms": ["regimen", "prescription", "medical trial"] + }, + { + "name": "concomitant_meds", + "type": "simple join", + "parent collection": "treatments", + "child collection": "concomitant_meds", + "singular": false, + "always matches": false, + "keys": { + "treatment_id": [ + "treatment_id" + ] + }, + "description": "The ancillary medications that were taken by a patient in addition to the treatment they are receiving during their treatment", + "synonyms": ["additional drugs", "ancillary medications", "concomitant drugs", "accompanying medications", "concurrent drugs"] + }, + { + "name": "treatment", + "type": "reverse", + "original parent": "treatments", + "original property": "concomitant_meds", + "singular": true, + "always matches": true, + "description": "The treatment that the administration of the concomitant medication was related to", + "synonyms": ["medical trial", "regimen", "main prescription"] + }, + { + "name": "adverse_events", + "type": "simple join", + "parent collection": "treatments", + "child collection": "adverse_events", + "singular": false, + "always matches": false, + "keys": { + "treatment_id": [ + "treatment_id" + ] + }, + "description": "Any incident events recorded in association with the treatment", + "synonyms": ["side effects", "medical incidents"] + }, + { + "name": "treatment", + "type": "reverse", + "original parent": "treatments", + "original property": "adverse_events", + "singular": true, + "always matches": true, + "description": "The treatment that the adverse event occurred during", + "synonyms": ["regimen", "medical trial", "prescription"] + } + ], + "additional definitions": [], + "verified pydough analysis": [], + "extra semantic info": {} + }, + { + "name": "Ewallet", + "version": "V2", + "collections": [ + { + "name": "users", + "type": "simple table", + "table path": "BROKER.users", + "unique properties": ["uid", "username"], + "properties": [ + { + "name": "uid", + "type": "table column", + "column name": "uid", + "data type": "numeric", + "description": "The unique identifier for each user in the system", + "sample values": [1, 3, 5, 10, 11], + "synonyms": ["user id", "user key"] + }, + { + "name": "username", + "type": "table column", + "column name": "username", + "data type": "string", + "description": "The username for the user", + "sample values": ["john_doe", "michael_brown", "bizuser", "huang2143"], + "synonyms": ["name", "account profile"] + }, + { + "name": "email", + "type": "table column", + "column name": "email", + "data type": "string", + "description": "The email for the user", + "sample values": ["john.doe@email.com", "lisa.jones@email.com", "customerserv@shopsmart.biz", "huang2143@example.com", "contact@business.co"], + "synonyms": ["email address", "contact email"] + }, + { + "name": "phone_number", + "type": "table column", + "column name": "phone_number", + "data type": "string", + "description": "The phone number for the user (null if not provided), which always starts with a `+` and the country code and does not have dashes", + "sample values": ["+1234567890", "+9876543210", "+8091017161", "+8612345678901", "+6123456789"], + "synonyms": ["phone", "mobile number", "contact number"] + }, + { + "name": "created_at", + "type": "table column", + "column name": "created_at", + "data type": "datetime", + "description": "The timestamp when the user account was created", + "synonyms": ["account creation date", "registration datetime"] + }, + { + "name": "last_login_at", + "type": "table column", + "column name": "last_login_at", + "data type": "datetime", + "description": "The last time the user logged into their account (null if never logged in)", + "synonyms": ["most recent login datetime", "latest access timestmap"] + }, + { + "name": "user_type", + "type": "table column", + "column name": "user_type", + "data type": "string", + "description": "The type of user, which can be either `individual` or `business`", + "sample values": ["individual", "business"], + "synonyms": ["category", "classification"] + }, + { + "name": "status", + "type": "table column", + "column name": "status", + "data type": "string", + "description": "The status of the user account, which can be either `active`, `inactive`, `deleted` or `suspended`", + "sample values": ["active", "inactive", "suspended", "deleted"], + "synonyms": ["account state", "activity", "user status"] + }, + { + "name": "country", + "type": "table column", + "column name": "country", + "data type": "string", + "description": "The two-letter country code for the country of the user", + "sample values": ["US", "CA", "FR", "GB", "AU"], + "synonyms": ["nation"] + }, + { + "name": "address_billing", + "type": "table column", + "column name": "address_billing", + "data type": "string", + "description": "The billing address for the user, including street address, city, sometimes province/country, and postal code", + "sample values": ["123 Main St, Anytown US 12345", "456 Oak Rd, Toronto ON M1M2M2", "12 Rue Baptiste, Paris 75001", "12 Mardon Rd, Wellington 6012"], + "synonyms": ["billing location", "billing street address"] + }, + { + "name": "address_delivery", + "type": "table column", + "column name": "address_delivery", + "data type": "string", + "description": "The delivery address for the user, including street address, city, sometimes province/country, and postal code, or null if not provided", + "sample values": ["123 Main St, Anytown US 12345", "25 London Road, Manchester M12 4XY", "19 Smith St, Brunswick VIC 3056"], + "synonyms": [] + }, + { + "name": "kyc_status", + "type": "table column", + "column name": "kyc_status", + "data type": "string", + "description": "The KYC status, which can be either `approved`, `pending`, or `rejected`", + "sample values": ["approved", "pending", "rejected"], + "synonyms": ["approval status", "verification status"] + }, + { + "name": "kyc_verified_at", + "type": "table column", + "column name": "kyc_verified_at", + "data type": "datetime", + "description": "The date when the kyc status became verified (null if not provided)", + "synonyms": ["date of approval", "date of verification"] + } + ], + "description": "Every user in the system, which can be either an individual or a business", + "synonyms": ["accounts", "user profiles", "user accounts", "clients", "consumers"] + }, + { + "name": "merchants", + "type": "simple table", + "table path": "BROKER.merchants", + "unique properties": ["mid", "name"], + "properties": [ + { + "name": "mid", + "type": "table column", + "column name": "mid", + "data type": "numeric", + "description": "Unique identifier for each merchant in the system", + "sample values": [1, 5, 10, 12, 15], + "synonyms": ["merchant key", "merchant id"] + }, + { + "name": "name", + "type": "table column", + "column name": "name", + "data type": "string", + "description": "The name of the merchant", + "sample values": ["TechMart", "FitLifeGear", "UrbanDining", "KidzPlayhouse", "GameRush"], + "synonyms": ["merchant name", "business name", "company name"] + }, + { + "name": "description", + "type": "table column", + "column name": "description", + "data type": "string", + "description": "The detailed description of what the merchant does or sells", + "sample values": ["Leading electronics retailer", "SaaS productivity tools for developers", "Cosmetics and beauty supplies", "Books and reading accessories"], + "synonyms": ["business industry description", "merchant product types", "market segment description", "company description"] + }, + { + "name": "website_url", + "type": "table column", + "column name": "website_url", + "data type": "string", + "description": "The URL to the merchant's website", + "sample values": ["https://fitlifegear.com", "https://hometechsolutions.net", "https://bookworms.co.uk", "https://www.zenhomegoods.com'"], + "synonyms": ["website link", "web address"] + }, + { + "name": "logo_url", + "type": "table column", + "column name": "logo_url", + "data type": "string", + "description": "The URL to the merchant's logo image", + "sample values": ["https://www.techmart.com/logo.png", "https://www.fashiontrend.com/logo.png", "https://gamerush.co/gr-logo.png", "https://kidzplayhouse.com/logo.png"], + "synonyms": ["image link", "logo image address"] + }, + { + "name": "created_at", + "type": "table column", + "column name": "created_at", + "data type": "datetime", + "description": "The timestamp when the merchant was registered in the system", + "synonyms": ["merchant registration date", "merchant creation date"] + }, + { + "name": "country", + "type": "table column", + "column name": "country", + "data type": "string", + "description": "The two-letter capitalized country code for the country of the merchant", + "sample values": ["US", "CA", "IT", "FR", "UK"], + "synonyms": ["nation"] + }, + { + "name": "state", + "type": "table column", + "column name": "state", + "data type": "string", + "description": "The state for the merchant within the country, or null if not applicable", + "sample values": ["California", "Ontario", "Catalonia", "New South Wales", "British Columbia"], + "synonyms": ["province"] + }, + { + "name": "city", + "type": "table column", + "column name": "city", + "data type": "string", + "description": "The city for the merchant's location within the country", + "sample values": ["Los Angeles", "Berlin", "Rome", "Vancouver", "Sydney"] + }, + { + "name": "postal_code", + "type": "table column", + "column name": "postal_code", + "data type": "string", + "description": "The postal/zip code of the merchant's location within the city", + "sample values": ["90011", "M5V2J2", "1010", "94105"], + "synonyms": ["zip code"] + }, + { + "name": "address", + "type": "table column", + "column name": "address", + "data type": "string", + "description": "The full address of the merchant, including street address, city, sometimes province, and postal code", + "sample values": ["645 Wilshire Blvd, Los Angeles CA 90011", "159 Franklin St, Melbourne VIC 3004", "350 Mission St, San Francisco CA 94105", "35 Rue du Faubourg Saint-Antoine, 75011 Paris", "Passeig de Gracia 35, Barcelona 08003"], + "synonyms": ["street address", "full location"] + }, + { + "name": "status", + "type": "table column", + "column name": "status", + "data type": "string", + "description": "The status of the merchant account, which can be either `active`, `inactive` or `suspended`", + "sample values": ["active", "inactive", "suspended"], + "synonyms": ["account state", "activity", "merchant status"] + }, + { + "name": "category", + "type": "table column", + "column name": "category", + "data type": "string", + "description": "The blanket category/industry/market segment that the merchant is in", + "sample values": ["retail (hardware)", "Food & Dining", "Travel & Hospitality", "Retail", "Business Services"], + "synonyms": ["industry", "high-level market segment"] + }, + { + "name": "sub_category", + "type": "table column", + "column name": "sub_category", + "data type": "string", + "description": "The more specific category/industry/market segment that the merchant is in within the category", + "sample values": ["Electronics", "Sporting GOods", "Restaurants", "Accommodation", "Toys & Games", "Books", "Pets", "Groceries"], + "synonyms": ["sub-industry", "specific market segment"] + }, + { + "name": "merchant_category_code", + "type": "table column", + "column name": "mcc", + "data type": "numeric", + "description": "The category code for the merchant, which is a 4-digit number that identifies the type of business", + "sample values": [5734, 5977, 7011, 5719, 5732], + "synonyms": [] + }, + { + "name": "contact_name", + "type": "table column", + "column name": "contact_name", + "data type": "string", + "description": "The full name of the individual who is the primary contact for the merchant", + "sample values": ["John Jacobs", "Daniel Lee", "Marco Rossi", "Sophia Turner"], + "synonyms": ["contact person", "contact individual"] + }, + { + "name": "contact_email", + "type": "table column", + "column name": "contact_email", + "data type": "string", + "description": "The email of the contact person for the merchant", + "sample values": ["jjacobs@techmart.com", "dlee@greengourmet.com", "ebrown@hometechsolutions.net", "sturner@bookworms.co.uk", "mschmidt@codesuite.io", "agarcia@handycraft.store"], + "synonyms": ["contact email", "contact person email"] + }, + { + "name": "contact_phone", + "type": "table column", + "column name": "contact_phone", + "data type": "string", + "description": "The phone number of the contact person, which always starts with a `+` and the country code and does not have dashes", + "sample values": ["+15551234567", "+49301234567", "+441612345678", "+61298765432", "+442078912345"], + "synonyms": ["contact phone number", "contact person phone"] + } + ], + "description": "The merchant accounts registered in the system", + "synonyms": ["companies", "businesses", "vendors", "retailers", "stores"] + }, + { + "name": "coupons", + "type": "simple table", + "table path": "BROKER.coupons", + "unique properties": ["cid"], + "properties": [ + { + "name": "cid", + "type": "table column", + "column name": "cid", + "data type": "numeric", + "description": "The unique identifier for each coupon in the system", + "sample values": [1, 4, 5, 7, 10], + "synonyms": ["coupon key", "coupon id"] + }, + { + "name": "merchant_id", + "type": "table column", + "column name": "merchant_id", + "data type": "numeric", + "description": "The id of the merchant who issues the coupon", + "sample values": [2, 5, 7, 8, 9], + "synonyms": ["merchant key", "merchant id", "issuing business id"] + }, + { + "name": "code", + "type": "table column", + "column name": "code", + "data type": "string", + "description": "The code used to enter the coupon", + "sample values": ["TECH20", "DINEDISCOUNT", "HOME15", "GLOWUP", "GAMERALERT"], + "synonyms": ["coupon code", "discount code", "promo code"] + }, + { + "name": "description", + "type": "table column", + "column name": "description", + "data type": "string", + "description": "A verbal description of what hte coupon is for", + "sample values": ["20% off tech and electronics", "Buy 2 get 1 free on cosmetics'", "Get 25% off accessories", "$10 off $75+ purchase"], + "synonyms": [] + }, + { + "name": "start_date", + "type": "table column", + "column name": "start_date", + "data type": "datetime", + "description": "The date when the coupon first became valid", + "synonyms": ["available since", "valid from"] + }, + { + "name": "end_date", + "type": "table column", + "column name": "end_date", + "data type": "datetime", + "description": "The date when the coupon is no longer valid", + "synonyms": ["available until", "valid until", "expiration date"] + }, + { + "name": "discount_type", + "type": "table column", + "column name": "discount_type", + "data type": "string", + "description": "The category of the coupon, which can be either `percentage` or `fixed_amount`", + "sample values": ["percentage", "fixed_amount"], + "synonyms": ["classification", "category"] + }, + { + "name": "discount_value", + "type": "table column", + "column name": "discount_value", + "data type": "numeric", + "description": "The value of the discount, which is the percentage off if the discount type is `percentage`, or the number of dollars off if `fixed_amount`", + "sample values": [20.0, 30.0, 10.0, 15.0, 25.0], + "synonyms": ["dollars off", "percentage off", "amount", "size"] + }, + { + "name": "min_purchase_amount", + "type": "table column", + "column name": "min_purchase_amount", + "data type": "numeric", + "description": "The minimum amount of money that must be spent on a purchase in USD to be eligible for the coupon (null if not applicable)", + "sample values": [100.0, 50.0, 1000.0, 150.0], + "synonyms": ["minimum spend", "minimum purchase", "minimum order price"] + }, + { + "name": "max_discount_amount", + "type": "table column", + "column name": "max_discount_amount", + "data type": "numeric", + "description": "The maximum amount of money that can be saved using the coupon in USD (null if not applicable)", + "sample values": [50.0, 300.0, 10.0, 15.0], + "synonyms": ["promotion limit", "discount cap", "maximum savings"] + }, + { + "name": "redemption_limit", + "type": "table column", + "column name": "redemption_limit", + "data type": "numeric", + "description": "The maximum number of times the coupon can be redeemed before expiring/becoming invalid (null if not applicable)", + "sample values": [500, 1000, 200, 300, 750], + "synonyms": ["maximum number of uses", "redemption cap", "usage limit"] + }, + { + "name": "status", + "type": "table column", + "column name": "status", + "data type": "string", + "description": "The status of the coupon, which can be either `active`, `inactive`, or `expired`", + "sample values": ["active", "inactive", "expired"], + "synonyms": ["availability", "usability", "activity state"] + }, + { + "name": "created_at", + "type": "table column", + "column name": "created_at", + "data type": "datetime", + "description": "Timestamp when the coupon record was created in the system", + "synonyms": ["creation datetime"] + }, + { + "name": "updated_at", + "type": "table column", + "column name": "updated_at", + "data type": "datetime", + "description": "Timestamp when the coupon record was last updated in the system (null if never updated after creation)", + "synonyms": ["update datetime"] + } + ], + "description": "The records of coupons that have been issued by merchants in the system", + "synonyms": ["discounts", "promotions", "special offers"] + }, + { + "name": "transactions", + "type": "simple table", + "table path": "BROKER.wallet_transactions_daily", + "unique properties": ["txid", "transaction_ref"], + "properties": [ + { + "name": "txid", + "type": "table column", + "column name": "txid", + "data type": "numeric", + "description": "The unique identifier for each transaction in the system (the original transaction & coupon applied are different rows with different values of this key)", + "sample values": [1, 3, 17, 21, 26], + "synonyms": ["transaction key", "transaction id"] + }, + { + "name": "sender_id", + "type": "table column", + "column name": "sender_id", + "data type": "numeric", + "description": "The id of the key of the individual who sent the transaction, which is either the id of a user or a merchant, depending on sender_type", + "sample values": [1, 3, 8, 4, 10], + "synonyms": [] + }, + { + "name": "sender_type", + "type": "table column", + "column name": "sender_type", + "data type": "numeric", + "description": "Which type of individual sent the transaction: 0 for user (meaning sender_id is a uid from users) or 1 for merchant (meaning sender_id is a mid from merchants)", + "sample values": [0, 1], + "synonyms": ["sent by merchant"] + }, + { + "name": "receiver_id", + "type": "table column", + "column name": "receiver_id", + "data type": "numeric", + "description": "The id of the key of the individual who received the transaction, which is either the id of a user or a merchant, depending on receiver_type", + "sample values": [1, 9, 10, 2, 5], + "synonyms": [] + }, + { + "name": "receiver_type", + "type": "table column", + "column name": "receiver_type", + "data type": "numeric", + "description": "Which type of individual received the transaction: 0 for user (meaning receiver_id is a uid from users) or 1 for merchant (meaning receiver_id is a mid from merchants)", + "sample values": [0, 1], + "synonyms": ["received by merchant"] + }, + { + "name": "amount", + "type": "table column", + "column name": "amount", + "data type": "numeric", + "description": "The dollar amount of the transaction, which is the total amount for a record without a coupon applied, or the amount saved/rebated when the coupon is applied", + "sample values": [99.99, 20.0, 16.0, 125.50, 10.0], + "synonyms": [] + }, + { + "name": "status", + "type": "table column", + "column name": "status", + "data type": "string", + "description": "The status of the transaction, which can be either `success`, `failed`, `refunded`, or `pending`", + "sample values": ["success", "failed", "pending", "refunded"], + "synonyms": ["outcome", "result", "transaction status"] + }, + { + "name": "transaction_type", + "type": "table column", + "column name": "type", + "data type": "string", + "description": "The means the transaction was made, which can be either `credit` or `debit", + "sample values": ["credit", "debit"], + "synonyms": ["payment method", "credit or debit"] + }, + { + "name": "description", + "type": "table column", + "column name": "description", + "data type": "string", + "description": "The category of transaction, which either says what was purchased or 'Coupon discount' if the transaction is a coupon discount being applied to a previous transaction in the system", + "sample values": ["Online purchase", "Coupon discount", "Product purchase", "Order #438721", "Villa rental deposit", "Refund on order #1234"], + "synonyms": ["description of purchase", "purchase subject"] + }, + { + "name": "coupon_id", + "type": "table column", + "column name": "coupon_id", + "data type": "numeric", + "description": "The id of the coupon being used in the transaction, or null if the transaction is not a coupon discount", + "sample values": [1, 3, 9, 10], + "synonyms": ["coupon key", "coupon id"] + }, + { + "name": "created_at", + "type": "table column", + "column name": "created_at", + "data type": "datetime", + "description": "The timestamp when the transfer was created in the system", + "synonyms": ["creation datetime"] + }, + { + "name": "completed_at", + "type": "table column", + "column name": "completed_at", + "data type": "datetime", + "description": "The timestamp when the transfer was completed (null if not completed yet)", + "synonyms": ["completion datetime"] + }, + { + "name": "transaction_ref", + "type": "table column", + "column name": "transaction_ref", + "data type": "string", + "description": "Randomly generated uuid4 for users' reference", + "sample values": ["ad154bf7-8185-4230-a8d8-3ef59b4e0012", "kd454bf7-428d-eig2-a8d8-3ef59b4e0012", "a7659c81-0cd0-4635-af6c-cf68d2c15ab2'"], + "synonyms": ["transaction uuid", "reference number"] + }, + { + "name": "gateway_name", + "type": "table column", + "column name": "gateway_name", + "data type": "string", + "description": "The portal through which the transaction was made, which can be either 'Stripe', 'PayPal', 'Checkout.com', 'Braintree' or 'Adyen'", + "sample values": ["Stripe", "PayPal", "Checkout.com", "Braintree", "Adyen"], + "synonyms": ["payment gateway", "payment processor", "payment portal"] + }, + { + "name": "gateway_ref", + "type": "table column", + "column name": "gateway_ref", + "data type": "string", + "description": "A reference number generated by the payment gateway for the transaction, which is used to track the transaction in the payment processor's system", + "sample values": ["tx_123abc456def", "rfnd_xkt521", "sub_pjj908", "stripe_ref_11_1", "paypal_ref_12_1"], + "synonyms": ["gateway reference number", "payment processor reference"] + }, + { + "name": "device_id", + "type": "table column", + "column name": "device_id", + "data type": "string", + "description": "The unique identifier for the device used to make the transaction", + "sample values": ["mobile_8fh2k1", "web_8902wknz", "web_zld22f", "device_11_1", "mobile_1av8p0"], + "synonyms": ["device key", "device identifier", "device number"] + }, + { + "name": "ip_address", + "type": "table column", + "column name": "ip_address", + "data type": "string", + "description": "The IP address of the device used to make the transaction", + "sample values": ["199.59.148.201", "199.59.148.201", "70.121.39.25", "8.26.53.165"], + "synonyms": ["IP"] + }, + { + "name": "user_agent", + "type": "table column", + "column name": "user_agent", + "data type": "string", + "description": "The user agent used to make the transaction, which is a string that identifies the browser, operating system, and device type of the device used to make the transaction", + "sample values": ["Mozilla/5.0 (iPhone; CPU iPhone OS 16_3_1 like Mac OS X) ...", "Mozilla/5.0 (Linux; Android 13; SM-S901B) ...", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ..."], + "synonyms": ["device information", "browser information", "device details"] + } + ], + "description": "Every transaction that has occurred in the system, where the source can be either a user or a merchant and the destination can be either a user or a merchant. If a coupon is used, there will be two identical transaction records, one for the original transaction (where the coupon id is null) and one for the coupon discount applied (where the coupon id is provided)", + "synonyms": ["transfers", "payments", "purchases"] + }, + { + "name": "user_balances", + "type": "simple table", + "table path": "BROKER.wallet_user_balance_daily", + "unique properties": [["user_id", "updated_at"]], + "properties": [ + { + "name": "user_id", + "type": "table column", + "column name": "user_id", + "data type": "numeric", + "description": "The id of the user whose account balance is being recorded", + "sample values": [1, 4, 9, 10, 5], + "synonyms": ["user id", "user key"] + }, + { + "name": "balance", + "type": "table column", + "column name": "balance", + "data type": "numeric", + "description": "The balance of the user's account in USD on the date of the record", + "sample values": [525.80, -725.55, -55.99, -559.98, 0.00, 2733.92], + "synonyms": ["amount in account", "user balance", "account value"] + }, + { + "name": "updated_at", + "type": "table column", + "column name": "updated_at", + "data type": "datetime", + "description": "The timestamp when the user's balance was recorded", + "synonyms": ["update datetime", "balance record date"] + } + ], + "description": "The records of users' account balances in the system, which can include negative balances and multiple records for the same user made at different points in time", + "synonyms": ["user balance histories", "user balance records", "user account balances"] + }, + { + "name": "merchant_balances", + "type": "simple table", + "table path": "BROKER.wallet_merchant_balance_daily", + "unique properties": [["merchant_id", "updated_at"]], + "properties": [ + { + "name": "merchant_id", + "type": "table column", + "column name": "merchant_id", + "data type": "numeric", + "description": "The id of the merchant whose account balance is being recorded", + "sample values": [2, 4, 5, 9, 1], + "synonyms": ["merchant key", "merchant id"] + }, + { + "name": "balance", + "type": "table column", + "column name": "balance", + "data type": "numeric", + "description": "The balance of the user's account in USD on the date of the record", + "sample values": [3897.99, 29.95, 0.00, 89.99], + "synonyms": ["amount in account", "merchant balance", "account value"] + }, + { + "name": "updated_at", + "type": "table column", + "column name": "updated_at", + "data type": "datetime", + "description": "The timestamp when the merchant's balance was recorded", + "synonyms": ["update datetime", "balance record date"] + } + ], + "description": "The records of merchants' account balances in the system, which can include negative balances and multiple records for the same merchant made at different points in time", + "synonyms": ["merchant balance histories", "merchant balance records", "merchant account balances"] + }, + { + "name": "notifications", + "type": "simple table", + "table path": "BROKER.notifications", + "unique properties": ["notif_id"], + "properties": [ + { + "name": "notif_id", + "type": "table column", + "column name": "_id", + "data type": "numeric", + "description": "The unique identifier for each notification in the system", + "sample values": [1, 5, 10, 14, 16], + "synonyms": ["notification key", "notification id"] + }, + { + "name": "user_id", + "type": "table column", + "column name": "user_id", + "data type": "numeric", + "description": "The id for the user who received the notification", + "sample values": [3, 5, 9, 10], + "synonyms": ["user key", "user id"] + }, + { + "name": "message", + "type": "table column", + "column name": "message", + "data type": "string", + "description": "The message contained in the notification sent to the user", + "sample values": ["Your order #123abc has been shipped!", "Your CodeSuite subscription will renew on 7/1", "Here''s $10 to start your glow up!'", "Reminder: Your FitLife membership expires in 7 days", "An order from UrbanDining was unsuccessful", "Weekend Flash Sale: 25% off all activewear!"], + "synonyms": ["contents", "text", "description"] + }, + { + "name": "notification_type", + "type": "table column", + "column name": "type", + "data type": "string", + "description": "The type of notification message, which can be either `transaction`, `promotion`, or `general`", + "sample values": ["transaction", "promotion", "general"], + "synonyms": ["message category", "alert classification"] + }, + { + "name": "status", + "type": "table column", + "column name": "status", + "data type": "string", + "description": "The status of the notification, which can be either `read`, `unread`, or `archived`", + "sample values": ["read", "unread", "archived"], + "synonyms": ["has been read"] + }, + { + "name": "created_at", + "type": "table column", + "column name": "created_at", + "data type": "datetime", + "description": "The timestamp when the notification was created", + "synonyms": ["creation datetime", "notification creation date"] + }, + { + "name": "read_at", + "type": "table column", + "column name": "read_at", + "data type": "datetime", + "description": "The timestamp when the notification was read (null if not read yet)", + "synonyms": ["datetime read"] + }, + { + "name": "device_type", + "type": "table column", + "column name": "device_type", + "data type": "string", + "description": "The type of device/medium the notification was sent through, which can be either `mobile_app`, `email`, `sms`, or `web_app`", + "sample values": ["mobile_app", "email", "sms", "web_app"], + "synonyms": [] + }, + { + "name": "device_id", + "type": "table column", + "column name": "device_id", + "data type": "string", + "description": "The id of the device the notification was sent to, or null if the device type does not have device ids", + "sample values": ["mobile_8fh2k1", "web_d8180kaf", "mobile_8fh2k1"], + "synonyms": [] + }, + { + "name": "action_url", + "type": "table column", + "column name": "action_url", + "data type": "string", + "description": "The URL included in hte notification that the user can click on to take action; can be external https or deeplink url within the app", + "sample values": ["app://orders/123abc", "https://zenhomesurvey.com/order/c51e10d1", "https://kidzplayhouse.com/new-arrivals", "https://techmart.com/promo/TECH20"], + "synonyms": ["link", "notification hyperlink"] + } + ], + "description": "All notifications sent to users in the system, such as alerts, reminders, and promotional messages", + "synonyms": ["alerts", "messages"] + }, + { + "name": "user_sessions", + "type": "simple table", + "table path": "BROKER.user_sessions", + "unique properties": [["user_id", "session_start"], ["user_id", "session_end"]], + "properties": [ + { + "name": "user_id", + "type": "table column", + "column name": "user_id", + "data type": "numeric", + "description": "The id of the user who the session belongs to", + "sample values": [1, 2, 3, 8, 10], + "synonyms": ["user id", "user key"] + }, + { + "name": "session_start", + "type": "table column", + "column name": "session_start_ts", + "data type": "datetime", + "description": "The timestamp when the user session started", + "synonyms": ["beginning timestamp", "session initialization datetime"] + }, + { + "name": "session_end", + "type": "table column", + "column name": "session_end_ts", + "data type": "datetime", + "description": "The timestamp when the user session ended", + "synonyms": ["ending timestamp", "session termination datetime"] + }, + { + "name": "device_type", + "type": "table column", + "column name": "device_type", + "data type": "string", + "description": "The type of device the session was made with, which can be either `web_app` or `mobile_app`", + "sample values": ["web_app", "mobile_app"], + "synonyms": ["session device", "web or mobile"] + }, + { + "name": "device_id", + "type": "table column", + "column name": "device_id", + "data type": "string", + "description": "The id of the device the session was made with", + "sample values": ["web_d8180kaf", "mobile_g3mjfz", "web_zz91p44l", "web_8902wknz"], + "synonyms": [] + } + ], + "description": "The records of user sessions in the system, which can include multiple sessions for the same user made at different points in time, each session with a start/end timestamp", + "synonyms": ["system logs", "user activity logs", "user session records"] + }, + { + "name": "user_setting_snapshots", + "type": "simple table", + "table path": "BROKER.user_setting_snapshot", + "unique properties": [["user_id", "snapshot_date"]], + "properties": [ + { + "name": "user_id", + "type": "table column", + "column name": "user_id", + "data type": "numeric", + "description": "The id for the user whose settings are being recorded", + "sample values": [1, 2, 3, 5, 9], + "synonyms": ["user key", "user id"] + }, + { + "name": "snapshot_date", + "type": "table column", + "column name": "snapshot_date", + "data type": "datetime", + "description": "The date when the setting snapshot was taken", + "synonyms": ["date of setting update", "recorded date"] + }, + { + "name": "daily_transaction_limit", + "type": "table column", + "column name": "tx_limit_daily", + "data type": "numeric", + "description": "The cap in settings of how much the user account allows to be spent in a single day", + "sample values": [1000.0, 500.0, 50.0, 250.0], + "synonyms": ["daily spending cap"] + }, + { + "name": "monthly_transaction_limit", + "type": "table column", + "column name": "tx_limit_monthly", + "data type": "numeric", + "description": "The cap in settings of how much the user account allows to be spent in a single month", + "sample values": [5000.0, 500.0, 2000.0, 1000.0], + "synonyms": ["monthly spending cap"] + }, + { + "name": "membership_status", + "type": "table column", + "column name": "membership_status", + "data type": "numeric", + "description": "The member's status level within the system: 0 for bronze, 1 for silver, 2 for gold, 3 for platinum, 4 for VIP", + "sample values": [0, 1, 2, 3, 4], + "synonyms": ["rank", "membership level", "membership tier"] + }, + { + "name": "password_hash", + "type": "table column", + "column name": "password_hash", + "data type": "string", + "description": "The hashed password of the user, which is used to verify the user's identity when they log in", + "sample values": ["bcryptHash($2yz9!&ka1)", "bcryptHash($2yz9!&ka1)", "bcryptHash(C0d3Rul3z!99)"], + "synonyms": [] + }, + { + "name": "api_key", + "type": "table column", + "column name": "api_key", + "data type": "string", + "description": "The user's API key, which is used to authenticate the user when they make API requests (null if not provided)", + "sample values": ["9d61c49b-8977-4914-a36b-80d1445e38fa", "6c03c175-9ac9-4854-b064-a3fff2c62e31"], + "synonyms": ["api token", "application programming interface key"] + }, + { + "name": "verified_devices", + "type": "table column", + "column name": "verified_devices", + "data type": "string", + "description": "A comma-separated list of the ids of the devices that have been verified for the user (null if not provided)", + "sample values": ["mobile_8fh2k1", "mobile_yjp08q, mobile_1av8p0", "web_k29qjd, mobile_x28qlj", "web_d8180kaf, mobile_q3mz8n"], + "synonyms": ["device list", "device ids"] + }, + { + "name": "verified_ips", + "type": "table column", + "column name": "verified_ips", + "data type": "string", + "description": "A comma-sparated list of the IP addresses that have been verified for the user (null if not provided)", + "sample values": ["8.26.53.165, 68.85.32.201", "203.96.81.36", "192.168.0.1", "198.51.100.233, 70.121.39.25"], + "synonyms": ["IP addresses", "IP list"] + }, + { + "name": "mfa_enabled", + "type": "table column", + "column name": "mfa_enabled", + "data type": "bool", + "description": "Whether the user has enabled multi-factor authentication (MFA) for their account", + "synonyms": ["has mfa"] + }, + { + "name": "marketing_opt_in", + "type": "table column", + "column name": "marketing_opt_in", + "data type": "bool", + "description": "Whether the user has opted in to receive marketing communications", + "synonyms": ["allowed marketing"] + }, + { + "name": "created_at", + "type": "table column", + "column name": "created_at", + "data type": "datetime", + "description": "The timestamp when the record was added to the system", + "synonyms": ["system entry date"] + } + ], + "description": "The records of user settings in the system, which can include multiple updates for the same user made at different points in time", + "synonyms": ["user settings history", "user settings records"] + } + ], + "relationships": [ + { + "name": "transactions_sent", + "type": "simple join", + "parent collection": "users", + "child collection": "transactions", + "singular": false, + "always matches": false, + "keys": { + "uid": [ + "sender_id" + ] + }, + "description": "All transactions made where the user is the sender", + "synonyms": ["transactions from user"] + }, + { + "name": "sending_user", + "type": "reverse", + "original parent": "users", + "original property": "transactions_sent", + "singular": true, + "always matches": false, + "description": "The user who sent the transaction, if it was sent by a user (not found if it was sent by a merchant)", + "synonyms": ["source user", "originating user"] + }, + { + "name": "transactions_received", + "type": "simple join", + "parent collection": "users", + "child collection": "transactions", + "singular": false, + "always matches": false, + "keys": { + "uid": [ + "receiver_id" + ] + }, + "description": "The transactions where the user was the recipient", + "synonyms": ["transactions to user"] + }, + { + "name": "receiving_user", + "type": "reverse", + "original parent": "users", + "original property": "transactions_received", + "singular": true, + "always matches": false, + "description": "The user who received the transaction, if it was received by a user (not found if it was received by a merchant)", + "synonyms": ["destination user", "receiving user account"] + }, + { + "name": "balances", + "type": "simple join", + "parent collection": "users", + "child collection": "user_balances", + "singular": false, + "always matches": false, + "keys": { + "uid": [ + "user_id" + ] + }, + "description": "The historical account balance for the user, which can include multiple updates over time", + "synonyms": ["historical account balance", "user balance history"] + }, + { + "name": "user", + "type": "reverse", + "original parent": "users", + "original property": "balances", + "singular": true, + "always matches": true, + "description": "The user who the account balance belongs to", + "synonyms": ["customer"] + }, + { + "name": "notifications", + "type": "simple join", + "parent collection": "users", + "child collection": "notifications", + "singular": false, + "always matches": false, + "keys": { + "uid": [ + "user_id" + ] + }, + "description": "The notifications that have been sent to the user", + "synonyms": ["user notifications", "user alerts"] + }, + { + "name": "user", + "type": "reverse", + "original parent": "users", + "original property": "notifications", + "singular": true, + "always matches": true, + "description": "The user who received the notification", + "synonyms": ["customer", "client", "user account"] + }, + { + "name": "sessions", + "type": "simple join", + "parent collection": "users", + "child collection": "user_sessions", + "singular": false, + "always matches": false, + "keys": { + "uid": [ + "user_id" + ] + }, + "description": "The login sessions by the user", + "synonyms": ["user login sessions", "session history"] + }, + { + "name": "user", + "type": "reverse", + "original parent": "users", + "original property": "sessions", + "singular": true, + "description": "The user who the login session information belongs to", + "synonyms": ["customer", "client", "user account"] + }, + { + "name": "setting_snapshots", + "type": "simple join", + "parent collection": "users", + "child collection": "user_setting_snapshots", + "singular": false, + "always matches": false, + "keys": { + "uid": [ + "user_id" + ] + }, + "description": "The setting snapshot history for the user, which can include multiple updates over time", + "synonyms": ["setting history", "user setting snapshots"] + }, + { + "name": "user", + "type": "reverse", + "original parent": "users", + "original property": "setting_snapshots", + "singular": true, + "description": "The user who the setting snapshot belongs to", + "synonyms": ["customer", "client", "user account"] + }, + { + "name": "transactions_sent", + "type": "simple join", + "parent collection": "merchants", + "child collection": "transactions", + "singular": false, + "always matches": false, + "keys": { + "mid": [ + "sender_id" + ] + }, + "description": "The transactions sent by the merchant", + "synonyms": ["merchant transactions sent", "merchant outgoing transactions"] + }, + { + "name": "sending_merchant", + "type": "reverse", + "original parent": "merchants", + "original property": "transactions_sent", + "singular": true, + "always matches": false, + "description": "The merchant who sent the transaction, if it was sent by a merchant (not found if it was sent by a user)", + "synonyms": ["merchant source", "merchant origin"] + }, + { + "name": "transactions_received", + "type": "simple join", + "parent collection": "merchants", + "child collection": "transactions", + "singular": false, + "always matches": false, + "keys": { + "mid": [ + "receiver_id" + ] + }, + "description": "The transactions received by the merchant", + "synonyms": ["merchant transactions received", "merchant incoming transactions"] + }, + { + "name": "receiving_merchant", + "type": "reverse", + "original parent": "merchants", + "original property": "transactions_received", + "singular": true, + "always matches": false, + "description": "The merchant who received the transaction, if it was received by a merchant (not found if it was received by a user)", + "synonyms": ["merchant destination", "merchant recipient"] + }, + { + "name": "balances", + "type": "simple join", + "parent collection": "merchants", + "child collection": "merchant_balances", + "singular": false, + "always matches": false, + "keys": { + "mid": [ + "merchant_id" + ] + }, + "description": "The historical account balance for the merchant, which can include multiple updates over time", + "synonyms": ["historical account balance", "merchant balance history"] + }, + { + "name": "merchant", + "type": "reverse", + "original parent": "merchants", + "original property": "balances", + "singular": true, + "always matches": true, + "description": "The merchant who the account balance information belongs to", + "synonyms": ["business", "company", "merchant account"] + }, + { + "name": "coupons", + "type": "simple join", + "parent collection": "merchants", + "child collection": "coupons", + "singular": false, + "always matches": false, + "keys": { + "mid": [ + "merchant_id" + ] + }, + "description": "The coupons issued by the merchant", + "synonyms": ["merchant coupons", "merchant discount codes"] + }, + { + "name": "merchant", + "type": "reverse", + "original parent": "merchants", + "original property": "coupons", + "singular": true, + "always matches": true, + "description": "The merchant who issued the coupon", + "synonyms": ["issuing company", "business"] + }, + { + "name": "transaction_used_in", + "type": "simple join", + "parent collection": "coupons", + "child collection": "transactions", + "singular": false, + "always matches": false, + "keys": { + "cid": [ + "coupon_id" + ] + }, + "description": "The transactions that the coupon was used in", + "synonyms": ["uses", "transactions with coupon"] + }, + { + "name": "coupon", + "type": "reverse", + "original parent": "coupons", + "original property": "transaction_used_in", + "singular": true, + "always matches": false, + "description": "The coupon that was used in the transaction, if one exists", + "synonyms": ["coupon used", "discount used"] + } + ], + "additional definitions": [], + "verified pydough analysis": [], + "extra semantic info": {} + } +] \ No newline at end of file diff --git a/tests/test_pipeline_tpch_sf.py b/tests/test_pipeline_tpch_sf.py index 75334004f..dc0f1f112 100644 --- a/tests/test_pipeline_tpch_sf.py +++ b/tests/test_pipeline_tpch_sf.py @@ -25,6 +25,7 @@ harmonize_types, ) from .test_pipeline_tpch import tpch_pipeline_test_data +from .test_pipeline_defog_custom import defog_custom_pipeline_test_data from .testing_utilities import PyDoughPandasTest from pydough import init_pydough_context, to_df, to_sql @@ -56,7 +57,7 @@ def snowflake_params_tpch_q16_data(request) -> PyDoughPandasTest: def test_pipeline_e2e_tpch_sf_conn( tpch_pipeline_test_data: PyDoughPandasTest, get_sf_sample_graph: graph_fetcher, - sf_conn_tpch_db_context: DatabaseContext, + sf_conn_db_context: DatabaseContext, ): """ Test executing the TPC-H queries from the original code generation, @@ -64,7 +65,9 @@ def test_pipeline_e2e_tpch_sf_conn( Using the `connection` as keyword argument to the DatabaseContext. """ tpch_pipeline_test_data.run_e2e_test( - get_sf_sample_graph, sf_conn_tpch_db_context, coerce_types=True + get_sf_sample_graph, + sf_conn_db_context("SNOWFLAKE_SAMPLE_DATA", "TPCH_SF1"), + coerce_types=True, ) @@ -129,7 +132,7 @@ def simple_week_sampler(): @pytest.mark.execute def test_pipeline_e2e_tpch_simple_week( get_sf_sample_graph: graph_fetcher, - sf_conn_tpch_db_context: DatabaseContext, + sf_conn_db_context: DatabaseContext, week_handling_config: PyDoughConfigs, ): """ @@ -141,7 +144,7 @@ def test_pipeline_e2e_tpch_simple_week( result: pd.DataFrame = to_df( root, metadata=graph, - database=sf_conn_tpch_db_context, + database=sf_conn_db_context("SNOWFLAKE_SAMPLE_DATA", "TPCH_SF1"), config=week_handling_config, ) @@ -206,3 +209,18 @@ def test_pipeline_e2e_tpch_simple_week( result[col_name], expected_df[col_name] ) pd.testing.assert_frame_equal(result, expected_df, check_dtype=False) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_sf_e2e_defog_custom( + defog_custom_pipeline_test_data: PyDoughPandasTest, + get_sf_defog_graphs: graph_fetcher, + sf_conn_db_context: DatabaseContext, +): + """ + Test executing the defog analytical queries with Snowflake database. + """ + defog_custom_pipeline_test_data.run_e2e_test( + get_sf_defog_graphs, sf_conn_db_context("DEFOG", "BROKER"), coerce_types=True + ) From 04ee55464619c9a647be601e35fecec48d901a45 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Wed, 13 Aug 2025 14:37:34 -0700 Subject: [PATCH 21/46] modify sf_conn_db_context to accept db and schema as arguments --- tests/conftest.py | 59 +++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 9ce332308..88c492495 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -176,6 +176,22 @@ def impl(name: str) -> GraphMetadata: return impl +@pytest.fixture(scope="session") +def get_sf_defog_graphs() -> graph_fetcher: + """ + Returns the graphs for the defog database in Snowflake. + """ + + @cache + def impl(name: str) -> GraphMetadata: + path: str = ( + f"{os.path.dirname(__file__)}/test_metadata/snowflake_defog_graphs.json" + ) + return pydough.parse_json_metadata_from_file(file_path=path, graph_name=name) + + return impl + + @pytest.fixture(scope="session") def get_udf_graph( udf_graph_path: str, valid_udf_graph_names: set[str] @@ -479,34 +495,33 @@ def is_snowflake_env_set() -> bool: @pytest.fixture -def sf_conn_tpch_db_context() -> DatabaseContext: +def sf_conn_db_context() -> Callable[[str, str], DatabaseContext]: """ This fixture is used to connect to the Snowflake TPCH database using a connection object. Return a DatabaseContext for the Snowflake TPCH database. """ - if not is_snowflake_env_set(): - pytest.skip("Skipping Snowflake tests: environment variables not set.") - import snowflake.connector as sf_connector - sf_tpch_db = "SNOWFLAKE_SAMPLE_DATA" - sf_tpch_schema = "TPCH_SF1" - warehouse = "DEMO_WH" - password = os.getenv("SF_PASSWORD") - username = os.getenv("SF_USERNAME") - account = os.getenv("SF_ACCOUNT") - connection: sf_connector.connection.SnowflakeConnection = sf_connector.connect( - user=username, - password=password, - account=account, - warehouse=warehouse, - database=sf_tpch_db, - schema=sf_tpch_schema, - ) - return load_database_context( - "snowflake", - connection=connection, - ) + def _impl(database_name: str, schema_name: str) -> DatabaseContext: + if not is_snowflake_env_set(): + pytest.skip("Skipping Snowflake tests: environment variables not set.") + import snowflake.connector as sf_connector + + warehouse = "DEMO_WH" + password = os.getenv("SF_PASSWORD") + username = os.getenv("SF_USERNAME") + account = os.getenv("SF_ACCOUNT") + connection: sf_connector.connection.SnowflakeConnection = sf_connector.connect( + user=username, + password=password, + account=account, + warehouse=warehouse, + database=database_name, + schema=schema_name, + ) + return load_database_context("snowflake", connection=connection) + + return _impl @pytest.fixture From b4d77ded6d3f356b35cfc42065adfd6e7bbcfa07 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Thu, 14 Aug 2025 13:26:43 -0700 Subject: [PATCH 22/46] handle relsum(boolean) --- pydough/sqlglot/__init__.py | 8 ++++- pydough/sqlglot/sqlglot_helpers.py | 34 ++++++++++++++++++- .../sqlglot_relational_expression_visitor.py | 9 +++-- .../cumulative_stock_analysis_snowflake.sql | 2 +- 4 files changed, 48 insertions(+), 5 deletions(-) diff --git a/pydough/sqlglot/__init__.py b/pydough/sqlglot/__init__.py index 4bdf4f9d1..710906160 100644 --- a/pydough/sqlglot/__init__.py +++ b/pydough/sqlglot/__init__.py @@ -7,6 +7,7 @@ "find_identifiers", "find_identifiers_in_list", "get_glot_name", + "is_boolean_expression", "set_glot_alias", "unwrap_alias", ] @@ -15,7 +16,12 @@ convert_relation_to_sql, execute_df, ) -from .sqlglot_helpers import get_glot_name, set_glot_alias, unwrap_alias +from .sqlglot_helpers import ( + get_glot_name, + is_boolean_expression, + set_glot_alias, + unwrap_alias, +) from .sqlglot_identifier_finder import find_identifiers, find_identifiers_in_list from .sqlglot_relational_expression_visitor import SQLGlotRelationalExpressionVisitor from .sqlglot_relational_visitor import SQLGlotRelationalVisitor diff --git a/pydough/sqlglot/sqlglot_helpers.py b/pydough/sqlglot/sqlglot_helpers.py index c99c53cf5..b7dc116e1 100644 --- a/pydough/sqlglot/sqlglot_helpers.py +++ b/pydough/sqlglot/sqlglot_helpers.py @@ -3,11 +3,12 @@ that can act as wrappers around the internal implementation of SQLGlot. """ +import sqlglot.expressions as sqlglot_expressions from sqlglot.expressions import Alias as SQLGlotAlias from sqlglot.expressions import Expression as SQLGlotExpression from sqlglot.expressions import Identifier -__all__ = ["get_glot_name", "set_glot_alias", "unwrap_alias"] +__all__ = ["get_glot_name", "is_boolean_expression", "set_glot_alias", "unwrap_alias"] def get_glot_name(expr: SQLGlotExpression) -> str | None: @@ -67,3 +68,34 @@ def unwrap_alias(expr: SQLGlotExpression) -> SQLGlotExpression: The unwrapped expression. """ return expr.this if isinstance(expr, SQLGlotAlias) else expr + + +def is_boolean_expression(expr: SQLGlotExpression) -> bool: + """Check if the given expression is a boolean expression. + + Args: + expr The expression to check. + + Returns: + True if the expression is a boolean expression, False otherwise. + """ + boolean_types = ( + sqlglot_expressions.In, + sqlglot_expressions.EQ, + sqlglot_expressions.NEQ, + sqlglot_expressions.GT, + sqlglot_expressions.GTE, + sqlglot_expressions.LT, + sqlglot_expressions.LTE, + sqlglot_expressions.And, + sqlglot_expressions.Or, + sqlglot_expressions.Not, + sqlglot_expressions.Between, + sqlglot_expressions.Like, + sqlglot_expressions.ILike, + sqlglot_expressions.Is, + ) + if isinstance(expr, boolean_types): + return True + + return False diff --git a/pydough/sqlglot/sqlglot_relational_expression_visitor.py b/pydough/sqlglot/sqlglot_relational_expression_visitor.py index 61407da9d..adc6fdab4 100644 --- a/pydough/sqlglot/sqlglot_relational_expression_visitor.py +++ b/pydough/sqlglot/sqlglot_relational_expression_visitor.py @@ -28,7 +28,7 @@ ) from pydough.types import PyDoughType -from .sqlglot_helpers import set_glot_alias +from .sqlglot_helpers import is_boolean_expression, set_glot_alias from .transform_bindings import BaseTransformBindings, bindings_from_dialect if TYPE_CHECKING: @@ -247,7 +247,12 @@ def visit_window_expression(self, window_expression: WindowCallExpression) -> No ) this = func(**lag_args) case "RELSUM": - this = sqlglot_expressions.Sum.from_arg_list(arg_exprs) + if self._dialect == DatabaseDialect.SNOWFLAKE and is_boolean_expression( + arg_exprs[0] + ): + this = sqlglot_expressions.CountIf.from_arg_list(arg_exprs) + else: + this = sqlglot_expressions.Sum.from_arg_list(arg_exprs) window_spec = self.get_window_spec(window_expression.kwargs) case "RELAVG": this = sqlglot_expressions.Avg.from_arg_list(arg_exprs) diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index 71e602233..1fd4bb650 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -6,7 +6,7 @@ SELECT ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, ROUND( ( - 100.0 * SUM(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + 100.0 * COUNT_IF(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS pct_apple_txns, From fd8cbfbe76ff81da701c5194be9239664ae514da Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Thu, 14 Aug 2025 14:49:35 -0700 Subject: [PATCH 23/46] fix length in slicing --- .../sqlglot/transform_bindings/base_transform_bindings.py | 4 ++-- tests/test_sql_refsols/smoke_a_snowflake.sql | 6 +----- tests/test_sql_refsols/unary_and_slicing_operators_ansi.sql | 2 +- .../unary_and_slicing_operators_snowflake.sql | 2 +- .../test_sql_refsols/unary_and_slicing_operators_sqlite.sql | 2 +- 5 files changed, 6 insertions(+), 10 deletions(-) diff --git a/pydough/sqlglot/transform_bindings/base_transform_bindings.py b/pydough/sqlglot/transform_bindings/base_transform_bindings.py index 4d62e7057..00e023790 100644 --- a/pydough/sqlglot/transform_bindings/base_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/base_transform_bindings.py @@ -753,7 +753,7 @@ def convert_slice( ), expression=sql_zero, ), - sql_empty_str, # If length ≤ 0, return empty string + sql_zero, # If length ≤ 0, return empty string # Otherwise calculate actual length sqlglot_expressions.Sub( this=stop_idx_adjusted_glot, @@ -795,7 +795,7 @@ def convert_slice( ), expression=sql_zero, ), - sql_empty_str, # If length ≤ 0, return empty string + sql_zero, # If length ≤ 0, return empty string sqlglot_expressions.Sub( # Otherwise calculate actual length this=stop_idx_adjusted_glot, expression=start_idx_adjusted_glot, diff --git a/tests/test_sql_refsols/smoke_a_snowflake.sql b/tests/test_sql_refsols/smoke_a_snowflake.sql index 7a9508034..2096a0b5f 100644 --- a/tests/test_sql_refsols/smoke_a_snowflake.sql +++ b/tests/test_sql_refsols/smoke_a_snowflake.sql @@ -39,11 +39,7 @@ SELECT RPAD(CAST(p_size AS TEXT), 3, '0') AS e, REPLACE(p_mfgr, 'Manufacturer#', 'm') AS f, REPLACE(LOWER(p_container), ' ', '') AS g, - CASE - WHEN LENGTH('o') = 0 - THEN 0 - ELSE CAST(LENGTH(p_name) - LENGTH(REPLACE(p_name, 'o', '')) / LENGTH('o') AS BIGINT) - END + ( + REGEXP_COUNT(p_name, 'o') + ( ( CHARINDEX('o', p_name) - 1 ) / 100.0 diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_ansi.sql b/tests/test_sql_refsols/unary_and_slicing_operators_ansi.sql index 129baf923..b80ccca12 100644 --- a/tests/test_sql_refsols/unary_and_slicing_operators_ansi.sql +++ b/tests/test_sql_refsols/unary_and_slicing_operators_ansi.sql @@ -23,7 +23,7 @@ SELECT LENGTH(c_name) + 0 ) - 2 ) <= 0 - THEN '' + THEN 0 ELSE ( LENGTH(c_name) + 0 ) - 2 diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql index 3a863b1fd..9b12e2240 100644 --- a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql +++ b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql @@ -23,7 +23,7 @@ SELECT LENGTH(c_name) + 0 ) - 2 ) <= 0 - THEN '' + THEN 0 ELSE ( LENGTH(c_name) + 0 ) - 2 diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_sqlite.sql b/tests/test_sql_refsols/unary_and_slicing_operators_sqlite.sql index 129baf923..b80ccca12 100644 --- a/tests/test_sql_refsols/unary_and_slicing_operators_sqlite.sql +++ b/tests/test_sql_refsols/unary_and_slicing_operators_sqlite.sql @@ -23,7 +23,7 @@ SELECT LENGTH(c_name) + 0 ) - 2 ) <= 0 - THEN '' + THEN 0 ELSE ( LENGTH(c_name) + 0 ) - 2 From bdb71c5a3e5dd6494f08952dfdfe61eb49b85ffd Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Thu, 14 Aug 2025 14:51:30 -0700 Subject: [PATCH 24/46] relsum to sum --- .../sqlglot_relational_expression_visitor.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pydough/sqlglot/sqlglot_relational_expression_visitor.py b/pydough/sqlglot/sqlglot_relational_expression_visitor.py index adc6fdab4..0d8515f05 100644 --- a/pydough/sqlglot/sqlglot_relational_expression_visitor.py +++ b/pydough/sqlglot/sqlglot_relational_expression_visitor.py @@ -28,7 +28,7 @@ ) from pydough.types import PyDoughType -from .sqlglot_helpers import is_boolean_expression, set_glot_alias +from .sqlglot_helpers import set_glot_alias from .transform_bindings import BaseTransformBindings, bindings_from_dialect if TYPE_CHECKING: @@ -207,6 +207,9 @@ def visit_window_expression(self, window_expression: WindowCallExpression) -> No order_exprs.append(glot_expr) this: SQLGlotExpression window_spec: sqlglot_expressions.WindowSpec | None = None + input_types: list[PyDoughType] = [ + arg.data_type for arg in window_expression.inputs + ] match window_expression.op.function_name: case "PERCENTILE": # Extract the number of buckets to use for the percentile @@ -247,12 +250,9 @@ def visit_window_expression(self, window_expression: WindowCallExpression) -> No ) this = func(**lag_args) case "RELSUM": - if self._dialect == DatabaseDialect.SNOWFLAKE and is_boolean_expression( - arg_exprs[0] - ): - this = sqlglot_expressions.CountIf.from_arg_list(arg_exprs) - else: - this = sqlglot_expressions.Sum.from_arg_list(arg_exprs) + this = self._bindings.convert_call_to_sqlglot( + pydop.SUM, arg_exprs, input_types + ) window_spec = self.get_window_spec(window_expression.kwargs) case "RELAVG": this = sqlglot_expressions.Avg.from_arg_list(arg_exprs) From 2a6717b8b3f14c00793fbe614882c7437f9caf62 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Tue, 19 Aug 2025 11:12:09 -0700 Subject: [PATCH 25/46] add defog metatdata and SQL --- tests/gen_data/init_defog_sf.sql | 603 +++++++++++++++++- .../test_metadata/snowflake_defog_graphs.json | 72 +-- 2 files changed, 631 insertions(+), 44 deletions(-) diff --git a/tests/gen_data/init_defog_sf.sql b/tests/gen_data/init_defog_sf.sql index 0d66078a5..50bbefc60 100644 --- a/tests/gen_data/init_defog_sf.sql +++ b/tests/gen_data/init_defog_sf.sql @@ -1,13 +1,20 @@ --- Modified version of the defog.ai schema setup for the broker schema: --- https://github.com/defog-ai/defog-data/blob/main/defog_data/broker/broker.sql --- Changed NOW() to CURRENT_DATE for Snowflake dialect compatibility. --- Cast timestamp strings e.g. --- '2023-04-01 09:30:00' -> '2023-04-01 09:30:00'::timestamp +------------------------------------------------------------------------------- +-- Modified version of the defog.ai schema setup Defog database +-- CREATE DATABASE DEFOG; +------------------------------------------------------------------------------- + ------------------------------------------------------------------------------- --- DEFOG DATABASE --- BROKER SCHEMA +-- For the BROKER SCHEMA +-- https://github.com/defog-ai/defog-data/blob/main/defog_data/broker/broker.sql + +-- Snowflake dialect compatibility replace: +-- - NOW() to CURRENT_DATE +-- - Cast timestamp strings e.g. +-- '2023-04-01 09:30:00' -> '2023-04-01 09:30:00'::timestamp ------------------------------------------------------------------------------- +CREATE SCHEMA BROKER; + -- Dimension tables CREATE TABLE sbCustomer ( sbCustId varchar(20) PRIMARY KEY, @@ -226,4 +233,584 @@ INSERT INTO sbTransaction (sbTxId, sbTxCustId, sbTxTickerId, sbTxDateTime, sbTxT ('TX053', 'C017', 'T003', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '3 months' + INTERVAL '3 days', 'buy', 15, 3200.00, 48000.00, 'USD', 240.00, 20.00, 'KP053', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '3 months' + INTERVAL '3 days', '%Y%m%d %H:%i:%s'), 'success'), ('TX054', 'C018', 'T004', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months' + INTERVAL '4 days', 'sell', 30, 180.00, 5400.00, 'USD', 27.00, 5.00, 'KP054', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months' + INTERVAL '4 days', '%Y%m%d %H:%i:%s'), 'success'), ('TX055', 'C019', 'T005', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month' + INTERVAL '5 days', 'buy', 10, 2500.00, 25000.00, 'USD', 125.00, 15.00, 'KP055', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month' + INTERVAL '5 days', '%Y%m%d %H:%i:%s'), 'success'), -('TX056', 'C002', 'T006', DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 day', 'sell', 20, 200.00, 4000.00, 'USD', 20.00, 10.00, 'KP056', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 day', '%Y%m%d %H:%i:%s'), 'success'); \ No newline at end of file +('TX056', 'C002', 'T006', DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 day', 'sell', 20, 200.00, 4000.00, 'USD', 20.00, 10.00, 'KP056', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 day', '%Y%m%d %H:%i:%s'), 'success'); + +------------------------------------------------------------------------------- +-- For the Dealership SCHEMA +-- https://github.com/defog-ai/defog-data/blob/main/defog_data/dealership/dealership.sql + +-- Snowflake dialect compatibility replace: +-- - SERIAL PRIMARY KEY -> INTEGER AUTOINCREMENT PRIMARY KEY +-- - NOW() -> CURRENT_TIMESTAMP +------------------------------------------------------------------------------- +CREATE SCHEMA DEALERSHIP; + +CREATE TABLE cars ( + id INTEGER AUTOINCREMENT PRIMARY KEY, + make TEXT NOT NULL, -- manufacturer of the car + model TEXT NOT NULL, -- model name of the car + year INTEGER NOT NULL, -- year of manufacture + color TEXT NOT NULL, -- color of the car + vin_number VARCHAR(17) NOT NULL UNIQUE, -- Vehicle Identification Number + engine_type TEXT NOT NULL, -- type of engine (e.g., V6, V8, Electric) + transmission TEXT NOT NULL, -- type of transmission (e.g., Automatic, Manual) + cost NUMERIC(10, 2) NOT NULL, -- cost of the car + crtd_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -- timestamp when the car was added to the system +); + +CREATE TABLE salespersons ( + id INTEGER AUTOINCREMENT PRIMARY KEY, + first_name TEXT NOT NULL, + last_name TEXT NOT NULL, + email VARCHAR(255) NOT NULL UNIQUE, + phone VARCHAR(20) NOT NULL, + hire_date DATE NOT NULL, + termination_date DATE, + crtd_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE customers ( + id INTEGER AUTOINCREMENT PRIMARY KEY, + first_name TEXT NOT NULL, + last_name TEXT NOT NULL, + email VARCHAR(255) NOT NULL UNIQUE, + phone VARCHAR(20) NOT NULL, + address TEXT NOT NULL, + city TEXT NOT NULL, + state TEXT NOT NULL, + zip_code VARCHAR(10) NOT NULL, + crtd_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE sales ( + id INTEGER AUTOINCREMENT PRIMARY KEY, + car_id INTEGER NOT NULL REFERENCES cars(id), + salesperson_id INTEGER NOT NULL REFERENCES salespersons(id), + customer_id INTEGER NOT NULL REFERENCES customers(id), + sale_price NUMERIC(10, 2) NOT NULL, + sale_date DATE NOT NULL, + crtd_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE inventory_snapshots ( + id INTEGER AUTOINCREMENT PRIMARY KEY, + snapshot_date DATE NOT NULL, + car_id INTEGER NOT NULL REFERENCES cars(id), + is_in_inventory BOOLEAN NOT NULL, + crtd_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE payments_received ( + id INTEGER AUTOINCREMENT PRIMARY KEY, + sale_id INTEGER NOT NULL REFERENCES sales(id), + payment_date DATE NOT NULL, + payment_amount NUMERIC(10, 2) NOT NULL, + payment_method TEXT NOT NULL, -- values: cash, check, credit_card, debit_card, financing + crtd_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE payments_made ( + id INTEGER AUTOINCREMENT PRIMARY KEY, + vendor_name TEXT NOT NULL, + payment_date DATE NOT NULL, + payment_amount NUMERIC(10, 2) NOT NULL, + payment_method TEXT NOT NULL, -- values: check, bank_transfer, credit_card + invoice_number VARCHAR(50) NOT NULL, + invoice_date DATE NOT NULL, + due_date DATE NOT NULL, + crtd_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + + +-- cars +INSERT INTO cars (id, make, model, year, color, vin_number, engine_type, transmission, cost) +VALUES + (1, 'Toyota', 'Camry', 2022, 'Silver', '4T1BF1FK3CU510984', 'V6', 'Automatic', 28500.00), + (2, 'Honda', 'Civic', 2021, 'platinum/grey', '2HGFC2F53MH522780', 'Inline 4', 'CVT', 22000.00), + (3, 'Ford', 'Mustang', 2023, 'blue', '1FA6P8TH4M5100001', 'V8', 'Manual', 45000.00), + (4, 'Tesla', 'Model 3', 2022, 'fuschia', '5YJ3E1EB7MF123456', 'Electric', 'Automatic', 41000.00), + (5, 'Chevrolet', 'Equinox', 2021, 'midnight blue', '2GNAXUEV1M6290124', 'Inline 4', 'Automatic', 26500.00), + (6, 'Nissan', 'Altima', 2022, 'Jet black', '1N4BL4BV4NN123456', 'V6', 'CVT', 25000.00), + (7, 'BMW', 'X5', 2023, 'Titan Silver', '5UXCR6C56M9A12345', 'V8', 'Automatic', 62000.00), + (8, 'Audi', 'A4', 2022, 'Blue', 'WAUBNAF47MA098765', 'Inline 4', 'Automatic', 39000.00), + (9, 'Lexus', 'RX350', 2021, 'Fiery red', '2T2BZMCA7MC143210', 'V6', 'Automatic', 45500.00), + (10, 'Subaru', 'Outback', 2022, 'Jade', '4S4BSANC2N3246801', 'Boxer 4', 'CVT', 28000.00), + (11, 'Mazda', 'CX-5', 2022, 'Royal Purple', 'JM3KE4DY4N0123456', 'Inline 4', 'Automatic', 29000.00), + (12, 'Hyundai', 'Tucson', 2023, 'black', 'KM8J3CAL3NU123456', 'Inline 4', 'Automatic', 32000.00), + (13, 'Kia', 'Sorento', 2021, 'ebony black', '5XYPH4A50MG987654', 'V6', 'Automatic', 32000.00), + (14, 'Jeep', 'Wrangler', 2022, 'Harbor Gray', '1C4HJXDG3NW123456', 'V6', 'Automatic', 38000.00), + (15, 'GMC', 'Sierra 1500', 2023, 'Snow White', '1GTU9CED3NZ123456', 'V8', 'Automatic', 45000.00), + (16, 'Ram', '1500', 2022, 'baby blue', '1C6SRFFT3NN123456', 'V8', 'Automatic', 42000.00), + (17, 'Mercedes-Benz', 'E-Class', 2021, 'Silver', 'W1KZF8DB1MA123456', 'Inline 6', 'Automatic', 62000.00), + (18, 'Volkswagen', 'Tiguan', 2022, 'Red', '3VV2B7AX1NM123456', 'Inline 4', 'Automatic', 32000.00), + (19, 'Volvo', 'XC90', 2023, 'black', 'YV4A22PK3N1234567', 'Inline 4', 'Automatic', 65000.00), + (20, 'Porsche', '911', 2022, 'white', 'WP0AA2A93NS123456', 'Flat 6', 'Automatic', 120000.00), + (21, 'Cadillac', 'Escalade', 2023, 'Black', '1GYS4HKJ3MR123456', 'V8', 'Automatic', 85000.00); + +-- salespersons +INSERT INTO salespersons (id, first_name, last_name, email, phone, hire_date, termination_date) +VALUES + (1, 'John', 'Doe', 'john.doe@autonation.com', '(555)-123-4567', CURRENT_DATE - INTERVAL '2 years', NULL), + (2, 'Jane', 'Smith', 'jane.smith@autonation.com', '(415)-987-6543', CURRENT_DATE - INTERVAL '3 years', NULL), + (3, 'Michael', 'Johnson', 'michael.johnson@autonation.com', '(555)-456-7890', CURRENT_DATE - INTERVAL '1 year', NULL), + (4, 'Emily', 'Brown', 'emily.brown@sonicauto.com', '(444)-111-2222', CURRENT_DATE - INTERVAL '1 year', CURRENT_DATE - INTERVAL '1 month'), + (5, 'David', 'Wilson', 'david.wilson@sonicauto.com', '(444)-333-4444', CURRENT_DATE - INTERVAL '2 years', NULL), + (6, 'Sarah', 'Taylor', 'sarah.taylor@sonicauto.com', '(123)-555-6666', '2018-09-01', '2022-09-01'), + (7, 'Daniel', 'Anderson', 'daniel.anderson@sonicauto.com', '(555)-777-8888', '2021-07-12', NULL), + (8, 'Olivia', 'Thomas', 'olivia.thomas@pensake.com', '(333)-415-0000', '2023-01-25', '2023-07-25'), + (9, 'James', 'Jackson', 'james.jackson@pensake.com', '(555)-212-3333', '2019-04-30', NULL), + (10, 'Sophia', 'White', 'sophia.white@pensake.com', '(555)-444-5555', '2022-08-18', NULL), + (11, 'Robert', 'Johnson', 'robert.johnson@pensake.com', '(001)-415-5678', CURRENT_DATE - INTERVAL '15 days', NULL), + (12, 'Jennifer', 'Davis', 'jennifer.davis@directauto.com', '(555)-345-6789', CURRENT_DATE - INTERVAL '20 days', NULL), + (13, 'Jessica', 'Rodriguez', 'jessica.rodriguez@directauto.com', '(555)-789-0123', '2022-06-01', NULL); + +-- customers +INSERT INTO customers (id, first_name, last_name, email, phone, address, city, state, zip_code, crtd_ts) +VALUES + -- (1, 'William', 'Davis', 'william.davis@example.com', '555-888-9999', '123 Main St', 'New York', 'NY', '10001', CURRENT_TIMESTAMP - INTERVAL '5 years');, + (2, 'Ava', 'Miller', 'ava.miller@example.com', '555-777-6666', '456 Oak Ave', 'Los Angeles', 'CA', '90001', CURRENT_TIMESTAMP - INTERVAL '4 years'), + (3, 'Benjamin', 'Wilson', 'benjamin.wilson@example.com', '555-666-5555', '789 Elm St', 'Chicago', 'IL', '60007', CURRENT_TIMESTAMP - INTERVAL '3 years'), + (4, 'Mia', 'Moore', 'mia.moore@example.com', '555-555-4444', '321 Pine Rd', 'Houston', 'TX', '77001', CURRENT_TIMESTAMP - INTERVAL '2 years'), + (5, 'Henry', 'Taylor', 'henry.taylor@example.com', '555-444-3333', '654 Cedar Ln', 'Phoenix', 'AZ', '85001', CURRENT_TIMESTAMP - INTERVAL '1 year'), + (6, 'Charlotte', 'Anderson', 'charlotte.anderson@example.com', '555-333-2222', '987 Birch Dr', 'Philadelphia', 'PA', '19019', CURRENT_TIMESTAMP - INTERVAL '5 years'), + (7, 'Alexander', 'Thomas', 'alexander.thomas@example.com', '555-222-1111', '741 Walnut St', 'San Antonio', 'TX', '78006', CURRENT_TIMESTAMP - INTERVAL '4 years'), + (8, 'Amelia', 'Jackson', 'amelia.jackson@gmail.com', '555-111-0000', '852 Maple Ave', 'San Diego', 'CA', '92101', CURRENT_TIMESTAMP - INTERVAL '3 years'), + (9, 'Daniel', 'White', 'daniel.white@youtube.com', '555-000-9999', '963 Oak St', 'Dallas', 'TX', '75001', CURRENT_TIMESTAMP - INTERVAL '2 years'), + (10, 'Abigail', 'Harris', 'abigail.harris@company.io', '555-999-8888', '159 Pine Ave', 'San Jose', 'CA', '95101', CURRENT_TIMESTAMP - INTERVAL '1 year'), + (11, 'Christopher', 'Brown', 'christopher.brown@ai.com', '555-456-7890', '753 Maple Rd', 'Miami', 'FL', '33101', CURRENT_TIMESTAMP - INTERVAL '5 months'), + (12, 'Sophia', 'Lee', 'sophia.lee@microsoft.com', '555-567-8901', '951 Oak Ln', 'Seattle', 'WA', '98101', CURRENT_TIMESTAMP - INTERVAL '6 months'), + (13, 'Michael', 'Chen', 'michael.chen@company.com', '(555)-456-7890', '123 Oak St', 'San Francisco', 'CA', '94101', CURRENT_TIMESTAMP - INTERVAL '3 months'); + +-- sales +INSERT INTO sales (id, car_id, salesperson_id, customer_id, sale_price, sale_date) +VALUES + (1, 1, 2, 3, 30500.00, '2023-03-15'), + (2, 3, 1, 5, 47000.00, '2023-03-20'), + (3, 6, 4, 2, 26500.00, '2023-03-22'), + (4, 8, 7, 9, 38000.00, '2023-03-25'), + (5, 2, 4, 7, 23500.00, '2023-03-28'), + (6, 10, 6, 1, 30000.00, '2023-04-01'), + (7, 5, 3, 6, 26800.00, '2023-04-05'), + (8, 7, 2, 10, 63000.00, '2023-04-10'), + (9, 4, 6, 8, 42500.00, '2023-04-12'), + (10, 9, 2, 4, 44500.00, '2023-04-15'), + (11, 1, 7, 11, 28900.00, CURRENT_DATE - INTERVAL '32 days'), + (12, 3, 3, 12, 46500.00, CURRENT_DATE - INTERVAL '10 days'), + (13, 6, 1, 11, 26000.00, CURRENT_DATE - INTERVAL '15 days'), + (14, 2, 3, 1, 23200.00, CURRENT_DATE - INTERVAL '21 days'), + (15, 8, 6, 12, 43500.00, CURRENT_DATE - INTERVAL '3 days'), + (16, 10, 4, 2, 29500.00, CURRENT_DATE - INTERVAL '5 days'), + (17, 3, 2, 3, 46000.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week' + INTERVAL '1 day'), + (18, 3, 2, 7, 47500.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week'), + (19, 3, 2, 10, 46500.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week' - INTERVAL '1 day'), + (20, 4, 1, 3, 48000.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week' + INTERVAL '1 day'), + (21, 4, 1, 7, 45000.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week'), + (22, 4, 1, 10, 49000.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week' - INTERVAL '1 day'); + + +-- inventory_snapshots +INSERT INTO inventory_snapshots (id, snapshot_date, car_id, is_in_inventory) +VALUES + (1, '2023-03-15', 1, TRUE), + (2, '2023-03-15', 2, TRUE), + (3, '2023-03-15', 3, TRUE), + (4, '2023-03-15', 4, TRUE), + (5, '2023-03-15', 5, TRUE), + (6, '2023-03-15', 6, TRUE), + (7, '2023-03-15', 7, TRUE), + (8, '2023-03-15', 8, TRUE), + (9, '2023-03-15', 9, TRUE), + (10, '2023-03-15', 10, TRUE), + (11, '2023-03-20', 1, FALSE), + (12, '2023-03-20', 3, FALSE), + (13, '2023-03-22', 6, FALSE), + (14, '2023-03-25', 8, FALSE), + (15, '2023-03-28', 2, FALSE), + (16, '2023-04-01', 10, FALSE), + (17, '2023-04-05', 5, FALSE), + (18, '2023-04-10', 7, FALSE), + (19, '2023-04-12', 4, FALSE), + (20, '2023-04-15', 9, FALSE), + (21, '2023-03-28', 1, TRUE), + (22, '2023-03-28', 3, TRUE), + (23, '2023-03-28', 4, FALSE); + +-- payments_received +INSERT INTO payments_received (id, sale_id, payment_date, payment_amount, payment_method) +VALUES + (1, 1, '2023-03-15', 5000.00, 'check'), + (2, 1, '2023-03-20', 22500.00, 'financing'), + (3, 2, '2023-03-20', 44000.00, 'credit_card'), + (4, 3, '2023-03-22', 24500.00, 'debit_card'), + (5, 4, '2023-03-25', 38000.00, 'financing'), + (6, 5, '2023-03-28', 21500.00, 'cash'), + (7, 6, '2023-04-01', 27000.00, 'credit_card'), + (8, 7, '2023-04-05', 26000.00, 'debit_card'), + (9, 8, '2023-04-10', 60000.00, 'financing'), + (10, 9, '2023-04-12', 40000.00, 'check'), + (11, 10, '2023-04-15', 44500.00, 'credit_card'), + (12, 11, CURRENT_DATE - INTERVAL '30 days', 28000.00, 'cash'), + (13, 12, CURRENT_DATE - INTERVAL '3 days', 43500.00, 'credit_card'), + (14, 13, CURRENT_DATE - INTERVAL '6 days', 24000.00, 'debit_card'), + (15, 14, CURRENT_DATE - INTERVAL '1 days', 17200.00, 'financing'), + (16, 15, CURRENT_DATE - INTERVAL '1 days', 37500.00, 'credit_card'), + (17, 16, CURRENT_DATE - INTERVAL '5 days', 26500.00, 'debit_card'), + (18, 17, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week' + INTERVAL '1 day', 115000.00, 'financing'), + (19, 18, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week', 115000.00, 'credit_card'), + (20, 19, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week' - INTERVAL '1 day', 115000.00, 'debit_card'), + (21, 20, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week' + INTERVAL '1 day', 115000.00, 'cash'), + (22, 21, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week', 115000.00, 'check'), + (23, 22, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week' - INTERVAL '1 day', 115000.00, 'credit_card'); + +-- payments_made +INSERT INTO payments_made (id, vendor_name, payment_date, payment_amount, payment_method, invoice_number, invoice_date, due_date) +VALUES + (1, 'Car Manufacturer Inc', '2023-03-01', 150000.00, 'bank_transfer', 'INV-001', '2023-02-25', '2023-03-25'), + (2, 'Auto Parts Supplier', '2023-03-10', 25000.00, 'check', 'INV-002', '2023-03-05', '2023-04-04'), + (3, 'Utility Company', '2023-03-15', 1500.00, 'bank_transfer', 'INV-003', '2023-03-01', '2023-03-31'), + (4, 'Marketing Agency', '2023-03-20', 10000.00, 'credit_card', 'INV-004', '2023-03-15', '2023-04-14'), + (5, 'Insurance Provider', '2023-03-25', 5000.00, 'bank_transfer', 'INV-005', '2023-03-20', '2023-04-19'), + (6, 'Cleaning Service', '2023-03-31', 2000.00, 'check', 'INV-006', '2023-03-25', '2023-04-24'), + (7, 'Car Manufacturer Inc', '2023-04-01', 200000.00, 'bank_transfer', 'INV-007', '2023-03-25', '2023-04-24'), + (8, 'Auto Parts Supplier', '2023-04-10', 30000.00, 'check', 'INV-008', '2023-04-05', '2023-05-05'), + (9, 'Utility Company', '2023-04-15', 1500.00, 'bank_transfer', 'INV-009', '2023-04-01', '2023-04-30'), + (10, 'Marketing Agency', '2023-04-20', 15000.00, 'credit_card', 'INV-010', '2023-04-15', '2023-05-15'), + (11, 'Insurance Provider', '2023-04-25', 5000.00, 'bank_transfer', 'INV-011', '2023-04-20', '2023-05-20'), + (12, 'Cleaning Service', '2023-04-30', 2000.00, 'check', 'INV-012', '2023-04-25', '2023-05-25'), + (13, 'Toyota Auto Parts', CURRENT_DATE - INTERVAL '5 days', 12500.00, 'bank_transfer', 'INV-013', CURRENT_DATE - INTERVAL '10 days', CURRENT_DATE + INTERVAL '20 days'), + (14, 'Honda Manufacturing', CURRENT_DATE - INTERVAL '3 days', 18000.00, 'check', 'INV-014', CURRENT_DATE - INTERVAL '8 days', CURRENT_DATE + INTERVAL '22 days'), + (15, 'Ford Supplier Co', CURRENT_DATE - INTERVAL '2 days', 22000.00, 'bank_transfer', 'INV-015', CURRENT_DATE - INTERVAL '7 days', CURRENT_DATE + INTERVAL '23 days'), + (16, 'Tesla Parts Inc', CURRENT_DATE - INTERVAL '1 day', 15000.00, 'credit_card', 'INV-016', CURRENT_DATE - INTERVAL '6 days', CURRENT_DATE + INTERVAL '24 days'), + (17, 'Chevrolet Auto', CURRENT_DATE, 20000.00, 'bank_transfer', 'INV-017', CURRENT_DATE - INTERVAL '5 days', CURRENT_DATE + INTERVAL '25 days'); + + +------------------------------------------------------------------------------- +-- For the EWALLET SCHEMA +-- https://github.com/defog-ai/defog-data/blob/main/defog_data/ewallet/ewallet.sql + +-- Snowflake dialect compatibility replace: +-- - SERIAL PRIMARY KEY -> INTEGER AUTOINCREMENT PRIMARY KEY +-- - NOW() -> CURRENT_TIMESTAMP +------------------------------------------------------------------------------- +CREATE SCHEMA EWALLET; + +CREATE TABLE users ( + uid BIGINT PRIMARY KEY, + username VARCHAR(50) NOT NULL, + email VARCHAR(100) NOT NULL, + phone_number VARCHAR(20), + created_at TIMESTAMP NOT NULL, + last_login_at TIMESTAMP, + user_type VARCHAR(20) NOT NULL, -- possible values: individual, business, admin + status VARCHAR(20) NOT NULL, -- possible values: active, inactive, suspended, deleted + country VARCHAR(2), -- 2-letter country code + address_billing TEXT, + address_delivery TEXT, + kyc_status VARCHAR(20), -- possible values: pending, approved, rejected + kyc_verified_at TIMESTAMP +); + +CREATE TABLE merchants ( + mid BIGINT PRIMARY KEY, + name VARCHAR(100) NOT NULL, + description TEXT, + website_url VARCHAR(200), + logo_url VARCHAR(200), + created_at TIMESTAMP NOT NULL, + country VARCHAR(2), -- 2-letter country code + state VARCHAR(50), + city VARCHAR(50), + postal_code VARCHAR(20), + address TEXT, + status VARCHAR(20) NOT NULL, -- possible values: active, inactive, suspended + category VARCHAR(50), + sub_category VARCHAR(50), + mcc INT, -- Merchant Category Code + contact_name VARCHAR(100), + contact_email VARCHAR(100), + contact_phone VARCHAR(20) +); + +CREATE TABLE coupons ( + cid BIGINT PRIMARY KEY, + merchant_id BIGINT NOT NULL REFERENCES merchants(mid), + code VARCHAR(20) NOT NULL, + description TEXT, + start_date DATE NOT NULL, + end_date DATE NOT NULL, + discount_type VARCHAR(20) NOT NULL, -- possible values: percentage, fixed_amount + discount_value DECIMAL(10,2) NOT NULL, + min_purchase_amount DECIMAL(10,2), + max_discount_amount DECIMAL(10,2), + redemption_limit INT, + status VARCHAR(20) NOT NULL, -- possible values: active, inactive, expired + created_at TIMESTAMP NOT NULL, + updated_at TIMESTAMP +); + +-- Fact Tables -- + +CREATE TABLE wallet_transactions_daily ( + txid INTEGER AUTOINCREMENT PRIMARY KEY, + sender_id BIGINT NOT NULL, + sender_type INT NOT NULL, -- 0 for user, 1 for merchant + receiver_id BIGINT NOT NULL, + receiver_type INT NOT NULL, -- 0 for user, 1 for merchant + amount DECIMAL(10,2) NOT NULL, + status VARCHAR(20) NOT NULL, -- possible values: pending, success, failed, refunded + type VARCHAR(20) NOT NULL, -- possible values: credit, debit + description TEXT, + coupon_id BIGINT, -- NULL if transaction doesn't involve a coupon + created_at TIMESTAMP NOT NULL, + completed_at TIMESTAMP, -- NULL if failed + transaction_ref VARCHAR(36) NOT NULL, -- randomly generated uuid4 for users' reference + gateway_name VARCHAR(50), + gateway_ref VARCHAR(50), + device_id VARCHAR(50), + ip_address VARCHAR(50), + user_agent TEXT +); + +CREATE TABLE wallet_user_balance_daily ( + user_id BIGINT, + balance DECIMAL(10,2) NOT NULL, + updated_at TIMESTAMP NOT NULL +); + +CREATE TABLE wallet_merchant_balance_daily ( + merchant_id BIGINT, + balance DECIMAL(10,2) NOT NULL, + updated_at TIMESTAMP NOT NULL +); + +CREATE TABLE notifications ( + id INTEGER AUTOINCREMENT PRIMARY KEY, + user_id INT NOT NULL REFERENCES users(uid), + message TEXT NOT NULL, + type VARCHAR(50) NOT NULL, -- possible values: transaction, promotion, security, general + status VARCHAR(20) NOT NULL, -- possible values: unread, read, archived + created_at TIMESTAMP NOT NULL, + read_at TIMESTAMP, -- NULL if not read + device_type VARCHAR(10), -- possible values: mobile_app, web_app, email, sms + device_id VARCHAR(36), + action_url TEXT -- can be external https or deeplink url within the app +); + +CREATE TABLE user_sessions ( + user_id BIGINT NOT NULL, + session_start_ts TIMESTAMP NOT NULL, + session_end_ts TIMESTAMP, + device_type VARCHAR(10), -- possible values: mobile_app, web_app, email, sms + device_id VARCHAR(36) +); + +CREATE TABLE user_setting_snapshot ( + user_id BIGINT NOT NULL, + snapshot_date DATE NOT NULL, + tx_limit_daily DECIMAL(10,2), + tx_limit_monthly DECIMAL(10,2), + membership_status INTEGER, -- 0 for bronze, 1 for silver, 2 for gold, 3 for platinum, 4 for VIP + password_hash VARCHAR(255), + api_key VARCHAR(255), + verified_devices TEXT, -- comma separated list of device ids + verified_ips TEXT, -- comma separated list of IP addresses + mfa_enabled BOOLEAN, + marketing_opt_in BOOLEAN, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (user_id, snapshot_date) +); + +-- users +INSERT INTO users (uid, username, email, phone_number, created_at, user_type, status, country, address_billing, address_delivery, kyc_status) +VALUES + (1, 'john_doe', 'john.doe@email.com', '+1234567890', DATE_TRUNC('month', CURRENT_TIMESTAMP) - INTERVAL '1 month', 'individual', 'active', 'US', '123 Main St, Anytown US 12345', '123 Main St, Anytown US 12345', 'approved'), + (2, 'jane_smith', 'jane.smith@email.com', '+9876543210', DATE_TRUNC('month', CURRENT_TIMESTAMP) - INTERVAL '2 months', 'individual', 'active', 'CA', '456 Oak Rd, Toronto ON M1M2M2', '456 Oak Rd, Toronto ON M1M2M2', 'approved'), + (3, 'bizuser', 'contact@business.co', '+1234509876', '2021-06-01 09:15:00', 'business', 'active', 'FR', '12 Rue Baptiste, Paris 75001', NULL, 'approved'), + (4, 'david_miller', 'dave@personal.email', '+4477788899', '2023-03-20 18:45:00', 'individual', 'inactive', 'GB', '25 London Road, Manchester M12 4XY', '25 London Road, Manchester M12 4XY', 'pending'), + (5, 'emily_wilson', 'emily.w@gmail.com', '+8091017161', '2021-11-03 22:10:00', 'individual', 'suspended', 'AU', '72 Collins St, Melbourne VIC 3000', '19 Smith St, Brunswick VIC 3056', 'rejected'), + (6, 'techcorp', 'orders@techcorp.com', '+14165558888', '2018-05-20 11:35:00', 'business', 'active', 'US', '33 Technology Dr, Silicon Valley CA 94301', NULL, 'approved'), + (7, 'shopsmart', 'customerserv@shopsmart.biz', '+6585771234', '2020-09-15 06:25:00', 'business', 'inactive', 'SG', '888 Orchard Rd, #05-000, Singapore 238801', NULL, 'approved'), + (8, 'michael_brown', 'mike.brown@outlook.com', '+3912378624', '2019-07-22 16:40:00', 'individual', 'active', 'DE', 'Heidestr 17, Berlin 10557', 'Heidestr 17, Berlin 10557', 'approved'), + (9, 'alex_taylor', 'ataylo@university.edu', NULL, '2022-08-30 09:15:00', 'individual', 'active', 'NZ', '12 Mardon Rd, Wellington 6012', '5 Boulcott St, Wellington 6011', 'approved'), + (10, 'huang2143', 'huang2143@example.com', '+8612345678901', '2023-12-10 08:00:00', 'individual', 'active', 'CN', '123 Nanjing Road, Shanghai 200000', '123 Nanjing Road, Shanghai 200000', 'approved'), + (11, 'lisa_jones', 'lisa.jones@email.com', '+6123456789', '2023-09-05 15:20:00', 'individual', 'active', 'AU', '789 George St, Sydney NSW 2000', '789 George St, Sydney NSW 2000', 'approved'); + +-- merchants +INSERT INTO merchants (mid, name, description, website_url, logo_url, created_at, country, state, city, postal_code, address, status, category, sub_category, mcc, contact_name, contact_email, contact_phone) +VALUES + (1, 'TechMart', 'Leading electronics retailer', 'https://www.techmart.com', 'https://www.techmart.com/logo.png', '2015-01-15 00:00:00', 'US', 'California', 'Los Angeles', '90011', '645 Wilshire Blvd, Los Angeles CA 90011', 'active', 'retail (hardware)', 'Electronics', 5732, 'John Jacobs', 'jjacobs@techmart.com', '+15551234567'), + (2, 'FitLifeGear', 'Fitness equipment and activewear', 'https://fitlifegear.com', 'https://fitlifegear.com/brand.jpg', '2018-07-01 00:00:00', 'CA', 'Ontario', 'Toronto', 'M5V2J2', '421 Richmond St W, Toronto ON M5V2J2', 'active', 'retail (hardware)', 'Sporting Goods', 5655, 'Jane McDonald', 'jmcdonald@fitlifegear.com', '+14165559876'), + (3, 'UrbanDining', 'Local restaurants and cafes', 'https://www.urbandining.co', 'https://www.urbandining.co/logo.png', '2020-03-10 00:00:00', 'FR', NULL, 'Paris', '75011', '35 Rue du Faubourg Saint-Antoine, 75011 Paris', 'active', 'Food & Dining', 'Restaurants', 5812, 'Pierre Gagnon', 'pgagnon@urbandining.co', '+33612345678'), + (4, 'LuxStays', 'Boutique vacation rentals', 'https://luxstays.com', 'https://luxstays.com/branding.jpg', '2016-11-01 00:00:00', 'IT', NULL, 'Rome', '00187', 'Via della Conciliazione 15, Roma 00187', 'inactive', 'Travel & Hospitality', 'Accommodation', 7011, 'Marco Rossi', 'mrossi@luxstays.com', '+39061234567'), + (5, 'HandyCraft', 'Handmade arts and crafts supplies', 'https://handycraft.store', 'https://handycraft.store/hc-logo.png', '2022-06-20 00:00:00', 'ES', 'Catalonia', 'Barcelona', '08003', 'Passeig de Gracia 35, Barcelona 08003', 'active', 'Retail', 'Crafts & Hobbies', 5949, 'Ana Garcia', 'agarcia@handycraft.store', '+34612345678'), + (6, 'CodeSuite', 'SaaS productivity tools for developers', 'https://codesuite.io', 'https://codesuite.io/logo.svg', '2019-02-01 00:00:00', 'DE', NULL, 'Berlin', '10119', 'Dessauer Str 28, 10119 Berlin', 'active', 'Business Services', 'Software', 5734, 'Michael Schmidt', 'mschmidt@codesuite.io', '+49301234567'), + (7, 'ZenHomeGoods', 'Housewares and home decor items', 'https://www.zenhomegoods.com', 'https://www.zenhomegoods.com/branding.jpg', '2014-09-15 00:00:00', 'AU', 'Victoria', 'Melbourne', '3004', '159 Franklin St, Melbourne VIC 3004', 'active', 'Retail', 'Home & Garden', 5719, 'Emily Watson', 'ewatson@zenhomegoods.com', '+61312345678'), + (8, 'KidzPlayhouse', 'Children''s toys and games', 'https://kidzplayhouse.com', 'https://kidzplayhouse.com/logo.png', '2017-04-01 00:00:00', 'GB', NULL, 'London', 'WC2N 5DU', '119 Charing Cross Rd, London WC2N 5DU', 'suspended', 'Retail', 'Toys & Games', 5945, 'David Thompson', 'dthompson@kidzplayhouse.com', '+442071234567'), + (9, 'BeautyTrending', 'Cosmetics and beauty supplies', 'https://beautytrending.com', 'https://beautytrending.com/bt-logo.svg', '2021-10-15 00:00:00', 'NZ', NULL, 'Auckland', '1010', '129 Queen St, Auckland 1010', 'active', 'Retail', 'Health & Beauty', 5977, 'Sophie Wilson', 'swilson@beautytrending.com', '+6493012345'), + (10, 'GameRush', 'Video games and gaming accessories', 'https://gamerush.co', 'https://gamerush.co/gr-logo.png', '2023-02-01 00:00:00', 'US', 'New York', 'New York', '10001', '303 Park Ave S, New York NY 10001', 'active', 'Retail', 'Electronics', 5735, 'Michael Davis', 'mdavis@gamerush.co', '+16463012345'), + (11, 'FashionTrend', 'Trendy clothing and accessories', 'https://www.fashiontrend.com', 'https://www.fashiontrend.com/logo.png', '2019-08-10 00:00:00', 'UK', NULL, 'Manchester', 'M2 4WU', '87 Deansgate, Manchester M2 4WU', 'active', 'Retail', 'Apparel', 5651, 'Emma Thompson', 'ethompson@fashiontrend.com', '+441612345678'), + (12, 'GreenGourmet', 'Organic foods and natural products', 'https://www.greengourmet.com', 'https://www.greengourmet.com/logo.jpg', '2020-12-05 00:00:00', 'CA', 'British Columbia', 'Vancouver', 'V6B 6B1', '850 W Hastings St, Vancouver BC V6B 6B1', 'active', 'Food & Dining', 'Groceries', 5411, 'Daniel Lee', 'dlee@greengourmet.com', '+16041234567'), + (13, 'PetParadise', 'Pet supplies and accessories', 'https://petparadise.com', 'https://petparadise.com/logo.png', '2018-03-20 00:00:00', 'AU', 'New South Wales', 'Sydney', '2000', '275 Pitt St, Sydney NSW 2000', 'active', 'Retail', 'Pets', 5995, 'Olivia Johnson', 'ojohnson@petparadise.com', '+61298765432'), + (14, 'HomeTechSolutions', 'Smart home devices and gadgets', 'https://hometechsolutions.net', 'https://hometechsolutions.net/logo.png', '2022-04-15 00:00:00', 'US', 'California', 'San Francisco', '94105', '350 Mission St, San Francisco CA 94105', 'active', 'Retail', 'Home Appliances', 5734, 'Ethan Brown', 'ebrown@hometechsolutions.net', '+14159876543'), + (15, 'BookWorms', 'Books and reading accessories', 'https://bookworms.co.uk', 'https://bookworms.co.uk/logo.png', '2017-06-30 00:00:00', 'UK', NULL, 'London', 'WC2H 9JA', '66-67 Tottenham Court Rd, London WC2H 9JA', 'active', 'Retail', 'Books', 5942, 'Sophia Turner', 'sturner@bookworms.co.uk', '+442078912345'); + +-- coupons +INSERT INTO coupons (cid, merchant_id, code, description, start_date, end_date, discount_type, discount_value, min_purchase_amount, max_discount_amount, redemption_limit, status, created_at, updated_at) +VALUES + (1, 1, 'TECH20', '20% off tech and electronics', '2023-05-01', '2023-05-31', 'percentage', 20.00, 100.00, NULL, 500, 'active', '2023-04-01 09:00:00', '2023-04-15 11:30:00'), + (2, 2, 'NEWYEAR30', '30% off workout gear', '2023-01-01', '2023-01-15', 'percentage', 30.00, NULL, NULL, 1000, 'expired', '2022-12-01 12:00:00', '2023-01-16 18:45:00'), + (3, 3, 'DINEDISCOUNT', 'Get $10 off $50 order', '2023-06-01', '2023-06-30', 'fixed_amount', 10.00, 50.00, 10.00, NULL, 'active', '2023-05-15 15:30:00', NULL), + (4, 4, 'HOME15', '15% off weekly rental', '2023-07-01', '2023-08-31', 'percentage', 15.00, 1000.00, 300.00, 200, 'active', '2023-05-01 09:15:00', NULL), + (5, 5, 'HOME10', '$10 off $75+ purchase', '2023-04-01', '2023-04-30', 'fixed_amount', 10.00, 75.00, 10.00, 300, 'inactive', '2023-03-01 14:00:00', '2023-05-05 10:30:00'), + (6, 6, 'CODENEW25', '25% off new subscriptions', '2023-03-01', '2023-03-31', 'percentage', 25.00, NULL, NULL, NULL, 'expired', '2023-02-15 11:00:00', '2023-04-01 09:30:00'), + (7, 7, 'ZENHOME', 'Get 20% off home items', '2023-09-01', '2023-09-30', 'percentage', 20.00, 50.00, NULL, 1500, 'active', '2023-08-15 16:45:00', NULL), + (8, 8, 'GAMEKIDS', '$15 off $100+ purchase', '2022-12-01', '2022-12-31', 'fixed_amount', 15.00, 100.00, 15.00, 800, 'expired', '2022-11-01 10:30:00', '2023-01-02 13:15:00'), + (9, 9, 'GLOWUP', 'Buy 2 get 1 free on cosmetics', '2023-10-15', '2023-10-31', 'fixed_amount', 50.00, 150.00, 50.00, 300, 'active', '2023-10-01 08:00:00', NULL), + (10, 10, 'GAMERALERT', 'Get 25% off accessories', '2023-03-01', '2023-03-15', 'percentage', 25.00, NULL, 50.00, 750, 'expired', '2023-02-15 14:30:00', '2023-03-16 12:00:00'); + + +-- wallet_transactions_daily +INSERT INTO wallet_transactions_daily (txid, sender_id, sender_type, receiver_id, receiver_type, amount, status, type, description, coupon_id, created_at, completed_at, transaction_ref, gateway_name, gateway_ref, device_id, ip_address, user_agent) +VALUES + (1, 1, 0, 1, 0, 99.99, 'success', 'debit', 'Online purchase', NULL, '2023-06-01 10:15:30', '2023-06-01 10:15:45', 'ad154bf7-8185-4230-a8d8-3ef59b4e0012', 'Stripe', 'tx_123abc456def', 'mobile_8fh2k1', '192.168.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_3_1 like Mac OS X) ...'), + (2, 1, 0, 1, 1, 20.00, 'success', 'credit', 'Coupon discount', 1, '2023-06-01 10:15:30', '2023-06-01 10:15:45', 'ad154bf7-8185-4230-a8d8-3ef59b4e0012', 'Stripe', 'tx_123abc456def', 'mobile_8fh2k1', '192.168.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_3_1 like Mac OS X) ...'), + (3, 2, 0, 1, 1, 16.00, 'success', 'credit', 'Coupon discount', 1, '2023-07-01 10:18:30', '2023-06-01 10:18:45', 'kd454bf7-428d-eig2-a8d8-3ef59b4e0012', 'Stripe', 'tx_123abc789gas', 'mobile_yjp08q', '198.51.100.233', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (4, 3, 1, 9, 0, 125.50, 'success', 'debit', 'Product purchase', NULL, '2023-06-01 13:22:18', '2023-06-01 13:22:45', 'e6f510e9-ff7d-4914-81c2-f8e56bae4012', 'PayPal', 'ppx_192ks8hl', 'web_k29qjd', '216.58.195.68', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...'), + (5, 9, 0, 3, 1, 42.75, 'pending', 'debit', 'Order #438721', 3, '2023-06-01 18:45:02', '2023-06-01 18:45:13', 'b2ca190e-a42f-4f5e-8318-f82bcc6ae64e', 'Stripe', 'tx_987zyx654wvu', 'mobile_q3mz8n', '68.85.32.201', 'Mozilla/5.0 (Linux; Android 13) ...'), + (6, 9, 0, 3, 1, 10.00, 'success', 'credit', 'Coupon discount', 3, '2023-06-01 18:45:02', '2023-06-01 18:45:13', 'b2ca190e-a42f-4f5e-8318-f82bcc6ae64e', 'Stripe', 'tx_987zyx654wvu', 'mobile_q3mz8n', '68.85.32.201', 'Mozilla/5.0 (Linux; Android 13) ...'), + (7, 2, 0, 7, 1, 89.99, 'pending', 'debit', 'Home furnishings', NULL, '2023-06-02 09:30:25', '2023-06-02 09:30:40', 'c51e10d1-db34-4d9f-b55f-43a05a5481c8', 'Checkout.com', 'ord_kzhg123', 'mobile_yjp08q', '198.51.100.233', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (8, 2, 0, 7, 1, 17.99, 'success', 'credit', 'Coupon discount', 7, '2023-06-02 09:30:25', '2023-06-02 09:30:40', 'c51e10d1-db34-4d9f-b55f-43a05a5481c8', 'Checkout.com', 'ord_kzhg123', 'mobile_yjp08q', '198.51.100.233', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (9, 6, 1, 1, 0, 29.95, 'success', 'debit', 'Software subscription', NULL, '2023-06-02 14:15:00', '2023-06-02 14:15:05', '25cd48e5-08c3-4d1c-b7a4-26485ea646eb', 'Braintree', 'sub_mnb456', 'web_zz91p44l', '4.14.15.90', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...'), + (10, 4, 0, 4, 1, 2500.00, 'pending', 'debit', 'Villa rental deposit', NULL, '2023-06-02 20:45:36', NULL, 'a7659c81-0cd0-4635-af6c-cf68d2c15ab2', 'PayPal', NULL, 'mobile_34jdkl', '143.92.64.138', 'Mozilla/5.0 (Linux; Android 11; Pixel 5) ...'), + (11, 5, 0, 5, 1, 55.99, 'success', 'debit', 'Craft supplies order', NULL, '2023-06-03 11:12:20', '2023-06-03 11:12:35', 'ec74cb3b-8272-4175-a5d0-f03c2e781593', 'Adyen', 'ord_tkjs87', 'web_8902wknz', '192.64.112.188', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...'), + (12, 9, 0, 9, 1, 75.00, 'success', 'debit', 'Beauty products', 9, '2023-06-04 08:00:00', '2023-06-04 08:00:25', '840a9854-1b07-422b-853c-636b289222a9', 'Checkout.com', 'ord_kio645', 'mobile_g3mjfz', '203.96.81.36', 'Mozilla/5.0 (Linux; Android 12; SM-S906N Build/QP1A.190711.020) ...'), + (13, 9, 0, 9, 1, 50.00, 'success', 'credit', 'Coupon discount', 9, '2023-06-04 08:00:00', '2023-06-04 08:00:25', '840a9854-1b07-422b-853c-636b289222a9', 'Checkout.com', 'ord_kio645', 'mobile_g3mjfz', '203.96.81.36', 'Mozilla/5.0 (Linux; Android 12; SM-S906N Build/QP1A.190711.020) ...'), + (14, 8, 0, 10, 1, 119.99, 'failed', 'debit', 'New game purchase', NULL, '2023-06-04 19:30:45', NULL, '32e2b29c-5c7f-4906-98c5-e8abdcbfd69a', 'Braintree', 'ord_mjs337', 'web_d8180kaf', '8.26.53.165', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...'), + (15, 8, 0, 10, 1, 29.99, 'success', 'credit', 'Coupon discount', 10, '2023-06-04 19:30:45', '2023-06-04 19:31:10', '32e2b29c-5c7f-4906-98c5-e8abdcbfd69a', 'Braintree', 'ord_mjs337', 'web_d8180kaf', '8.26.53.165', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...'), + (16, 10, 1, 3, 0, 87.50, 'failed', 'debit', 'Restaurant order', NULL, '2023-06-05 12:05:21', NULL, '37cf052d-0475-4ecc-bda7-73ee904bf65c', 'Checkout.com', NULL, 'mobile_x28qlj', '92.110.51.150', 'Mozilla/5.0 (Linux; Android 13; SM-S901B) ...'), + (17, 1, 0, 1, 0, 175.00, 'success', 'debit', 'Refund on order #1234', NULL, '2023-06-06 14:20:00', '2023-06-06 14:20:05', 'a331232e-a3f6-4e7f-b49f-3588bc5ff985', 'Stripe', 'rfnd_xkt521', 'web_33lq1dh', '38.75.197.8', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...'), + (18, 7, 1, 2, 0, 599.99, 'success', 'debit', 'Yearly subscription', NULL, '2023-06-06 16:55:10', '2023-06-06 16:55:15', 'ed6f46ab-9617-4d11-9aa9-60d24bdf9bc0', 'PayPal', 'sub_pjj908', 'web_zld22f', '199.59.148.201', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...'), + (19, 2, 0, 2, 1, 22.99, 'refunded', 'debit', 'Product return', NULL, '2023-06-07 10:10:30', '2023-06-07 10:11:05', '6c97a87d-610f-4705-ae97-55071127d9ad', 'Adyen', 'tx_zcx258', 'mobile_1av8p0', '70.121.39.25', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (20, 2, 0, 2, 1, 22.99, 'success', 'credit', 'Refund on return', NULL, '2023-06-07 10:10:30', '2023-06-07 10:11:05', '6c97a87d-610f-4705-ae97-55071127d9ad', 'Adyen', 'tx_zcx258', 'mobile_1av8p0', '70.121.39.25', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (21, 1, 0, 2, 1, 49.99, 'success', 'debit', 'Product purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '5 months', CURRENT_TIMESTAMP - INTERVAL '5 months', 'tx_ref_11_1', 'Stripe', 'stripe_ref_11_1', 'device_11_1', '192.168.1.11', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'), + (22, 4, 0, 3, 1, 99.99, 'success', 'debit', 'Service purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '4 months', CURRENT_TIMESTAMP - INTERVAL '4 months', 'tx_ref_12_1', 'PayPal', 'paypal_ref_12_1', 'device_12_1', '192.168.1.12', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1'), + (23, 4, 0, 1, 1, 149.99, 'success', 'debit', 'Subscription purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '3 months', CURRENT_TIMESTAMP - INTERVAL '3 months', 'tx_ref_13_1', 'Stripe', 'stripe_ref_13_1', 'device_13_1', '192.168.1.13', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'), + (24, 2, 0, 5, 1, 199.99, 'pending', 'debit', 'Product purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '2 months', CURRENT_TIMESTAMP - INTERVAL '2 months', 'tx_ref_14_1', 'PayPal', 'paypal_ref_14_1', 'device_14_1', '192.168.1.14', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'), + (25, 2, 0, 1, 1, 249.99, 'success', 'debit', 'Service purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '1 month', CURRENT_TIMESTAMP - INTERVAL '1 month', 'tx_ref_15_1', 'Stripe', 'stripe_ref_15_1', 'device_15_1', '192.168.1.15', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'), + (26, 7, 1, 2, 0, 299.99, 'success', 'debit', 'Renew subscription', NULL, CURRENT_TIMESTAMP - INTERVAL '3 weeks', CURRENT_TIMESTAMP - INTERVAL '3 weeks', 'ed6f46ab-9617-4d11-9aa9-55071127d9ad', 'PayPal', 'sub_pjk832', 'web_zld22f', '199.59.148.201', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...'); + + +-- wallet_user_balance_daily +INSERT INTO wallet_user_balance_daily (user_id, balance, updated_at) +VALUES + (1, 525.80, '2023-06-07 23:59:59'), + (2, 429.76, '2023-06-07 23:59:59'), + (3, -725.55, '2023-06-07 23:59:59'), + (4, -2500.00, '2023-06-07 23:59:59'), + (5, -55.99, '2023-06-07 23:59:59'), + (6, 0.00, '2023-06-07 23:59:59'), + (7, 0.00, '2023-06-07 23:59:59'), + (8, -599.98, '2023-06-07 23:59:59'), + (9, -183.25, '2023-06-07 23:59:59'), + (10, 0.00, '2023-06-07 23:59:59'), + (1, 2739.10, CURRENT_TIMESTAMP - INTERVAL '8 days'), + (1, 2738.12, CURRENT_TIMESTAMP - INTERVAL '6 days'), + (1, 2733.92, CURRENT_TIMESTAMP - INTERVAL '3 days'), + (2, 155.24, CURRENT_TIMESTAMP - INTERVAL '7 days'), + (3, 2775.25, CURRENT_TIMESTAMP - INTERVAL '6 days'), + (4, 2500.00, CURRENT_TIMESTAMP - INTERVAL '5 days'), + (5, 155.99, CURRENT_TIMESTAMP - INTERVAL '4 days'), + (6, 29.95, CURRENT_TIMESTAMP - INTERVAL '3 days'), + (7, 172.98, CURRENT_TIMESTAMP - INTERVAL '2 days'), + (8, 0.00, CURRENT_TIMESTAMP - INTERVAL '7 days'), + (9, 125.00, CURRENT_TIMESTAMP - INTERVAL '3 days'), + (10, 219.98, CURRENT_TIMESTAMP - INTERVAL '1 days'); + +-- wallet_merchant_balance_daily +INSERT INTO wallet_merchant_balance_daily (merchant_id, balance, updated_at) +VALUES + (1, 3897.99, '2023-06-07 23:59:59'), + (2, 155.24, '2023-06-07 23:59:59'), + (3, 2775.25, '2023-06-07 23:59:59'), + (4, 2500.00, '2023-06-07 23:59:59'), + (5, 155.99, '2023-06-07 23:59:59'), + (6, 29.95, '2023-06-07 23:59:59'), + (7, 172.98, '2023-06-07 23:59:59'), + (8, 0.00, '2023-06-07 23:59:59'), + (9, 125.00, '2023-06-07 23:59:59'), + (10, 219.98, '2023-06-07 23:59:59'), + (1, 82.10, CURRENT_DATE - INTERVAL '8 days'), + (2, 82.12, CURRENT_DATE - INTERVAL '8 days'), + (1, 82.92, CURRENT_DATE - INTERVAL '7 days'), + (2, 55.24, CURRENT_DATE - INTERVAL '7 days'), + (3, 75.25, CURRENT_DATE - INTERVAL '7 days'), + (1, 50.00, CURRENT_DATE), + (2, 55.99, CURRENT_DATE), + (3, 29.95, CURRENT_DATE), + (4, 89.99, CURRENT_DATE), + (5, 599.99, CURRENT_DATE); + +-- notifications +delete from notifications +INSERT INTO notifications (id, user_id, message, type, status, created_at, device_type, device_id, action_url) +VALUES +(1, 1, 'Your order #123abc has been shipped!', 'transaction', 'unread', '2023-06-01 10:16:00', 'mobile_app', 'mobile_8fh2k1', 'app://orders/123abc'), +(2, 1, 'Get 20% off your next purchase! Limited time offer.', 'promotion', 'unread', '2023-06-02 09:00:00', 'email', NULL, 'https://techmart.com/promo/TECH20'), +(3, 2, 'A package is being returned to you. Refund processing...', 'transaction', 'read', '2023-06-07 10:12:00', 'mobile_app', 'mobile_1av8p0', 'app://orders?status=returned'), +(4, 2, 'Your FitLife membership is up for renewal on 7/1', 'general', 'unread', '2023-06-05 15:30:00', 'email', NULL, 'https://fitlifegear.com/renew'), +(5, 3, 'An order from UrbanDining was unsuccessful', 'transaction', 'read', '2023-06-05 12:06:00', 'sms', NULL, 'https://urbandining.co/orders/37cf052d'), +(6, 4, 'Your rental request is pending approval', 'transaction', 'unread', '2023-06-02 20:46:00', 'mobile_app', 'mobile_34jdkl', 'app://bookings/a7659c81'), +(7, 5, 'Claim your 25% discount on craft supplies!', 'promotion', 'archived', '2023-06-01 08:00:00', 'email', NULL, 'https://handycraft.store/CRAFTY10'), +(8, 6, 'Your CodeSuite subscription will renew on 7/1', 'general', 'unread', '2023-06-01 12:00:00', 'email', NULL, 'https://codesuite.io/subscriptions'), +(9, 7, 'Thanks for shopping at ZenHomeGoods! How did we do?', 'general', 'read', '2023-06-02 09:31:00', 'mobile_app', 'mobile_yjp08q', 'https://zenhomesurvey.com/order/c51e10d1'), +(10, 8, 'Playtime! New games and toys have arrived', 'promotion', 'archived', '2023-06-01 18:00:00', 'email', NULL, 'https://kidzplayhouse.com/new-arrivals'), +(11, 9, 'Here''s $10 to start your glow up!', 'promotion', 'unread', '2023-06-01 10:15:00', 'email', NULL, 'https://beautytrending.com/new-customer'), +(12, 10, 'Your order #ord_mjs337 is being processed', 'transaction', 'read', '2023-06-04 19:31:30', 'web_app', 'web_d8180kaf', 'https://gamerush.co/orders/32e2b29c'), +(13, 1, 'New promotion: Get 10% off your next order!', 'promotion', 'unread', DATE_TRUNC('week', CURRENT_TIMESTAMP) - INTERVAL '1 week', 'email', NULL, 'https://techmart.com/promo/TECH10'), +(14, 1, 'Your order #456def has been delivered', 'transaction', 'unread', DATE_TRUNC('week', CURRENT_TIMESTAMP) - INTERVAL '2 weeks', 'mobile_app', 'mobile_8fh2k1', 'app://orders/456def'), +(15, 2, 'Reminder: Your FitLife membership expires in 7 days', 'general', 'unread', DATE_TRUNC('week', CURRENT_TIMESTAMP) - INTERVAL '3 weeks', 'email', NULL, 'https://fitlifegear.com/renew'), +(16, 2, 'Weekend Flash Sale: 25% off all activewear!', 'promotion', 'unread', DATE_TRUNC('week', CURRENT_TIMESTAMP) - INTERVAL '1 week' + INTERVAL '2 days', 'mobile_app', 'mobile_yjp08q', 'app://shop/activewear'); + +-- user_sessions +INSERT INTO user_sessions (user_id, session_start_ts, session_end_ts, device_type, device_id) +VALUES +(1, '2023-06-01 09:45:22', '2023-06-01 10:20:35', 'mobile_app', 'mobile_8fh2k1'), +(1, '2023-06-02 13:30:00', '2023-06-02 14:15:15', 'web_app', 'web_33lq1dh'), +(1, '2023-06-06 14:19:00', '2023-06-06 14:22:10', 'web_app', 'web_33lq1dh'), +(1, '2023-06-07 23:49:12', '2023-06-08 00:00:00', 'web_app', 'web_33lq1dh'), +(2, '2023-06-02 08:55:08', '2023-06-02 09:45:42', 'mobile_app', 'mobile_yjp08q'), +(2, '2023-06-07 10:09:15', '2023-06-07 10:12:25', 'mobile_app', 'mobile_1av8p0'), +(3, '2023-06-01 13:15:33', '2023-06-01 13:28:01', 'web_app', 'web_k29qjd'), +(3, '2023-06-05 12:00:00', '2023-06-05 12:10:22', 'mobile_app', 'mobile_x28qlj'), +(4, '2023-06-02 20:30:12', '2023-06-02 21:15:48', 'mobile_app', 'mobile_34jdkl'), +(5, '2023-06-03 10:45:30', '2023-06-03 11:20:28', 'web_app', 'web_8902wknz'), +(6, '2023-06-02 14:00:00', '2023-06-02 15:10:05', 'web_app', 'web_zz91p44l'), +(7, '2023-06-06 16:45:22', '2023-06-06 17:10:40', 'web_app', 'web_zld22f'), +(8, '2023-06-04 19:25:15', '2023-06-04 19:40:20', 'web_app', 'web_d8180kaf'), +(8, '2023-06-01 17:30:00', '2023-06-01 18:15:35', 'mobile_app', 'mobile_q3mz8n'), +(9, '2023-06-04 07:45:30', '2023-06-04 08:15:27', 'mobile_app', 'mobile_g3mjfz'), +(10, '2023-06-02 14:10:15', '2023-06-02 14:40:58', 'web_app', 'web_zz91p44l'), +(5, CURRENT_TIMESTAMP - INTERVAL '32 days', CURRENT_TIMESTAMP - INTERVAL '32 days' + INTERVAL '15 min', 'web_app', 'web_8902wknz'), +(6, CURRENT_TIMESTAMP - INTERVAL '8 days', CURRENT_TIMESTAMP - INTERVAL '8 days' + INTERVAL '15 min', 'web_app', 'web_zz91p44l'), +(7, CURRENT_TIMESTAMP - INTERVAL '5 days', CURRENT_TIMESTAMP - INTERVAL '5 days' + INTERVAL '15 min', 'web_app', 'web_zz91p44l'), +(8, CURRENT_TIMESTAMP - INTERVAL '3 days', CURRENT_TIMESTAMP - INTERVAL '3 days' + INTERVAL '15 min', 'web_app', 'web_d8180kaf'), +(9, CURRENT_TIMESTAMP - INTERVAL '1 days', CURRENT_TIMESTAMP - INTERVAL '1 days' + INTERVAL '15 min', 'mobile_app', 'mobile_g3mjfz'), +(10, CURRENT_TIMESTAMP - INTERVAL '2 days', CURRENT_TIMESTAMP - INTERVAL '2 days' + INTERVAL '15 min', 'web_app', 'web_zz91p44l'), +(5, CURRENT_TIMESTAMP - INTERVAL '2 days', CURRENT_TIMESTAMP - INTERVAL '2 days' + INTERVAL '15 min', 'web_app', 'web_8902wknz') +; + +-- user_setting_snapshot +INSERT INTO user_setting_snapshot (user_id, snapshot_date, tx_limit_daily, tx_limit_monthly, membership_status, password_hash, api_key, verified_devices, verified_ips, mfa_enabled, marketing_opt_in, created_at) +VALUES +(1, '2023-06-07', 1000.00, 5000.00, 2, 'bcryptHash($2yz9!&ka1)', '9d61c49b-8977-4914-a36b-80d1445e38fa', 'mobile_8fh2k1', '192.168.0.1', true, false, '2023-06-07 00:00:00'), +(2, '2023-06-07', 500.00, 2500.00, 1, 'bcryptHash(qpwo9874zyGk!)', NULL, 'mobile_yjp08q, mobile_1av8p0', '198.51.100.233, 70.121.39.25', false, true, '2023-06-07 00:00:00'), +(3, '2023-06-07', 2000.00, 10000.00, 3, 'bcryptHash(Fr3nchPa1n!@98zy)', 'e785f611-fdd8-4c2d-a870-e104358712e5', 'web_k29qjd, mobile_x28qlj', '216.58.195.68, 92.110.51.150', true, false, '2023-06-07 00:00:00'), +(4, '2023-06-07', 5000.00, 20000.00, 4, 'bcryptHash(Vacay2023*&!Rm)', NULL, 'mobile_34jdkl', '143.92.64.138', false, true, '2023-06-07 00:00:00'), +(5, '2023-06-07', 100.00, 500.00, 0, 'bcryptHash(cRaf7yCr8zy)', NULL, 'web_8902wknz', '192.64.112.188', false, false, '2023-06-07 00:00:00'), +(6, '2023-06-07', 50.00, 500.00, 1, 'bcryptHash(C0d3Rul3z!99)', '6c03c175-9ac9-4854-b064-a3fff2c62e31', 'web_zz91p44l', '4.14.15.90', true, true, '2023-06-07 00:00:00'), +(7, '2023-06-07', 250.00, 1000.00, 2, 'bcryptHash(zEnH0me&Pw7)', NULL, NULL, NULL, false, true, '2023-06-07 00:00:00'), +(8, '2023-06-07', 200.00, 1000.00, 0, 'bcryptHash(K1dzPlay!&Rt8)', NULL, 'web_d8180kaf, mobile_q3mz8n', '8.26.53.165, 68.85.32.201', false, false, '2023-06-07 00:00:00'), +(9, '2023-06-07', 150.00, 1000.00, 2, 'bcryptHash(Gl0wUp7!9zy)', NULL, 'mobile_g3mjfz', '203.96.81.36', true, true, '2023-06-07 00:00:00'), +(10, '2023-06-07', 300.00, 2000.00, 1, 'bcryptHash(GamzRu1ez*&99!)', NULL, 'web_d8180kaf', '8.26.53.165', false, true, '2023-06-07 00:00:00'), +(1, '2023-06-01', 502.00, 1000.00, 2, 'bcryptHash($2yz9!&ka1)', '9d61c49b-8977-4914-a36b-80d1445e38fa', 'mobile_8fh2k1', '192.168.0.1', false, true, '2023-06-01 06:00:00'), +(2, '2023-06-01', 500.00, 2500.00, 1, 'bcryptHash(qpwo9874zyGk!)', NULL, 'mobile_yjp08q', '198.51.100.233, 70.121.39.25', true, false, '2023-06-01 09:00:00'); \ No newline at end of file diff --git a/tests/test_metadata/snowflake_defog_graphs.json b/tests/test_metadata/snowflake_defog_graphs.json index c135ce96d..3a1007b13 100644 --- a/tests/test_metadata/snowflake_defog_graphs.json +++ b/tests/test_metadata/snowflake_defog_graphs.json @@ -512,13 +512,13 @@ { "name": "cars", "type": "simple table", - "table path": "BROKER.cars", + "table path": "DEALERSHIP.cars", "unique properties": ["_id", "vin_number"], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "Unique identifier for each car", "sample values": [1, 3, 5, 6, 18], @@ -619,13 +619,13 @@ { "name": "salespeople", "type": "simple table", - "table path": "BROKER.salespersons", + "table path": "DEALERSHIP.salespersons", "unique properties": ["_id", "email"], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "Unique identifier for each salesperson in the dealership", "sample values": [1, 5, 10, 13], @@ -697,13 +697,13 @@ { "name": "customers", "type": "simple table", - "table path": "BROKER.customers", + "table path": "DEALERSHIP.customers", "unique properties": ["_id", "email"], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "Unique identifier for each customer", "sample values": [1, 5, 9, 12], @@ -793,13 +793,13 @@ { "name": "payments_made", "type": "simple table", - "table path": "BROKER.payments_made", + "table path": "DEALERSHIP.payments_made", "unique properties": ["_id", "invoice_number"], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "Unique identifier for each payment made", "sample values": [1, 11, 16, 17], @@ -879,13 +879,13 @@ { "name": "payments_received", "type": "simple table", - "table path": "BROKER.payments_received", + "table path": "DEALERSHIP.payments_received", "unique properties": ["_id"], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "Unique identifier for each payment received record", "sample values": [1, 2, 10, 19, 23], @@ -941,13 +941,13 @@ { "name": "sales", "type": "simple table", - "table path": "BROKER.sales", + "table path": "DEALERSHIP.sales", "unique properties": ["_id"], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "Unique identifier for each car sale", "sample values": [5, 11, 12, 18, 22], @@ -1012,13 +1012,13 @@ { "name": "inventory_snapshots", "type": "simple table", - "table path": "BROKER.inventory_snapshots", + "table path": "DEALERSHIP.inventory_snapshots", "unique properties": ["_id"], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "Unique identifier for each inventory snapshot entry", "sample values": [1, 4, 13, 19, 23], @@ -1200,7 +1200,7 @@ { "name": "doctors", "type": "simple table", - "table path": "BROKER.doctors", + "table path": "DERMTREATMENT.doctors", "unique properties": ["doc_id"], "properties": [ { @@ -1299,7 +1299,7 @@ { "name": "patients", "type": "simple table", - "table path": "BROKER.patients", + "table path": "DERMTREATMENT.patients", "unique properties": ["patient_id", "email", "phone"], "properties": [ { @@ -1450,7 +1450,7 @@ { "name": "drugs", "type": "simple table", - "table path": "BROKER.drugs", + "table path": "DERMTREATMENT.drugs", "unique properties": ["drug_id", "national_drug_code"], "properties": [ { @@ -1558,13 +1558,13 @@ { "name": "diagnoses", "type": "simple table", - "table path": "BROKER.diagnoses", + "table path": "DERMTREATMENT.diagnoses", "unique properties": ["_id", "code", "name"], "properties": [ { "name": "_id", "type": "table column", - "column name": "diagnosis_id", + "column name": "DIAG_ID", "data type": "numeric", "description": "The unique identifier for each diagnosis in the system", "sample values": [1, 3, 5, 7, 9], @@ -1604,7 +1604,7 @@ { "name": "treatments", "type": "simple table", - "table path": "BROKER.treatments", + "table path": "DERMTREATMENT.treatments", "unique properties": ["treatment_id"], "properties": [ { @@ -1646,7 +1646,7 @@ { "name": "diagnosis_id", "type": "table column", - "column name": "diagnosis_id", + "column name": "diag_id", "data type": "numeric", "description": "The id of the diagnosis the patient is being treated for", "sample values": [2, 4, 5, 6, 8], @@ -1701,7 +1701,7 @@ { "name": "outcomes", "type": "simple table", - "table path": "BROKER.outcomes", + "table path": "DERMTREATMENT.outcomes", "unique properties": ["outcome_id"], "properties": [ { @@ -1872,13 +1872,13 @@ { "name": "concomitant_meds", "type": "simple table", - "table path": "BROKER.concomitant_meds", + "table path": "DERMTREATMENT.concomitant_meds", "unique properties": ["_id", ["treatment_id", "medicine_name"]], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "The unique identifier for each concomitant medication record in the system", "sample values": [1, 5, 12, 14, 15], @@ -1952,13 +1952,13 @@ { "name": "adverse_events", "type": "simple table", - "table path": "BROKER.adverse_events", + "table path": "DERMTREATMENT.adverse_events", "unique properties": ["_id"], "properties": [ { "name": "_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "The unique identifier for each adverse event record in the system", "sample values": [1, 3, 5, 7, 8], @@ -2183,7 +2183,7 @@ { "name": "users", "type": "simple table", - "table path": "BROKER.users", + "table path": "EWALLET.users", "unique properties": ["uid", "username"], "properties": [ { @@ -2307,7 +2307,7 @@ { "name": "merchants", "type": "simple table", - "table path": "BROKER.merchants", + "table path": "EWALLET.merchants", "unique properties": ["mid", "name"], "properties": [ { @@ -2477,7 +2477,7 @@ { "name": "coupons", "type": "simple table", - "table path": "BROKER.coupons", + "table path": "EWALLET.coupons", "unique properties": ["cid"], "properties": [ { @@ -2609,7 +2609,7 @@ { "name": "transactions", "type": "simple table", - "table path": "BROKER.wallet_transactions_daily", + "table path": "EWALLET.wallet_transactions_daily", "unique properties": ["txid", "transaction_ref"], "properties": [ { @@ -2779,7 +2779,7 @@ { "name": "user_balances", "type": "simple table", - "table path": "BROKER.wallet_user_balance_daily", + "table path": "EWALLET.wallet_user_balance_daily", "unique properties": [["user_id", "updated_at"]], "properties": [ { @@ -2815,7 +2815,7 @@ { "name": "merchant_balances", "type": "simple table", - "table path": "BROKER.wallet_merchant_balance_daily", + "table path": "EWALLET.wallet_merchant_balance_daily", "unique properties": [["merchant_id", "updated_at"]], "properties": [ { @@ -2851,13 +2851,13 @@ { "name": "notifications", "type": "simple table", - "table path": "BROKER.notifications", + "table path": "EWALLET.notifications", "unique properties": ["notif_id"], "properties": [ { "name": "notif_id", "type": "table column", - "column name": "_id", + "column name": "id", "data type": "numeric", "description": "The unique identifier for each notification in the system", "sample values": [1, 5, 10, 14, 16], @@ -2949,7 +2949,7 @@ { "name": "user_sessions", "type": "simple table", - "table path": "BROKER.user_sessions", + "table path": "EWALLET.user_sessions", "unique properties": [["user_id", "session_start"], ["user_id", "session_end"]], "properties": [ { @@ -3002,7 +3002,7 @@ { "name": "user_setting_snapshots", "type": "simple table", - "table path": "BROKER.user_setting_snapshot", + "table path": "EWALLET.user_setting_snapshot", "unique properties": [["user_id", "snapshot_date"]], "properties": [ { From 70cd17f68887dac09e0b1e4fbb88143b2b20bf7e Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Tue, 19 Aug 2025 11:15:08 -0700 Subject: [PATCH 26/46] update PyDoughSQLComparisonTest to use reference database --- tests/test_pipeline_tpch_sf.py | 29 ++++++++++++++++ tests/testing_utilities.py | 63 +++++++++++++++++++++++++++++++++- 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/tests/test_pipeline_tpch_sf.py b/tests/test_pipeline_tpch_sf.py index dc0f1f112..2f8d50dcb 100644 --- a/tests/test_pipeline_tpch_sf.py +++ b/tests/test_pipeline_tpch_sf.py @@ -23,9 +23,11 @@ from tests.testing_utilities import ( graph_fetcher, harmonize_types, + PyDoughSQLComparisonTest, ) from .test_pipeline_tpch import tpch_pipeline_test_data from .test_pipeline_defog_custom import defog_custom_pipeline_test_data +from .test_pipeline_defog import defog_pipeline_test_data from .testing_utilities import PyDoughPandasTest from pydough import init_pydough_context, to_df, to_sql @@ -224,3 +226,30 @@ def test_pipeline_sf_e2e_defog_custom( defog_custom_pipeline_test_data.run_e2e_test( get_sf_defog_graphs, sf_conn_db_context("DEFOG", "BROKER"), coerce_types=True ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_defog_e2e( + defog_pipeline_test_data: PyDoughSQLComparisonTest, + get_sf_defog_graphs: graph_fetcher, + sf_conn_db_context: DatabaseContext, + defog_config: PyDoughConfigs, + sqlite_defog_connection: DatabaseContext, +) -> None: + """ + Test executing the defog analytical questions on the sqlite database, + comparing against the result of running the reference SQL query text on the + same database connector. Run on the defog.ai queries. + NOTE: passing SQLite connection as reference database so that refsol + is executed using SQLite. + This is needed because refsol uses SQLite SQL syntax to obtain + the correct results. + """ + defog_pipeline_test_data.run_e2e_test( + get_sf_defog_graphs, + sf_conn_db_context("DEFOG", "BROKER"), + defog_config, + reference_database=sqlite_defog_connection, + coerce_types=True, + ) diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index ed29892a8..87e9bb121 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -991,6 +991,8 @@ def run_e2e_test( fetcher: graph_fetcher, database: DatabaseContext, config: PyDoughConfigs | None = None, + reference_database: DatabaseContext | None = None, + coerce_types: bool = False, ): """ Runs an end-to-end test using the data in the SQL comparison test, @@ -1002,6 +1004,10 @@ def run_e2e_test( by the test and fetches the graph metadata. `database`: The database context to use for executing SQL. `config`: The PyDough configuration to use for the test, if any. + `reference_database`: The database context to use for executing + the reference SQL. + `coerce_types`: If True, coerces the types of the result and reference + solution DataFrames to ensure compatibility. """ # Obtain the graph and the unqualified node graph: GraphMetadata = fetcher(self.graph_name) @@ -1019,7 +1025,11 @@ def run_e2e_test( # Obtain the reference solution by executing the refsol SQL query sql_text: str = self.sql_function() - refsol: pd.DataFrame = database.connection.execute_query_df(sql_text) + refsol: pd.DataFrame + if reference_database is not None: + refsol = reference_database.connection.execute_query_df(sql_text) + else: + refsol = database.connection.execute_query_df(sql_text) # If the query does not care about column names, update the answer to use # the column names in the refsol. @@ -1033,6 +1043,12 @@ def run_e2e_test( refsol = refsol.sort_values(by=list(refsol.columns)).reset_index(drop=True) # Perform the comparison between the result and the reference solution + if coerce_types: + for col_name in result.columns: + result[col_name], refsol[col_name] = harmonize_types( + result[col_name], refsol[col_name] + ) + # Perform the comparison between the result and the reference solution pd.testing.assert_frame_equal(result, refsol) @@ -1247,6 +1263,8 @@ def run_e2e_test( `database`: The database context to use for executing SQL. `config`: The PyDough configuration to use for the test, if any. `display_sql`: If True, displays the SQL generated by PyDough. + `coerce_types`: If True, coerces the types of the result and reference + solution DataFrames to ensure compatibility. """ # Obtain the graph and the unqualified node graph: GraphMetadata = fetcher(self.graph_name) @@ -1312,6 +1330,49 @@ def harmonize_types(column_a, column_b): Returns: A tuple of the two harmonized columns. """ + # Different integer types + if pd.api.types.is_integer_dtype(column_a) and pd.api.types.is_integer_dtype( + column_b + ): + # cast both to the largest integer type among the two + max_bits = max(column_a.dtype.itemsize, column_b.dtype.itemsize) * 8 + target_type = getattr(pd, f"Int{max_bits}") if max_bits != 64 else "int64" + return column_a.astype(target_type), column_b.astype(target_type) + + # bool vs int, convert bool to int. + if any(isinstance(elem, bool) for elem in column_a) and any( + isinstance(elem, int) for elem in column_b + ): + return column_a.astype(int), column_b + if any(isinstance(elem, int) for elem in column_a) and any( + isinstance(elem, bool) for elem in column_b + ): + return column_a, column_b.astype(int) + + # int vs float + if any(isinstance(elem, int) for elem in column_a) and any( + isinstance(elem, float) for elem in column_b + ): + return column_a.astype(float), column_b + + # float vs int + if any(isinstance(elem, float) for elem in column_a) and any( + isinstance(elem, int) for elem in column_b + ): + return column_a, column_b.astype(float) + + # Decimal vs float + if any(isinstance(elem, Decimal) for elem in column_a) and any( + isinstance(elem, float) for elem in column_b + ): + return column_a.apply(lambda x: pd.NA if pd.isna(x) else float(x)), column_b + + # float vs Decimal + if any(isinstance(elem, float) for elem in column_a) and any( + isinstance(elem, Decimal) for elem in column_b + ): + return column_a, column_b.apply(lambda x: pd.NA if pd.isna(x) else float(x)) + if any(isinstance(elem, (str, NoneType)) for elem in column_a) and any( isinstance(elem, (str, NoneType)) for elem in column_b ): From 4ee0ea399d792169089d4b8f812c582cecd7f787 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Thu, 21 Aug 2025 11:21:12 -0700 Subject: [PATCH 27/46] updates --- .../sf_transform_bindings.py | 23 ++++++++ tests/gen_data/init_defog.sql | 10 ++-- tests/test_pipeline_defog_custom.py | 58 +++++++++---------- tests/test_pipeline_tpch_sf.py | 6 +- tests/test_plan_refsols/week_offset.txt | 2 +- .../simple_pydough_functions.py | 2 +- .../string_functions_snowflake.sql | 6 +- tests/test_sql_refsols/week_offset_ansi.sql | 1 - .../week_offset_snowflake.sql | 1 - tests/test_sql_refsols/week_offset_sqlite.sql | 1 - tests/testing_utilities.py | 9 ++- 11 files changed, 72 insertions(+), 47 deletions(-) diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py index ef6418c92..4defbc6ad 100644 --- a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -5,6 +5,8 @@ __all__ = ["SnowflakeTransformBindings"] +import re + import sqlglot.expressions as sqlglot_expressions from sqlglot.expressions import Expression as SQLGlotExpression @@ -46,6 +48,10 @@ def convert_call_to_sqlglot( match operator: case pydop.SUM: return self.convert_sum(args, types) + case pydop.STRCOUNT: + return self.convert_str_count(args, types) + case pydop.GETPART: + return self.convert_get_part(args, types) if operator in self.PYDOP_TO_SNOWFLAKE_FUNC: return sqlglot_expressions.Anonymous( this=self.PYDOP_TO_SNOWFLAKE_FUNC[operator], expressions=args @@ -72,6 +78,23 @@ def convert_sum( # For other types, use SUM directly return sqlglot_expressions.Sum(this=arg[0]) + # HA: TODO: FIX base and remove this + def convert_str_count( + self, args: SQLGlotExpression, types: list[PyDoughType] + ) -> SQLGlotExpression: + if isinstance(args[1], sqlglot_expressions.Literal): + escaped_pattern = re.escape(args[1].this) + args[1] = sqlglot_expressions.Literal.string(escaped_pattern) + return sqlglot_expressions.Anonymous( + this="REGEXP_COUNT", + expressions=args, + ) + + def convert_get_part( + self, args: SQLGlotExpression, types: list[PyDoughType] + ) -> SQLGlotExpression: + return sqlglot_expressions.Anonymous(this="SPLIT_PART", expressions=args) + def convert_extract_datetime( self, args: list[SQLGlotExpression], diff --git a/tests/gen_data/init_defog.sql b/tests/gen_data/init_defog.sql index ddb6aac37..8c81a3f48 100644 --- a/tests/gen_data/init_defog.sql +++ b/tests/gen_data/init_defog.sql @@ -218,11 +218,11 @@ INSERT INTO sbTransaction (sbTxId, sbTxCustId, sbTxTickerId, sbTxDateTime, sbTxT ('TX048', 'C012', 'T004', '2023-01-30 13:15:00', 'sell', 40, 190.00, 7600.00, 'USD', 38.00, 10.00, 'KP048', '20230130 13:15:00', 'success'), ('TX049', 'C013', 'T005', '2023-02-28 16:00:00', 'buy', 2, 2550.00, 5100.00, 'USD', 25.50, 15.00, 'KP049', '20230228 16:00:00', 'success'), ('TX050', 'C014', 'T006', '2023-03-30 09:45:00', 'sell', 30, 210.00, 6300.00, 'USD', 31.50, 10.00, 'KP050', '20230331 09:45:00', 'success'), -('TX051', 'C015', 'T001', DATE('now', 'start of month', '5 months', '1 day'), 'buy', 50, 150.00, 7500.00, 'USD', 37.50, 10.00, 'KP051', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-5 months', '+1 day')), 'success'), -('TX052', 'C016', 'T002', DATE('now', 'start of month', '4 months', '2 days'), 'sell', 40, 280.00, 11200.00, 'USD', 56.00, 10.00, 'KP052', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-4 months', '+2 days')), 'success'), -('TX053', 'C017', 'T003', DATE('now', 'start of month', '3 months', '3 days'), 'buy', 15, 3200.00, 48000.00, 'USD', 240.00, 20.00, 'KP053', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-3 months', '+3 days')), 'success'), -('TX054', 'C018', 'T004', DATE('now', 'start of month', '2 months', '4 days'), 'sell', 30, 180.00, 5400.00, 'USD', 27.00, 5.00, 'KP054', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-2 months', '+4 days')), 'success'), -('TX055', 'C019', 'T005', DATE('now', 'start of month', '1 month', '5 days'), 'buy', 10, 2500.00, 25000.00, 'USD', 125.00, 15.00, 'KP055', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-1 months', '+5 days')), 'success'), +('TX051', 'C015', 'T001', DATE('now', 'start of month', '-5 months', '1 day'), 'buy', 50, 150.00, 7500.00, 'USD', 37.50, 10.00, 'KP051', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-5 months', '+1 day')), 'success'), +('TX052', 'C016', 'T002', DATE('now', 'start of month', '-4 months', '2 days'), 'sell', 40, 280.00, 11200.00, 'USD', 56.00, 10.00, 'KP052', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-4 months', '+2 days')), 'success'), +('TX053', 'C017', 'T003', DATE('now', 'start of month', '-3 months', '3 days'), 'buy', 15, 3200.00, 48000.00, 'USD', 240.00, 20.00, 'KP053', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-3 months', '+3 days')), 'success'), +('TX054', 'C018', 'T004', DATE('now', 'start of month', '-2 months', '4 days'), 'sell', 30, 180.00, 5400.00, 'USD', 27.00, 5.00, 'KP054', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-2 months', '+4 days')), 'success'), +('TX055', 'C019', 'T005', DATE('now', 'start of month', '-1 month', '5 days'), 'buy', 10, 2500.00, 25000.00, 'USD', 125.00, 15.00, 'KP055', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '-1 months', '+5 days')), 'success'), ('TX056', 'C002', 'T006', DATE('now', 'start of month', '1 day'), 'sell', 20, 200.00, 4000.00, 'USD', 20.00, 10.00, 'KP056', STRFTIME('%Y%m%d %H:%i:%s', DATE('NOW', 'start of month', '+1 day')), 'success'); diff --git a/tests/test_pipeline_defog_custom.py b/tests/test_pipeline_defog_custom.py index f85afa9c2..eb46aea8b 100644 --- a/tests/test_pipeline_defog_custom.py +++ b/tests/test_pipeline_defog_custom.py @@ -1367,35 +1367,35 @@ def get_day_of_week( "2023-03-14 15:59:00", "2023-04-13 09:44:00", ], - "week_adj7": [ - "2023-05-16 09:30:00", - "2023-05-16 10:15:00", - "2023-05-16 11:00:00", - "2023-05-16 11:45:00", - "2023-05-16 12:30:00", - "2023-05-16 13:15:00", - "2023-05-16 14:00:00", - "2023-05-16 14:45:00", - "2023-05-16 15:30:00", - "2023-05-16 16:15:00", - "2023-05-17 09:30:00", - "2023-05-17 10:15:00", - "2023-05-17 11:00:00", - "2023-05-17 11:45:00", - "2023-05-17 12:30:00", - "2023-05-17 13:15:00", - "2023-05-17 14:00:00", - "2023-05-17 14:45:00", - "2023-05-17 15:30:00", - "2023-05-17 16:15:00", - "2023-03-01 10:00:00", - "2023-03-02 10:30:00", - "2023-04-03 11:30:00", - "2023-05-09 14:45:00", - "2023-03-16 13:15:00", - "2023-04-11 16:00:00", - "2023-05-14 09:45:00", - ], + # "week_adj7": [ + # "2023-05-16 09:30:00", + # "2023-05-16 10:15:00", + # "2023-05-16 11:00:00", + # "2023-05-16 11:45:00", + # "2023-05-16 12:30:00", + # "2023-05-16 13:15:00", + # "2023-05-16 14:00:00", + # "2023-05-16 14:45:00", + # "2023-05-16 15:30:00", + # "2023-05-16 16:15:00", + # "2023-05-17 09:30:00", + # "2023-05-17 10:15:00", + # "2023-05-17 11:00:00", + # "2023-05-17 11:45:00", + # "2023-05-17 12:30:00", + # "2023-05-17 13:15:00", + # "2023-05-17 14:00:00", + # "2023-05-17 14:45:00", + # "2023-05-17 15:30:00", + # "2023-05-17 16:15:00", + # "2023-03-01 10:00:00", + # "2023-03-02 10:30:00", + # "2023-04-03 11:30:00", + # "2023-05-09 14:45:00", + # "2023-03-16 13:15:00", + # "2023-04-11 16:00:00", + # "2023-05-14 09:45:00", + # ], "week_adj8": [ "2024-04-16 09:30:00", "2024-04-16 10:15:00", diff --git a/tests/test_pipeline_tpch_sf.py b/tests/test_pipeline_tpch_sf.py index 2f8d50dcb..b274752b4 100644 --- a/tests/test_pipeline_tpch_sf.py +++ b/tests/test_pipeline_tpch_sf.py @@ -224,7 +224,9 @@ def test_pipeline_sf_e2e_defog_custom( Test executing the defog analytical queries with Snowflake database. """ defog_custom_pipeline_test_data.run_e2e_test( - get_sf_defog_graphs, sf_conn_db_context("DEFOG", "BROKER"), coerce_types=True + get_sf_defog_graphs, + sf_conn_db_context("DEFOG", defog_custom_pipeline_test_data.graph_name), + coerce_types=True, ) @@ -248,7 +250,7 @@ def test_defog_e2e( """ defog_pipeline_test_data.run_e2e_test( get_sf_defog_graphs, - sf_conn_db_context("DEFOG", "BROKER"), + sf_conn_db_context("DEFOG", defog_pipeline_test_data.graph_name), defog_config, reference_database=sqlite_defog_connection, coerce_types=True, diff --git a/tests/test_plan_refsols/week_offset.txt b/tests/test_plan_refsols/week_offset.txt index 61870220a..1e899e257 100644 --- a/tests/test_plan_refsols/week_offset.txt +++ b/tests/test_plan_refsols/week_offset.txt @@ -1,3 +1,3 @@ -ROOT(columns=[('date_time', sbTxDateTime), ('week_adj1', DATETIME(sbTxDateTime, '1 week':string)), ('week_adj2', DATETIME(sbTxDateTime, '-1 week':string)), ('week_adj3', DATETIME(sbTxDateTime, '1 h':string, '2 w':string)), ('week_adj4', DATETIME(sbTxDateTime, '-1 s':string, '2 w':string)), ('week_adj5', DATETIME(sbTxDateTime, '1 d':string, '2 w':string)), ('week_adj6', DATETIME(sbTxDateTime, '-1 m':string, '2 w':string)), ('week_adj7', DATETIME(sbTxDateTime, '1 mm':string, '2 w':string)), ('week_adj8', DATETIME(sbTxDateTime, '1 y':string, '2 w':string))], orderings=[]) +ROOT(columns=[('date_time', sbTxDateTime), ('week_adj1', DATETIME(sbTxDateTime, '1 week':string)), ('week_adj2', DATETIME(sbTxDateTime, '-1 week':string)), ('week_adj3', DATETIME(sbTxDateTime, '1 h':string, '2 w':string)), ('week_adj4', DATETIME(sbTxDateTime, '-1 s':string, '2 w':string)), ('week_adj5', DATETIME(sbTxDateTime, '1 d':string, '2 w':string)), ('week_adj6', DATETIME(sbTxDateTime, '-1 m':string, '2 w':string)), ('week_adj8', DATETIME(sbTxDateTime, '1 y':string, '2 w':string))], orderings=[]) FILTER(condition=YEAR(sbTxDateTime) < 2025:numeric & DAY(sbTxDateTime) > 1:numeric, columns={'sbTxDateTime': sbTxDateTime}) SCAN(table=main.sbTransaction, columns={'sbTxDateTime': sbTxDateTime}) diff --git a/tests/test_pydough_functions/simple_pydough_functions.py b/tests/test_pydough_functions/simple_pydough_functions.py index 2ba4ca61d..e82a95721 100644 --- a/tests/test_pydough_functions/simple_pydough_functions.py +++ b/tests/test_pydough_functions/simple_pydough_functions.py @@ -2035,7 +2035,7 @@ def week_offset(): week_adj4=DATETIME(date_time, "-1 s", "2 w"), week_adj5=DATETIME(date_time, "1 d", "2 w"), week_adj6=DATETIME(date_time, "-1 m", "2 w"), - week_adj7=DATETIME(date_time, "1 mm", "2 w"), + # week_adj7=DATETIME(date_time, "1 mm", "2 w"), week_adj8=DATETIME(date_time, "1 y", "2 w"), ) diff --git a/tests/test_sql_refsols/string_functions_snowflake.sql b/tests/test_sql_refsols/string_functions_snowflake.sql index 88a43f3fe..909e7fa3c 100644 --- a/tests/test_sql_refsols/string_functions_snowflake.sql +++ b/tests/test_sql_refsols/string_functions_snowflake.sql @@ -13,11 +13,7 @@ SELECT TRIM(CUSTOMER.c_name, 'aeiou') AS stripped_vowels, REPLACE(CUSTOMER.c_name, 'Corp', 'Inc') AS replaced_name, REPLACE(CUSTOMER.c_name, 'Ltd', '') AS removed_substr, - CASE - WHEN LENGTH('e') = 0 - THEN 0 - ELSE CAST(LENGTH(CUSTOMER.c_name) - LENGTH(REPLACE(CUSTOMER.c_name, 'e', '')) / LENGTH('e') AS BIGINT) - END AS count_e, + REGEXP_COUNT(CUSTOMER.c_name, 'e') AS count_e, CHARINDEX('Alex', CUSTOMER.c_name) - 1 AS idx_Alex FROM TPCH.CUSTOMER AS CUSTOMER JOIN TPCH.NATION AS NATION diff --git a/tests/test_sql_refsols/week_offset_ansi.sql b/tests/test_sql_refsols/week_offset_ansi.sql index 2ae4c3b7f..88c9b5644 100644 --- a/tests/test_sql_refsols/week_offset_ansi.sql +++ b/tests/test_sql_refsols/week_offset_ansi.sql @@ -6,7 +6,6 @@ SELECT DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), -1, 'SECOND'), 2, 'WEEK') AS week_adj4, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), 1, 'DAY'), 2, 'WEEK') AS week_adj5, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), -1, 'MINUTE'), 2, 'WEEK') AS week_adj6, - DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), 1, 'MONTH'), 2, 'WEEK') AS week_adj7, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), 1, 'YEAR'), 2, 'WEEK') AS week_adj8 FROM main.sbtransaction WHERE diff --git a/tests/test_sql_refsols/week_offset_snowflake.sql b/tests/test_sql_refsols/week_offset_snowflake.sql index 5be64739e..f1b7c6267 100644 --- a/tests/test_sql_refsols/week_offset_snowflake.sql +++ b/tests/test_sql_refsols/week_offset_snowflake.sql @@ -6,7 +6,6 @@ SELECT DATEADD(WEEK, 2, DATEADD(SECOND, -1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj4, DATEADD(WEEK, 2, DATEADD(DAY, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj5, DATEADD(WEEK, 2, DATEADD(MINUTE, -1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj6, - DATEADD(WEEK, 2, DATEADD(MONTH, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj7, DATEADD(WEEK, 2, DATEADD(YEAR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj8 FROM MAIN.SBTRANSACTION WHERE diff --git a/tests/test_sql_refsols/week_offset_sqlite.sql b/tests/test_sql_refsols/week_offset_sqlite.sql index eca1528ea..30d678a08 100644 --- a/tests/test_sql_refsols/week_offset_sqlite.sql +++ b/tests/test_sql_refsols/week_offset_sqlite.sql @@ -6,7 +6,6 @@ SELECT DATETIME(sbtxdatetime, '-1 second', '14 day') AS week_adj4, DATETIME(sbtxdatetime, '1 day', '14 day') AS week_adj5, DATETIME(sbtxdatetime, '-1 minute', '14 day') AS week_adj6, - DATETIME(sbtxdatetime, '1 month', '14 day') AS week_adj7, DATETIME(sbtxdatetime, '1 year', '14 day') AS week_adj8 FROM main.sbtransaction WHERE diff --git a/tests/testing_utilities.py b/tests/testing_utilities.py index 87e9bb121..42e01c570 100644 --- a/tests/testing_utilities.py +++ b/tests/testing_utilities.py @@ -1042,7 +1042,7 @@ def run_e2e_test( result = result.sort_values(by=list(result.columns)).reset_index(drop=True) refsol = refsol.sort_values(by=list(refsol.columns)).reset_index(drop=True) - # Perform the comparison between the result and the reference solution + # Harmonize types between result and reference solution if coerce_types: for col_name in result.columns: result[col_name], refsol[col_name] = harmonize_types( @@ -1310,6 +1310,7 @@ def run_e2e_test( def harmonize_types(column_a, column_b): + # breakpoint() """ Harmonizes data types between two Pandas columns to ensure compatibility for comparison equality check operations. @@ -1379,6 +1380,12 @@ def harmonize_types(column_a, column_b): return column_a.apply(lambda x: "" if pd.isna(x) else str(x)), column_b.apply( lambda x: "" if pd.isna(x) else str(x) ) + # float vs None. Convert to nullable floats + if any(isinstance(elem, (float, NoneType)) for elem in column_a) and any( + isinstance(elem, (float, NoneType)) for elem in column_b + ): + return column_a.astype("Float64"), column_b.astype("Float64") + if any(isinstance(elem, Decimal) for elem in column_a) and any( isinstance(elem, int) for elem in column_b ): From 510ef58ab52e54effd8f2fd3e167042bc8903bb7 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Thu, 21 Aug 2025 12:22:12 -0700 Subject: [PATCH 28/46] update tests --- tests/test_pipeline_tpch_sf.py | 1 - .../agg_simplification_1_snowflake.sql | 64 +++-- .../agg_simplification_2_snowflake.sql | 4 +- .../aggregation_functions_snowflake.sql | 4 +- ...risons_and_logical_operators_snowflake.sql | 2 +- .../conditional_functions_snowflake.sql | 2 +- .../cumulative_stock_analysis_snowflake.sql | 2 +- tests/test_sql_refsols/datediff_snowflake.sql | 2 +- .../datetime_sampler_mysql.sql | 245 +++++++++++++++--- .../defog_broker_adv10_snowflake.sql | 26 +- .../defog_broker_adv11_snowflake.sql | 2 +- .../defog_broker_adv13_snowflake.sql | 2 +- .../defog_broker_adv14_snowflake.sql | 2 +- .../defog_broker_adv15_snowflake.sql | 2 +- .../defog_broker_adv16_snowflake.sql | 4 +- .../defog_broker_adv1_snowflake.sql | 4 +- .../defog_broker_adv2_snowflake.sql | 4 +- .../defog_broker_adv3_snowflake.sql | 6 +- .../defog_broker_adv4_snowflake.sql | 4 +- .../defog_broker_adv5_snowflake.sql | 12 +- .../defog_broker_adv6_snowflake.sql | 2 +- .../defog_broker_adv7_snowflake.sql | 12 +- .../defog_broker_adv8_snowflake.sql | 2 +- .../defog_broker_adv9_snowflake.sql | 13 +- .../defog_broker_basic10_snowflake.sql | 2 +- .../defog_broker_basic1_snowflake.sql | 4 +- .../defog_broker_basic2_snowflake.sql | 6 +- .../defog_broker_basic3_snowflake.sql | 4 +- .../defog_broker_basic4_snowflake.sql | 14 +- .../defog_broker_basic5_snowflake.sql | 2 +- .../defog_broker_basic6_snowflake.sql | 2 +- .../defog_broker_basic7_snowflake.sql | 4 +- .../defog_broker_basic8_snowflake.sql | 4 +- .../defog_broker_basic9_snowflake.sql | 2 +- .../defog_broker_gen3_snowflake.sql | 2 +- .../defog_broker_gen4_snowflake.sql | 4 +- .../defog_broker_gen5_snowflake.sql | 4 +- .../defog_dealership_adv10_snowflake.sql | 2 +- .../defog_dealership_adv12_snowflake.sql | 39 ++- .../defog_dealership_adv15_snowflake.sql | 4 +- .../defog_dealership_adv16_snowflake.sql | 4 +- .../defog_dealership_adv1_snowflake.sql | 13 +- .../defog_dealership_adv2_snowflake.sql | 5 +- .../defog_dealership_adv3_snowflake.sql | 2 +- .../defog_dealership_adv4_snowflake.sql | 2 +- .../defog_dealership_adv5_snowflake.sql | 4 +- .../defog_dealership_adv6_snowflake.sql | 4 +- .../defog_dealership_adv7_snowflake.sql | 2 +- .../defog_dealership_basic10_snowflake.sql | 4 +- .../defog_dealership_basic1_snowflake.sql | 2 +- .../defog_dealership_basic2_snowflake.sql | 2 +- .../defog_dealership_basic3_snowflake.sql | 2 +- .../defog_dealership_basic4_snowflake.sql | 2 +- .../defog_dealership_basic5_snowflake.sql | 4 +- .../defog_dealership_basic6_snowflake.sql | 4 +- .../defog_dealership_basic7_snowflake.sql | 4 +- .../defog_dealership_basic8_snowflake.sql | 4 +- .../defog_dealership_basic9_snowflake.sql | 4 +- .../defog_dealership_gen1_snowflake.sql | 2 +- .../defog_dealership_gen3_snowflake.sql | 8 +- .../defog_dealership_gen4_snowflake.sql | 12 +- .../defog_ewallet_adv10_snowflake.sql | 2 +- .../defog_ewallet_adv11_snowflake.sql | 4 +- .../defog_ewallet_adv12_snowflake.sql | 2 +- .../defog_ewallet_adv15_snowflake.sql | 4 +- .../defog_ewallet_adv16_snowflake.sql | 2 +- .../defog_ewallet_adv1_snowflake.sql | 2 +- .../defog_ewallet_adv2_snowflake.sql | 13 +- .../defog_ewallet_adv3_snowflake.sql | 2 +- .../defog_ewallet_adv8_snowflake.sql | 2 +- .../defog_ewallet_adv9_snowflake.sql | 2 +- .../defog_ewallet_basic10_snowflake.sql | 4 +- .../defog_ewallet_basic1_snowflake.sql | 2 +- .../defog_ewallet_basic2_snowflake.sql | 2 +- .../defog_ewallet_basic3_snowflake.sql | 2 +- .../defog_ewallet_basic4_snowflake.sql | 2 +- .../defog_ewallet_basic5_snowflake.sql | 2 +- .../defog_ewallet_basic6_snowflake.sql | 4 +- .../defog_ewallet_basic7_snowflake.sql | 4 +- .../defog_ewallet_basic8_snowflake.sql | 4 +- .../defog_ewallet_basic9_snowflake.sql | 4 +- .../defog_ewallet_gen2_snowflake.sql | 19 +- .../defog_ewallet_gen3_snowflake.sql | 2 +- .../defog_ewallet_gen4_snowflake.sql | 39 ++- .../defog_ewallet_gen5_snowflake.sql | 2 +- .../epoch_event_gap_per_era_snowflake.sql | 15 +- .../epoch_events_per_season_snowflake.sql | 8 +- .../epoch_intra_season_searches_snowflake.sql | 10 +- ...opular_search_engine_per_tod_snowflake.sql | 6 +- ...ost_popular_topic_per_region_snowflake.sql | 4 +- .../epoch_num_predawn_cold_war_snowflake.sql | 2 +- ..._search_other_users_per_user_snowflake.sql | 4 +- ...ping_event_searches_per_user_snowflake.sql | 19 +- .../epoch_pct_searches_per_tod_snowflake.sql | 8 +- .../epoch_search_results_by_tod_snowflake.sql | 8 +- ...epoch_summer_events_per_type_snowflake.sql | 4 +- ...poch_unique_users_per_engine_snowflake.sql | 4 +- ...users_most_cold_war_searches_snowflake.sql | 6 +- .../extract_colors_snowflake.sql | 2 +- .../floor_and_ceil_2_snowflake.sql | 2 +- .../get_part_multiple_snowflake.sql | 2 +- .../hour_minute_day_snowflake.sql | 2 +- .../nation_acctbal_breakdown_snowflake.sql | 4 +- .../part_cross_part_a_snowflake.sql | 35 +++ .../part_cross_part_b_snowflake.sql | 46 ++++ .../part_cross_part_c_snowflake.sql | 44 ++++ .../quantile_test_2_snowflake.sql | 6 +- .../region_acctbal_breakdown_snowflake.sql | 4 +- .../simple_var_std_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_a_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_b_mysql.sql | 16 +- tests/test_sql_refsols/smoke_b_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_d_snowflake.sql | 2 +- ...tery_failure_rates_anomalies_snowflake.sql | 12 +- ...ph_country_cartesian_oddball_snowflake.sql | 2 +- ...country_combination_analysis_snowflake.sql | 10 +- ...untry_incident_rate_analysis_snowflake.sql | 14 +- ...percentages_sun_set_by_error_snowflake.sql | 6 +- ...e_sun_set_by_factory_country_snowflake.sql | 6 +- ...hnograph_hot_purchase_window_snowflake.sql | 8 +- ...ncident_rate_by_release_year_snowflake.sql | 8 +- ...raph_incident_rate_per_brand_snowflake.sql | 6 +- ...ograph_monthly_incident_rate_snowflake.sql | 39 +-- ...aph_most_unreliable_products_snowflake.sql | 24 +- ...incident_rate_goldcopperstar_snowflake.sql | 34 +-- ...lative_incident_rate_overall_snowflake.sql | 8 +- .../time_threshold_reached_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q10_snowflake.sql | 6 +- tests/test_sql_refsols/tpch_q11_snowflake.sql | 14 +- tests/test_sql_refsols/tpch_q12_snowflake.sql | 4 +- tests/test_sql_refsols/tpch_q13_snowflake.sql | 8 +- tests/test_sql_refsols/tpch_q15_snowflake.sql | 6 +- tests/test_sql_refsols/tpch_q16_snowflake.sql | 14 +- tests/test_sql_refsols/tpch_q18_snowflake.sql | 6 +- tests/test_sql_refsols/tpch_q19_snowflake.sql | 28 +- tests/test_sql_refsols/tpch_q1_snowflake.sql | 8 +- tests/test_sql_refsols/tpch_q20_snowflake.sql | 4 +- tests/test_sql_refsols/tpch_q21_snowflake.sql | 52 ++-- tests/test_sql_refsols/tpch_q22_snowflake.sql | 6 +- tests/test_sql_refsols/tpch_q2_snowflake.sql | 8 +- tests/test_sql_refsols/tpch_q3_snowflake.sql | 14 +- tests/test_sql_refsols/tpch_q4_snowflake.sql | 6 +- tests/test_sql_refsols/tpch_q5_snowflake.sql | 4 +- tests/test_sql_refsols/tpch_q7_snowflake.sql | 43 ++- tests/test_sql_refsols/tpch_q8_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q9_snowflake.sql | 8 +- tests/test_sql_refsols/week_offset_mysql.sql | 1 - 147 files changed, 833 insertions(+), 596 deletions(-) create mode 100644 tests/test_sql_refsols/part_cross_part_a_snowflake.sql create mode 100644 tests/test_sql_refsols/part_cross_part_b_snowflake.sql create mode 100644 tests/test_sql_refsols/part_cross_part_c_snowflake.sql diff --git a/tests/test_pipeline_tpch_sf.py b/tests/test_pipeline_tpch_sf.py index b274752b4..46c75492a 100644 --- a/tests/test_pipeline_tpch_sf.py +++ b/tests/test_pipeline_tpch_sf.py @@ -25,7 +25,6 @@ harmonize_types, PyDoughSQLComparisonTest, ) -from .test_pipeline_tpch import tpch_pipeline_test_data from .test_pipeline_defog_custom import defog_custom_pipeline_test_data from .test_pipeline_defog import defog_pipeline_test_data diff --git a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql index 719ee41bb..1a1c852a2 100644 --- a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql +++ b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql @@ -1,26 +1,29 @@ +WITH _T0 AS ( + SELECT + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS AUG_EXCHANGE, + COUNT(*) AS COUNT_ONE + FROM MAIN.SBTICKER + GROUP BY + 1 +) SELECT - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS aug_exchange, - COUNT(*) AS su1, - COUNT(*) * 2 AS su2, - COUNT(*) * -1 AS su3, - COUNT(*) * -3 AS su4, + AUG_EXCHANGE AS aug_exchange, + COUNT_ONE AS su1, + COUNT_ONE * 2 AS su2, + COUNT_ONE * -1 AS su3, + COUNT_ONE * -3 AS su4, 0 AS su5, - COUNT(*) * 0.5 AS su6, + COUNT_ONE * 0.5 AS su6, 0 AS su7, - COALESCE( - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END), - 0 - ) AS su8, - COUNT(*) AS co1, - COUNT(*) AS co2, - COUNT(*) AS co3, - COUNT(*) AS co4, - COUNT(*) AS co5, - COUNT(*) AS co6, + COALESCE(AUG_EXCHANGE, 0) AS su8, + COUNT_ONE AS co1, + COUNT_ONE AS co2, + COUNT_ONE AS co3, + COUNT_ONE AS co4, + COUNT_ONE AS co5, + COUNT_ONE AS co6, 0 AS co7, - COUNT(*) * CAST(NOT ( - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) IS NULL - ) AS BIGINT) AS co8, + COUNT_ONE * IFF(NOT AUG_EXCHANGE IS NULL, 1, 0) AS co8, 1 AS nd1, 1 AS nd2, 1 AS nd3, @@ -28,9 +31,7 @@ SELECT 1 AS nd5, 1 AS nd6, 0 AS nd7, - CAST(NOT ( - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) IS NULL - ) AS BIGINT) AS nd8, + CAST(NOT AUG_EXCHANGE IS NULL AS BIGINT) AS nd8, 1 AS av1, 2 AS av2, -1 AS av3, @@ -38,7 +39,7 @@ SELECT 0 AS av5, 0.5 AS av6, NULL AS av7, - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS av8, + AUG_EXCHANGE AS av8, 1 AS mi1, 2 AS mi2, -1 AS mi3, @@ -46,7 +47,7 @@ SELECT 0 AS mi5, 0.5 AS mi6, NULL AS mi7, - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS mi8, + AUG_EXCHANGE AS mi8, 1 AS ma1, 2 AS ma2, -1 AS ma3, @@ -54,7 +55,7 @@ SELECT 0 AS ma5, 0.5 AS ma6, NULL AS ma7, - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS ma8, + AUG_EXCHANGE AS ma8, 1 AS an1, 2 AS an2, -1 AS an3, @@ -62,7 +63,7 @@ SELECT 0 AS an5, 0.5 AS an6, NULL AS an7, - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS an8, + AUG_EXCHANGE AS an8, 1 AS me1, 2 AS me2, -1 AS me3, @@ -70,7 +71,7 @@ SELECT 0 AS me5, 0.5 AS me6, NULL AS me7, - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS me8, + AUG_EXCHANGE AS me8, 1 AS qu1, 2 AS qu2, -1 AS qu3, @@ -78,10 +79,7 @@ SELECT 0 AS qu5, 0.5 AS qu6, NULL AS qu7, - PERCENTILE_DISC(0.8) WITHIN GROUP (ORDER BY - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END)) AS qu8 -FROM MAIN.SBTICKER -GROUP BY - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) + AUG_EXCHANGE AS qu8 +FROM _T0 ORDER BY - AUG_EXCHANGE NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql index 0b88d95d2..adf33c620 100644 --- a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql +++ b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql @@ -11,6 +11,6 @@ SELECT ANY_VALUE(LOWER(sbcuststate)) AS a9 FROM MAIN.SBCUSTOMER GROUP BY - sbcuststate + 1 ORDER BY - sbcuststate NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/aggregation_functions_snowflake.sql b/tests/test_sql_refsols/aggregation_functions_snowflake.sql index 9c42b42a5..56ba5b89c 100644 --- a/tests/test_sql_refsols/aggregation_functions_snowflake.sql +++ b/tests/test_sql_refsols/aggregation_functions_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( o_custkey AS O_CUSTKEY FROM TPCH.ORDERS GROUP BY - o_custkey + 2 ), _T1 AS ( SELECT PERCENTILE_DISC(0.8) WITHIN GROUP (ORDER BY @@ -25,7 +25,7 @@ WITH _S1 AS ( LEFT JOIN _S1 AS _S1 ON CUSTOMER.c_custkey = _S1.O_CUSTKEY GROUP BY - CUSTOMER.c_nationkey + 13 ) SELECT COALESCE(_T1.SUM_C_ACCTBAL, 0) AS sum_value, diff --git a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql index 8559c422a..2eef20cb9 100644 --- a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql +++ b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( o_custkey AS O_CUSTKEY FROM TPCH.ORDERS GROUP BY - o_custkey + 2 ) SELECT CUSTOMER.c_acctbal < 0 AS in_debt, diff --git a/tests/test_sql_refsols/conditional_functions_snowflake.sql b/tests/test_sql_refsols/conditional_functions_snowflake.sql index 06b2aa89f..4c32b8762 100644 --- a/tests/test_sql_refsols/conditional_functions_snowflake.sql +++ b/tests/test_sql_refsols/conditional_functions_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( o_custkey AS O_CUSTKEY FROM TPCH.ORDERS GROUP BY - o_custkey + 2 ) SELECT IFF(CUSTOMER.c_acctbal > 1000, 'High', 'Low') AS iff_col, diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index 1fd4bb650..e07b6545e 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -29,4 +29,4 @@ WHERE AND SBTRANSACTION.sbtxstatus = 'success' AND YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 ORDER BY - SBTRANSACTION.sbtxdatetime NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql index ad357d4fe..615e2b218 100644 --- a/tests/test_sql_refsols/datediff_snowflake.sql +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -12,5 +12,5 @@ FROM MAIN.SBTRANSACTION WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 ORDER BY - DATEDIFF(YEAR, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) NULLS FIRST + 4 NULLS FIRST LIMIT 30 diff --git a/tests/test_sql_refsols/datetime_sampler_mysql.sql b/tests/test_sql_refsols/datetime_sampler_mysql.sql index 5bf98d93b..0075b3059 100644 --- a/tests/test_sql_refsols/datetime_sampler_mysql.sql +++ b/tests/test_sql_refsols/datetime_sampler_mysql.sql @@ -19,7 +19,10 @@ SELECT CURRENT_TIMESTAMP() AS _expr17, CURRENT_TIMESTAMP() AS _expr18, CAST(o_orderdate AS DATETIME) AS _expr19, - DATE(CURRENT_TIMESTAMP()) AS _expr20, + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(SECOND, '0000-01-01 00:00:00', CURRENT_TIMESTAMP())) SECOND + ) AS _expr20, DATE_ADD( DATE_ADD( CAST(STR_TO_DATE(CONCAT(YEAR(CURRENT_TIMESTAMP()), ' 1 1'), '%Y %c %e') AS DATETIME), @@ -27,16 +30,54 @@ SELECT ), INTERVAL '-141' MONTH ) AS _expr21, - STR_TO_DATE( - CONCAT(YEAR(CURRENT_TIMESTAMP()), ' ', MONTH(CURRENT_TIMESTAMP()), ' 1'), - '%Y %c %e' + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + HOUR, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + SECOND, + '0000-01-01 00:00:00', + STR_TO_DATE( + CONCAT(YEAR(CURRENT_TIMESTAMP()), ' ', MONTH(CURRENT_TIMESTAMP()), ' 1'), + '%Y %c %e' + ) + )) SECOND + ) + )) HOUR ) AS _expr22, - DATE(CURRENT_TIMESTAMP()) AS _expr23, + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + HOUR, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + SECOND, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(HOUR, '0000-01-01 00:00:00', CURRENT_TIMESTAMP())) HOUR + ) + )) SECOND + ) + )) HOUR + ) AS _expr23, DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-96' HOUR), INTERVAL '15' YEAR) AS _expr24, DATE_ADD( DATE_ADD( - STR_TO_DATE(CONCAT(YEAR(CURRENT_TIMESTAMP()), ' 1 1'), '%Y %c %e'), - INTERVAL '-3' YEAR + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + MINUTE, + '0000-01-01 00:00:00', + DATE_ADD( + STR_TO_DATE(CONCAT(YEAR(CURRENT_TIMESTAMP()), ' 1 1'), '%Y %c %e'), + INTERVAL '-3' YEAR + ) + )) MINUTE ), INTERVAL '65' MONTH ) AS _expr25, @@ -44,12 +85,28 @@ SELECT CONCAT(YEAR(DATE_ADD(CAST(o_orderdate AS DATETIME), INTERVAL '-56' HOUR)), ' 1 1'), '%Y %c %e' ) AS _expr26, - DATE(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-63' DAY)) AS _expr27, + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + SECOND, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(MINUTE, '0000-01-01 00:00:00', DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-63' DAY))) MINUTE + ) + )) SECOND + ) AS _expr27, STR_TO_DATE( CONCAT(YEAR(CURRENT_TIMESTAMP()), ' ', MONTH(CURRENT_TIMESTAMP()), ' 1'), '%Y %c %e' ) AS _expr28, - DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-312' HOUR), INTERVAL '48' YEAR) AS _expr29, + DATE_ADD( + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(SECOND, '0000-01-01 00:00:00', DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-312' HOUR))) SECOND + ), + INTERVAL '48' YEAR + ) AS _expr29, DATE_ADD( DATE_ADD( CAST(CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '75' DAY) AS DATE) AS DATETIME), @@ -67,7 +124,14 @@ SELECT ), INTERVAL '-45' YEAR ) AS _expr31, - CAST(DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-270' MINUTE), INTERVAL '-34' SECOND) AS DATE) AS _expr32, + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + SECOND, + '0000-01-01 00:00:00', + CAST(DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-270' MINUTE), INTERVAL '-34' SECOND) AS DATE) + )) SECOND + ) AS _expr32, DATE_ADD( CAST(STR_TO_DATE( CONCAT(YEAR(CURRENT_TIMESTAMP()), ' ', MONTH(CURRENT_TIMESTAMP()), ' 1'), @@ -89,7 +153,16 @@ SELECT INTERVAL '344' SECOND ) AS _expr34, CAST(CURRENT_TIMESTAMP() AS DATE) AS _expr35, - CAST('2116-01-01 00:49:00' AS DATETIME) AS _expr36, + DATE_ADD( + DATE_ADD( + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(HOUR, '0000-01-01 00:00:00', CAST('2025-01-01' AS DATETIME))) HOUR + ), + INTERVAL '49' MINUTE + ), + INTERVAL '91' YEAR + ) AS _expr36, STR_TO_DATE(CONCAT(YEAR(CURRENT_TIMESTAMP()), ' 1 1'), '%Y %c %e') AS _expr37, STR_TO_DATE(CONCAT(YEAR(CAST(CURRENT_TIMESTAMP() AS DATE)), ' 1 1'), '%Y %c %e') AS _expr38, DATE_ADD( @@ -121,13 +194,44 @@ SELECT '%Y %c %e' ) AS _expr41, DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '192' MONTH) AS _expr42, - DATE_ADD(CAST(DATE(CURRENT_TIMESTAMP()) AS DATETIME), INTERVAL '486' MINUTE) AS _expr43, - DATE_ADD(CAST(DATE(CURRENT_TIMESTAMP()) AS DATETIME), INTERVAL '-50' HOUR) AS _expr44, - DATE( + DATE_ADD( + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + HOUR, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + MINUTE, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(HOUR, '0000-01-01 00:00:00', CURRENT_TIMESTAMP())) HOUR + ) + )) MINUTE + ) + )) HOUR + ), + INTERVAL '486' MINUTE + ) AS _expr43, + DATE_ADD( DATE_ADD( - DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '297' DAY), INTERVAL '72' MONTH), - INTERVAL '-92' MONTH - ) + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(SECOND, '0000-01-01 00:00:00', CURRENT_TIMESTAMP())) SECOND + ), + INTERVAL '-50' HOUR + ) AS _expr44, + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + HOUR, + '0000-01-01 00:00:00', + DATE_ADD( + DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '297' DAY), INTERVAL '72' MONTH), + INTERVAL '-92' MONTH + ) + )) HOUR ) AS _expr45, CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '285' SECOND) AS DATE) AS _expr46, CAST('1999-05-15 00:00:00' AS DATETIME) AS _expr47, @@ -160,43 +264,102 @@ SELECT INTERVAL '-21' DAY ) AS _expr48, DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '212' MINUTE), INTERVAL '368' YEAR) AS _expr49, - STR_TO_DATE( - CONCAT( - YEAR( - STR_TO_DATE( - CONCAT( - YEAR(CAST('2024-12-31 11:59:00' AS DATETIME)), - ' ', - MONTH(CAST('2024-12-31 11:59:00' AS DATETIME)), - ' 1' - ), - '%Y %c %e' - ) - ), - ' 1 1' - ), - '%Y %c %e' + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + MINUTE, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + MINUTE, + '0000-01-01 00:00:00', + STR_TO_DATE( + CONCAT( + YEAR( + STR_TO_DATE( + CONCAT( + YEAR(CAST('2024-12-31 11:59:00' AS DATETIME)), + ' ', + MONTH(CAST('2024-12-31 11:59:00' AS DATETIME)), + ' 1' + ), + '%Y %c %e' + ) + ), + ' 1 1' + ), + '%Y %c %e' + ) + )) MINUTE + ) + )) MINUTE ) AS _expr50, - DATE(CAST('1999-03-14' AS DATETIME)) AS _expr51, + CAST(DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(HOUR, '0000-01-01 00:00:00', CAST('1999-03-14' AS DATETIME))) HOUR + ) AS DATE) AS _expr51, DATE_ADD( - CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-60' HOUR) AS DATE), + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + MINUTE, + '0000-01-01 00:00:00', + CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-60' HOUR) AS DATE) + )) MINUTE + ), INTERVAL '196' YEAR ) AS _expr52, DATE_ADD( - CAST(DATE( - DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-40' HOUR), INTERVAL '-385' DAY) - ) AS DATETIME), + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + MINUTE, + '0000-01-01 00:00:00', + DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-40' HOUR), INTERVAL '-385' DAY) + )) MINUTE + ), INTERVAL '29' HOUR ) AS _expr53, - DATE(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '405' DAY)) AS _expr54, + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + MINUTE, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(HOUR, '0000-01-01 00:00:00', DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '405' DAY))) HOUR + ) + )) MINUTE + ) AS _expr54, DATE_ADD( DATE_ADD( - STR_TO_DATE(CONCAT(YEAR(CURRENT_TIMESTAMP()), ' 1 1'), '%Y %c %e'), + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + SECOND, + '0000-01-01 00:00:00', + STR_TO_DATE(CONCAT(YEAR(CURRENT_TIMESTAMP()), ' 1 1'), '%Y %c %e') + )) SECOND + ), INTERVAL '98' YEAR ), INTERVAL '96' MONTH ) AS _expr55, - DATE_ADD(CAST(DATE(CURRENT_TIMESTAMP()) AS DATETIME), INTERVAL '78' SECOND) AS _expr56, + DATE_ADD( + CAST(CAST(DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF( + SECOND, + '0000-01-01 00:00:00', + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(MINUTE, '0000-01-01 00:00:00', CURRENT_TIMESTAMP())) MINUTE + ) + )) SECOND + ) AS DATE) AS DATETIME), + INTERVAL '78' SECOND + ) AS _expr56, DATE_ADD( DATE_ADD( DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '136' HOUR), INTERVAL '104' MINUTE), diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql index a8c93348c..d403616c5 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -1,22 +1,24 @@ -WITH _S3 AS ( +WITH _S1 AS ( SELECT + YEAR(CAST(sbtxdatetime AS TIMESTAMP)) AS EXPR_1, + MONTH(CAST(sbtxdatetime AS TIMESTAMP)) AS EXPR_2, COUNT(*) AS N_ROWS, - SBCUSTOMER.sbcustid AS SBCUSTID - FROM MAIN.SBCUSTOMER AS SBCUSTOMER - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) - AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + sbtxcustid AS SBTXCUSTID + FROM MAIN.SBTRANSACTION GROUP BY - SBCUSTOMER.sbcustid + 1, + 2, + 4 ) SELECT SBCUSTOMER.sbcustid AS _id, SBCUSTOMER.sbcustname AS name, - COALESCE(_S3.N_ROWS, 0) AS num_transactions + COALESCE(_S1.N_ROWS, 0) AS num_transactions FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S3 AS _S3 - ON SBCUSTOMER.sbcustid = _S3.SBCUSTID +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + AND _S1.EXPR_1 = YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) + AND _S1.EXPR_2 = MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) ORDER BY - COALESCE(_S3.N_ROWS, 0) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql index b701e213e..a7400d9fe 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql @@ -6,7 +6,7 @@ WITH _u_0 AS ( ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid AND SBTICKER.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') GROUP BY - SBTRANSACTION.sbtxcustid + 1 ) SELECT COUNT(*) AS n_customers diff --git a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql index f4cfac319..1bebc416b 100644 --- a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql @@ -5,4 +5,4 @@ FROM MAIN.SBCUSTOMER WHERE sbcustjoindate >= CAST('2023-01-01' AS DATE) GROUP BY - sbcustcountry + 1 diff --git a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql index 464c8b871..a8d0ebe14 100644 --- a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql @@ -6,4 +6,4 @@ JOIN MAIN.SBDAILYPRICE AS SBDAILYPRICE ON DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 AND SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid GROUP BY - SBTICKER.sbtickertype + 1 diff --git a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql index 322984b9e..e641bc601 100644 --- a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql @@ -7,4 +7,4 @@ FROM MAIN.SBCUSTOMER WHERE sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' GROUP BY - sbcustcountry + 1 diff --git a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql index c205c7a24..6ca9217ef 100644 --- a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( WHERE sbtxdatetime >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP()) AND sbtxtype = 'sell' GROUP BY - sbtxtickerid + 3 ) SELECT SBTICKER.sbtickersymbol AS symbol, @@ -20,4 +20,4 @@ FROM MAIN.SBTICKER AS SBTICKER JOIN _S1 AS _S1 ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY - SBTICKER.sbtickersymbol NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql index 5bb182759..293aef3b2 100644 --- a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION GROUP BY - sbtxcustid + 2 ) SELECT SBCUSTOMER.sbcustname AS name, @@ -13,5 +13,5 @@ FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S1 AS _S1 ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID ORDER BY - COALESCE(_S1.SUM_SBTXAMOUNT, 0) DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql index 000c414f9..50990724f 100644 --- a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -10, CURRENT_TIMESTAMP())) AND sbtxtype = 'buy' GROUP BY - sbtxtickerid + 2 ) SELECT SBTICKER.sbtickersymbol AS symbol, @@ -16,5 +16,5 @@ FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY - COALESCE(_S1.N_ROWS, 0) DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql index f6dfb4130..d08f16b72 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql @@ -5,7 +5,7 @@ WITH _T1 AS ( sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION GROUP BY - sbtxcustid + 3 ) SELECT SBCUSTOMER.sbcustname AS name, @@ -16,6 +16,4 @@ FROM MAIN.SBCUSTOMER AS SBCUSTOMER JOIN _T1 AS _T1 ON SBCUSTOMER.sbcustid = _T1.SBTXCUSTID AND _T1.N_ROWS >= 5 ORDER BY - ( - 100.0 * COALESCE(_T1.SUM_EXPR_2, 0) - ) / _T1.N_ROWS NULLS FIRST + 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql index 905bdd9b1..463f8ee2c 100644 --- a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( WHERE sbdpdate <= CAST('2023-04-04' AS DATE) AND sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY - sbdptickerid + 3 ) SELECT SBTICKER.sbtickersymbol AS symbol, @@ -16,5 +16,5 @@ FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 ON SBTICKER.sbtickerid = _S1.SBDPTICKERID ORDER BY - _S1.MAX_SBDPHIGH - _S1.MIN_SBDPLOW DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index ff929340d..a628e33fd 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -12,12 +12,8 @@ WITH _S0 AS ( sbdptickerid AS SBDPTICKERID FROM MAIN.SBDAILYPRICE GROUP BY - CONCAT_WS( - '-', - YEAR(CAST(sbdpdate AS TIMESTAMP)), - LPAD(MONTH(CAST(sbdpdate AS TIMESTAMP)), 2, '0') - ), - sbdptickerid + 4, + 6 ), _T0 AS ( SELECT MAX(_S0.MAX_HIGH) AS MAX_HIGH, @@ -30,8 +26,8 @@ WITH _S0 AS ( JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = _S0.SBDPTICKERID GROUP BY - _S0.MONTH, - SBTICKER.sbtickersymbol + 5, + 6 ) SELECT SBTICKERSYMBOL AS symbol, diff --git a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql index ed3eb6d60..e8dc4a0e7 100644 --- a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql @@ -5,7 +5,7 @@ WITH _S1 AS ( sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION GROUP BY - sbtxcustid + 3 ) SELECT SBCUSTOMER.sbcustname AS name, diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index 8892b2587..1e67b2da7 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -11,11 +11,7 @@ WITH _S2 AS ( sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY - CONCAT_WS( - '-', - YEAR(CAST(sbcustjoindate AS TIMESTAMP)), - LPAD(MONTH(CAST(sbcustjoindate AS TIMESTAMP)), 2, '0') - ) + 1 ), _S3 AS ( SELECT AVG(SBTRANSACTION.sbtxamount) AS AVG_SBTXAMOUNT, @@ -33,11 +29,7 @@ WITH _S2 AS ( SBCUSTOMER.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY - CONCAT_WS( - '-', - YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), - LPAD(MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), 2, '0') - ) + 2 ) SELECT _S2.MONTH AS month, diff --git a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql index 192b96327..5a061a0dc 100644 --- a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql @@ -5,7 +5,7 @@ WITH _u_0 AS ( WHERE LOWER(sbcustcountry) = 'usa' GROUP BY - sbcustid + 1 ) SELECT CASE WHEN COUNT(*) > 0 THEN COUNT(*) ELSE NULL END AS n_transactions, diff --git a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql index 79a85b0b5..8cdd93e22 100644 --- a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql @@ -54,15 +54,4 @@ WHERE ) ) GROUP BY - DATE_TRUNC( - 'DAY', - DATEADD( - DAY, - ( - ( - DAYOFWEEK(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + 6 - ) % 7 - ) * -1, - CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP) - ) - ) + 1 diff --git a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql index 473b31e78..f926019f9 100644 --- a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql @@ -3,7 +3,7 @@ WITH _u_0 AS ( sbdptickerid AS _u_1 FROM MAIN.SBDAILYPRICE GROUP BY - sbdptickerid + 1 ) SELECT SBTICKER.sbtickerid AS _id, diff --git a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql index ab280f286..f555d7941 100644 --- a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -30, CURRENT_TIMESTAMP())) GROUP BY - sbtxcustid + 3 ) SELECT SBCUSTOMER.sbcustcountry AS country, @@ -17,4 +17,4 @@ FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S1 AS _S1 ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID GROUP BY - SBCUSTOMER.sbcustcountry + 1 diff --git a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql index 4d967e989..f5697ff7a 100644 --- a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql @@ -7,8 +7,8 @@ WHERE sbtxdatetime <= CAST('2023-03-31' AS DATE) AND sbtxdatetime >= CAST('2023-01-01' AS DATE) GROUP BY - sbtxtype + 1 ORDER BY - NUM_CUSTOMERS DESC NULLS LAST, - sbtxtype NULLS FIRST + 2 DESC NULLS LAST, + 1 NULLS FIRST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql index de87115a9..d2103a902 100644 --- a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql @@ -5,7 +5,7 @@ WITH _S1 AS ( sbtxtickerid AS SBTXTICKERID FROM MAIN.SBTRANSACTION GROUP BY - sbtxtickerid + 3 ) SELECT SBTICKER.sbtickersymbol AS symbol, @@ -15,5 +15,5 @@ FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _S1 AS _S1 ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY - COALESCE(_S1.SUM_SBTXAMOUNT, 0) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql index e35e42a35..fe28def67 100644 --- a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql @@ -5,8 +5,8 @@ WITH _S0 AS ( sbtxtickerid AS SBTXTICKERID FROM MAIN.SBTRANSACTION GROUP BY - sbtxcustid, - sbtxtickerid + 2, + 3 ), _S2 AS ( SELECT SUM(_S0.NUM_TRANSACTIONS) AS NUM_TRANSACTIONS, @@ -16,8 +16,8 @@ WITH _S0 AS ( JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = _S0.SBTXTICKERID GROUP BY - SBTICKER.sbtickertype, - _S0.SBTXCUSTID + 2, + 3 ) SELECT SBCUSTOMER.sbcuststate AS state, @@ -27,8 +27,8 @@ FROM _S2 AS _S2 JOIN MAIN.SBCUSTOMER AS SBCUSTOMER ON SBCUSTOMER.sbcustid = _S2.SBTXCUSTID GROUP BY - SBCUSTOMER.sbcuststate, - _S2.SBTICKERTYPE + 1, + 2 ORDER BY - NUM_TRANSACTIONS DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql index 5d8b42fa0..7d9a16807 100644 --- a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql @@ -5,7 +5,7 @@ WITH _u_0 AS ( WHERE sbtxtype = 'buy' GROUP BY - sbtxcustid + 1 ) SELECT SBCUSTOMER.sbcustid AS _id diff --git a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql index 1cbedaf08..39ecccabf 100644 --- a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql @@ -5,7 +5,7 @@ WITH _u_0 AS ( WHERE sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY - sbdptickerid + 1 ) SELECT SBTICKER.sbtickerid AS _id diff --git a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql index 0cfc5261f..64b64904a 100644 --- a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql @@ -3,7 +3,7 @@ SELECT COUNT(*) AS num_transactions FROM MAIN.SBTRANSACTION GROUP BY - sbtxstatus + 1 ORDER BY - NUM_TRANSACTIONS DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql index 8047b1674..fab020c76 100644 --- a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql @@ -3,7 +3,7 @@ SELECT COUNT(*) AS num_customers FROM MAIN.SBCUSTOMER GROUP BY - sbcustcountry + 1 ORDER BY - NUM_CUSTOMERS DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql index cbe91965c..5ad788527 100644 --- a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql @@ -3,7 +3,7 @@ WITH _u_0 AS ( sbtxcustid AS _u_1 FROM MAIN.SBTRANSACTION GROUP BY - sbtxcustid + 1 ) SELECT SBCUSTOMER.sbcustid AS _id, diff --git a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql index 94d18337f..7a344e4ec 100644 --- a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( sbtxcustid AS SBTXCUSTID FROM MAIN.SBTRANSACTION GROUP BY - sbtxcustid + 2 ) SELECT SBCUSTOMER.sbcustid AS cust_id, diff --git a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql index 10e821272..dcb16e69c 100644 --- a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql @@ -8,7 +8,7 @@ WITH _S1 AS ( AND CAST(sbtxdatetime AS TIMESTAMP) >= CAST('2023-04-01' AS DATE) AND sbtxtype = 'sell' GROUP BY - sbtxcustid + 2 ) SELECT SBCUSTOMER.sbcustid AS _id, @@ -18,5 +18,5 @@ FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _S1 AS _S1 ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID ORDER BY - COALESCE(_S1.N_ROWS, 0) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql index 591ba564e..18311845d 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql @@ -7,6 +7,6 @@ WHERE AND sbtxstatus = 'success' AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 GROUP BY - DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) + 1 ORDER BY - MONTH NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql index 166017d7e..a07ccf3df 100644 --- a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( sale_id AS SALE_ID FROM MAIN.PAYMENTS_RECEIVED GROUP BY - sale_id + 2 ) SELECT ROUND( diff --git a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql index c330af82b..bd7f07392 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql @@ -1,17 +1,28 @@ +WITH _T1 AS ( + SELECT + ANY_VALUE(SALES.car_id) AS ANYTHING_CAR_ID, + ANY_VALUE(CARS.make) AS ANYTHING_MAKE, + ANY_VALUE(CARS.model) AS ANYTHING_MODEL, + ANY_VALUE(SALES.sale_price) AS ANYTHING_SALE_PRICE, + CARS._id AS _ID_1 + FROM MAIN.SALES AS SALES + JOIN MAIN.CARS AS CARS + ON CARS._id = SALES.car_id + JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS + ON CARS._id = INVENTORY_SNAPSHOTS.car_id + AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 + AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date + GROUP BY + SALES._id, + 5 +) SELECT - ANY_VALUE(CARS.make) AS make, - ANY_VALUE(CARS.model) AS model, - ANY_VALUE(SALES.sale_price) AS sale_price -FROM MAIN.SALES AS SALES -JOIN MAIN.CARS AS CARS - ON CARS._id = SALES.car_id -JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS - ON CARS._id = INVENTORY_SNAPSHOTS.car_id - AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 - AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date -GROUP BY - SALES._id, - CARS._id + ANYTHING_MAKE AS make, + ANYTHING_MODEL AS model, + ANYTHING_SALE_PRICE AS sale_price +FROM _T1 +WHERE + ANYTHING_CAR_ID = _ID_1 ORDER BY - SALE_PRICE DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql index e00ceae8e..006deec16 100644 --- a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( salesperson_id AS SALESPERSON_ID FROM MAIN.SALES GROUP BY - salesperson_id + 2 ) SELECT SALESPERSONS.first_name, @@ -14,5 +14,5 @@ FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - _S1.AVG_SALE_PRICE DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql index 7b22d744b..f9dfe34b2 100644 --- a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( salesperson_id AS SALESPERSON_ID FROM MAIN.SALES GROUP BY - salesperson_id + 2 ) SELECT SALESPERSONS._id, @@ -15,5 +15,5 @@ FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - COALESCE(_S1.SUM_SALE_PRICE, 0) DESC NULLS LAST + 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql index b842c787e..3b1358f39 100644 --- a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql @@ -67,15 +67,4 @@ WHERE ) ) >= 1 GROUP BY - DATE_TRUNC( - 'DAY', - DATEADD( - DAY, - ( - ( - DAYOFWEEK(CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) + 6 - ) % 7 - ) * -1, - CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP) - ) - ) + 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql index 1942a1747..fccee1e5d 100644 --- a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql @@ -6,7 +6,7 @@ WITH _S1 AS ( WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY - salesperson_id + 2 ) SELECT SALESPERSONS._id, @@ -17,4 +17,5 @@ FROM MAIN.SALESPERSONS AS SALESPERSONS JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - _S1.N_ROWS DESC NULLS LAST + 4 DESC NULLS LAST, + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql index 59e4dcf00..0f9f5ed4c 100644 --- a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( car_id AS CAR_ID FROM MAIN.SALES GROUP BY - car_id + 2 ) SELECT CARS.make, diff --git a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql index 055d2de4d..5aeeccbf3 100644 --- a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( WHERE sale_date >= DATEADD(DAY, -30, CURRENT_TIMESTAMP()) GROUP BY - car_id + 3 ) SELECT COALESCE(_S1.N_ROWS, 0) AS num_sales, diff --git a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql index 0d295440f..f27054fd2 100644 --- a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql @@ -5,7 +5,7 @@ WITH _S1 AS ( salesperson_id AS SALESPERSON_ID FROM MAIN.SALES GROUP BY - salesperson_id + 3 ) SELECT SALESPERSONS.first_name, @@ -17,4 +17,4 @@ FROM MAIN.SALESPERSONS AS SALESPERSONS JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - COALESCE(_S1.SUM_SALE_PRICE, 0) DESC NULLS LAST + 3 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql index 69dad524f..0d6b733bb 100644 --- a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql @@ -11,7 +11,7 @@ WITH _T1 AS ( car_id AS CAR_ID FROM MAIN.SALES GROUP BY - car_id + 2 ) SELECT CARS.make, @@ -23,4 +23,4 @@ JOIN _T1 AS _T1 LEFT JOIN _S3 AS _S3 ON CARS._id = _S3.CAR_ID ORDER BY - _S3.MAX_SALE_PRICE DESC NULLS LAST + 3 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql index 46caaeaef..075f4c2c9 100644 --- a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( car_id AS CAR_ID FROM MAIN.SALES GROUP BY - car_id + 2 ) SELECT CARS.make, diff --git a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql index dd3107f19..8ef019134 100644 --- a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( WHERE sale_date >= DATEADD(MONTH, -3, CURRENT_TIMESTAMP()) GROUP BY - salesperson_id + 3 ) SELECT SALESPERSONS.first_name, @@ -18,5 +18,5 @@ FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - COALESCE(_S1.SUM_SALE_PRICE, 0) DESC NULLS LAST + 4 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql index 3d405d43c..672f26b06 100644 --- a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql @@ -3,7 +3,7 @@ WITH _u_0 AS ( car_id AS _u_1 FROM MAIN.SALES GROUP BY - car_id + 1 ) SELECT CARS._id, diff --git a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql index 94636e375..8214ad5c0 100644 --- a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql @@ -3,7 +3,7 @@ WITH _u_0 AS ( customer_id AS _u_1 FROM MAIN.SALES GROUP BY - customer_id + 1 ) SELECT CUSTOMERS._id diff --git a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql index 76d7c9c24..7341c1804 100644 --- a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql @@ -6,7 +6,7 @@ WITH _u_0 AS ( ON PAYMENTS_RECEIVED.payment_method = 'cash' AND PAYMENTS_RECEIVED.sale_id = SALES._id GROUP BY - SALES.salesperson_id + 1 ) SELECT SALESPERSONS._id AS salesperson_id diff --git a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql index dc8a28667..acc3292db 100644 --- a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql @@ -3,7 +3,7 @@ WITH _u_0 AS ( salesperson_id AS _u_1 FROM MAIN.SALES GROUP BY - salesperson_id + 1 ) SELECT SALESPERSONS._id, diff --git a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql index 4d0742e55..e148d933a 100644 --- a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY - salesperson_id + 3 ) SELECT SALESPERSONS.first_name, @@ -18,5 +18,5 @@ FROM MAIN.SALESPERSONS AS SALESPERSONS JOIN _S1 AS _S1 ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY - _S1.N_ROWS_1 DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql index d7aa9e98c..a32d0be09 100644 --- a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql @@ -6,7 +6,7 @@ FROM MAIN.SALES AS SALES JOIN MAIN.CUSTOMERS AS CUSTOMERS ON CUSTOMERS._id = SALES.customer_id GROUP BY - CUSTOMERS.state + 1 ORDER BY - COALESCE(SUM(SALES.sale_price), 0) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql index d1f52219d..0462e8672 100644 --- a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql @@ -4,7 +4,7 @@ SELECT COALESCE(SUM(payment_amount), 0) AS total_amount FROM MAIN.PAYMENTS_RECEIVED GROUP BY - payment_method + 1 ORDER BY - COALESCE(SUM(payment_amount), 0) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql index 3a82a94bc..2dbf6c3ac 100644 --- a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql @@ -5,7 +5,7 @@ WITH _S1 AS ( car_id AS CAR_ID FROM MAIN.SALES GROUP BY - car_id + 3 ) SELECT CARS.make, @@ -16,5 +16,5 @@ FROM MAIN.CARS AS CARS LEFT JOIN _S1 AS _S1 ON CARS._id = _S1.CAR_ID ORDER BY - COALESCE(_S1.SUM_SALE_PRICE, 0) DESC NULLS LAST + 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql index 1daa901dd..0ad936b14 100644 --- a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql @@ -3,7 +3,7 @@ SELECT COUNT(*) AS total_signups FROM MAIN.CUSTOMERS GROUP BY - state + 1 ORDER BY - TOTAL_SIGNUPS DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql index 582a2f88a..064fa879d 100644 --- a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql @@ -7,5 +7,5 @@ FROM MAIN.SALESPERSONS WHERE NOT termination_date IS NULL ORDER BY - DATEDIFF(DAY, CAST(hire_date AS DATETIME), CAST(termination_date AS DATETIME)) * 1.0 NULLS FIRST + 4 NULLS FIRST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql index 6e813383f..769b3c8a4 100644 --- a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql @@ -22,8 +22,8 @@ WHERE ) ) = 1 GROUP BY - payment_date, - payment_method + 1, + 2 ORDER BY - PAYMENT_DATE DESC NULLS LAST, - PAYMENT_METHOD NULLS FIRST + 1 DESC NULLS LAST, + 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql index 1163d94a4..83ac1134c 100644 --- a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -7,8 +7,8 @@ WITH _S0 AS ( WHERE YEAR(CAST(sale_date AS TIMESTAMP)) = 2023 GROUP BY - DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)), - customer_id + 1, + 3 ), _T1 AS ( SELECT SUM(_S0.SUM_SALE_PRICE) AS SUM_SUM_SALE_PRICE, @@ -18,8 +18,8 @@ WITH _S0 AS ( JOIN MAIN.CUSTOMERS AS CUSTOMERS ON CUSTOMERS._id = _S0.CUSTOMER_ID GROUP BY - _S0.QUARTER, - CUSTOMERS.state + 2, + 3 ) SELECT QUARTER AS quarter, @@ -29,5 +29,5 @@ FROM _T1 WHERE NOT SUM_SUM_SALE_PRICE IS NULL AND SUM_SUM_SALE_PRICE > 0 ORDER BY - QUARTER NULLS FIRST, - STATE NULLS FIRST + 1 NULLS FIRST, + 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql index 9c69a02ca..89d60f61b 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql @@ -6,7 +6,7 @@ WITH _S1 AS ( WHERE sender_type = 0 GROUP BY - sender_id + 2 ) SELECT USERS.uid AS user_id, diff --git a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql index 2ae28ab6d..34e032cdc 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql @@ -8,7 +8,7 @@ WITH _S1 AS ( WHERE session_end_ts < '2023-06-08' AND session_start_ts >= '2023-06-01' GROUP BY - user_id + 2 ) SELECT USERS.uid, @@ -17,4 +17,4 @@ FROM MAIN.USERS AS USERS JOIN _S1 AS _S1 ON USERS.uid = _S1.USER_ID ORDER BY - COALESCE(_S1.SUM_DURATION, 0) DESC NULLS LAST + 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql index fa455f642..93638d1ec 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( coupon_id AS COUPON_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY GROUP BY - coupon_id + 2 ) SELECT COUPONS.cid AS coupon_id, diff --git a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql index b8c58ba21..b0e8d3341 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql @@ -7,7 +7,7 @@ WITH _S3 AS ( ON COUPONS.merchant_id = MERCHANTS.mid AND DATEDIFF(MONTH, CAST(MERCHANTS.created_at AS DATETIME), CAST(COUPONS.created_at AS DATETIME)) = 0 GROUP BY - COUPONS.merchant_id + 2 ) SELECT MERCHANTS.mid AS merchant_id, @@ -17,5 +17,5 @@ FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S3 AS _S3 ON MERCHANTS.mid = _S3.MERCHANT_ID ORDER BY - COALESCE(_S3.N_ROWS, 0) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql index 4d81f0556..923769829 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql @@ -6,7 +6,7 @@ WITH _S1 AS ( WHERE status = 'unread' AND type = 'promotion' GROUP BY - user_id + 2 ) SELECT USERS.username, diff --git a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql index 5172f9c71..a73f40ff2 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( WHERE status = 'success' GROUP BY - receiver_id + 3 ) SELECT MERCHANTS.name, diff --git a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql index 76026ee21..8bff2a903 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql @@ -50,15 +50,4 @@ WHERE ) ) GROUP BY - DATE_TRUNC( - 'DAY', - DATEADD( - DAY, - ( - ( - DAYOFWEEK(CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) + 6 - ) % 7 - ) * -1, - CAST(NOTIFICATIONS.created_at AS TIMESTAMP) - ) - ) + 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql index 86ef585f4..84e9f51cd 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql @@ -4,7 +4,7 @@ WITH _S1 AS ( merchant_id AS MERCHANT_ID FROM MAIN.COUPONS GROUP BY - merchant_id + 2 ) SELECT MERCHANTS.name AS merchant_name, diff --git a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql index 4d16e9ad1..041eb0000 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql @@ -6,7 +6,7 @@ WITH _S1 AS ( WHERE receiver_type = 1 AND status = 'success' GROUP BY - receiver_id + 2 ) SELECT MERCHANTS.mid AS merchants_id, diff --git a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql index 8a89d8674..f2607877b 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql @@ -7,4 +7,4 @@ WHERE AND created_at >= DATEADD(MONTH, -2, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP())) AND sender_type = 0 GROUP BY - DATE_TRUNC('MONTH', CAST(created_at AS TIMESTAMP)) + 1 diff --git a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql index 5b8237185..eec471299 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql @@ -8,7 +8,7 @@ WITH _S1 AS ( created_at >= DATE_TRUNC('DAY', DATEADD(DAY, -150, CURRENT_TIMESTAMP())) AND receiver_type = 1 GROUP BY - receiver_id + 3 ) SELECT MERCHANTS.name AS merchant_name, @@ -18,5 +18,5 @@ FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.RECEIVER_ID ORDER BY - COALESCE(_S1.SUM_AMOUNT, 0) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql index 743b77a83..f9fb46604 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql @@ -9,4 +9,4 @@ WHERE AND WALLET_TRANSACTIONS_DAILY.status = 'success' AND YEAR(CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) = 2023 GROUP BY - DATE_TRUNC('MONTH', CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) + 1 diff --git a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql index 789ec210b..998fa51ee 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql @@ -3,7 +3,7 @@ WITH _u_0 AS ( merchant_id AS _u_1 FROM MAIN.COUPONS GROUP BY - merchant_id + 1 ) SELECT MERCHANTS.mid AS merchant_id, diff --git a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql index bb925dd07..7fe4d0718 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql @@ -5,7 +5,7 @@ WITH _u_0 AS ( WHERE receiver_type = 1 GROUP BY - receiver_id + 1 ) SELECT MERCHANTS.mid AS merchant diff --git a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql index e3d83c3aa..432e6a920 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql @@ -5,7 +5,7 @@ WITH _u_0 AS ( WHERE type = 'transaction' GROUP BY - user_id + 1 ) SELECT USERS.uid AS user_id diff --git a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql index d1ac4254e..294d9c309 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql @@ -3,7 +3,7 @@ WITH _u_0 AS ( user_id AS _u_1 FROM MAIN.NOTIFICATIONS GROUP BY - user_id + 1 ) SELECT USERS.uid, diff --git a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql index d00872831..36d041330 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql @@ -3,7 +3,7 @@ SELECT COUNT(*) AS count FROM MAIN.USER_SESSIONS GROUP BY - device_type + 1 ORDER BY - COUNT DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql index 4b7e912c9..b9b49f533 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql @@ -3,7 +3,7 @@ SELECT COUNT(*) AS count FROM MAIN.WALLET_TRANSACTIONS_DAILY GROUP BY - status + 1 ORDER BY - COUNT DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql index 22ea3482b..4132cad40 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql @@ -5,7 +5,7 @@ WITH _S1 AS ( coupon_id AS COUPON_ID FROM MAIN.WALLET_TRANSACTIONS_DAILY GROUP BY - coupon_id + 3 ) SELECT COUPONS.code AS coupon_code, @@ -15,5 +15,5 @@ FROM MAIN.COUPONS AS COUPONS LEFT JOIN _S1 AS _S1 ON COUPONS.cid = _S1.COUPON_ID ORDER BY - COALESCE(_S1.COUNT_TXID, 0) DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql index c10d7347c..559681b4e 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql @@ -14,7 +14,7 @@ LEFT JOIN _S1 AS _S1 WHERE WALLET_TRANSACTIONS_DAILY.sender_type = 0 GROUP BY - _S1.COUNTRY + 1 ORDER BY - COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql index 313181e4b..efe787625 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql @@ -4,11 +4,20 @@ WITH _S0 AS ( FROM MAIN.USER_SETTING_SNAPSHOT WHERE YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 +), _S1 AS ( + SELECT + AVG(tx_limit_daily) AS AVG_TX_LIMIT_DAILY, + AVG(tx_limit_monthly) AS AVG_TX_LIMIT_MONTHLY, + snapshot_date AS SNAPSHOT_DATE + FROM MAIN.USER_SETTING_SNAPSHOT + WHERE + YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 + GROUP BY + 3 ) SELECT - AVG(USER_SETTING_SNAPSHOT.tx_limit_daily) AS avg_daily_limit, - AVG(USER_SETTING_SNAPSHOT.tx_limit_monthly) AS avg_monthly_limit + _S1.AVG_TX_LIMIT_DAILY AS avg_daily_limit, + _S1.AVG_TX_LIMIT_MONTHLY AS avg_monthly_limit FROM _S0 AS _S0 -JOIN MAIN.USER_SETTING_SNAPSHOT AS USER_SETTING_SNAPSHOT - ON USER_SETTING_SNAPSHOT.snapshot_date = _S0.MIN_DATE - AND YEAR(CAST(USER_SETTING_SNAPSHOT.snapshot_date AS TIMESTAMP)) = 2023 +LEFT JOIN _S1 AS _S1 + ON _S0.MIN_DATE = _S1.SNAPSHOT_DATE diff --git a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql index bbb8b09d2..627792b9f 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql @@ -5,4 +5,4 @@ SELECT ) AS avg_session_duration_seconds FROM MAIN.USER_SESSIONS GROUP BY - device_type + 1 diff --git a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql index ea2e29a19..dd68d2e5c 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T1 AS ( +WITH _T0 AS ( SELECT merchant_id AS MERCHANT_ID, start_date AS START_DATE @@ -7,38 +7,29 @@ WITH _T1 AS ( SELECT MIN(START_DATE) AS MIN_START_DATE, MERCHANT_ID - FROM _T1 + FROM _T0 GROUP BY - MERCHANT_ID + 2 ), _S3 AS ( SELECT - MIN(START_DATE) AS MIN_START_DATE, - MERCHANT_ID - FROM _T1 - GROUP BY - MERCHANT_ID -), _S7 AS ( - SELECT - MAX(COUPONS.cid) AS MAX_CID, - MERCHANTS.mid AS MID - FROM MAIN.MERCHANTS AS MERCHANTS - LEFT JOIN _S3 AS _S3 - ON MERCHANTS.mid = _S3.MERCHANT_ID - JOIN MAIN.COUPONS AS COUPONS - ON COUPONS.merchant_id = MERCHANTS.mid AND COUPONS.start_date = _S3.MIN_START_DATE + MAX(cid) AS MAX_CID, + merchant_id AS MERCHANT_ID, + start_date AS START_DATE + FROM MAIN.COUPONS GROUP BY - MERCHANTS.mid + 2, + 3 ) SELECT MERCHANTS.mid AS merchants_id, MERCHANTS.created_at AS merchant_registration_date, _S1.MIN_START_DATE AS earliest_coupon_start_date, - _S7.MAX_CID AS earliest_coupon_id + _S3.MAX_CID AS earliest_coupon_id FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _S1 AS _S1 ON MERCHANTS.mid = _S1.MERCHANT_ID -LEFT JOIN _S7 AS _S7 - ON MERCHANTS.mid = _S7.MID -JOIN _T1 AS _S9 - ON MERCHANTS.mid = _S9.MERCHANT_ID - AND _S9.START_DATE <= DATEADD(YEAR, 1, CAST(MERCHANTS.created_at AS TIMESTAMP)) +LEFT JOIN _S3 AS _S3 + ON MERCHANTS.mid = _S3.MERCHANT_ID AND _S1.MIN_START_DATE = _S3.START_DATE +JOIN _T0 AS _S5 + ON MERCHANTS.mid = _S5.MERCHANT_ID + AND _S5.START_DATE <= DATEADD(YEAR, 1, CAST(MERCHANTS.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql index 732b7b878..d36e88502 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql @@ -7,7 +7,7 @@ WITH _u_0 AS ( AND NOTIFICATIONS.created_at >= USERS.created_at AND NOTIFICATIONS.user_id = USERS.uid GROUP BY - NOTIFICATIONS.user_id + 1 ) SELECT USERS.username, diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index 3db319864..da1449442 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -1,12 +1,14 @@ -WITH _T1 AS ( +WITH _T2 AS ( SELECT DATEDIFF( DAY, - CAST(LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) AS DATETIME), + CAST(LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name, ERAS.er_name ORDER BY EVENTS.ev_dt) AS DATETIME), CAST(EVENTS.ev_dt AS DATETIME) ) AS DAY_GAP, + ERAS.er_end_year AS ER_END_YEAR, ERAS.er_name AS ER_NAME, - ERAS.er_start_year AS ER_START_YEAR + ERAS.er_start_year AS ER_START_YEAR, + EVENTS.ev_dt AS EV_DT FROM ERAS AS ERAS JOIN EVENTS AS EVENTS ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) @@ -15,8 +17,11 @@ WITH _T1 AS ( SELECT ER_NAME AS era_name, AVG(DAY_GAP) AS avg_event_gap -FROM _T1 +FROM _T2 +WHERE + ER_END_YEAR > YEAR(CAST(EV_DT AS TIMESTAMP)) + AND ER_START_YEAR <= YEAR(CAST(EV_DT AS TIMESTAMP)) GROUP BY - ER_NAME + 1 ORDER BY ANY_VALUE(ER_START_YEAR) NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql index 810fa39c0..65ed9d6f2 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -1,5 +1,5 @@ SELECT - ANY_VALUE(SEASONS.s_name) AS season_name, + SEASONS.s_name AS season_name, COUNT(*) AS n_events FROM SEASONS AS SEASONS JOIN EVENTS AS EVENTS @@ -7,7 +7,7 @@ JOIN EVENTS AS EVENTS OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) GROUP BY - SEASONS.s_name + 1 ORDER BY - N_EVENTS DESC NULLS LAST, - SEASON_NAME NULLS FIRST + 2 DESC NULLS LAST, + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index 43bc660a8..e6ae52b96 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -30,8 +30,8 @@ WITH _S0 AS ( OR _S7.S_MONTH3 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) ) GROUP BY - _S2.S_NAME, - SEARCHES.search_id + 2, + 3 ), _S16 AS ( SELECT COUNT(*) AS N_ROWS, @@ -47,7 +47,7 @@ WITH _S0 AS ( LEFT JOIN _S9 AS _S9 ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.S_NAME = _S9.S_NAME GROUP BY - _S0.S_NAME + 3 ), _S17 AS ( SELECT COUNT(*) AS N_ROWS, @@ -65,7 +65,7 @@ WITH _S0 AS ( OR _S15.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) OR _S15.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY - _S10.S_NAME + 3 ) SELECT _S16.S_NAME AS season_name, @@ -79,4 +79,4 @@ FROM _S16 AS _S16 LEFT JOIN _S17 AS _S17 ON _S16.S_NAME = _S17.S_NAME ORDER BY - _S16.S_NAME NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql index 031ee65f6..7e70f42ff 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql @@ -8,8 +8,8 @@ WITH _T1 AS ( ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY - SEARCHES.search_engine, - TIMES.t_name + 2, + 3 QUALIFY ROW_NUMBER() OVER (PARTITION BY TIMES.t_name ORDER BY COUNT(*) DESC, SEARCHES.search_engine) = 1 ) @@ -19,4 +19,4 @@ SELECT N_SEARCHES AS n_searches FROM _T1 ORDER BY - T_NAME NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql index 6e64c1dfb..803dccc7f 100644 --- a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql @@ -9,8 +9,8 @@ WITH _T0 AS ( JOIN USERS AS USERS ON SEARCHES.search_user_id = USERS.user_id GROUP BY - EVENTS.ev_typ, - USERS.user_region + 2, + 3 QUALIFY ROW_NUMBER() OVER (PARTITION BY USERS.user_region ORDER BY COUNT(DISTINCT SEARCHES.search_id) DESC) = 1 ) diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql index f5cceb2f4..22cd7db4f 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -12,7 +12,7 @@ WITH _S0 AS ( AND ERAS.er_name = 'Cold War' AND ERAS.er_start_year <= YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) GROUP BY - _S2.EV_KEY + 1 ) SELECT COUNT(*) AS n_events diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql index b1dfa6b1d..5acfed6ba 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql @@ -24,6 +24,6 @@ JOIN _S0 AS _S7 GROUP BY _S0.USER_ID ORDER BY - N_OTHER_USERS DESC NULLS LAST, - ANY_VALUE(_S0.USER_NAME) NULLS FIRST + 2 DESC NULLS LAST, + 1 NULLS FIRST LIMIT 7 diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql index 8809270b1..eeaeb8d4e 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -3,10 +3,11 @@ WITH _S0 AS ( user_id AS USER_ID, user_name AS USER_NAME FROM USERS -), _T1 AS ( +), _T2 AS ( SELECT - ANY_VALUE(_S0.USER_ID) AS ANYTHING_USER_ID, - ANY_VALUE(_S0.USER_NAME) AS ANYTHING_USER_NAME + ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID, + ANY_VALUE(_S0.USER_NAME) AS ANYTHING_USER_NAME, + _S0.USER_ID FROM _S0 AS _S0 JOIN SEARCHES AS SEARCHES ON SEARCHES.search_user_id = _S0.USER_ID @@ -18,15 +19,17 @@ WITH _S0 AS ( ON SEARCHES_2.search_user_id = _S7.USER_ID AND _S0.USER_NAME <> _S7.USER_NAME GROUP BY SEARCHES.search_id, - _S0.USER_ID + 3 ) SELECT ANY_VALUE(ANYTHING_USER_NAME) AS user_name, COUNT(*) AS n_searches -FROM _T1 +FROM _T2 +WHERE + ANYTHING_SEARCH_USER_ID = USER_ID GROUP BY - ANYTHING_USER_ID + USER_ID ORDER BY - N_SEARCHES DESC NULLS LAST, - ANY_VALUE(ANYTHING_USER_NAME) NULLS FIRST + 2 DESC NULLS LAST, + 1 NULLS FIRST LIMIT 4 diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql index cfde1fc40..0d4297b4d 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -1,17 +1,17 @@ WITH _T0 AS ( SELECT - ANY_VALUE(TIMES.t_name) AS ANYTHING_T_NAME, ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, - COUNT(*) AS N_ROWS + COUNT(*) AS N_ROWS, + TIMES.t_name AS T_NAME FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY - TIMES.t_name + 3 ) SELECT - ANYTHING_T_NAME AS tod, + T_NAME AS tod, ROUND(( 100.0 * N_ROWS ) / SUM(N_ROWS) OVER (), 2) AS pct_searches diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql index f9e12c3b9..ba9737406 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -1,18 +1,18 @@ WITH _T0 AS ( SELECT - ANY_VALUE(TIMES.t_name) AS ANYTHING_T_NAME, ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, AVG(SEARCHES.search_num_results) AS AVG_SEARCH_NUM_RESULTS, - COUNT(*) AS N_ROWS + COUNT(*) AS N_ROWS, + TIMES.t_name AS T_NAME FROM TIMES AS TIMES JOIN SEARCHES AS SEARCHES ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY - TIMES.t_name + 4 ) SELECT - ANYTHING_T_NAME AS tod, + T_NAME AS tod, ROUND(( 100.0 * N_ROWS ) / SUM(N_ROWS) OVER (), 2) AS pct_searches, diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql index c3c5b89dd..eb48862b3 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql @@ -10,6 +10,6 @@ JOIN SEASONS AS SEASONS ) AND SEASONS.s_name = 'Summer' GROUP BY - EVENTS.ev_typ + 1 ORDER BY - EVENTS.ev_typ NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql index ca3a1d1c5..924c69027 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql @@ -13,7 +13,7 @@ WITH _S2 AS ( YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) <= 2019 AND YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) >= 2010 GROUP BY - SEARCHES.search_engine + 2 ) SELECT _S2.SEARCH_ENGINE AS engine, @@ -22,4 +22,4 @@ FROM _S2 AS _S2 LEFT JOIN _S3 AS _S3 ON _S2.SEARCH_ENGINE = _S3.SEARCH_ENGINE ORDER BY - _S2.SEARCH_ENGINE NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql index 3fd205f61..6c9e77849 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -16,7 +16,7 @@ WITH _T0 AS ( ANYTHING_SEARCH_USER_ID FROM _T0 GROUP BY - ANYTHING_SEARCH_USER_ID + 2 ) SELECT USERS.user_name, @@ -25,6 +25,6 @@ FROM USERS AS USERS JOIN _S5 AS _S5 ON USERS.user_id = _S5.ANYTHING_SEARCH_USER_ID ORDER BY - N_COLD_WAR_SEARCHES DESC NULLS LAST, - USER_NAME NULLS FIRST + 2 DESC NULLS LAST, + 1 NULLS FIRST LIMIT 3 diff --git a/tests/test_sql_refsols/extract_colors_snowflake.sql b/tests/test_sql_refsols/extract_colors_snowflake.sql index ead5cca20..a78c12923 100644 --- a/tests/test_sql_refsols/extract_colors_snowflake.sql +++ b/tests/test_sql_refsols/extract_colors_snowflake.sql @@ -8,5 +8,5 @@ SELECT UPPER(SPLIT_PART(p_name, ' ', 6)) AS c6 FROM TPCH.PART ORDER BY - p_partkey NULLS FIRST + 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql index 6706daea3..cc39b84ab 100644 --- a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql +++ b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql @@ -5,5 +5,5 @@ SELECT CEIL(ps_supplycost * FLOOR(ps_availqty)) AS total_cost FROM TPCH.PARTSUPP ORDER BY - CEIL(ps_supplycost * FLOOR(ps_availqty)) DESC NULLS LAST + 4 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/get_part_multiple_snowflake.sql b/tests/test_sql_refsols/get_part_multiple_snowflake.sql index ce5991f8e..b1b83fa0d 100644 --- a/tests/test_sql_refsols/get_part_multiple_snowflake.sql +++ b/tests/test_sql_refsols/get_part_multiple_snowflake.sql @@ -22,4 +22,4 @@ FROM MAIN.SBCUSTOMER WHERE CAST(SUBSTRING(sbcustid, 2) AS BIGINT) <= 4 ORDER BY - CAST(SUBSTRING(sbcustid, 2) AS BIGINT) NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/hour_minute_day_snowflake.sql b/tests/test_sql_refsols/hour_minute_day_snowflake.sql index 07b3a77e5..278a2c7c3 100644 --- a/tests/test_sql_refsols/hour_minute_day_snowflake.sql +++ b/tests/test_sql_refsols/hour_minute_day_snowflake.sql @@ -8,4 +8,4 @@ JOIN MAIN.SBTICKER AS SBTICKER ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid AND SBTICKER.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') ORDER BY - SBTRANSACTION.sbtxid NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql index 09e1c1252..696a66e0a 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql @@ -8,7 +8,7 @@ WITH _S3 AS ( c_nationkey AS C_NATIONKEY FROM TPCH.CUSTOMER GROUP BY - c_nationkey + 6 ) SELECT NATION.n_name AS nation_name, @@ -23,4 +23,4 @@ JOIN TPCH.REGION AS REGION JOIN _S3 AS _S3 ON NATION.n_nationkey = _S3.C_NATIONKEY ORDER BY - NATION.n_name NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/part_cross_part_a_snowflake.sql b/tests/test_sql_refsols/part_cross_part_a_snowflake.sql new file mode 100644 index 000000000..0505c200f --- /dev/null +++ b/tests/test_sql_refsols/part_cross_part_a_snowflake.sql @@ -0,0 +1,35 @@ +WITH _S0 AS ( + SELECT DISTINCT + sbtickerexchange AS SBTICKEREXCHANGE + FROM MAIN.SBTICKER +), _S9 AS ( + SELECT + COUNT(*) AS N_ROWS, + SBCUSTOMER.sbcustid AS SBCUSTID, + _S2.SBTICKEREXCHANGE + FROM _S0 AS _S2 + CROSS JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerexchange = _S2.SBTICKEREXCHANGE + AND SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + GROUP BY + 2, + 3 +) +SELECT + SBCUSTOMER.sbcuststate AS state, + _S0.SBTICKEREXCHANGE AS exchange, + COALESCE(SUM(_S9.N_ROWS), 0) AS n +FROM _S0 AS _S0 +CROSS JOIN MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S9 AS _S9 + ON SBCUSTOMER.sbcustid = _S9.SBCUSTID + AND _S0.SBTICKEREXCHANGE = _S9.SBTICKEREXCHANGE +GROUP BY + 1, + 2 +ORDER BY + 1 NULLS FIRST, + 2 NULLS FIRST diff --git a/tests/test_sql_refsols/part_cross_part_b_snowflake.sql b/tests/test_sql_refsols/part_cross_part_b_snowflake.sql new file mode 100644 index 000000000..e96e0332c --- /dev/null +++ b/tests/test_sql_refsols/part_cross_part_b_snowflake.sql @@ -0,0 +1,46 @@ +WITH _S0 AS ( + SELECT DISTINCT + sbcuststate AS SBCUSTSTATE + FROM MAIN.SBCUSTOMER +), _T2 AS ( + SELECT + sbtxdatetime AS SBTXDATETIME + FROM MAIN.SBTRANSACTION + WHERE + YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 +), _S1 AS ( + SELECT DISTINCT + DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH + FROM _T2 +), _S3 AS ( + SELECT DISTINCT + DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH + FROM _T2 +), _S9 AS ( + SELECT + COUNT(*) AS N_ROWS, + _S3.MONTH, + _S2.SBCUSTSTATE + FROM _S0 AS _S2 + CROSS JOIN _S3 AS _S3 + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 + AND _S3.MONTH = DATE_TRUNC('MONTH', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND SBCUSTOMER.sbcuststate = _S2.SBCUSTSTATE + GROUP BY + 2, + 3 +) +SELECT + _S0.SBCUSTSTATE AS state, + _S1.MONTH AS month_of_year, + SUM(COALESCE(_S9.N_ROWS, 0)) OVER (PARTITION BY _S0.SBCUSTSTATE ORDER BY _S1.MONTH ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n +FROM _S0 AS _S0 +CROSS JOIN _S1 AS _S1 +LEFT JOIN _S9 AS _S9 + ON _S0.SBCUSTSTATE = _S9.SBCUSTSTATE AND _S1.MONTH = _S9.MONTH +ORDER BY + 1 NULLS FIRST, + 2 NULLS FIRST diff --git a/tests/test_sql_refsols/part_cross_part_c_snowflake.sql b/tests/test_sql_refsols/part_cross_part_c_snowflake.sql new file mode 100644 index 000000000..8df574e96 --- /dev/null +++ b/tests/test_sql_refsols/part_cross_part_c_snowflake.sql @@ -0,0 +1,44 @@ +WITH _S0 AS ( + SELECT DISTINCT + sbcuststate AS SBCUSTSTATE + FROM MAIN.SBCUSTOMER +), _T2 AS ( + SELECT + sbtxdatetime AS SBTXDATETIME + FROM MAIN.SBTRANSACTION + WHERE + YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 +), _S1 AS ( + SELECT DISTINCT + DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH + FROM _T2 +), _S3 AS ( + SELECT DISTINCT + DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH + FROM _T2 +), _S9 AS ( + SELECT + COUNT(*) AS N_ROWS, + _S3.MONTH, + _S2.SBCUSTSTATE + FROM _S0 AS _S2 + CROSS JOIN _S3 AS _S3 + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 + AND _S3.MONTH = DATE_TRUNC('MONTH', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND SBCUSTOMER.sbcuststate = _S2.SBCUSTSTATE + GROUP BY + 2, + 3 +) +SELECT + _S0.SBCUSTSTATE AS state, + MAX(COALESCE(_S9.N_ROWS, 0)) AS max_n +FROM _S0 AS _S0 +CROSS JOIN _S1 AS _S1 +LEFT JOIN _S9 AS _S9 + ON _S0.SBCUSTSTATE = _S9.SBCUSTSTATE AND _S1.MONTH = _S9.MONTH +GROUP BY + 1 diff --git a/tests/test_sql_refsols/quantile_test_2_snowflake.sql b/tests/test_sql_refsols/quantile_test_2_snowflake.sql index 779e0818e..1054e1756 100644 --- a/tests/test_sql_refsols/quantile_test_2_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_2_snowflake.sql @@ -5,7 +5,7 @@ WITH _S0 AS ( n_regionkey AS N_REGIONKEY FROM TPCH.NATION ORDER BY - N_NAME NULLS FIRST + 1 NULLS FIRST LIMIT 5 ), _S5 AS ( SELECT @@ -33,7 +33,7 @@ WITH _S0 AS ( ON CUSTOMER.c_custkey = ORDERS.o_custkey AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 GROUP BY - CUSTOMER.c_nationkey + 10 ) SELECT REGION.r_name AS region_name, @@ -53,4 +53,4 @@ JOIN TPCH.REGION AS REGION LEFT JOIN _S5 AS _S5 ON _S0.N_NATIONKEY = _S5.C_NATIONKEY ORDER BY - _S0.N_NAME NULLS FIRST + 2 NULLS FIRST diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql index 4c35ec1b0..a3d6f89f5 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql @@ -10,7 +10,7 @@ WITH _S3 AS ( JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_nationkey = NATION.n_nationkey GROUP BY - NATION.n_regionkey + 6 ) SELECT REGION.r_name AS region_name, @@ -23,4 +23,4 @@ FROM TPCH.REGION AS REGION JOIN _S3 AS _S3 ON REGION.r_regionkey = _S3.N_REGIONKEY ORDER BY - REGION.r_name NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/simple_var_std_snowflake.sql b/tests/test_sql_refsols/simple_var_std_snowflake.sql index 99c9ae601..d864bf2b5 100644 --- a/tests/test_sql_refsols/simple_var_std_snowflake.sql +++ b/tests/test_sql_refsols/simple_var_std_snowflake.sql @@ -7,7 +7,7 @@ WITH _S1 AS ( s_nationkey AS S_NATIONKEY FROM TPCH.SUPPLIER GROUP BY - s_nationkey + 5 ) SELECT NATION.n_name AS name, diff --git a/tests/test_sql_refsols/smoke_a_snowflake.sql b/tests/test_sql_refsols/smoke_a_snowflake.sql index 2096a0b5f..0eaf982f4 100644 --- a/tests/test_sql_refsols/smoke_a_snowflake.sql +++ b/tests/test_sql_refsols/smoke_a_snowflake.sql @@ -47,5 +47,5 @@ SELECT ROUND(POWER(GREATEST(p_size, 10), 0.5), 3) AS i FROM TPCH.PART ORDER BY - p_partkey NULLS FIRST + 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_b_mysql.sql b/tests/test_sql_refsols/smoke_b_mysql.sql index c48920a85..5b4b461a1 100644 --- a/tests/test_sql_refsols/smoke_b_mysql.sql +++ b/tests/test_sql_refsols/smoke_b_mysql.sql @@ -34,8 +34,20 @@ SELECT ) AS DATETIME), INTERVAL '25' HOUR ) AS d, - DATE(CAST('2025-01-01 12:35:13' AS DATETIME)) AS e, - CAST('2025-07-22' AS DATE) AS f, + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(MINUTE, '0000-01-01 00:00:00', CAST('2025-01-01 12:35:13' AS DATETIME))) MINUTE + ) AS e, + DATE_ADD( + DATE_ADD( + DATE_ADD( + '0000-01-01 00:00:00', + INTERVAL (TIMESTAMPDIFF(HOUR, '0000-01-01 00:00:00', CAST('2025-01-01 12:35:13' AS DATETIME))) HOUR + ), + INTERVAL '2' QUARTER + ), + INTERVAL '3' WEEK + ) AS f, CAST(CAST('2025-01-01 12:35:13' AS DATETIME) AS DATE) AS g, CONCAT_WS( ';', diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql index 6cb86a8a8..33ca38803 100644 --- a/tests/test_sql_refsols/smoke_b_snowflake.sql +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -68,5 +68,5 @@ WHERE AND ENDSWITH(o_clerk, '5') AND STARTSWITH(o_orderpriority, '3') ORDER BY - o_orderkey NULLS FIRST + 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_d_snowflake.sql b/tests/test_sql_refsols/smoke_d_snowflake.sql index a524b7104..3c14fdd8e 100644 --- a/tests/test_sql_refsols/smoke_d_snowflake.sql +++ b/tests/test_sql_refsols/smoke_d_snowflake.sql @@ -25,5 +25,5 @@ JOIN TPCH.REGION AS REGION JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_nationkey = NATION.n_nationkey ORDER BY - CUSTOMER.c_custkey NULLS FIRST + 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql index 1cd7bc98c..6f5f383d2 100644 --- a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql @@ -6,7 +6,7 @@ WITH _S7 AS ( JOIN MAIN.ERRORS AS ERRORS ON ERRORS.er_id = INCIDENTS.in_error_id AND ERRORS.er_name = 'Battery Failure' GROUP BY - INCIDENTS.in_device_id + 2 ) SELECT COUNTRIES.co_name AS country_name, @@ -20,10 +20,10 @@ JOIN MAIN.PRODUCTS AS PRODUCTS LEFT JOIN _S7 AS _S7 ON DEVICES.de_id = _S7.IN_DEVICE_ID GROUP BY - COUNTRIES.co_name, - PRODUCTS.pr_name + 1, + 2 ORDER BY - ROUND(COALESCE(SUM(_S7.N_ROWS), 0) / COUNT(*), 2) DESC NULLS LAST, - PRODUCTS.pr_name NULLS FIRST, - COUNTRIES.co_name NULLS FIRST + 3 DESC NULLS LAST, + 2 NULLS FIRST, + 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql index 85d28ffdf..cc0735ab8 100644 --- a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql @@ -9,4 +9,4 @@ SELECT FROM MAIN.COUNTRIES AS COUNTRIES CROSS JOIN _S1 AS _S1 ORDER BY - COUNTRIES.co_name NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql index 630040a83..a51c012c6 100644 --- a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql @@ -13,7 +13,7 @@ WITH _S0 AS ( in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS GROUP BY - in_device_id + 2 ), _S9 AS ( SELECT COUNT(*) AS N_ROWS, @@ -28,8 +28,8 @@ WITH _S0 AS ( LEFT JOIN _S7 AS _S7 ON DEVICES.de_id = _S7.IN_DEVICE_ID GROUP BY - _S3.CO_ID, - _S2.CO_ID + 3, + 4 ) SELECT _S0.CO_NAME AS factory_country, @@ -42,7 +42,5 @@ CROSS JOIN _S0 AS _S1 LEFT JOIN _S9 AS _S9 ON _S0.CO_ID = _S9.CO_ID AND _S1.CO_ID = _S9._ID_3 ORDER BY - ROUND(( - 1.0 * COALESCE(_S9.SUM_N_ROWS, 0) - ) / COALESCE(_S9.N_ROWS, 0), 2) DESC NULLS LAST + 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql index 61579f8a4..80d74eed0 100644 --- a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql @@ -8,7 +8,7 @@ WITH _T2 AS ( IN_DEVICE_ID FROM _T2 GROUP BY - IN_DEVICE_ID + 2 ), _S3 AS ( SELECT COUNT(*) AS N_ROWS, @@ -18,14 +18,14 @@ WITH _T2 AS ( LEFT JOIN _S1 AS _S1 ON DEVICES.de_id = _S1.IN_DEVICE_ID GROUP BY - DEVICES.de_production_country_id + 3 ), _S5 AS ( SELECT COUNT(*) AS N_ROWS, IN_DEVICE_ID FROM _T2 GROUP BY - IN_DEVICE_ID + 2 ), _S7 AS ( SELECT COUNT(*) AS N_ROWS, @@ -35,14 +35,14 @@ WITH _T2 AS ( LEFT JOIN _S5 AS _S5 ON DEVICES.de_id = _S5.IN_DEVICE_ID GROUP BY - DEVICES.de_purchase_country_id + 3 ), _S11 AS ( SELECT COUNT(*) AS N_ROWS, IN_DEVICE_ID FROM _T2 GROUP BY - IN_DEVICE_ID + 2 ), _S13 AS ( SELECT COUNT(*) AS N_ROWS, @@ -54,7 +54,7 @@ WITH _T2 AS ( LEFT JOIN _S11 AS _S11 ON DEVICES.de_id = _S11.IN_DEVICE_ID GROUP BY - USERS.us_country_id + 3 ) SELECT COUNTRIES.co_name AS country_name, @@ -69,4 +69,4 @@ JOIN _S7 AS _S7 LEFT JOIN _S13 AS _S13 ON COUNTRIES.co_id = _S13.US_COUNTRY_ID ORDER BY - COUNTRIES.co_name NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql index 1c8e6a2b3..3fbc93593 100644 --- a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql @@ -8,7 +8,7 @@ WITH _S5 AS ( JOIN MAIN.PRODUCTS AS PRODUCTS ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' GROUP BY - INCIDENTS.in_error_id + 2 ) SELECT ERRORS.er_name AS error, @@ -19,6 +19,4 @@ FROM MAIN.ERRORS AS ERRORS LEFT JOIN _S5 AS _S5 ON ERRORS.er_id = _S5.IN_ERROR_ID ORDER BY - ROUND(( - 100.0 * COALESCE(_S5.N_ROWS, 0) - ) / SUM(COALESCE(_S5.N_ROWS, 0)) OVER (), 2) DESC NULLS LAST + 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql index e451ce1b7..130589712 100644 --- a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql @@ -4,7 +4,7 @@ WITH _S3 AS ( in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS GROUP BY - in_device_id + 2 ), _S5 AS ( SELECT COALESCE(SUM(_S3.N_ROWS), 0) AS SUM_N_INCIDENTS, @@ -16,7 +16,7 @@ WITH _S3 AS ( LEFT JOIN _S3 AS _S3 ON DEVICES.de_id = _S3.IN_DEVICE_ID GROUP BY - DEVICES.de_production_country_id + 2 ) SELECT COUNTRIES.co_name AS country, @@ -25,4 +25,4 @@ FROM MAIN.COUNTRIES AS COUNTRIES LEFT JOIN _S5 AS _S5 ON COUNTRIES.co_id = _S5.DE_PRODUCTION_COUNTRY_ID ORDER BY - COUNTRIES.co_name NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql index 8472a793a..9b7d3a13f 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -1,5 +1,5 @@ SELECT - ANY_VALUE(CALENDAR.ca_dt) AS start_of_period, + CALENDAR.ca_dt AS start_of_period, COUNT(*) AS n_purchases FROM MAIN.CALENDAR AS CALENDAR JOIN MAIN.CALENDAR AS CALENDAR_2 @@ -10,8 +10,8 @@ JOIN MAIN.DEVICES AS DEVICES WHERE YEAR(CAST(CALENDAR.ca_dt AS TIMESTAMP)) = 2024 GROUP BY - CALENDAR.ca_dt + 1 ORDER BY - N_PURCHASES DESC NULLS LAST, - START_OF_PERIOD NULLS FIRST + 2 DESC NULLS LAST, + 1 NULLS FIRST LIMIT 1 diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index e5078e80f..0d7c08ce3 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -4,7 +4,7 @@ WITH _S0 AS ( de_product_id AS DE_PRODUCT_ID FROM MAIN.DEVICES GROUP BY - de_product_id + 2 ), _S1 AS ( SELECT pr_id AS PR_ID, @@ -18,7 +18,7 @@ WITH _S0 AS ( JOIN _S1 AS _S1 ON _S0.DE_PRODUCT_ID = _S1.PR_ID GROUP BY - YEAR(CAST(_S1.PR_RELEASE AS TIMESTAMP)) + 1 ), _S7 AS ( SELECT COUNT(*) AS N_ROWS, @@ -29,7 +29,7 @@ WITH _S0 AS ( JOIN MAIN.INCIDENTS AS INCIDENTS ON DEVICES.de_id = INCIDENTS.in_device_id GROUP BY - YEAR(CAST(_S3.PR_RELEASE AS TIMESTAMP)) + 2 ) SELECT _S6.RELEASE_YEAR AS year, @@ -38,4 +38,4 @@ FROM _S6 AS _S6 LEFT JOIN _S7 AS _S7 ON _S6.RELEASE_YEAR = _S7.RELEASE_YEAR ORDER BY - _S6.RELEASE_YEAR NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql index 01ddc053c..bad452e73 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql @@ -4,7 +4,7 @@ WITH _S3 AS ( in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS GROUP BY - in_device_id + 2 ) SELECT PRODUCTS.pr_brand AS brand, @@ -15,6 +15,6 @@ JOIN MAIN.PRODUCTS AS PRODUCTS LEFT JOIN _S3 AS _S3 ON DEVICES.de_id = _S3.IN_DEVICE_ID GROUP BY - PRODUCTS.pr_brand + 1 ORDER BY - PRODUCTS.pr_brand NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index 789e05e25..dfae7b184 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -23,7 +23,7 @@ WITH _T2 AS ( JOIN _T5 AS _T5 ON DEVICES.de_production_country_id = _T5.CO_ID GROUP BY - _T4.CA_DT + 2 ), _S15 AS ( SELECT COUNT(*) AS N_ROWS, @@ -36,24 +36,27 @@ WITH _T2 AS ( JOIN _T5 AS _T8 ON DEVICES.de_production_country_id = _T8.CO_ID GROUP BY - _T7.CA_DT + 2 +), _T0 AS ( + SELECT + MONTH(CAST(_T2.CA_DT AS TIMESTAMP)) AS MONTH, + SUM(_S7.N_ROWS) AS SUM_EXPR_3, + SUM(_S15.N_ROWS) AS SUM_N_ROWS, + YEAR(CAST(_T2.CA_DT AS TIMESTAMP)) AS YEAR + FROM _T2 AS _T2 + LEFT JOIN _S7 AS _S7 + ON _S7.CA_DT = _T2.CA_DT + LEFT JOIN _S15 AS _S15 + ON _S15.CA_DT = _T2.CA_DT + GROUP BY + 1, + 4 ) SELECT - CONCAT_WS( - '-', - YEAR(CAST(_T2.CA_DT AS TIMESTAMP)), - LPAD(MONTH(CAST(_T2.CA_DT AS TIMESTAMP)), 2, '0') - ) AS month, + CONCAT_WS('-', YEAR, LPAD(MONTH, 2, '0')) AS month, ROUND(( - 1000000.0 * COALESCE(SUM(_S15.N_ROWS), 0) - ) / COALESCE(SUM(_S7.N_ROWS), 0), 2) AS ir -FROM _T2 AS _T2 -LEFT JOIN _S7 AS _S7 - ON _S7.CA_DT = _T2.CA_DT -LEFT JOIN _S15 AS _S15 - ON _S15.CA_DT = _T2.CA_DT -GROUP BY - MONTH(CAST(_T2.CA_DT AS TIMESTAMP)), - YEAR(CAST(_T2.CA_DT AS TIMESTAMP)) + 1000000.0 * COALESCE(SUM_N_ROWS, 0) + ) / COALESCE(SUM_EXPR_3, 0), 2) AS ir +FROM _T0 ORDER BY - MONTH NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql index 0f4cb915e..a5931737f 100644 --- a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql @@ -1,31 +1,29 @@ -WITH _S3 AS ( +WITH _S1 AS ( SELECT COUNT(*) AS N_ROWS, in_device_id AS IN_DEVICE_ID FROM MAIN.INCIDENTS GROUP BY - in_device_id -), _S5 AS ( + 2 +), _S3 AS ( SELECT COUNT(*) AS N_ROWS, - SUM(_S3.N_ROWS) AS SUM_N_INCIDENTS, + SUM(_S1.N_ROWS) AS SUM_N_INCIDENTS, DEVICES.de_product_id AS DE_PRODUCT_ID FROM MAIN.DEVICES AS DEVICES - JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id - LEFT JOIN _S3 AS _S3 - ON DEVICES.de_id = _S3.IN_DEVICE_ID + LEFT JOIN _S1 AS _S1 + ON DEVICES.de_id = _S1.IN_DEVICE_ID GROUP BY - DEVICES.de_product_id + 3 ) SELECT PRODUCTS.pr_name AS product, PRODUCTS.pr_brand AS product_brand, PRODUCTS.pr_type AS product_type, - ROUND(COALESCE(_S5.SUM_N_INCIDENTS, 0) / _S5.N_ROWS, 2) AS ir + ROUND(COALESCE(_S3.SUM_N_INCIDENTS, 0) / _S3.N_ROWS, 2) AS ir FROM MAIN.PRODUCTS AS PRODUCTS -JOIN _S5 AS _S5 - ON PRODUCTS.pr_id = _S5.DE_PRODUCT_ID +JOIN _S3 AS _S3 + ON PRODUCTS.pr_id = _S3.DE_PRODUCT_ID ORDER BY - ROUND(COALESCE(_S5.SUM_N_INCIDENTS, 0) / _S5.N_ROWS, 2) DESC NULLS LAST + 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index e35617cfd..48bdb69eb 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -8,7 +8,7 @@ WITH _S14 AS ( SELECT ca_dt AS CA_DT FROM MAIN.CALENDAR -), _T6 AS ( +), _T5 AS ( SELECT pr_id AS PR_ID, pr_name AS PR_NAME @@ -24,10 +24,10 @@ WITH _S14 AS ( ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) JOIN MAIN.DEVICES AS DEVICES ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN _T6 AS _T6 - ON DEVICES.de_product_id = _T6.PR_ID + JOIN _T5 AS _T5 + ON DEVICES.de_product_id = _T5.PR_ID GROUP BY - _S0.CA_DT + 2 ), _S13 AS ( SELECT COUNT(*) AS N_ROWS, @@ -35,49 +35,49 @@ WITH _S14 AS ( FROM _S6 AS _S8 JOIN MAIN.DEVICES AS DEVICES ON _S8.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - JOIN _T6 AS _T8 - ON DEVICES.de_product_id = _T8.PR_ID + JOIN _T5 AS _T7 + ON DEVICES.de_product_id = _T7.PR_ID GROUP BY - _S8.CA_DT + 2 ), _S15 AS ( SELECT SUM(_S7.N_ROWS) AS SUM_EXPR_4, SUM(_S13.N_ROWS) AS SUM_N_ROWS, - YEAR(CAST(_S6.CA_DT AS TIMESTAMP)) AS YEAR + YEAR(CAST(_S6.CA_DT AS TIMESTAMP)) AS YEAR_1 FROM _S6 AS _S6 LEFT JOIN _S7 AS _S7 ON _S6.CA_DT = _S7.CA_DT LEFT JOIN _S13 AS _S13 ON _S13.CA_DT = _S6.CA_DT GROUP BY - YEAR(CAST(_S6.CA_DT AS TIMESTAMP)) + 3 ) SELECT - _S15.YEAR - YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) AS years_since_release, + _S15.YEAR_1 - YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) AS years_since_release, ROUND( - SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS cum_ir, ROUND( ( 100.0 * ( - COALESCE(_S15.SUM_N_ROWS, 0) - LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR) + COALESCE(_S15.SUM_N_ROWS, 0) - LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR_1) ) - ) / LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR), + ) / LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR_1), 2 ) AS pct_bought_change, ROUND( ( 100.0 * ( - COALESCE(_S15.SUM_EXPR_4, 0) - LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR) + COALESCE(_S15.SUM_EXPR_4, 0) - LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR_1) ) - ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR), + ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR_1), 2 ) AS pct_incident_change, COALESCE(_S15.SUM_N_ROWS, 0) AS bought, COALESCE(_S15.SUM_EXPR_4, 0) AS incidents FROM _S14 AS _S14 JOIN _S15 AS _S15 - ON _S15.YEAR >= YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) + ON _S15.YEAR_1 >= YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) ORDER BY - _S15.YEAR - YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index 0cc826cc8..21b47479a 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -10,7 +10,7 @@ WITH _S2 AS ( JOIN MAIN.DEVICES AS DEVICES ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) GROUP BY - _S0.CA_DT + 2 ), _S7 AS ( SELECT COUNT(*) AS N_ROWS, @@ -19,7 +19,7 @@ WITH _S2 AS ( JOIN MAIN.INCIDENTS AS INCIDENTS ON _S4.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) GROUP BY - _S4.CA_DT + 2 ), _T1 AS ( SELECT SUM(_S3.N_ROWS) AS SUM_EXPR_3, @@ -31,7 +31,7 @@ WITH _S2 AS ( LEFT JOIN _S7 AS _S7 ON _S2.CA_DT = _S7.CA_DT GROUP BY - YEAR(CAST(_S2.CA_DT AS TIMESTAMP)) + 3 ) SELECT YEAR AS yr, @@ -61,4 +61,4 @@ FROM _T1 WHERE NOT SUM_EXPR_3 IS NULL AND SUM_EXPR_3 > 0 ORDER BY - YEAR NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index 346c1ea25..a37249290 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -20,4 +20,4 @@ SELECT SBTXDATETIME AS date_time FROM _T1 ORDER BY - SBTXDATETIME NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql index 44fc31a7c..c455acda0 100644 --- a/tests/test_sql_refsols/tpch_q10_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -11,7 +11,7 @@ WITH _S3 AS ( QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 4 AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY - ORDERS.o_custkey + 2 ) SELECT CUSTOMER.c_custkey AS C_CUSTKEY, @@ -28,6 +28,6 @@ LEFT JOIN _S3 AS _S3 JOIN TPCH.NATION AS NATION ON CUSTOMER.c_nationkey = NATION.n_nationkey ORDER BY - COALESCE(_S3.SUM_EXPR_1, 0) DESC NULLS LAST, - C_CUSTKEY NULLS FIRST + 3 DESC NULLS LAST, + 1 NULLS FIRST LIMIT 20 diff --git a/tests/test_sql_refsols/tpch_q11_snowflake.sql b/tests/test_sql_refsols/tpch_q11_snowflake.sql index f56bbbdd3..74543ab46 100644 --- a/tests/test_sql_refsols/tpch_q11_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q11_snowflake.sql @@ -3,7 +3,7 @@ WITH _S0 AS ( s_nationkey AS S_NATIONKEY, s_suppkey AS S_SUPPKEY FROM TPCH.SUPPLIER -), _T3 AS ( +), _T2 AS ( SELECT n_name AS N_NAME, n_nationkey AS N_NATIONKEY @@ -16,8 +16,8 @@ WITH _S0 AS ( FROM TPCH.PARTSUPP AS PARTSUPP JOIN _S0 AS _S0 ON PARTSUPP.ps_suppkey = _S0.S_SUPPKEY - JOIN _T3 AS _T3 - ON _S0.S_NATIONKEY = _T3.N_NATIONKEY + JOIN _T2 AS _T2 + ON _S0.S_NATIONKEY = _T2.N_NATIONKEY ), _S9 AS ( SELECT SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_EXPR_2, @@ -25,10 +25,10 @@ WITH _S0 AS ( FROM TPCH.PARTSUPP AS PARTSUPP JOIN _S0 AS _S4 ON PARTSUPP.ps_suppkey = _S4.S_SUPPKEY - JOIN _T3 AS _T5 - ON _S4.S_NATIONKEY = _T5.N_NATIONKEY + JOIN _T2 AS _T4 + ON _S4.S_NATIONKEY = _T4.N_NATIONKEY GROUP BY - PARTSUPP.ps_partkey + 2 ) SELECT _S9.PS_PARTKEY, @@ -39,5 +39,5 @@ JOIN _S9 AS _S9 COALESCE(_S8.SUM_METRIC, 0) * 0.0001 ) < COALESCE(_S9.SUM_EXPR_2, 0) ORDER BY - COALESCE(_S9.SUM_EXPR_2, 0) DESC NULLS LAST + 2 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql index 0f8630598..5e26c4382 100644 --- a/tests/test_sql_refsols/tpch_q12_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -13,6 +13,6 @@ WHERE ) AND YEAR(CAST(LINEITEM.l_receiptdate AS TIMESTAMP)) = 1994 GROUP BY - LINEITEM.l_shipmode + 1 ORDER BY - L_SHIPMODE NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q13_snowflake.sql b/tests/test_sql_refsols/tpch_q13_snowflake.sql index e140dff0a..17df0163e 100644 --- a/tests/test_sql_refsols/tpch_q13_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q13_snowflake.sql @@ -6,7 +6,7 @@ WITH _S1 AS ( WHERE NOT o_comment LIKE '%special%requests%' GROUP BY - o_custkey + 2 ) SELECT COALESCE(_S1.N_ROWS, 0) AS C_COUNT, @@ -15,8 +15,8 @@ FROM TPCH.CUSTOMER AS CUSTOMER LEFT JOIN _S1 AS _S1 ON CUSTOMER.c_custkey = _S1.O_CUSTKEY GROUP BY - COALESCE(_S1.N_ROWS, 0) + 1 ORDER BY - CUSTDIST DESC NULLS LAST, - COALESCE(_S1.N_ROWS, 0) DESC NULLS LAST + 2 DESC NULLS LAST, + 1 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q15_snowflake.sql b/tests/test_sql_refsols/tpch_q15_snowflake.sql index ed305ff14..41ffbc19b 100644 --- a/tests/test_sql_refsols/tpch_q15_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q15_snowflake.sql @@ -16,7 +16,7 @@ WITH _T3 AS ( L_SUPPKEY FROM _T3 GROUP BY - L_SUPPKEY + 2 ), _S2 AS ( SELECT MAX(COALESCE(_S1.SUM_EXPR_2, 0)) AS MAX_REVENUE @@ -31,7 +31,7 @@ WITH _T3 AS ( L_SUPPKEY FROM _T3 GROUP BY - L_SUPPKEY + 2 ) SELECT SUPPLIER.s_suppkey AS S_SUPPKEY, @@ -45,4 +45,4 @@ JOIN _S5 AS _S5 ON SUPPLIER.s_suppkey = _S5.L_SUPPKEY AND _S2.MAX_REVENUE = COALESCE(_S5.SUM_EXPR_3, 0) ORDER BY - S_SUPPKEY NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q16_snowflake.sql b/tests/test_sql_refsols/tpch_q16_snowflake.sql index c5d1d0112..afe61e7fe 100644 --- a/tests/test_sql_refsols/tpch_q16_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q16_snowflake.sql @@ -13,12 +13,12 @@ JOIN TPCH.PART AS PART AND PART.p_partkey = PARTSUPP.ps_partkey AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) GROUP BY - PART.p_brand, - PART.p_size, - PART.p_type + 1, + 2, + 3 ORDER BY - SUPPLIER_COUNT DESC NULLS LAST, - P_BRAND NULLS FIRST, - P_TYPE NULLS FIRST, - P_SIZE NULLS FIRST + 4 DESC NULLS LAST, + 1 NULLS FIRST, + 2 NULLS FIRST, + 3 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q18_snowflake.sql b/tests/test_sql_refsols/tpch_q18_snowflake.sql index a0bf2a546..eedd7e04e 100644 --- a/tests/test_sql_refsols/tpch_q18_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q18_snowflake.sql @@ -4,7 +4,7 @@ WITH _T1 AS ( l_orderkey AS L_ORDERKEY FROM TPCH.LINEITEM GROUP BY - l_orderkey + 2 ) SELECT CUSTOMER.c_name AS C_NAME, @@ -21,6 +21,6 @@ JOIN _T1 AS _T1 AND ORDERS.o_orderkey = _T1.L_ORDERKEY AND _T1.SUM_L_QUANTITY > 300 ORDER BY - O_TOTALPRICE DESC NULLS LAST, - O_ORDERDATE NULLS FIRST + 5 DESC NULLS LAST, + 4 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q19_snowflake.sql b/tests/test_sql_refsols/tpch_q19_snowflake.sql index 06559c11a..3e7099562 100644 --- a/tests/test_sql_refsols/tpch_q19_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q19_snowflake.sql @@ -32,31 +32,5 @@ JOIN TPCH.PART AS PART ) AND LINEITEM.l_partkey = PART.p_partkey WHERE - ( - ( - LINEITEM.l_quantity <= 11 - AND LINEITEM.l_quantity >= 1 - AND PART.p_brand = 'Brand#12' - AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') - AND PART.p_size <= 5 - AND PART.p_size >= 1 - ) - OR ( - LINEITEM.l_quantity <= 20 - AND LINEITEM.l_quantity >= 10 - AND PART.p_brand = 'Brand#23' - AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') - AND PART.p_size <= 10 - AND PART.p_size >= 1 - ) - OR ( - LINEITEM.l_quantity <= 30 - AND LINEITEM.l_quantity >= 20 - AND PART.p_brand = 'Brand#34' - AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') - AND PART.p_size <= 15 - AND PART.p_size >= 1 - ) - ) - AND LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' + LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') diff --git a/tests/test_sql_refsols/tpch_q1_snowflake.sql b/tests/test_sql_refsols/tpch_q1_snowflake.sql index b800185c1..34e204133 100644 --- a/tests/test_sql_refsols/tpch_q1_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q1_snowflake.sql @@ -19,8 +19,8 @@ FROM TPCH.LINEITEM WHERE l_shipdate <= CAST('1998-12-01' AS DATE) GROUP BY - l_linestatus, - l_returnflag + 1, + 2 ORDER BY - L_RETURNFLAG NULLS FIRST, - L_LINESTATUS NULLS FIRST + 1 NULLS FIRST, + 2 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index efb446700..afd1a3c47 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -6,7 +6,7 @@ WITH _S3 AS ( WHERE YEAR(CAST(l_shipdate AS TIMESTAMP)) = 1994 GROUP BY - l_partkey + 2 ), _S5 AS ( SELECT PART.p_partkey AS P_PARTKEY, @@ -35,5 +35,5 @@ JOIN TPCH.NATION AS NATION JOIN _S7 AS _S7 ON SUPPLIER.s_suppkey = _S7.PS_SUPPKEY ORDER BY - S_NAME NULLS FIRST + 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql index 97d469e59..1a48842f6 100644 --- a/tests/test_sql_refsols/tpch_q21_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -1,4 +1,4 @@ -WITH _T6 AS ( +WITH _T5 AS ( SELECT l_commitdate AS L_COMMITDATE, l_linenumber AS L_LINENUMBER, @@ -10,49 +10,49 @@ WITH _T6 AS ( l_commitdate < l_receiptdate ), _T3 AS ( SELECT - ANY_VALUE(_T6.L_LINENUMBER) AS ANYTHING_L_LINENUMBER, - ANY_VALUE(_T6.L_ORDERKEY) AS ANYTHING_L_ORDERKEY, - ANY_VALUE(_T6.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, - ANY_VALUE(ORDERS.o_orderkey) AS ANYTHING_O_ORDERKEY, - ANY_VALUE(ORDERS.o_orderstatus) AS ANYTHING_O_ORDERSTATUS - FROM _T6 AS _T6 + ANY_VALUE(_T5.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, + ANY_VALUE(ORDERS.o_orderstatus) AS ANYTHING_O_ORDERSTATUS, + _T5.L_LINENUMBER, + _T5.L_ORDERKEY, + ORDERS.o_orderkey AS O_ORDERKEY + FROM _T5 AS _T5 JOIN TPCH.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _T6.L_ORDERKEY + ON ORDERS.o_orderkey = _T5.L_ORDERKEY JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T6.L_SUPPKEY + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T5.L_SUPPKEY GROUP BY - _T6.L_LINENUMBER, - _T6.L_ORDERKEY, - ORDERS.o_orderkey + 3, + 4, + 5 ), _u_0 AS ( SELECT - _T8.L_LINENUMBER AS _u_1, - _T8.L_ORDERKEY AS _u_2, + _T6.L_LINENUMBER AS _u_1, + _T6.L_ORDERKEY AS _u_2, ORDERS.o_orderkey AS _u_3 - FROM _T6 AS _T8 + FROM _T5 AS _T6 JOIN TPCH.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _T8.L_ORDERKEY + ON ORDERS.o_orderkey = _T6.L_ORDERKEY JOIN TPCH.LINEITEM AS LINEITEM ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate AND LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_suppkey <> _T8.L_SUPPKEY + AND LINEITEM.l_suppkey <> _T6.L_SUPPKEY GROUP BY - _T8.L_LINENUMBER, - _T8.L_ORDERKEY, - ORDERS.o_orderkey + 1, + 2, + 3 ), _S13 AS ( SELECT COUNT(*) AS N_ROWS, _T3.ANYTHING_L_SUPPKEY FROM _T3 AS _T3 LEFT JOIN _u_0 AS _u_0 - ON _T3.ANYTHING_L_LINENUMBER = _u_0._u_1 - AND _T3.ANYTHING_L_ORDERKEY = _u_0._u_2 - AND _T3.ANYTHING_O_ORDERKEY = _u_0._u_3 + ON _T3.L_LINENUMBER = _u_0._u_1 + AND _T3.L_ORDERKEY = _u_0._u_2 + AND _T3.O_ORDERKEY = _u_0._u_3 WHERE _T3.ANYTHING_O_ORDERSTATUS = 'F' AND _u_0._u_1 IS NULL GROUP BY - _T3.ANYTHING_L_SUPPKEY + 2 ) SELECT SUPPLIER.s_name AS S_NAME, @@ -63,6 +63,6 @@ JOIN TPCH.NATION AS NATION LEFT JOIN _S13 AS _S13 ON SUPPLIER.s_suppkey = _S13.ANYTHING_L_SUPPKEY ORDER BY - COALESCE(_S13.N_ROWS, 0) DESC NULLS LAST, - S_NAME NULLS FIRST + 2 DESC NULLS LAST, + 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q22_snowflake.sql b/tests/test_sql_refsols/tpch_q22_snowflake.sql index acaf83290..c95df37aa 100644 --- a/tests/test_sql_refsols/tpch_q22_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q22_snowflake.sql @@ -11,7 +11,7 @@ WITH _S0 AS ( o_custkey AS O_CUSTKEY FROM TPCH.ORDERS GROUP BY - o_custkey + 2 ) SELECT SUBSTRING(CUSTOMER.c_phone, 1, 2) AS CNTRY_CODE, @@ -26,6 +26,6 @@ LEFT JOIN _S3 AS _S3 WHERE _S3.N_ROWS = 0 OR _S3.N_ROWS IS NULL GROUP BY - SUBSTRING(CUSTOMER.c_phone, 1, 2) + 1 ORDER BY - CNTRY_CODE NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q2_snowflake.sql b/tests/test_sql_refsols/tpch_q2_snowflake.sql index b91ccf2fd..346be1649 100644 --- a/tests/test_sql_refsols/tpch_q2_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q2_snowflake.sql @@ -33,8 +33,8 @@ SELECT S_COMMENT FROM _T1 ORDER BY - S_ACCTBAL DESC NULLS LAST, - N_NAME NULLS FIRST, - S_NAME NULLS FIRST, - P_PARTKEY NULLS FIRST + 1 DESC NULLS LAST, + 3 NULLS FIRST, + 2 NULLS FIRST, + 4 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q3_snowflake.sql b/tests/test_sql_refsols/tpch_q3_snowflake.sql index cdfd98527..8c0db572f 100644 --- a/tests/test_sql_refsols/tpch_q3_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q3_snowflake.sql @@ -14,13 +14,11 @@ JOIN TPCH.LINEITEM AS LINEITEM WHERE ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) GROUP BY - LINEITEM.l_orderkey, - ORDERS.o_orderdate, - ORDERS.o_shippriority + 1, + 3, + 4 ORDER BY - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )), 0) DESC NULLS LAST, - O_ORDERDATE NULLS FIRST, - L_ORDERKEY NULLS FIRST + 2 DESC NULLS LAST, + 3 NULLS FIRST, + 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql index e2ca5ec0b..08e5c4532 100644 --- a/tests/test_sql_refsols/tpch_q4_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -5,7 +5,7 @@ WITH _u_0 AS ( WHERE l_commitdate < l_receiptdate GROUP BY - l_orderkey + 1 ) SELECT ORDERS.o_orderpriority AS O_ORDERPRIORITY, @@ -18,6 +18,6 @@ WHERE AND QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 3 AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY - ORDERS.o_orderpriority + 1 ORDER BY - O_ORDERPRIORITY NULLS FIRST + 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q5_snowflake.sql b/tests/test_sql_refsols/tpch_q5_snowflake.sql index 337ca2a1b..ceadd5291 100644 --- a/tests/test_sql_refsols/tpch_q5_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q5_snowflake.sql @@ -27,6 +27,4 @@ JOIN _S11 AS _S11 GROUP BY NATION.n_nationkey ORDER BY - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )), 0) DESC NULLS LAST + 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index 7020673d4..2d651a0f8 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -1,22 +1,18 @@ -WITH _S1 AS ( +WITH _S9 AS ( SELECT - n_name AS N_NAME, - n_nationkey AS N_NATIONKEY - FROM TPCH.NATION - WHERE - n_name = 'FRANCE' OR n_name = 'GERMANY' -), _S9 AS ( - SELECT - _S7.N_NAME, + NATION.n_name AS N_NAME, ORDERS.o_orderkey AS O_ORDERKEY FROM TPCH.ORDERS AS ORDERS JOIN TPCH.CUSTOMER AS CUSTOMER ON CUSTOMER.c_custkey = ORDERS.o_custkey - JOIN _S1 AS _S7 - ON CUSTOMER.c_nationkey = _S7.N_NATIONKEY + JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey + AND ( + NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' + ) ) SELECT - _S1.N_NAME AS SUPP_NATION, + NATION.n_name AS SUPP_NATION, _S9.N_NAME AS CUST_NATION, YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) AS L_YEAR, COALESCE(SUM(LINEITEM.l_extendedprice * ( @@ -25,23 +21,26 @@ SELECT FROM TPCH.LINEITEM AS LINEITEM JOIN TPCH.SUPPLIER AS SUPPLIER ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN _S1 AS _S1 - ON SUPPLIER.s_nationkey = _S1.N_NATIONKEY +JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey JOIN _S9 AS _S9 ON LINEITEM.l_orderkey = _S9.O_ORDERKEY AND ( - _S1.N_NAME = 'FRANCE' OR _S9.N_NAME = 'FRANCE' + NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' + ) + AND ( + NATION.n_name = 'FRANCE' OR _S9.N_NAME = 'FRANCE' ) AND ( - _S1.N_NAME = 'GERMANY' OR _S9.N_NAME = 'GERMANY' + NATION.n_name = 'GERMANY' OR _S9.N_NAME = 'GERMANY' ) WHERE YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) IN (1995, 1996) GROUP BY - YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)), - _S9.N_NAME, - _S1.N_NAME + 1, + 2, + 3 ORDER BY - _S1.N_NAME NULLS FIRST, - CUST_NATION NULLS FIRST, - L_YEAR NULLS FIRST + 1 NULLS FIRST, + 2 NULLS FIRST, + 3 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql index 847aa3334..38122ff7a 100644 --- a/tests/test_sql_refsols/tpch_q8_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -31,4 +31,4 @@ JOIN TPCH.SUPPLIER AS SUPPLIER JOIN TPCH.NATION AS NATION_2 ON NATION_2.n_nationkey = SUPPLIER.s_nationkey GROUP BY - YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) + 1 diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index 56477571d..47c6ab423 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -22,9 +22,9 @@ JOIN TPCH.PARTSUPP AS PARTSUPP ON LINEITEM.l_partkey = PARTSUPP.ps_partkey AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey GROUP BY - YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)), - NATION.n_name + 1, + 2 ORDER BY - NATION.n_name NULLS FIRST, - O_YEAR DESC NULLS LAST + 1 NULLS FIRST, + 2 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/week_offset_mysql.sql b/tests/test_sql_refsols/week_offset_mysql.sql index 587f210e9..e26dedbca 100644 --- a/tests/test_sql_refsols/week_offset_mysql.sql +++ b/tests/test_sql_refsols/week_offset_mysql.sql @@ -6,7 +6,6 @@ SELECT DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '-1' SECOND), INTERVAL '2' WEEK) AS week_adj4, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' DAY), INTERVAL '2' WEEK) AS week_adj5, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '-1' MINUTE), INTERVAL '2' WEEK) AS week_adj6, - DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' MONTH), INTERVAL '2' WEEK) AS week_adj7, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' YEAR), INTERVAL '2' WEEK) AS week_adj8 FROM main.sbTransaction WHERE From 43dbdc7fd0749e5fd921ed49cdb9366470061602 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Thu, 21 Aug 2025 13:06:38 -0700 Subject: [PATCH 29/46] task script and check in connection --- tests/gen_data/sf_task.sql | 579 +++++++++++++++++++++++++++++++++++++ 1 file changed, 579 insertions(+) create mode 100644 tests/gen_data/sf_task.sql diff --git a/tests/gen_data/sf_task.sql b/tests/gen_data/sf_task.sql new file mode 100644 index 000000000..f8c1c65d6 --- /dev/null +++ b/tests/gen_data/sf_task.sql @@ -0,0 +1,579 @@ +------------------------------------ +-- 1. Create the stored procedure -- +------------------------------------ + +CREATE OR REPLACE PROCEDURE Defog.BROKER.defog_daily_update() +RETURNS STRING +LANGUAGE SQL +AS +$$ +BEGIN + + DELETE FROM DEFOG.EWALLET.USERS; + INSERT INTO DEFOG.EWALLET.USERS(uid, username, email, phone_number, created_at, user_type, status, country, address_billing, address_delivery, kyc_status) +VALUES + (1, 'john_doe', 'john.doe@email.com', '+1234567890', DATE_TRUNC('month', CURRENT_TIMESTAMP) - INTERVAL '1 month', 'individual', 'active', 'US', '123 Main St, Anytown US 12345', '123 Main St, Anytown US 12345', 'approved'), + (2, 'jane_smith', 'jane.smith@email.com', '+9876543210', DATE_TRUNC('month', CURRENT_TIMESTAMP) - INTERVAL '2 months', 'individual', 'active', 'CA', '456 Oak Rd, Toronto ON M1M2M2', '456 Oak Rd, Toronto ON M1M2M2', 'approved'), + (3, 'bizuser', 'contact@business.co', '+1234509876', '2021-06-01 09:15:00', 'business', 'active', 'FR', '12 Rue Baptiste, Paris 75001', NULL, 'approved'), + (4, 'david_miller', 'dave@personal.email', '+4477788899', '2023-03-20 18:45:00', 'individual', 'inactive', 'GB', '25 London Road, Manchester M12 4XY', '25 London Road, Manchester M12 4XY', 'pending'), + (5, 'emily_wilson', 'emily.w@gmail.com', '+8091017161', '2021-11-03 22:10:00', 'individual', 'suspended', 'AU', '72 Collins St, Melbourne VIC 3000', '19 Smith St, Brunswick VIC 3056', 'rejected'), + (6, 'techcorp', 'orders@techcorp.com', '+14165558888', '2018-05-20 11:35:00', 'business', 'active', 'US', '33 Technology Dr, Silicon Valley CA 94301', NULL, 'approved'), + (7, 'shopsmart', 'customerserv@shopsmart.biz', '+6585771234', '2020-09-15 06:25:00', 'business', 'inactive', 'SG', '888 Orchard Rd, #05-000, Singapore 238801', NULL, 'approved'), + (8, 'michael_brown', 'mike.brown@outlook.com', '+3912378624', '2019-07-22 16:40:00', 'individual', 'active', 'DE', 'Heidestr 17, Berlin 10557', 'Heidestr 17, Berlin 10557', 'approved'), + (9, 'alex_taylor', 'ataylo@university.edu', NULL, '2022-08-30 09:15:00', 'individual', 'active', 'NZ', '12 Mardon Rd, Wellington 6012', '5 Boulcott St, Wellington 6011', 'approved'), + (10, 'huang2143', 'huang2143@example.com', '+8612345678901', '2023-12-10 08:00:00', 'individual', 'active', 'CN', '123 Nanjing Road, Shanghai 200000', '123 Nanjing Road, Shanghai 200000', 'approved'), + (11, 'lisa_jones', 'lisa.jones@email.com', '+6123456789', '2023-09-05 15:20:00', 'individual', 'active', 'AU', '789 George St, Sydney NSW 2000', '789 George St, Sydney NSW 2000', 'approved'); + + DELETE FROM DEFOG.EWALLET.MERCHANTS; + INSERT INTO DEFOG.EWALLET.MERCHANTS(mid, name, description, website_url, logo_url, created_at, country, state, city, postal_code, address, status, category, sub_category, mcc, contact_name, contact_email, contact_phone) +VALUES + (1, 'TechMart', 'Leading electronics retailer', 'https://www.techmart.com', 'https://www.techmart.com/logo.png', '2015-01-15 00:00:00', 'US', 'California', 'Los Angeles', '90011', '645 Wilshire Blvd, Los Angeles CA 90011', 'active', 'retail (hardware)', 'Electronics', 5732, 'John Jacobs', 'jjacobs@techmart.com', '+15551234567'), + (2, 'FitLifeGear', 'Fitness equipment and activewear', 'https://fitlifegear.com', 'https://fitlifegear.com/brand.jpg', '2018-07-01 00:00:00', 'CA', 'Ontario', 'Toronto', 'M5V2J2', '421 Richmond St W, Toronto ON M5V2J2', 'active', 'retail (hardware)', 'Sporting Goods', 5655, 'Jane McDonald', 'jmcdonald@fitlifegear.com', '+14165559876'), + (3, 'UrbanDining', 'Local restaurants and cafes', 'https://www.urbandining.co', 'https://www.urbandining.co/logo.png', '2020-03-10 00:00:00', 'FR', NULL, 'Paris', '75011', '35 Rue du Faubourg Saint-Antoine, 75011 Paris', 'active', 'Food & Dining', 'Restaurants', 5812, 'Pierre Gagnon', 'pgagnon@urbandining.co', '+33612345678'), + (4, 'LuxStays', 'Boutique vacation rentals', 'https://luxstays.com', 'https://luxstays.com/branding.jpg', '2016-11-01 00:00:00', 'IT', NULL, 'Rome', '00187', 'Via della Conciliazione 15, Roma 00187', 'inactive', 'Travel & Hospitality', 'Accommodation', 7011, 'Marco Rossi', 'mrossi@luxstays.com', '+39061234567'), + (5, 'HandyCraft', 'Handmade arts and crafts supplies', 'https://handycraft.store', 'https://handycraft.store/hc-logo.png', '2022-06-20 00:00:00', 'ES', 'Catalonia', 'Barcelona', '08003', 'Passeig de Gracia 35, Barcelona 08003', 'active', 'Retail', 'Crafts & Hobbies', 5949, 'Ana Garcia', 'agarcia@handycraft.store', '+34612345678'), + (6, 'CodeSuite', 'SaaS productivity tools for developers', 'https://codesuite.io', 'https://codesuite.io/logo.svg', '2019-02-01 00:00:00', 'DE', NULL, 'Berlin', '10119', 'Dessauer Str 28, 10119 Berlin', 'active', 'Business Services', 'Software', 5734, 'Michael Schmidt', 'mschmidt@codesuite.io', '+49301234567'), + (7, 'ZenHomeGoods', 'Housewares and home decor items', 'https://www.zenhomegoods.com', 'https://www.zenhomegoods.com/branding.jpg', '2014-09-15 00:00:00', 'AU', 'Victoria', 'Melbourne', '3004', '159 Franklin St, Melbourne VIC 3004', 'active', 'Retail', 'Home & Garden', 5719, 'Emily Watson', 'ewatson@zenhomegoods.com', '+61312345678'), + (8, 'KidzPlayhouse', 'Children''s toys and games', 'https://kidzplayhouse.com', 'https://kidzplayhouse.com/logo.png', '2017-04-01 00:00:00', 'GB', NULL, 'London', 'WC2N 5DU', '119 Charing Cross Rd, London WC2N 5DU', 'suspended', 'Retail', 'Toys & Games', 5945, 'David Thompson', 'dthompson@kidzplayhouse.com', '+442071234567'), + (9, 'BeautyTrending', 'Cosmetics and beauty supplies', 'https://beautytrending.com', 'https://beautytrending.com/bt-logo.svg', '2021-10-15 00:00:00', 'NZ', NULL, 'Auckland', '1010', '129 Queen St, Auckland 1010', 'active', 'Retail', 'Health & Beauty', 5977, 'Sophie Wilson', 'swilson@beautytrending.com', '+6493012345'), + (10, 'GameRush', 'Video games and gaming accessories', 'https://gamerush.co', 'https://gamerush.co/gr-logo.png', '2023-02-01 00:00:00', 'US', 'New York', 'New York', '10001', '303 Park Ave S, New York NY 10001', 'active', 'Retail', 'Electronics', 5735, 'Michael Davis', 'mdavis@gamerush.co', '+16463012345'), + (11, 'FashionTrend', 'Trendy clothing and accessories', 'https://www.fashiontrend.com', 'https://www.fashiontrend.com/logo.png', '2019-08-10 00:00:00', 'UK', NULL, 'Manchester', 'M2 4WU', '87 Deansgate, Manchester M2 4WU', 'active', 'Retail', 'Apparel', 5651, 'Emma Thompson', 'ethompson@fashiontrend.com', '+441612345678'), + (12, 'GreenGourmet', 'Organic foods and natural products', 'https://www.greengourmet.com', 'https://www.greengourmet.com/logo.jpg', '2020-12-05 00:00:00', 'CA', 'British Columbia', 'Vancouver', 'V6B 6B1', '850 W Hastings St, Vancouver BC V6B 6B1', 'active', 'Food & Dining', 'Groceries', 5411, 'Daniel Lee', 'dlee@greengourmet.com', '+16041234567'), + (13, 'PetParadise', 'Pet supplies and accessories', 'https://petparadise.com', 'https://petparadise.com/logo.png', '2018-03-20 00:00:00', 'AU', 'New South Wales', 'Sydney', '2000', '275 Pitt St, Sydney NSW 2000', 'active', 'Retail', 'Pets', 5995, 'Olivia Johnson', 'ojohnson@petparadise.com', '+61298765432'), + (14, 'HomeTechSolutions', 'Smart home devices and gadgets', 'https://hometechsolutions.net', 'https://hometechsolutions.net/logo.png', '2022-04-15 00:00:00', 'US', 'California', 'San Francisco', '94105', '350 Mission St, San Francisco CA 94105', 'active', 'Retail', 'Home Appliances', 5734, 'Ethan Brown', 'ebrown@hometechsolutions.net', '+14159876543'), + (15, 'BookWorms', 'Books and reading accessories', 'https://bookworms.co.uk', 'https://bookworms.co.uk/logo.png', '2017-06-30 00:00:00', 'UK', NULL, 'London', 'WC2H 9JA', '66-67 Tottenham Court Rd, London WC2H 9JA', 'active', 'Retail', 'Books', 5942, 'Sophia Turner', 'sturner@bookworms.co.uk', '+442078912345'); + + DELETE FROM DEFOG.EWALLET.COUPONS; + INSERT INTO DEFOG.EWALLET.COUPONS (cid, merchant_id, code, description, start_date, end_date, discount_type, discount_value, min_purchase_amount, max_discount_amount, redemption_limit, status, created_at, updated_at) +VALUES + (1, 1, 'TECH20', '20% off tech and electronics', '2023-05-01', '2023-05-31', 'percentage', 20.00, 100.00, NULL, 500, 'active', '2023-04-01 09:00:00', '2023-04-15 11:30:00'), + (2, 2, 'NEWYEAR30', '30% off workout gear', '2023-01-01', '2023-01-15', 'percentage', 30.00, NULL, NULL, 1000, 'expired', '2022-12-01 12:00:00', '2023-01-16 18:45:00'), + (3, 3, 'DINEDISCOUNT', 'Get $10 off $50 order', '2023-06-01', '2023-06-30', 'fixed_amount', 10.00, 50.00, 10.00, NULL, 'active', '2023-05-15 15:30:00', NULL), + (4, 4, 'HOME15', '15% off weekly rental', '2023-07-01', '2023-08-31', 'percentage', 15.00, 1000.00, 300.00, 200, 'active', '2023-05-01 09:15:00', NULL), + (5, 5, 'HOME10', '$10 off $75+ purchase', '2023-04-01', '2023-04-30', 'fixed_amount', 10.00, 75.00, 10.00, 300, 'inactive', '2023-03-01 14:00:00', '2023-05-05 10:30:00'), + (6, 6, 'CODENEW25', '25% off new subscriptions', '2023-03-01', '2023-03-31', 'percentage', 25.00, NULL, NULL, NULL, 'expired', '2023-02-15 11:00:00', '2023-04-01 09:30:00'), + (7, 7, 'ZENHOME', 'Get 20% off home items', '2023-09-01', '2023-09-30', 'percentage', 20.00, 50.00, NULL, 1500, 'active', '2023-08-15 16:45:00', NULL), + (8, 8, 'GAMEKIDS', '$15 off $100+ purchase', '2022-12-01', '2022-12-31', 'fixed_amount', 15.00, 100.00, 15.00, 800, 'expired', '2022-11-01 10:30:00', '2023-01-02 13:15:00'), + (9, 9, 'GLOWUP', 'Buy 2 get 1 free on cosmetics', '2023-10-15', '2023-10-31', 'fixed_amount', 50.00, 150.00, 50.00, 300, 'active', '2023-10-01 08:00:00', NULL), + (10, 10, 'GAMERALERT', 'Get 25% off accessories', '2023-03-01', '2023-03-15', 'percentage', 25.00, NULL, 50.00, 750, 'expired', '2023-02-15 14:30:00', '2023-03-16 12:00:00'); + + + DELETE FROM DEFOG.EWALLET.WALLET_TRANSACTIONS_DAILY; + INSERT INTO DEFOG.EWALLET.WALLET_TRANSACTIONS_DAILY (txid, sender_id, sender_type, receiver_id, receiver_type, amount, status, type, description, coupon_id, created_at, completed_at, transaction_ref, gateway_name, gateway_ref, device_id, ip_address, user_agent) +VALUES + (1, 1, 0, 1, 0, 99.99, 'success', 'debit', 'Online purchase', NULL, '2023-06-01 10:15:30', '2023-06-01 10:15:45', 'ad154bf7-8185-4230-a8d8-3ef59b4e0012', 'Stripe', 'tx_123abc456def', 'mobile_8fh2k1', '192.168.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_3_1 like Mac OS X) ...'), + (2, 1, 0, 1, 1, 20.00, 'success', 'credit', 'Coupon discount', 1, '2023-06-01 10:15:30', '2023-06-01 10:15:45', 'ad154bf7-8185-4230-a8d8-3ef59b4e0012', 'Stripe', 'tx_123abc456def', 'mobile_8fh2k1', '192.168.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_3_1 like Mac OS X) ...'), + (3, 2, 0, 1, 1, 16.00, 'success', 'credit', 'Coupon discount', 1, '2023-07-01 10:18:30', '2023-06-01 10:18:45', 'kd454bf7-428d-eig2-a8d8-3ef59b4e0012', 'Stripe', 'tx_123abc789gas', 'mobile_yjp08q', '198.51.100.233', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (4, 3, 1, 9, 0, 125.50, 'success', 'debit', 'Product purchase', NULL, '2023-06-01 13:22:18', '2023-06-01 13:22:45', 'e6f510e9-ff7d-4914-81c2-f8e56bae4012', 'PayPal', 'ppx_192ks8hl', 'web_k29qjd', '216.58.195.68', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...'), + (5, 9, 0, 3, 1, 42.75, 'pending', 'debit', 'Order #438721', 3, '2023-06-01 18:45:02', '2023-06-01 18:45:13', 'b2ca190e-a42f-4f5e-8318-f82bcc6ae64e', 'Stripe', 'tx_987zyx654wvu', 'mobile_q3mz8n', '68.85.32.201', 'Mozilla/5.0 (Linux; Android 13) ...'), + (6, 9, 0, 3, 1, 10.00, 'success', 'credit', 'Coupon discount', 3, '2023-06-01 18:45:02', '2023-06-01 18:45:13', 'b2ca190e-a42f-4f5e-8318-f82bcc6ae64e', 'Stripe', 'tx_987zyx654wvu', 'mobile_q3mz8n', '68.85.32.201', 'Mozilla/5.0 (Linux; Android 13) ...'), + (7, 2, 0, 7, 1, 89.99, 'pending', 'debit', 'Home furnishings', NULL, '2023-06-02 09:30:25', '2023-06-02 09:30:40', 'c51e10d1-db34-4d9f-b55f-43a05a5481c8', 'Checkout.com', 'ord_kzhg123', 'mobile_yjp08q', '198.51.100.233', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (8, 2, 0, 7, 1, 17.99, 'success', 'credit', 'Coupon discount', 7, '2023-06-02 09:30:25', '2023-06-02 09:30:40', 'c51e10d1-db34-4d9f-b55f-43a05a5481c8', 'Checkout.com', 'ord_kzhg123', 'mobile_yjp08q', '198.51.100.233', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (9, 6, 1, 1, 0, 29.95, 'success', 'debit', 'Software subscription', NULL, '2023-06-02 14:15:00', '2023-06-02 14:15:05', '25cd48e5-08c3-4d1c-b7a4-26485ea646eb', 'Braintree', 'sub_mnb456', 'web_zz91p44l', '4.14.15.90', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...'), + (10, 4, 0, 4, 1, 2500.00, 'pending', 'debit', 'Villa rental deposit', NULL, '2023-06-02 20:45:36', NULL, 'a7659c81-0cd0-4635-af6c-cf68d2c15ab2', 'PayPal', NULL, 'mobile_34jdkl', '143.92.64.138', 'Mozilla/5.0 (Linux; Android 11; Pixel 5) ...'), + (11, 5, 0, 5, 1, 55.99, 'success', 'debit', 'Craft supplies order', NULL, '2023-06-03 11:12:20', '2023-06-03 11:12:35', 'ec74cb3b-8272-4175-a5d0-f03c2e781593', 'Adyen', 'ord_tkjs87', 'web_8902wknz', '192.64.112.188', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...'), + (12, 9, 0, 9, 1, 75.00, 'success', 'debit', 'Beauty products', 9, '2023-06-04 08:00:00', '2023-06-04 08:00:25', '840a9854-1b07-422b-853c-636b289222a9', 'Checkout.com', 'ord_kio645', 'mobile_g3mjfz', '203.96.81.36', 'Mozilla/5.0 (Linux; Android 12; SM-S906N Build/QP1A.190711.020) ...'), + (13, 9, 0, 9, 1, 50.00, 'success', 'credit', 'Coupon discount', 9, '2023-06-04 08:00:00', '2023-06-04 08:00:25', '840a9854-1b07-422b-853c-636b289222a9', 'Checkout.com', 'ord_kio645', 'mobile_g3mjfz', '203.96.81.36', 'Mozilla/5.0 (Linux; Android 12; SM-S906N Build/QP1A.190711.020) ...'), + (14, 8, 0, 10, 1, 119.99, 'failed', 'debit', 'New game purchase', NULL, '2023-06-04 19:30:45', NULL, '32e2b29c-5c7f-4906-98c5-e8abdcbfd69a', 'Braintree', 'ord_mjs337', 'web_d8180kaf', '8.26.53.165', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...'), + (15, 8, 0, 10, 1, 29.99, 'success', 'credit', 'Coupon discount', 10, '2023-06-04 19:30:45', '2023-06-04 19:31:10', '32e2b29c-5c7f-4906-98c5-e8abdcbfd69a', 'Braintree', 'ord_mjs337', 'web_d8180kaf', '8.26.53.165', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...'), + (16, 10, 1, 3, 0, 87.50, 'failed', 'debit', 'Restaurant order', NULL, '2023-06-05 12:05:21', NULL, '37cf052d-0475-4ecc-bda7-73ee904bf65c', 'Checkout.com', NULL, 'mobile_x28qlj', '92.110.51.150', 'Mozilla/5.0 (Linux; Android 13; SM-S901B) ...'), + (17, 1, 0, 1, 0, 175.00, 'success', 'debit', 'Refund on order #1234', NULL, '2023-06-06 14:20:00', '2023-06-06 14:20:05', 'a331232e-a3f6-4e7f-b49f-3588bc5ff985', 'Stripe', 'rfnd_xkt521', 'web_33lq1dh', '38.75.197.8', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...'), + (18, 7, 1, 2, 0, 599.99, 'success', 'debit', 'Yearly subscription', NULL, '2023-06-06 16:55:10', '2023-06-06 16:55:15', 'ed6f46ab-9617-4d11-9aa9-60d24bdf9bc0', 'PayPal', 'sub_pjj908', 'web_zld22f', '199.59.148.201', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...'), + (19, 2, 0, 2, 1, 22.99, 'refunded', 'debit', 'Product return', NULL, '2023-06-07 10:10:30', '2023-06-07 10:11:05', '6c97a87d-610f-4705-ae97-55071127d9ad', 'Adyen', 'tx_zcx258', 'mobile_1av8p0', '70.121.39.25', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (20, 2, 0, 2, 1, 22.99, 'success', 'credit', 'Refund on return', NULL, '2023-06-07 10:10:30', '2023-06-07 10:11:05', '6c97a87d-610f-4705-ae97-55071127d9ad', 'Adyen', 'tx_zcx258', 'mobile_1av8p0', '70.121.39.25', 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) ...'), + (21, 1, 0, 2, 1, 49.99, 'success', 'debit', 'Product purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '5 months', CURRENT_TIMESTAMP - INTERVAL '5 months', 'tx_ref_11_1', 'Stripe', 'stripe_ref_11_1', 'device_11_1', '192.168.1.11', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'), + (22, 4, 0, 3, 1, 99.99, 'success', 'debit', 'Service purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '4 months', CURRENT_TIMESTAMP - INTERVAL '4 months', 'tx_ref_12_1', 'PayPal', 'paypal_ref_12_1', 'device_12_1', '192.168.1.12', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1'), + (23, 4, 0, 1, 1, 149.99, 'success', 'debit', 'Subscription purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '3 months', CURRENT_TIMESTAMP - INTERVAL '3 months', 'tx_ref_13_1', 'Stripe', 'stripe_ref_13_1', 'device_13_1', '192.168.1.13', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'), + (24, 2, 0, 5, 1, 199.99, 'pending', 'debit', 'Product purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '2 months', CURRENT_TIMESTAMP - INTERVAL '2 months', 'tx_ref_14_1', 'PayPal', 'paypal_ref_14_1', 'device_14_1', '192.168.1.14', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'), + (25, 2, 0, 1, 1, 249.99, 'success', 'debit', 'Service purchase', NULL, CURRENT_TIMESTAMP - INTERVAL '1 month', CURRENT_TIMESTAMP - INTERVAL '1 month', 'tx_ref_15_1', 'Stripe', 'stripe_ref_15_1', 'device_15_1', '192.168.1.15', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'), + (26, 7, 1, 2, 0, 299.99, 'success', 'debit', 'Renew subscription', NULL, CURRENT_TIMESTAMP - INTERVAL '3 weeks', CURRENT_TIMESTAMP - INTERVAL '3 weeks', 'ed6f46ab-9617-4d11-9aa9-55071127d9ad', 'PayPal', 'sub_pjk832', 'web_zld22f', '199.59.148.201', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...'); + + + DELETE FROM DEFOG.EWALLET.WALLET_USER_BALANCE_DAILY; + INSERT INTO DEFOG.EWALLET.WALLET_USER_BALANCE_DAILY (user_id, balance, updated_at) +VALUES + (1, 525.80, '2023-06-07 23:59:59'), + (2, 429.76, '2023-06-07 23:59:59'), + (3, -725.55, '2023-06-07 23:59:59'), + (4, -2500.00, '2023-06-07 23:59:59'), + (5, -55.99, '2023-06-07 23:59:59'), + (6, 0.00, '2023-06-07 23:59:59'), + (7, 0.00, '2023-06-07 23:59:59'), + (8, -599.98, '2023-06-07 23:59:59'), + (9, -183.25, '2023-06-07 23:59:59'), + (10, 0.00, '2023-06-07 23:59:59'), + (1, 2739.10, CURRENT_TIMESTAMP - INTERVAL '8 days'), + (1, 2738.12, CURRENT_TIMESTAMP - INTERVAL '6 days'), + (1, 2733.92, CURRENT_TIMESTAMP - INTERVAL '3 days'), + (2, 155.24, CURRENT_TIMESTAMP - INTERVAL '7 days'), + (3, 2775.25, CURRENT_TIMESTAMP - INTERVAL '6 days'), + (4, 2500.00, CURRENT_TIMESTAMP - INTERVAL '5 days'), + (5, 155.99, CURRENT_TIMESTAMP - INTERVAL '4 days'), + (6, 29.95, CURRENT_TIMESTAMP - INTERVAL '3 days'), + (7, 172.98, CURRENT_TIMESTAMP - INTERVAL '2 days'), + (8, 0.00, CURRENT_TIMESTAMP - INTERVAL '7 days'), + (9, 125.00, CURRENT_TIMESTAMP - INTERVAL '3 days'), + (10, 219.98, CURRENT_TIMESTAMP - INTERVAL '1 days'); + + DELETE FROM DEFOG.EWALLET.WALLET_MERCHANT_BALANCE_DAILY; + INSERT INTO DEFOG.EWALLET.WALLET_MERCHANT_BALANCE_DAILY (merchant_id, balance, updated_at) +VALUES + (1, 3897.99, '2023-06-07 23:59:59'), + (2, 155.24, '2023-06-07 23:59:59'), + (3, 2775.25, '2023-06-07 23:59:59'), + (4, 2500.00, '2023-06-07 23:59:59'), + (5, 155.99, '2023-06-07 23:59:59'), + (6, 29.95, '2023-06-07 23:59:59'), + (7, 172.98, '2023-06-07 23:59:59'), + (8, 0.00, '2023-06-07 23:59:59'), + (9, 125.00, '2023-06-07 23:59:59'), + (10, 219.98, '2023-06-07 23:59:59'), + (1, 82.10, CURRENT_DATE - INTERVAL '8 days'), + (2, 82.12, CURRENT_DATE - INTERVAL '8 days'), + (1, 82.92, CURRENT_DATE - INTERVAL '7 days'), + (2, 55.24, CURRENT_DATE - INTERVAL '7 days'), + (3, 75.25, CURRENT_DATE - INTERVAL '7 days'), + (1, 50.00, CURRENT_DATE), + (2, 55.99, CURRENT_DATE), + (3, 29.95, CURRENT_DATE), + (4, 89.99, CURRENT_DATE), + (5, 599.99, CURRENT_DATE); + + DELETE FROM DEFOG.EWALLET.NOTIFICATIONS; + INSERT INTO DEFOG.EWALLET.NOTIFICATIONS (id, user_id, message, type, status, created_at, device_type, device_id, action_url) +VALUES +(1, 1, 'Your order #123abc has been shipped!', 'transaction', 'unread', '2023-06-01 10:16:00', 'mobile_app', 'mobile_8fh2k1', 'app://orders/123abc'), +(2, 1, 'Get 20% off your next purchase! Limited time offer.', 'promotion', 'unread', '2023-06-02 09:00:00', 'email', NULL, 'https://techmart.com/promo/TECH20'), +(3, 2, 'A package is being returned to you. Refund processing...', 'transaction', 'read', '2023-06-07 10:12:00', 'mobile_app', 'mobile_1av8p0', 'app://orders?status=returned'), +(4, 2, 'Your FitLife membership is up for renewal on 7/1', 'general', 'unread', '2023-06-05 15:30:00', 'email', NULL, 'https://fitlifegear.com/renew'), +(5, 3, 'An order from UrbanDining was unsuccessful', 'transaction', 'read', '2023-06-05 12:06:00', 'sms', NULL, 'https://urbandining.co/orders/37cf052d'), +(6, 4, 'Your rental request is pending approval', 'transaction', 'unread', '2023-06-02 20:46:00', 'mobile_app', 'mobile_34jdkl', 'app://bookings/a7659c81'), +(7, 5, 'Claim your 25% discount on craft supplies!', 'promotion', 'archived', '2023-06-01 08:00:00', 'email', NULL, 'https://handycraft.store/CRAFTY10'), +(8, 6, 'Your CodeSuite subscription will renew on 7/1', 'general', 'unread', '2023-06-01 12:00:00', 'email', NULL, 'https://codesuite.io/subscriptions'), +(9, 7, 'Thanks for shopping at ZenHomeGoods! How did we do?', 'general', 'read', '2023-06-02 09:31:00', 'mobile_app', 'mobile_yjp08q', 'https://zenhomesurvey.com/order/c51e10d1'), +(10, 8, 'Playtime! New games and toys have arrived', 'promotion', 'archived', '2023-06-01 18:00:00', 'email', NULL, 'https://kidzplayhouse.com/new-arrivals'), +(11, 9, 'Here''s $10 to start your glow up!', 'promotion', 'unread', '2023-06-01 10:15:00', 'email', NULL, 'https://beautytrending.com/new-customer'), +(12, 10, 'Your order #ord_mjs337 is being processed', 'transaction', 'read', '2023-06-04 19:31:30', 'web_app', 'web_d8180kaf', 'https://gamerush.co/orders/32e2b29c'), +(13, 1, 'New promotion: Get 10% off your next order!', 'promotion', 'unread', DATE_TRUNC('week', CURRENT_TIMESTAMP) - INTERVAL '1 week', 'email', NULL, 'https://techmart.com/promo/TECH10'), +(14, 1, 'Your order #456def has been delivered', 'transaction', 'unread', DATE_TRUNC('week', CURRENT_TIMESTAMP) - INTERVAL '2 weeks', 'mobile_app', 'mobile_8fh2k1', 'app://orders/456def'), +(15, 2, 'Reminder: Your FitLife membership expires in 7 days', 'general', 'unread', DATE_TRUNC('week', CURRENT_TIMESTAMP) - INTERVAL '3 weeks', 'email', NULL, 'https://fitlifegear.com/renew'), +(16, 2, 'Weekend Flash Sale: 25% off all activewear!', 'promotion', 'unread', DATE_TRUNC('week', CURRENT_TIMESTAMP) - INTERVAL '1 week' + INTERVAL '2 days', 'mobile_app', 'mobile_yjp08q', 'app://shop/activewear'); + + DELETE FROM DEFOG.EWALLET.USER_SESSIONS; + INSERT INTO DEFOG.EWALLET.USER_SESSIONS (user_id, session_start_ts, session_end_ts, device_type, device_id) +VALUES +(1, '2023-06-01 09:45:22', '2023-06-01 10:20:35', 'mobile_app', 'mobile_8fh2k1'), +(1, '2023-06-02 13:30:00', '2023-06-02 14:15:15', 'web_app', 'web_33lq1dh'), +(1, '2023-06-06 14:19:00', '2023-06-06 14:22:10', 'web_app', 'web_33lq1dh'), +(1, '2023-06-07 23:49:12', '2023-06-08 00:00:00', 'web_app', 'web_33lq1dh'), +(2, '2023-06-02 08:55:08', '2023-06-02 09:45:42', 'mobile_app', 'mobile_yjp08q'), +(2, '2023-06-07 10:09:15', '2023-06-07 10:12:25', 'mobile_app', 'mobile_1av8p0'), +(3, '2023-06-01 13:15:33', '2023-06-01 13:28:01', 'web_app', 'web_k29qjd'), +(3, '2023-06-05 12:00:00', '2023-06-05 12:10:22', 'mobile_app', 'mobile_x28qlj'), +(4, '2023-06-02 20:30:12', '2023-06-02 21:15:48', 'mobile_app', 'mobile_34jdkl'), +(5, '2023-06-03 10:45:30', '2023-06-03 11:20:28', 'web_app', 'web_8902wknz'), +(6, '2023-06-02 14:00:00', '2023-06-02 15:10:05', 'web_app', 'web_zz91p44l'), +(7, '2023-06-06 16:45:22', '2023-06-06 17:10:40', 'web_app', 'web_zld22f'), +(8, '2023-06-04 19:25:15', '2023-06-04 19:40:20', 'web_app', 'web_d8180kaf'), +(8, '2023-06-01 17:30:00', '2023-06-01 18:15:35', 'mobile_app', 'mobile_q3mz8n'), +(9, '2023-06-04 07:45:30', '2023-06-04 08:15:27', 'mobile_app', 'mobile_g3mjfz'), +(10, '2023-06-02 14:10:15', '2023-06-02 14:40:58', 'web_app', 'web_zz91p44l'), +(5, CURRENT_TIMESTAMP - INTERVAL '32 days', CURRENT_TIMESTAMP - INTERVAL '32 days' + INTERVAL '15 min', 'web_app', 'web_8902wknz'), +(6, CURRENT_TIMESTAMP - INTERVAL '8 days', CURRENT_TIMESTAMP - INTERVAL '8 days' + INTERVAL '15 min', 'web_app', 'web_zz91p44l'), +(7, CURRENT_TIMESTAMP - INTERVAL '5 days', CURRENT_TIMESTAMP - INTERVAL '5 days' + INTERVAL '15 min', 'web_app', 'web_zz91p44l'), +(8, CURRENT_TIMESTAMP - INTERVAL '3 days', CURRENT_TIMESTAMP - INTERVAL '3 days' + INTERVAL '15 min', 'web_app', 'web_d8180kaf'), +(9, CURRENT_TIMESTAMP - INTERVAL '1 days', CURRENT_TIMESTAMP - INTERVAL '1 days' + INTERVAL '15 min', 'mobile_app', 'mobile_g3mjfz'), +(10, CURRENT_TIMESTAMP - INTERVAL '2 days', CURRENT_TIMESTAMP - INTERVAL '2 days' + INTERVAL '15 min', 'web_app', 'web_zz91p44l'), +(5, CURRENT_TIMESTAMP - INTERVAL '2 days', CURRENT_TIMESTAMP - INTERVAL '2 days' + INTERVAL '15 min', 'web_app', 'web_8902wknz') +; + + DELETE FROM DEFOG.EWALLET.USER_SETTING_SNAPSHOT; + INSERT INTO DEFOG.EWALLET.USER_SETTING_SNAPSHOT (user_id, snapshot_date, tx_limit_daily, tx_limit_monthly, membership_status, password_hash, api_key, verified_devices, verified_ips, mfa_enabled, marketing_opt_in, created_at) +VALUES +(1, '2023-06-07', 1000.00, 5000.00, 2, 'bcryptHash($2yz9!&ka1)', '9d61c49b-8977-4914-a36b-80d1445e38fa', 'mobile_8fh2k1', '192.168.0.1', true, false, '2023-06-07 00:00:00'), +(2, '2023-06-07', 500.00, 2500.00, 1, 'bcryptHash(qpwo9874zyGk!)', NULL, 'mobile_yjp08q, mobile_1av8p0', '198.51.100.233, 70.121.39.25', false, true, '2023-06-07 00:00:00'), +(3, '2023-06-07', 2000.00, 10000.00, 3, 'bcryptHash(Fr3nchPa1n!@98zy)', 'e785f611-fdd8-4c2d-a870-e104358712e5', 'web_k29qjd, mobile_x28qlj', '216.58.195.68, 92.110.51.150', true, false, '2023-06-07 00:00:00'), +(4, '2023-06-07', 5000.00, 20000.00, 4, 'bcryptHash(Vacay2023*&!Rm)', NULL, 'mobile_34jdkl', '143.92.64.138', false, true, '2023-06-07 00:00:00'), +(5, '2023-06-07', 100.00, 500.00, 0, 'bcryptHash(cRaf7yCr8zy)', NULL, 'web_8902wknz', '192.64.112.188', false, false, '2023-06-07 00:00:00'), +(6, '2023-06-07', 50.00, 500.00, 1, 'bcryptHash(C0d3Rul3z!99)', '6c03c175-9ac9-4854-b064-a3fff2c62e31', 'web_zz91p44l', '4.14.15.90', true, true, '2023-06-07 00:00:00'), +(7, '2023-06-07', 250.00, 1000.00, 2, 'bcryptHash(zEnH0me&Pw7)', NULL, NULL, NULL, false, true, '2023-06-07 00:00:00'), +(8, '2023-06-07', 200.00, 1000.00, 0, 'bcryptHash(K1dzPlay!&Rt8)', NULL, 'web_d8180kaf, mobile_q3mz8n', '8.26.53.165, 68.85.32.201', false, false, '2023-06-07 00:00:00'), +(9, '2023-06-07', 150.00, 1000.00, 2, 'bcryptHash(Gl0wUp7!9zy)', NULL, 'mobile_g3mjfz', '203.96.81.36', true, true, '2023-06-07 00:00:00'), +(10, '2023-06-07', 300.00, 2000.00, 1, 'bcryptHash(GamzRu1ez*&99!)', NULL, 'web_d8180kaf', '8.26.53.165', false, true, '2023-06-07 00:00:00'), +(1, '2023-06-01', 502.00, 1000.00, 2, 'bcryptHash($2yz9!&ka1)', '9d61c49b-8977-4914-a36b-80d1445e38fa', 'mobile_8fh2k1', '192.168.0.1', false, true, '2023-06-01 06:00:00'), +(2, '2023-06-01', 500.00, 2500.00, 1, 'bcryptHash(qpwo9874zyGk!)', NULL, 'mobile_yjp08q', '198.51.100.233, 70.121.39.25', true, false, '2023-06-01 09:00:00'); +------------------------------------------------------------------------------- + + DELETE FROM DEFOG.DEALERSHIP.CARS; + INSERT INTO DEFOG.DEALERSHIP.CARS (id, make, model, year, color, vin_number, engine_type, transmission, cost) +VALUES + (1, 'Toyota', 'Camry', 2022, 'Silver', '4T1BF1FK3CU510984', 'V6', 'Automatic', 28500.00), + (2, 'Honda', 'Civic', 2021, 'platinum/grey', '2HGFC2F53MH522780', 'Inline 4', 'CVT', 22000.00), + (3, 'Ford', 'Mustang', 2023, 'blue', '1FA6P8TH4M5100001', 'V8', 'Manual', 45000.00), + (4, 'Tesla', 'Model 3', 2022, 'fuschia', '5YJ3E1EB7MF123456', 'Electric', 'Automatic', 41000.00), + (5, 'Chevrolet', 'Equinox', 2021, 'midnight blue', '2GNAXUEV1M6290124', 'Inline 4', 'Automatic', 26500.00), + (6, 'Nissan', 'Altima', 2022, 'Jet black', '1N4BL4BV4NN123456', 'V6', 'CVT', 25000.00), + (7, 'BMW', 'X5', 2023, 'Titan Silver', '5UXCR6C56M9A12345', 'V8', 'Automatic', 62000.00), + (8, 'Audi', 'A4', 2022, 'Blue', 'WAUBNAF47MA098765', 'Inline 4', 'Automatic', 39000.00), + (9, 'Lexus', 'RX350', 2021, 'Fiery red', '2T2BZMCA7MC143210', 'V6', 'Automatic', 45500.00), + (10, 'Subaru', 'Outback', 2022, 'Jade', '4S4BSANC2N3246801', 'Boxer 4', 'CVT', 28000.00), + (11, 'Mazda', 'CX-5', 2022, 'Royal Purple', 'JM3KE4DY4N0123456', 'Inline 4', 'Automatic', 29000.00), + (12, 'Hyundai', 'Tucson', 2023, 'black', 'KM8J3CAL3NU123456', 'Inline 4', 'Automatic', 32000.00), + (13, 'Kia', 'Sorento', 2021, 'ebony black', '5XYPH4A50MG987654', 'V6', 'Automatic', 32000.00), + (14, 'Jeep', 'Wrangler', 2022, 'Harbor Gray', '1C4HJXDG3NW123456', 'V6', 'Automatic', 38000.00), + (15, 'GMC', 'Sierra 1500', 2023, 'Snow White', '1GTU9CED3NZ123456', 'V8', 'Automatic', 45000.00), + (16, 'Ram', '1500', 2022, 'baby blue', '1C6SRFFT3NN123456', 'V8', 'Automatic', 42000.00), + (17, 'Mercedes-Benz', 'E-Class', 2021, 'Silver', 'W1KZF8DB1MA123456', 'Inline 6', 'Automatic', 62000.00), + (18, 'Volkswagen', 'Tiguan', 2022, 'Red', '3VV2B7AX1NM123456', 'Inline 4', 'Automatic', 32000.00), + (19, 'Volvo', 'XC90', 2023, 'black', 'YV4A22PK3N1234567', 'Inline 4', 'Automatic', 65000.00), + (20, 'Porsche', '911', 2022, 'white', 'WP0AA2A93NS123456', 'Flat 6', 'Automatic', 120000.00), + (21, 'Cadillac', 'Escalade', 2023, 'Black', '1GYS4HKJ3MR123456', 'V8', 'Automatic', 85000.00); + + DELETE FROM DEFOG.DEALERSHIP.SALESPERSONS; + INSERT INTO DEFOG.DEALERSHIP.SALESPERSONS (id, first_name, last_name, email, phone, hire_date, termination_date) +VALUES + (1, 'John', 'Doe', 'john.doe@autonation.com', '(555)-123-4567', CURRENT_DATE - INTERVAL '2 years', NULL), + (2, 'Jane', 'Smith', 'jane.smith@autonation.com', '(415)-987-6543', CURRENT_DATE - INTERVAL '3 years', NULL), + (3, 'Michael', 'Johnson', 'michael.johnson@autonation.com', '(555)-456-7890', CURRENT_DATE - INTERVAL '1 year', NULL), + (4, 'Emily', 'Brown', 'emily.brown@sonicauto.com', '(444)-111-2222', CURRENT_DATE - INTERVAL '1 year', CURRENT_DATE - INTERVAL '1 month'), + (5, 'David', 'Wilson', 'david.wilson@sonicauto.com', '(444)-333-4444', CURRENT_DATE - INTERVAL '2 years', NULL), + (6, 'Sarah', 'Taylor', 'sarah.taylor@sonicauto.com', '(123)-555-6666', '2018-09-01', '2022-09-01'), + (7, 'Daniel', 'Anderson', 'daniel.anderson@sonicauto.com', '(555)-777-8888', '2021-07-12', NULL), + (8, 'Olivia', 'Thomas', 'olivia.thomas@pensake.com', '(333)-415-0000', '2023-01-25', '2023-07-25'), + (9, 'James', 'Jackson', 'james.jackson@pensake.com', '(555)-212-3333', '2019-04-30', NULL), + (10, 'Sophia', 'White', 'sophia.white@pensake.com', '(555)-444-5555', '2022-08-18', NULL), + (11, 'Robert', 'Johnson', 'robert.johnson@pensake.com', '(001)-415-5678', CURRENT_DATE - INTERVAL '15 days', NULL), + (12, 'Jennifer', 'Davis', 'jennifer.davis@directauto.com', '(555)-345-6789', CURRENT_DATE - INTERVAL '20 days', NULL), + (13, 'Jessica', 'Rodriguez', 'jessica.rodriguez@directauto.com', '(555)-789-0123', '2022-06-01', NULL); + + -- customers + DELETE FROM DEFOG.DEALERSHIP.CUSTOMERS; + INSERT INTO DEFOG.DEALERSHIP.CUSTOMERS (id, first_name, last_name, email, phone, address, city, state, zip_code, crtd_ts) +VALUES + -- (1, 'William', 'Davis', 'william.davis@example.com', '555-888-9999', '123 Main St', 'New York', 'NY', '10001', CURRENT_TIMESTAMP - INTERVAL '5 years');, + (2, 'Ava', 'Miller', 'ava.miller@example.com', '555-777-6666', '456 Oak Ave', 'Los Angeles', 'CA', '90001', CURRENT_TIMESTAMP - INTERVAL '4 years'), + (3, 'Benjamin', 'Wilson', 'benjamin.wilson@example.com', '555-666-5555', '789 Elm St', 'Chicago', 'IL', '60007', CURRENT_TIMESTAMP - INTERVAL '3 years'), + (4, 'Mia', 'Moore', 'mia.moore@example.com', '555-555-4444', '321 Pine Rd', 'Houston', 'TX', '77001', CURRENT_TIMESTAMP - INTERVAL '2 years'), + (5, 'Henry', 'Taylor', 'henry.taylor@example.com', '555-444-3333', '654 Cedar Ln', 'Phoenix', 'AZ', '85001', CURRENT_TIMESTAMP - INTERVAL '1 year'), + (6, 'Charlotte', 'Anderson', 'charlotte.anderson@example.com', '555-333-2222', '987 Birch Dr', 'Philadelphia', 'PA', '19019', CURRENT_TIMESTAMP - INTERVAL '5 years'), + (7, 'Alexander', 'Thomas', 'alexander.thomas@example.com', '555-222-1111', '741 Walnut St', 'San Antonio', 'TX', '78006', CURRENT_TIMESTAMP - INTERVAL '4 years'), + (8, 'Amelia', 'Jackson', 'amelia.jackson@gmail.com', '555-111-0000', '852 Maple Ave', 'San Diego', 'CA', '92101', CURRENT_TIMESTAMP - INTERVAL '3 years'), + (9, 'Daniel', 'White', 'daniel.white@youtube.com', '555-000-9999', '963 Oak St', 'Dallas', 'TX', '75001', CURRENT_TIMESTAMP - INTERVAL '2 years'), + (10, 'Abigail', 'Harris', 'abigail.harris@company.io', '555-999-8888', '159 Pine Ave', 'San Jose', 'CA', '95101', CURRENT_TIMESTAMP - INTERVAL '1 year'), + (11, 'Christopher', 'Brown', 'christopher.brown@ai.com', '555-456-7890', '753 Maple Rd', 'Miami', 'FL', '33101', CURRENT_TIMESTAMP - INTERVAL '5 months'), + (12, 'Sophia', 'Lee', 'sophia.lee@microsoft.com', '555-567-8901', '951 Oak Ln', 'Seattle', 'WA', '98101', CURRENT_TIMESTAMP - INTERVAL '6 months'), + (13, 'Michael', 'Chen', 'michael.chen@company.com', '(555)-456-7890', '123 Oak St', 'San Francisco', 'CA', '94101', CURRENT_TIMESTAMP - INTERVAL '3 months'); + + DELETE FROM DEFOG.DEALERSHIP.SALES; + INSERT INTO DEFOG.DEALERSHIP.SALES (id, car_id, salesperson_id, customer_id, sale_price, sale_date) +VALUES + (1, 1, 2, 3, 30500.00, '2023-03-15'), + (2, 3, 1, 5, 47000.00, '2023-03-20'), + (3, 6, 4, 2, 26500.00, '2023-03-22'), + (4, 8, 7, 9, 38000.00, '2023-03-25'), + (5, 2, 4, 7, 23500.00, '2023-03-28'), + (6, 10, 6, 1, 30000.00, '2023-04-01'), + (7, 5, 3, 6, 26800.00, '2023-04-05'), + (8, 7, 2, 10, 63000.00, '2023-04-10'), + (9, 4, 6, 8, 42500.00, '2023-04-12'), + (10, 9, 2, 4, 44500.00, '2023-04-15'), + (11, 1, 7, 11, 28900.00, CURRENT_DATE - INTERVAL '32 days'), + (12, 3, 3, 12, 46500.00, CURRENT_DATE - INTERVAL '10 days'), + (13, 6, 1, 11, 26000.00, CURRENT_DATE - INTERVAL '15 days'), + (14, 2, 3, 1, 23200.00, CURRENT_DATE - INTERVAL '21 days'), + (15, 8, 6, 12, 43500.00, CURRENT_DATE - INTERVAL '3 days'), + (16, 10, 4, 2, 29500.00, CURRENT_DATE - INTERVAL '5 days'), + (17, 3, 2, 3, 46000.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week' + INTERVAL '1 day'), + (18, 3, 2, 7, 47500.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week'), + (19, 3, 2, 10, 46500.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week' - INTERVAL '1 day'), + (20, 4, 1, 3, 48000.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week' + INTERVAL '1 day'), + (21, 4, 1, 7, 45000.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week'), + (22, 4, 1, 10, 49000.00, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week' - INTERVAL '1 day'); + + + DELETE FROM DEFOG.DEALERSHIP.INVENTORY_SNAPSHOTS; + INSERT INTO DEFOG.DEALERSHIP.INVENTORY_SNAPSHOTS (id, snapshot_date, car_id, is_in_inventory) +VALUES + (1, '2023-03-15', 1, TRUE), + (2, '2023-03-15', 2, TRUE), + (3, '2023-03-15', 3, TRUE), + (4, '2023-03-15', 4, TRUE), + (5, '2023-03-15', 5, TRUE), + (6, '2023-03-15', 6, TRUE), + (7, '2023-03-15', 7, TRUE), + (8, '2023-03-15', 8, TRUE), + (9, '2023-03-15', 9, TRUE), + (10, '2023-03-15', 10, TRUE), + (11, '2023-03-20', 1, FALSE), + (12, '2023-03-20', 3, FALSE), + (13, '2023-03-22', 6, FALSE), + (14, '2023-03-25', 8, FALSE), + (15, '2023-03-28', 2, FALSE), + (16, '2023-04-01', 10, FALSE), + (17, '2023-04-05', 5, FALSE), + (18, '2023-04-10', 7, FALSE), + (19, '2023-04-12', 4, FALSE), + (20, '2023-04-15', 9, FALSE), + (21, '2023-03-28', 1, TRUE), + (22, '2023-03-28', 3, TRUE), + (23, '2023-03-28', 4, FALSE); + + DELETE FROM DEFOG.DEALERSHIP.PAYMENTS_RECEIVED; + INSERT INTO DEFOG.DEALERSHIP.PAYMENTS_RECEIVED (id, sale_id, payment_date, payment_amount, payment_method) +VALUES + (1, 1, '2023-03-15', 5000.00, 'check'), + (2, 1, '2023-03-20', 22500.00, 'financing'), + (3, 2, '2023-03-20', 44000.00, 'credit_card'), + (4, 3, '2023-03-22', 24500.00, 'debit_card'), + (5, 4, '2023-03-25', 38000.00, 'financing'), + (6, 5, '2023-03-28', 21500.00, 'cash'), + (7, 6, '2023-04-01', 27000.00, 'credit_card'), + (8, 7, '2023-04-05', 26000.00, 'debit_card'), + (9, 8, '2023-04-10', 60000.00, 'financing'), + (10, 9, '2023-04-12', 40000.00, 'check'), + (11, 10, '2023-04-15', 44500.00, 'credit_card'), + (12, 11, CURRENT_DATE - INTERVAL '30 days', 28000.00, 'cash'), + (13, 12, CURRENT_DATE - INTERVAL '3 days', 43500.00, 'credit_card'), + (14, 13, CURRENT_DATE - INTERVAL '6 days', 24000.00, 'debit_card'), + (15, 14, CURRENT_DATE - INTERVAL '1 days', 17200.00, 'financing'), + (16, 15, CURRENT_DATE - INTERVAL '1 days', 37500.00, 'credit_card'), + (17, 16, CURRENT_DATE - INTERVAL '5 days', 26500.00, 'debit_card'), + (18, 17, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week' + INTERVAL '1 day', 115000.00, 'financing'), + (19, 18, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week', 115000.00, 'credit_card'), + (20, 19, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '1 week' - INTERVAL '1 day', 115000.00, 'debit_card'), + (21, 20, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week' + INTERVAL '1 day', 115000.00, 'cash'), + (22, 21, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week', 115000.00, 'check'), + (23, 22, DATE_TRUNC('week', CURRENT_DATE) - INTERVAL '8 week' - INTERVAL '1 day', 115000.00, 'credit_card'); + + DELETE FROM DEFOG.DEALERSHIP.PAYMENTS_MADE; + INSERT INTO DEFOG.DEALERSHIP.PAYMENTS_MADE (id, vendor_name, payment_date, payment_amount, payment_method, invoice_number, invoice_date, due_date) +VALUES + (1, 'Car Manufacturer Inc', '2023-03-01', 150000.00, 'bank_transfer', 'INV-001', '2023-02-25', '2023-03-25'), + (2, 'Auto Parts Supplier', '2023-03-10', 25000.00, 'check', 'INV-002', '2023-03-05', '2023-04-04'), + (3, 'Utility Company', '2023-03-15', 1500.00, 'bank_transfer', 'INV-003', '2023-03-01', '2023-03-31'), + (4, 'Marketing Agency', '2023-03-20', 10000.00, 'credit_card', 'INV-004', '2023-03-15', '2023-04-14'), + (5, 'Insurance Provider', '2023-03-25', 5000.00, 'bank_transfer', 'INV-005', '2023-03-20', '2023-04-19'), + (6, 'Cleaning Service', '2023-03-31', 2000.00, 'check', 'INV-006', '2023-03-25', '2023-04-24'), + (7, 'Car Manufacturer Inc', '2023-04-01', 200000.00, 'bank_transfer', 'INV-007', '2023-03-25', '2023-04-24'), + (8, 'Auto Parts Supplier', '2023-04-10', 30000.00, 'check', 'INV-008', '2023-04-05', '2023-05-05'), + (9, 'Utility Company', '2023-04-15', 1500.00, 'bank_transfer', 'INV-009', '2023-04-01', '2023-04-30'), + (10, 'Marketing Agency', '2023-04-20', 15000.00, 'credit_card', 'INV-010', '2023-04-15', '2023-05-15'), + (11, 'Insurance Provider', '2023-04-25', 5000.00, 'bank_transfer', 'INV-011', '2023-04-20', '2023-05-20'), + (12, 'Cleaning Service', '2023-04-30', 2000.00, 'check', 'INV-012', '2023-04-25', '2023-05-25'), + (13, 'Toyota Auto Parts', CURRENT_DATE - INTERVAL '5 days', 12500.00, 'bank_transfer', 'INV-013', CURRENT_DATE - INTERVAL '10 days', CURRENT_DATE + INTERVAL '20 days'), + (14, 'Honda Manufacturing', CURRENT_DATE - INTERVAL '3 days', 18000.00, 'check', 'INV-014', CURRENT_DATE - INTERVAL '8 days', CURRENT_DATE + INTERVAL '22 days'), + (15, 'Ford Supplier Co', CURRENT_DATE - INTERVAL '2 days', 22000.00, 'bank_transfer', 'INV-015', CURRENT_DATE - INTERVAL '7 days', CURRENT_DATE + INTERVAL '23 days'), + (16, 'Tesla Parts Inc', CURRENT_DATE - INTERVAL '1 day', 15000.00, 'credit_card', 'INV-016', CURRENT_DATE - INTERVAL '6 days', CURRENT_DATE + INTERVAL '24 days'), + (17, 'Chevrolet Auto', CURRENT_DATE, 20000.00, 'bank_transfer', 'INV-017', CURRENT_DATE - INTERVAL '5 days', CURRENT_DATE + INTERVAL '25 days'); + + DELETE FROM DEFOG.BROKER.SBCUSTOMER; + INSERT INTO DEFOG.BROKER.SBCUSTOMER (sbCustId, sbCustName, sbCustEmail, sbCustPhone, sbCustAddress1, sbCustCity, sbCustState, sbCustCountry, sbCustPostalCode, sbCustJoinDate, sbCustStatus) VALUES +('C001', 'john doe', 'john.doe@email.com', '555-123-4567', '123 Main St', 'Anytown', 'CA', 'USA', '90001', '2020-01-01', 'active'), +('C002', 'Jane Smith', 'jane.smith@email.com', '555-987-6543', '456 Oak Rd', 'Someville', 'NY', 'USA', '10002', '2019-03-15', 'active'), +('C003', 'Bob Johnson', 'bob.johnson@email.com', '555-246-8135', '789 Pine Ave', 'Mytown', 'TX', 'USA', '75000', '2022-06-01', 'inactive'), +('C004', 'Samantha Lee', 'samantha.lee@email.com', '555-135-7902', '246 Elm St', 'Yourtown', 'CA', 'USA', '92101', '2018-09-22', 'suspended'), +('C005', 'Michael Chen', 'michael.chen@email.com', '555-864-2319', '159 Cedar Ln', 'Anothertown', 'FL', 'USA', '33101', '2021-02-28', 'active'), +('C006', 'Emily Davis', 'emily.davis@email.com', '555-753-1904', '753 Maple Dr', 'Mytown', 'TX', 'USA', '75000', '2020-07-15', 'active'), +('C007', 'David Kim', 'david.kim@email.com', '555-370-2648', '864 Oak St', 'Anothertown', 'FL', 'USA', '33101', '2022-11-05', 'active'), +('C008', 'Sarah Nguyen', 'sarah.nguyen@email.com', '555-623-7419', '951 Pine Rd', 'Yourtown', 'CA', 'USA', '92101', '2019-04-01', 'closed'), +('C009', 'William Garcia', 'william.garcia@email.com', '555-148-5326', '258 Elm Ave', 'Anytown', 'CA', 'USA', '90001', '2021-08-22', 'active'), +('C010', 'Jessica Hernandez', 'jessica.hernandez@email.com', '555-963-8520', '147 Cedar Blvd', 'Someville', 'NY', 'USA', '10002', '2020-03-10', 'inactive'), +('C011', 'Alex Rodriguez', 'alex.rodriguez@email.com', '555-246-1357', '753 Oak St', 'Newtown', 'NJ', 'USA', '08801', '2023-01-15', 'active'), +('C012', 'Olivia Johnson', 'olivia.johnson@email.com', '555-987-6543', '321 Elm St', 'Newtown', 'NJ', 'USA', '08801', '2023-01-05', 'active'), +('C013', 'Ethan Davis', 'ethan.davis@email.com', '555-246-8135', '654 Oak Ave', 'Someville', 'NY', 'USA', '10002', '2023-02-12', 'active'), +('C014', 'Ava Wilson', 'ava.wilson@email.com', '555-135-7902', '987 Pine Rd', 'Anytown', 'CA', 'USA', '90001', '2023-03-20', 'active'), +('C015', 'Emma Brown', 'emma.brown@email.com', '555-987-6543', '789 Oak St', 'Newtown', 'NJ', 'USA', '08801', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '5 months', 'active'), +('C016', 'sophia martinez', 'sophia.martinez@email.com', '555-246-8135', '159 Elm Ave', 'Anytown', 'CA', 'USA', '90001', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '4 months', 'active'), +('C017', 'Jacob Taylor', 'jacob.taylor@email.com', '555-135-7902', '753 Pine Rd', 'Someville', 'NY', 'USA', '10002', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '3 months', 'active'), +('C018', 'Michael Anderson', 'michael.anderson@email.com', '555-864-2319', '321 Cedar Ln', 'Yourtown', 'CA', 'USA', '92101', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months', 'active'), +('C019', 'Isabella Thompson', 'isabella.thompson@email.com', '555-753-1904', '987 Maple Dr', 'Anothertown', 'FL', 'USA', '33101', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month', 'active'), +('C020', 'Maurice Lee', 'maurice.lee@email.com', '555-370-2648', '654 Oak St', 'Mytown', 'TX', 'USA', '75000', DATE_TRUNC('month', CURRENT_DATE), 'active'); + + + DELETE FROM DEFOG.BROKER.SBTICKER; + INSERT INTO DEFOG.BROKER.SBTICKER (sbTickerId, sbTickerSymbol, sbTickerName, sbTickerType, sbTickerExchange, sbTickerCurrency, sbTickerDb2x, sbTickerIsActive) VALUES +('T001', 'AAPL', 'Apple Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T002', 'MSFT', 'Microsoft Corporation', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T003', 'AMZN', 'Amazon.com, Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T004', 'TSLA', 'Tesla, Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T005', 'GOOGL', 'Alphabet Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T006', 'FB', 'Meta Platforms, Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T007', 'BRK.B', 'Berkshire Hathaway Inc.', 'stock', 'NYSE', 'USD', 'NY', true), +('T008', 'JPM', 'JPMorgan Chase & Co.', 'stock', 'NYSE', 'USD', 'NY', true), +('T009', 'V', 'Visa Inc.', 'stock', 'NYSE', 'USD', 'NY', true), +('T010', 'PG', 'Procter & Gamble Company', 'stock', 'NYSE', 'USD', 'NY', true), +('T011', 'SPY', 'SPDR S&P 500 ETF Trust', 'etf', 'NYSE Arca', 'USD', 'NX', true), +('T012', 'QQQ', 'Invesco QQQ Trust', 'etf', 'NASDAQ', 'USD', 'NQ', true), +('T013', 'VTI', 'Vanguard Total Stock Market ETF', 'etf', 'NYSE Arca', 'USD', 'NX', true), +('T014', 'VXUS', 'Vanguard Total International Stock ETF', 'etf', 'NASDAQ', 'USD', 'NQ', true), +('T015', 'VFINX', 'Vanguard 500 Index Fund', 'mutualfund', 'Vanguard', 'USD', 'VG', true), +('T016', 'VTSAX', 'Vanguard Total Stock Market Index Fund', 'mutualfund', 'Vanguard', 'USD', 'VG', true), +('T017', 'VIGAX', 'Vanguard Growth Index Fund', 'mutualfund', 'Vanguard', 'USD', 'VG', true), +('T018', 'GOOG', 'Alphabet Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true), +('T019', 'VTI', 'Vanguard Total Stock Market ETF', 'etf', 'NYSE Arca', 'USD', 'NX', true), +('T020', 'VTSAX', 'Vanguard Total Stock Market Index Fund', 'mutualfund', 'Vanguard', 'USD', 'VG', true), +('T021', 'NFLX', 'Netflix, Inc.', 'stock', 'NASDAQ', 'USD', 'NQ', true); + + DELETE FROM DEFOG.BROKER.SBDAILYPRICE; + INSERT INTO DEFOG.BROKER.SBDAILYPRICE (sbDpTickerId, sbDpDate, sbDpOpen, sbDpHigh, sbDpLow, sbDpClose, sbDpVolume, sbDpEpochMs, sbDpSource) VALUES +('T001', '2023-04-01', 150.00, 152.50, 148.75, 151.25, 75000000, 1680336000000, 'NYSE'), +('T002', '2023-04-01', 280.00, 282.75, 279.50, 281.00, 35000000, 1680336000000, 'NASDAQ'), +('T003', '2023-04-01', 3200.00, 3225.00, 3180.00, 3210.00, 4000000, 1680336000000, 'NASDAQ'), +('T004', '2023-04-01', 180.00, 185.00, 178.50, 184.25, 20000000, 1680336000000, 'NASDAQ'), +('T005', '2023-04-01', 2500.00, 2525.00, 2475.00, 2510.00, 1500000, 1680336000000, 'NASDAQ'), +('T006', '2023-04-01', 200.00, 205.00, 198.00, 202.50, 15000000, 1680336000000, 'NASDAQ'), +('T007', '2023-04-01', 400000.00, 402500.00, 398000.00, 401000.00, 10000, 1680336000000, 'NYSE'), +('T008', '2023-04-01', 130.00, 132.50, 128.75, 131.00, 12000000, 1680336000000, 'NYSE'), +('T009', '2023-04-01', 220.00, 222.50, 218.00, 221.00, 8000000, 1680336000000, 'NYSE'), +('T010', '2023-04-01', 140.00, 142.00, 139.00, 141.50, 6000000, 1680336000000, 'NYSE'), +('T001', '2023-04-02', 151.50, 153.00, 150.00, 152.00, 70000000, 1680422400000, 'NYSE'), +('T002', '2023-04-02', 281.25, 283.50, 280.00, 282.75, 32000000, 1680422400000, 'NASDAQ'), +('T003', '2023-04-02', 3212.00, 3230.00, 3200.00, 3225.00, 3800000, 1680422400000, 'NASDAQ'), +('T004', '2023-04-02', 184.50, 187.00, 183.00, 186.00, 18000000, 1680422400000, 'NASDAQ'), +('T005', '2023-04-02', 2512.00, 2530.00, 2500.00, 2520.00, 1400000, 1680422400000, 'NASDAQ'), +('T006', '2023-04-02', 203.00, 206.50, 201.00, 205.00, 14000000, 1680422400000, 'NASDAQ'), +('T007', '2023-04-02', 401500.00, 403000.00, 400000.00, 402000.00, 9500, 1680422400000, 'NYSE'), +('T008', '2023-04-02', 131.25, 133.00, 130.00, 132.50, 11000000, 1680422400000, 'NYSE'), +('T009', '2023-04-02', 221.50, 223.00, 220.00, 222.00, 7500000, 1680422400000, 'NYSE'), +('T010', '2023-04-02', 141.75, 143.00, 140.50, 142.25, 5500000, 1680422400000, 'NYSE'), +('T001', '2023-04-03', 152.25, 154.00, 151.00, 153.50, 65000000, 1680508800000, 'NYSE'), +('T002', '2023-04-03', 283.00, 285.00, 281.50, 284.00, 30000000, 1680508800000, 'NASDAQ'), +('T003', '2023-04-03', 3227.00, 3240.00, 3220.00, 3235.00, 3600000, 1680508800000, 'NASDAQ'), +('T004', '2023-04-03', 186.25, 188.50, 185.00, 187.75, 16000000, 1680508800000, 'NASDAQ'), +('T005', '2023-04-03', 2522.00, 2540.00, 2515.00, 2535.00, 1300000, 1680508800000, 'NASDAQ'), +('T006', '2023-04-03', 205.50, 208.00, 203.50, 207.00, 13000000, 1680508800000, 'NASDAQ'), +('T007', '2023-04-03', 402500.00, 404000.00, 401000.00, 403500.00, 9000, 1680508800000, 'NYSE'), +('T008', '2023-04-03', 132.75, 134.50, 131.50, 133.75, 10000000, 1680508800000, 'NYSE'), +('T009', '2023-04-03', 222.25, 224.00, 221.00, 223.50, 7000000, 1680508800000, 'NYSE'), +('T010', '2023-04-03', 142.50, 144.00, 141.50, 143.25, 5000000, 1680508800000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '8 days', 204.00, 204.50, 202.75, 203.25, 8000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '8 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '6 days', 205.00, 207.50, 203.75, 206.25, 8000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '6 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '5 days', 206.50, 208.00, 205.00, 207.00, 7500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '5 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '4 days', 207.25, 209.00, 206.50, 208.50, 7000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '4 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '3 days', 208.75, 210.50, 207.75, 209.75, 6500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '3 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '2 days', 210.00, 211.75, 209.25, 211.00, 6000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '2 days') * 1000, 'NYSE'), +('T019', CURRENT_DATE - INTERVAL '1 day', 211.25, 213.00, 210.50, 212.25, 5500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '1 day') * 1000, 'NYSE'), +('T019', CURRENT_DATE, 212.50, 214.25, 211.75, 213.50, 5000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000, 'NYSE'), +('T020', CURRENT_DATE - INTERVAL '6 days', 82.00, 83.00, 81.50, 82.50, 1000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '6 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '5 days', 82.60, 83.60, 82.10, 83.10, 950000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '5 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '4 days', 83.20, 84.20, 82.70, 83.70, 900000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '4 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '3 days', 83.80, 84.80, 83.30, 84.30, 850000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '3 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '2 days', 84.40, 85.40, 83.90, 84.90, 800000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '2 days') * 1000, 'Vanguard'), +('T020', CURRENT_DATE - INTERVAL '1 day', 85.00, 86.00, 84.50, 85.50, 750000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '1 day') * 1000, 'Vanguard'), +('T020', CURRENT_DATE, 85.60, 86.60, 85.10, 86.10, 700000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000, 'Vanguard'), +('T021', CURRENT_DATE - INTERVAL '6 days', 300.00, 305.00, 297.50, 302.50, 10000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '6 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '5 days', 303.00, 308.00, 300.50, 305.50, 9500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '5 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '4 days', 306.00, 311.00, 303.50, 308.50, 9000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '4 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '3 days', 309.00, 314.00, 306.50, 311.50, 8500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '3 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '2 days', 312.00, 317.00, 309.50, 314.50, 8000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '2 days') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE - INTERVAL '1 day', 315.00, 320.00, 312.50, 317.50, 7500000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - INTERVAL '1 day') * 1000, 'NASDAQ'), +('T021', CURRENT_DATE, 318.00, 323.00, 315.50, 320.50, 7000000, EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000, 'NASDAQ'); + + DELETE FROM DEFOG.BROKER.SBTRANSACTION; + INSERT INTO DEFOG.BROKER.SBTRANSACTION (sbTxId, sbTxCustId, sbTxTickerId, sbTxDateTime, sbTxType, sbTxShares, sbTxPrice, sbTxAmount, sbTxCcy, sbTxTax, sbTxCommission, sbTxKpx, sbTxSettlementDateStr, sbTxStatus) VALUES +('TX001', 'C001', 'T001', '2023-04-01 09:30:00'::timestamp, 'buy', 100, 150.00, 15000.00, 'USD', 75.00, 10.00, 'KP001', '20230401 09:30:00', 'success'), +('TX002', 'C002', 'T002', '2023-04-01 10:15:00'::timestamp, 'sell', 50, 280.00, 14000.00, 'USD', 70.00, 10.00, 'KP002', '20230401 10:15:00', 'success'), +('TX003', 'C003', 'T003', '2023-04-01 11:00:00'::timestamp, 'buy', 10, 3200.00, 32000.00, 'USD', 160.00, 20.00, 'KP003', '20230401 11:00:00', 'success'), +('TX004', 'C003', 'T004', '2023-04-01 11:45:00'::timestamp, 'sell', 25, 180.00, 4500.00, 'USD', 22.50, 5.00, 'KP004', '20230401 11:45:00', 'success'), +('TX005', 'C005', 'T005', '2023-04-01 12:30:00'::timestamp, 'buy', 5, 2500.00, 12500.00, 'USD', 62.50, 15.00, 'KP005', '20230401 12:30:00', 'success'), +('TX006', 'C002', 'T006', '2023-04-01 13:15:00'::timestamp, 'sell', 75, 200.00, 15000.00, 'USD', 75.00, 10.00, 'KP006', '20230401 13:15:00', 'success'), +('TX007', 'C003', 'T007', '2023-04-01 14:00:00'::timestamp, 'buy', 1, 400000.00, 400000.00, 'USD', 2000.00, 100.00, 'KP007', '20230401 14:00:00', 'success'), +('TX008', 'C003', 'T008', '2023-04-01 14:45:00'::timestamp, 'sell', 100, 130.00, 13000.00, 'USD', 65.00, 10.00, 'KP008', '20230401 14:45:00', 'success'), +('TX009', 'C009', 'T009', '2023-04-01 15:30:00'::timestamp, 'buy', 50, 220.00, 11000.00, 'USD', 55.00, 10.00, 'KP009', '20230401 15:30:00', 'success'), +('TX010', 'C002', 'T010', '2023-04-01 16:15:00'::timestamp, 'sell', 80, 140.00, 11200.00, 'USD', 56.00, 10.00, 'KP010', '20230401 16:15:00', 'success'), +('TX011', 'C001', 'T001', '2023-04-02 09:30:00'::timestamp, 'sell', 50, 151.50, 7575.00, 'USD', 37.88, 5.00, 'KP011', '20230402 09:30:00', 'success'), +('TX012', 'C002', 'T002', '2023-04-02 10:15:00'::timestamp, 'buy', 30, 281.25, 8437.50, 'USD', 42.19, 7.50, 'KP012', '20230402 10:15:00', 'fail'), +('TX013', 'C003', 'T003', '2023-04-02 11:00:00'::timestamp, 'sell', 5, 3212.00, 16060.00, 'USD', 80.30, 15.00, 'KP013', '20230402 11:00:00', 'success'), +('TX014', 'C004', 'T004', '2023-04-02 11:45:00'::timestamp, 'buy', 15, 184.50, 2767.50, 'USD', 13.84, 5.00, 'KP014', '20230402 11:45:00', 'success'), +('TX015', 'C005', 'T005', '2023-04-02 12:30:00'::timestamp, 'sell', 2, 2512.00, 5024.00, 'USD', 25.12, 10.00, 'KP015', '20230402 12:30:00', 'success'), +('TX016', 'C006', 'T006', '2023-04-02 13:15:00'::timestamp, 'buy', 50, 203.00, 10150.00, 'USD', 50.75, 10.00, 'KP016', '20230402 13:15:00', 'success'), +('TX017', 'C007', 'T007', '2023-04-02 14:00:00'::timestamp, 'sell', 1, 401500.00, 401500.00, 'USD', 2007.50, 100.00, 'KP017', '20230402 14:00:00', 'success'), +('TX018', 'C008', 'T008', '2023-04-02 14:45:00'::timestamp, 'buy', 75, 131.25, 9843.75, 'USD', 49.22, 7.50, 'KP018', '20230402 14:45:00', 'success'), +('TX019', 'C009', 'T009', '2023-04-02 15:30:00'::timestamp, 'sell', 25, 221.50, 5537.50, 'USD', 27.69, 5.00, 'KP019', '20230402 15:30:00', 'success'), +('TX020', 'C010', 'T010', '2023-04-02 16:15:00'::timestamp, 'buy', 60, 141.75, 8505.00, 'USD', 42.53, 7.50, 'KP020', '20230402 16:15:00', 'success'), +('TX021', 'C001', 'T001', '2023-04-03 09:30:00'::timestamp, 'buy', 75, 152.25, 11418.75, 'USD', 57.09, 10.00, 'KP021', '20230403 09:30:00', 'fail'), +('TX022', 'C002', 'T002', '2023-04-03 10:15:00'::timestamp, 'sell', 40, 283.00, 11320.00, 'USD', 56.60, 10.00, 'KP022', '20230403 10:15:00', 'success'), +('TX023', 'C003', 'T003', '2023-04-03 11:00:00'::timestamp, 'buy', 8, 3227.00, 25816.00, 'USD', 129.08, 20.00, 'KP023', '20230403 11:00:00', 'success'), +('TX024', 'C004', 'T004', '2023-04-03 11:45:00'::timestamp, 'sell', 20, 186.25, 3725.00, 'USD', 18.63, 5.00, 'KP024', '20230403 11:45:00', 'success'), +('TX025', 'C005', 'T005', '2023-04-03 12:30:00'::timestamp, 'buy', 3, 2522.00, 7566.00, 'USD', 37.83, 15.00, 'KP025', '20230403 12:30:00', 'success'), +('TX026', 'C006', 'T006', '2023-04-03 13:15:00'::timestamp, 'sell', 60, 205.50, 12330.00, 'USD', 61.65, 10.00, 'KP026', '20230403 13:15:00', 'success'), +('TX027', 'C007', 'T007', '2023-04-03 14:00:00'::timestamp, 'buy', 1, 402500.00, 402500.00, 'USD', 2012.50, 100.00, 'KP027', '20230403 14:00:00', 'success'), +('TX028', 'C008', 'T008', '2023-04-03 14:45:00'::timestamp, 'sell', 90, 132.75, 11947.50, 'USD', 59.74, 7.50, 'KP028', '20230403 14:45:00', 'success'), +('TX029', 'C009', 'T009', '2023-04-03 15:30:00'::timestamp, 'buy', 40, 222.25, 8890.00, 'USD', 44.45, 10.00, 'KP029', '20230403 15:30:00', 'success'), +('TX030', 'C010', 'T010', '2023-04-03 16:15:00'::timestamp, 'sell', 70, 142.50, 9975.00, 'USD', 49.88, 10.00, 'KP030', '20230403 16:15:00', 'success'), +('TX031', 'C001', 'T001', CURRENT_DATE - INTERVAL '9 days', 'buy', 100, 150.00, 15000.00, 'USD', 75.00, 10.00, 'KP031', NULL, 'fail'), +('TX032', 'C002', 'T002', CURRENT_DATE - INTERVAL '8 days', 'sell', 80, 280.00, 14000.00, 'USD', 70.00, 10.00, 'KP032', TO_CHAR(CURRENT_DATE - INTERVAL '8 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX033', 'C003', 'T001', CURRENT_DATE - INTERVAL '7 days', 'buy', 120, 200.00, 24000.00, 'USD', 120.00, 15.00, 'KP033', TO_CHAR(CURRENT_DATE - INTERVAL '7 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX034', 'C004', 'T004', CURRENT_DATE - INTERVAL '6 days', 'sell', 90, 320.00, 28800.00, 'USD', 144.00, 12.00, 'KP034', TO_CHAR(CURRENT_DATE - INTERVAL '6 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX035', 'C005', 'T001', CURRENT_DATE - INTERVAL '5 days', 'buy', 150, 180.00, 27000.00, 'USD', 135.00, 20.00, 'KP035', NULL, 'fail'), +('TX036', 'C006', 'T006', CURRENT_DATE - INTERVAL '4 days', 'sell', 70, 300.00, 21000.00, 'USD', 105.00, 15.00, 'KP036', TO_CHAR(CURRENT_DATE - INTERVAL '4 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX037', 'C007', 'T007', CURRENT_DATE - INTERVAL '3 days', 'buy', 110, 220.00, 24200.00, 'USD', 121.00, 10.00, 'KP037', TO_CHAR(CURRENT_DATE - INTERVAL '3 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX038', 'C008', 'T008', CURRENT_DATE - INTERVAL '2 days', 'sell', 100, 350.00, 35000.00, 'USD', 175.00, 25.00, 'KP038', TO_CHAR(CURRENT_DATE - INTERVAL '2 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX039', 'C009', 'T007', CURRENT_DATE - INTERVAL '1 day', 'buy', 80, 230.00, 18400.00, 'USD', 92.00, 18.00, 'KP039', NULL, 'pending'), +('TX040', 'C001', 'T011', CURRENT_DATE - INTERVAL '10 days', 'buy', 50, 400.00, 20000.00, 'USD', 100.00, 20.00, 'KP040', TO_CHAR(CURRENT_DATE - INTERVAL '10 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX041', 'C002', 'T012', CURRENT_DATE - INTERVAL '9 days', 'sell', 30, 320.00, 9600.00, 'USD', 48.00, 15.00, 'KP041', TO_CHAR(CURRENT_DATE - INTERVAL '9 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX042', 'C003', 'T013', CURRENT_DATE - INTERVAL '8 days', 'buy', 80, 180.00, 14400.00, 'USD', 72.00, 10.00, 'KP042', TO_CHAR(CURRENT_DATE - INTERVAL '8 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX043', 'C004', 'T014', CURRENT_DATE - INTERVAL '7 days', 'sell', 60, 220.00, 13200.00, 'USD', 66.00, 12.00, 'KP043', NULL, 'pending'), +('TX044', 'C012', 'T001', '2023-01-15 10:00:00'::timestamp, 'buy', 80, 155.00, 12400.00, 'USD', 62.00, 10.00, 'KP044', '20230115 10:00:00', 'success'), +('TX045', 'C012', 'T001', '2023-01-16 10:30:00'::timestamp, 'buy', 80, 155.00, 12400.00, 'USD', 62.00, 10.00, 'KP045', '20230116 10:30:00', 'success'), +('TX046', 'C013', 'T002', '2023-02-20 11:30:00'::timestamp, 'sell', 60, 285.00, 17100.00, 'USD', 85.50, 15.00, 'KP046', '20230220 11:30:00', 'success'), +('TX047', 'C014', 'T003', '2023-03-25 14:45:00'::timestamp, 'buy', 5, 3250.00, 16250.00, 'USD', 81.25, 20.00, 'KP047', '20230325 14:45:00', 'success'), +('TX048', 'C012', 'T004', '2023-01-30 13:15:00'::timestamp, 'sell', 40, 190.00, 7600.00, 'USD', 38.00, 10.00, 'KP048', '20230130 13:15:00', 'success'), +('TX049', 'C013', 'T005', '2023-02-28 16:00:00'::timestamp, 'buy', 2, 2550.00, 5100.00, 'USD', 25.50, 15.00, 'KP049', '20230228 16:00:00', 'success'), +('TX050', 'C014', 'T006', '2023-03-30 09:45:00'::timestamp, 'sell', 30, 210.00, 6300.00, 'USD', 31.50, 10.00, 'KP050', '20230331 09:45:00', 'success'), +('TX051', 'C015', 'T001', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '5 months' + INTERVAL '1 day', 'buy', 50, 150.00, 7500.00, 'USD', 37.50, 10.00, 'KP051', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '5 months' + INTERVAL '1 day', '%Y%m%d %H:%i:%s'), 'success'), +('TX052', 'C016', 'T002', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '4 months' + INTERVAL '2 days', 'sell', 40, 280.00, 11200.00, 'USD', 56.00, 10.00, 'KP052', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '4 months' + INTERVAL '2 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX053', 'C017', 'T003', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '3 months' + INTERVAL '3 days', 'buy', 15, 3200.00, 48000.00, 'USD', 240.00, 20.00, 'KP053', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '3 months' + INTERVAL '3 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX054', 'C018', 'T004', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months' + INTERVAL '4 days', 'sell', 30, 180.00, 5400.00, 'USD', 27.00, 5.00, 'KP054', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months' + INTERVAL '4 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX055', 'C019', 'T005', DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month' + INTERVAL '5 days', 'buy', 10, 2500.00, 25000.00, 'USD', 125.00, 15.00, 'KP055', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month' + INTERVAL '5 days', '%Y%m%d %H:%i:%s'), 'success'), +('TX056', 'C002', 'T006', DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 day', 'sell', 20, 200.00, 4000.00, 'USD', 20.00, 10.00, 'KP056', TO_CHAR(DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 day', '%Y%m%d %H:%i:%s'), 'success'); + +END +$$; + +------------------------------------------------------------------------ +-- 2. Create a task that calls the procedure everyday at midnight ET -- +------------------------------------------------------------------------ +CREATE OR REPLACE TASK DEFOG.BROKER.UPDATE_DATA_TASK_MIDNIGHT + WAREHOUSE = "DEMO_WH" + SCHEDULE = 'USING CRON 0 5 * * * UTC' +AS + CALL DEFOG.BROKER.DEFOG_DAILY_UPDATE(); + + +---------------------------------------------------- +-- 3. Enable the task -- +-- By default, after creation the task is paused -- +---------------------------------------------------- + +ALTER TASK DEFOG.BROKER.UPDATE_DATA_TASK_MIDNIGHT RESUME; + +---------------------------------------------------- +-- Grant execute privilege to role +---------------------------------------------------- +GRANT EXECUTE TASK ON ACCOUNT TO ROLE SYSADMIN; + +---------------------------------------------------- +-- Test procedure manually +-- Test task manually +---------------------------------------------------- +CALL EFOG.BROKER.DEFOG_DAILY_UPDATE(); +EXECUTE TASK DEFOG.BROKER.UPDATE_DATA_TASK_MIDNIGHT; + + +---------------------------------------------------- +-- Show state of the task +---------------------------------------------------- +SHOW TASKS LIKE 'UPDATE_DATA_TASK_MIDNIGHT' IN SCHEMA DEFOG.BROKER; + + +---------------------------------------------------- +-- Detailed history of task executions: +---------------------------------------------------- +-- SELECT * +SELECT QUERY_TEXT, STATE, ERROR_CODE, ERROR_MESSAGE, SCHEDULED_TIME +FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY( + TASK_NAME => 'UPDATE_DATA_TASK_MIDNIGHT', + RESULT_LIMIT => 10 +)) +ORDER BY SCHEDULED_TIME DESC; From 30b38120dbd17c1a3f79de0b79d4473d7533ea58 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Thu, 21 Aug 2025 13:06:47 -0700 Subject: [PATCH 30/46] task script and check in connection --- tests/conftest.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 6ea261bc6..e98908d29 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -584,6 +584,26 @@ def _impl(database_name: str, schema_name: str) -> DatabaseContext: database=database_name, schema=schema_name, ) + # Run DEFOG_DAILY_UPDATE() only if data is older than 1 day + with connection.cursor() as cur: + cur.execute(""" + DECLARE last_mod DATE; + + BEGIN + -- Get table last modified date + SELECT DATE(LAST_ALTERED) INTO last_mod + FROM INFORMATION_SCHEMA.TABLES + WHERE table_catalog='DEFOG' + AND table_schema = 'BROKER' + AND table_name = 'SBDAILYPRICE'; + + -- If last modified is before today, call the procedure + IF (last_mod < CURRENT_DATE()) THEN + CALL DEFOG.BROKER.DEFOG_DAILY_UPDATE(); + END IF; + END; + """) + return load_database_context("snowflake", connection=connection) return _impl From a703b41c75d36b931417aa77d2918cfdfcaf768d Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Thu, 21 Aug 2025 14:24:03 -0700 Subject: [PATCH 31/46] fix date_trunc in sqlite and uncomment row --- tests/gen_data/init_defog_sf.sql | 2 +- tests/gen_data/init_defog_sqlite.sql | 36 ++++++++++++++-------------- tests/gen_data/sf_task.sql | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/gen_data/init_defog_sf.sql b/tests/gen_data/init_defog_sf.sql index 50bbefc60..b4f2434bb 100644 --- a/tests/gen_data/init_defog_sf.sql +++ b/tests/gen_data/init_defog_sf.sql @@ -237,7 +237,7 @@ INSERT INTO sbTransaction (sbTxId, sbTxCustId, sbTxTickerId, sbTxDateTime, sbTxT ------------------------------------------------------------------------------- -- For the Dealership SCHEMA --- https://github.com/defog-ai/defog-data/blob/main/defog_data/dealership/dealership.sql +-- https://github.com/defog-ai/defog-data/blob/main/defog_data/car_dealership/car_dealership.sql -- Snowflake dialect compatibility replace: -- - SERIAL PRIMARY KEY -> INTEGER AUTOINCREMENT PRIMARY KEY diff --git a/tests/gen_data/init_defog_sqlite.sql b/tests/gen_data/init_defog_sqlite.sql index 8c81a3f48..94db5d0af 100644 --- a/tests/gen_data/init_defog_sqlite.sql +++ b/tests/gen_data/init_defog_sqlite.sql @@ -270,8 +270,8 @@ CREATE TABLE user_setting_snapshot (user_id INTEGER NOT NULL, snapshot_date DATE verified_devices TEXT /* comma separated list of device ids */, verified_ips TEXT /* comma separated list of IP addresses */, mfa_enabled INTEGER, marketing_opt_in INTEGER, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP); INSERT INTO users (uid, username, email, phone_number, created_at, user_type, status, country, address_billing, address_delivery, kyc_status) VALUES - (1, 'john_doe', 'john.doe@email.com', '+1234567890', DATETIME('now', '-1 month'), 'individual', 'active', 'US', '123 Main St, Anytown US 12345', '123 Main St, Anytown US 12345', 'approved'), - (2, 'jane_smith', 'jane.smith@email.com', '+9876543210', DATETIME('now', '-2 months'), 'individual', 'active', 'CA', '456 Oak Rd, Toronto ON M1M2M2', '456 Oak Rd, Toronto ON M1M2M2', 'approved'), + (1, 'john_doe', 'john.doe@email.com', '+1234567890', DATE('now', 'start of month', '-1 month'), 'individual', 'active', 'US', '123 Main St, Anytown US 12345', '123 Main St, Anytown US 12345', 'approved'), + (2, 'jane_smith', 'jane.smith@email.com', '+9876543210', DATE('now', 'start of month', '-2 months'), 'individual', 'active', 'CA', '456 Oak Rd, Toronto ON M1M2M2', '456 Oak Rd, Toronto ON M1M2M2', 'approved'), (3, 'bizuser', 'contact@business.co', '+1234509876', '2021-06-01 09:15:00', 'business', 'active', 'FR', '12 Rue Baptiste, Paris 75001', NULL, 'approved'), (4, 'david_miller', 'dave@personal.email', '+4477788899', '2023-03-20 18:45:00', 'individual', 'inactive', 'GB', '25 London Road, Manchester M12 4XY', '25 London Road, Manchester M12 4XY', 'pending'), (5, 'emily_wilson', 'emily.w@gmail.com', '+8091017161', '2021-11-03 22:10:00', 'individual', 'suspended', 'AU', '72 Collins St, Melbourne VIC 3000', '19 Smith St, Brunswick VIC 3056', 'rejected'), @@ -398,10 +398,10 @@ INSERT INTO notifications (id, user_id, message, type, status, created_at, devic (10, 8, 'Playtime! New games and toys have arrived', 'promotion', 'archived', '2023-06-01 18:00:00', 'email', NULL, 'https://kidzplayhouse.com/new-arrivals'), (11, 9, 'Here''s $10 to start your glow up!', 'promotion', 'unread', '2023-06-01 10:15:00', 'email', NULL, 'https://beautytrending.com/new-customer'), (12, 10, 'Your order #ord_mjs337 is being processed', 'transaction', 'read', '2023-06-04 19:31:30', 'web_app', 'web_d8180kaf', 'https://gamerush.co/orders/32e2b29c'), - (13, 1, 'New promotion: Get 10% off your next order!', 'promotion', 'unread', DATETIME('now', '-7 days'), 'email', NULL, 'https://techmart.com/promo/TECH10'), - (14, 1, 'Your order #456def has been delivered', 'transaction', 'unread', DATETIME('now', '-14 days'), 'mobile_app', 'mobile_8fh2k1', 'app://orders/456def'), - (15, 2, 'Reminder: Your FitLife membership expires in 7 days', 'general', 'unread', DATETIME('now', '-21 days'), 'email', NULL, 'https://fitlifegear.com/renew'), - (16, 2, 'Weekend Flash Sale: 25% off all activewear!', 'promotion', 'unread', DATETIME('now', '-7 days', '+2 day'), 'mobile_app', 'mobile_yjp08q', 'app://shop/activewear'); + (13, 1, 'New promotion: Get 10% off your next order!', 'promotion', 'unread', DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER)+6) % 7 + 7*1) || ' days'), 'email', NULL, 'https://techmart.com/promo/TECH10'), + (14, 1, 'Your order #456def has been delivered', 'transaction', 'unread', DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER)+6) % 7 + 7*2) || ' days'), 'mobile_app', 'mobile_8fh2k1', 'app://orders/456def'), + (15, 2, 'Reminder: Your FitLife membership expires in 7 days', 'general', 'unread', DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER)+6) % 7 + 7*3) || ' days'), 'email', NULL, 'https://fitlifegear.com/renew'), + (16, 2, 'Weekend Flash Sale: 25% off all activewear!', 'promotion', 'unread', DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER)+6) % 7 + 7*1 - 2) || ' days'), 'mobile_app', 'mobile_yjp08q', 'app://shop/activewear'); INSERT INTO user_sessions (user_id, session_start_ts, session_end_ts, device_type, device_id) VALUES (1, '2023-06-01 09:45:22', '2023-06-01 10:20:35', 'mobile_app', 'mobile_8fh2k1'), @@ -531,12 +531,12 @@ INSERT INTO sales (_id, car_id, salesperson_id, customer_id, sale_price, sale_da (14, 2, 3, 1, 23200.00, DATE('now', '-21 days')), (15, 8, 6, 12, 43500.00, DATE('now', '-3 days')), (16, 10, 4, 2, 29500.00, DATE('now', '-5 days')), - (17, 3, 2, 3, 46000.00, DATE('now', '-7 days', '+1 day')), - (18, 3, 2, 7, 47500.00, DATE('now', '-7 days')), - (19, 3, 2, 10, 46500.00, DATE('now', '-7 days', '-1 day')), - (20, 4, 1, 3, 48000.00, DATE('now', '-56 days', '+1 day')), - (21, 4, 1, 7, 45000.00, DATE('now', '-56 days')), - (22, 4, 1, 10, 49000.00, DATE('now', '-56 days', '-1 day')); + (17, 3, 2, 3, 46000.00, DATE('now', '-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*1 - 1) || ' days')), + (18, 3, 2, 7, 47500.00, DATE('now', '-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*1) || ' days')), + (19, 3, 2, 10, 46500.00, DATE('now', '-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*1 + 1) || ' days')), + (20, 4, 1, 3, 48000.00, DATE('now', '-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*8 - 1) || ' days')), + (21, 4, 1, 7, 45000.00, DATE('now', '-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*8 ) || ' days')), + (22, 4, 1, 10, 49000.00, DATE('now', '-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*8 + 1) || ' days')); INSERT INTO inventory_snapshots (_id, snapshot_date, car_id, is_in_inventory) VALUES (1, '2023-03-15', 1, TRUE), @@ -581,12 +581,12 @@ INSERT INTO payments_received (_id, sale_id, payment_date, payment_amount, payme (15, 14, DATE('now', '-1 days'), 17200.00, 'financing'), (16, 15, DATE('now', '-1 days'), 37500.00, 'credit_card'), (17, 16, DATE('now', '-5 days'), 26500.00, 'debit_card'), - (18, 17, DATE('now', '-7 days', '+1 day'), 115000.00, 'financing'), - (19, 18, DATE('now', '-7 days'), 115000.00, 'credit_card'), - (20, 19, DATE('now', '-7 days', '-1 day'), 115000.00, 'debit_card'), - (21, 20, DATE('now', '-56 days', '+1 day'), 115000.00, 'cash'), - (22, 21, DATE('now', '-56 days'), 115000.00, 'check'), - (23, 22, DATE('now', '-56 days', '-1 day'), 115000.00, 'credit_card'); + (18, 17, DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*1 - 1) || ' days'), 115000.00, 'financing'), + (19, 18, DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*1) || ' days'), 115000.00, 'credit_card'), + (20, 19, DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*1 + 1) || ' days'), 115000.00, 'debit_card'), + (21, 20, DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*8 - 1) || ' days'), 115000.00, 'cash'), + (22, 21, DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*8) || ' days'), 115000.00, 'check'), + (23, 22, DATE('now','-' || ((CAST(STRFTIME('%w','now') AS INTEGER) + 6) % 7 + 7*8 + 1) || ' days'), 115000.00, 'credit_card'); INSERT INTO payments_made (_id, vendor_name, payment_date, payment_amount, payment_method, invoice_number, invoice_date, due_date) VALUES (1, 'Car Manufacturer Inc', '2023-03-01', 150000.00, 'bank_transfer', 'INV-001', '2023-02-25', '2023-03-25'), diff --git a/tests/gen_data/sf_task.sql b/tests/gen_data/sf_task.sql index f8c1c65d6..7a62b0ee0 100644 --- a/tests/gen_data/sf_task.sql +++ b/tests/gen_data/sf_task.sql @@ -250,7 +250,7 @@ VALUES DELETE FROM DEFOG.DEALERSHIP.CUSTOMERS; INSERT INTO DEFOG.DEALERSHIP.CUSTOMERS (id, first_name, last_name, email, phone, address, city, state, zip_code, crtd_ts) VALUES - -- (1, 'William', 'Davis', 'william.davis@example.com', '555-888-9999', '123 Main St', 'New York', 'NY', '10001', CURRENT_TIMESTAMP - INTERVAL '5 years');, + (1, 'William', 'Davis', 'william.davis@example.com', '555-888-9999', '123 Main St', 'New York', 'NY', '10001', CURRENT_TIMESTAMP - INTERVAL '5 years'), (2, 'Ava', 'Miller', 'ava.miller@example.com', '555-777-6666', '456 Oak Ave', 'Los Angeles', 'CA', '90001', CURRENT_TIMESTAMP - INTERVAL '4 years'), (3, 'Benjamin', 'Wilson', 'benjamin.wilson@example.com', '555-666-5555', '789 Elm St', 'Chicago', 'IL', '60007', CURRENT_TIMESTAMP - INTERVAL '3 years'), (4, 'Mia', 'Moore', 'mia.moore@example.com', '555-555-4444', '321 Pine Rd', 'Houston', 'TX', '77001', CURRENT_TIMESTAMP - INTERVAL '2 years'), From 8c40bacafdbaeb59e32e1017cbbf5ca7500d958c Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 22 Aug 2025 13:12:15 -0700 Subject: [PATCH 32/46] add run-all option --- .github/workflows/pr_testing.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr_testing.yml b/.github/workflows/pr_testing.yml index 841e6dcdc..29f00cae8 100644 --- a/.github/workflows/pr_testing.yml +++ b/.github/workflows/pr_testing.yml @@ -16,6 +16,11 @@ on: description: "Python 3.12" type: boolean default: true + run-all: + description: "Run All Tests" + type: boolean + required: false + default: false run-python: description: "Run Main PyDough Tests" type: boolean @@ -101,8 +106,9 @@ jobs: # https://docs.github.com/en/actions/learn-github-actions/expressions#contains # contains is case-insensitive if: | + (github.event_name == 'pull_request' && contains(needs.get-msg.outputs.commitMsg, '[run all]')) || (github.event_name == 'pull_request' && contains(needs.get-msg.outputs.commitMsg, '[run ci]')) || - (github.event_name == 'workflow_dispatch' && inputs.run-python) + (github.event_name == 'workflow_dispatch' && (inputs.run-all || inputs.run-python)) runs-on: ubuntu-latest strategy: matrix: @@ -138,8 +144,9 @@ jobs: name: Snowflake Tests needs: [get-msg, get-py-ver-matrix] if: | + (github.event_name == 'pull_request' && contains(needs.get-msg.outputs.commitMsg, '[run all]')) || (github.event_name == 'pull_request' && contains(needs.get-msg.outputs.commitMsg, '[run sf]')) || - (github.event_name == 'workflow_dispatch' && inputs.run-sf) + (github.event_name == 'workflow_dispatch' && (inputs.run-all || inputs.run-sf)) uses: ./.github/workflows/sf_testing.yml secrets: SF_USERNAME: ${{ secrets.SF_USERNAME }} @@ -154,8 +161,9 @@ jobs: name: MySQL Tests needs: [get-msg, get-py-ver-matrix] if: | + (github.event_name == 'pull_request' && contains(needs.get-msg.outputs.commitMsg, '[run all]')) || (github.event_name == 'pull_request' && contains(needs.get-msg.outputs.commitMsg, '[run mysql]')) || - (github.event_name == 'workflow_dispatch' && inputs.run-mysql) + (github.event_name == 'workflow_dispatch' && (inputs.run-all || inputs.run-mysql)) uses: ./.github/workflows/mysql_testing.yml # Path to MySQL workflow file secrets: MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }} From 296f0c1a6178da8f23978899bb0bc5075b6a3022 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 22 Aug 2025 13:18:19 -0700 Subject: [PATCH 33/46] mysql in dev dependency --- pyproject.toml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 59c08e163..c94b0296d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,6 +33,7 @@ dev-dependencies = [ "ruff==0.6.7", "pytest-repeat", "pydough[snowflake]", + "pydough[mysql]", ] [project.optional-dependencies] @@ -54,13 +55,13 @@ lint.extend-select = [ "C4", # flake8-comprehensions "TID", # flake8-tidy-imports ] -# Don't run ruff on any ipython notebooks as they may have -# names that don't statically resolve. -exclude = ["**/*.ipynb"] lint.ignore = [ "UP038", ] +# Don't run ruff on any ipython notebooks as they may have +# names that don't statically resolve. +exclude = ["**/*.ipynb"] [tool.mypy] # Don't run mypy on any ipython notebooks From dc065465cbf248f50f8edf90db6b2bf28f5e211d Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 22 Aug 2025 13:29:08 -0700 Subject: [PATCH 34/46] add connectors to docs --- documentation/usage.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/documentation/usage.md b/documentation/usage.md index ce1844fd2..97649db4a 100644 --- a/documentation/usage.md +++ b/documentation/usage.md @@ -340,10 +340,27 @@ Just like the knowledge graph & miscellaneous configurations, the database conte Below is a list of all supported values for the database name: - `sqlite`: uses a SQLite database. [See here](https://docs.python.org/3/library/sqlite3.html#sqlite3.connect) for details on the connection API and what keyword arguments can be passed in. + - `mysql`: uses a MySQL database. [See here](https://dev.mysql.com/doc/connector-python/en/connector-python-example-connecting.html) for details on the connection API and what keyword arguments can be passed in. - `snowflake`: uses a Snowflake database. [See here](https://docs.snowflake.com/en/user-guide/python-connector.html#connecting-to-snowflake) for details on the connection API and what keyword arguments can be passed in. +> Note: If you installed PyDough via pip, you can install optional connectors using pip extras: +> +> ```bash +> pip install pydough[mysql] # Install MySQL connector +> pip install pydough[snowflake] # Install Snowflake connector +> pip install "pydough[mysql,snowflake]" # Install both at once +> ``` + +Here’s a quick reference table showing which connector is needed for each dialect: + +| Dialect | Connector Needed | +|-----------|----------------------------------------| +| `sqlite` | Already included with PyDough | +| `mysql` | `mysql-connector-python` | +| `snowflake` | `snowflake-connector-python[pandas]` | + Below are examples of how to access the context and switch it out for a newly created one, either by manually setting it or by using `session.load_database`. These examples assume that there are two different sqlite database files located at `db_files/education.db` and `db_files/shakespeare.db`. ```py @@ -381,6 +398,7 @@ It is important to ensure that the correct database context is being used for se ) ``` You can find a full example of using Snowflake database with PyDough in [this usage guide](./../demos/notebooks/Snowflake_TPCH.ipynb). + - MySQL: You can connect to a mysql database using `load_metadata_graph` and `connect_database` APIs. For example: ```py pydough.active_session.load_metadata_graph("../../tests/test_metadata/sample_graphs.json", "TPCH"), From 55545c272f67d9fd45acc2740901f26d29bbb1a4 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 22 Aug 2025 14:06:04 -0700 Subject: [PATCH 35/46] move week7 in week_offset --- tests/test_plan_refsols/week_offset7.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 tests/test_plan_refsols/week_offset7.txt diff --git a/tests/test_plan_refsols/week_offset7.txt b/tests/test_plan_refsols/week_offset7.txt new file mode 100644 index 000000000..ec6b04240 --- /dev/null +++ b/tests/test_plan_refsols/week_offset7.txt @@ -0,0 +1,3 @@ +ROOT(columns=[('date_time', sbTxDateTime), ('week_adj7', DATETIME(sbTxDateTime, '1 mm':string, '2 w':string))], orderings=[]) + FILTER(condition=YEAR(sbTxDateTime) < 2025:numeric & DAY(sbTxDateTime) > 1:numeric, columns={'sbTxDateTime': sbTxDateTime}) + SCAN(table=main.sbTransaction, columns={'sbTxDateTime': sbTxDateTime}) From 1558b7c6b1aa26af6674647ed4eba73b01e94f34 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 22 Aug 2025 14:09:42 -0700 Subject: [PATCH 36/46] update try/except for mysql --- tests/conftest.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index e98908d29..d30000c67 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -699,11 +699,15 @@ def mysql_docker_setup() -> None: except subprocess.CalledProcessError as e: pytest.fail(f"Failed to set up MySQL Docker container: {e}") + # Check import is successful + try: + import mysql.connector as mysql_connector + except ImportError as e: + raise RuntimeError("mysql-connector-python is not installed") from e + # Wait for MySQL to be ready for _ in range(30): try: - import mysql.connector as mysql_connector - conn = mysql_connector.connect( host=MYSQL_HOST, port=MYSQL_PORT, @@ -713,7 +717,8 @@ def mysql_docker_setup() -> None: ) conn.close() break - except mysql_connector.Error: + except mysql_connector.Error as e: + print("Error occurred while connecting to MySQL:", e) time.sleep(1) else: subprocess.run(["docker", "rm", "-f", MYSQL_DOCKER_CONTAINER]) From 377b523f34cc1b47330b88ac5206013b31b611e3 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 22 Aug 2025 14:10:04 -0700 Subject: [PATCH 37/46] move week7 in week_offset --- tests/test_pipeline_defog_custom.py | 101 ++++++--- tests/test_pipeline_mysql.py | 209 +----------------- tests/test_pipeline_tpch_sf.py | 100 +++++++++ .../simple_pydough_functions.py | 10 +- 4 files changed, 184 insertions(+), 236 deletions(-) diff --git a/tests/test_pipeline_defog_custom.py b/tests/test_pipeline_defog_custom.py index a34342c77..16d55ad3d 100644 --- a/tests/test_pipeline_defog_custom.py +++ b/tests/test_pipeline_defog_custom.py @@ -65,6 +65,7 @@ time_threshold_reached, transaction_week_sampler, week_offset, + week_offset7, window_sliding_frame_relsize, window_sliding_frame_relsum, years_months_days_hours_datediff, @@ -1367,35 +1368,6 @@ def get_day_of_week( "2023-03-14 15:59:00", "2023-04-13 09:44:00", ], - # "week_adj7": [ - # "2023-05-16 09:30:00", - # "2023-05-16 10:15:00", - # "2023-05-16 11:00:00", - # "2023-05-16 11:45:00", - # "2023-05-16 12:30:00", - # "2023-05-16 13:15:00", - # "2023-05-16 14:00:00", - # "2023-05-16 14:45:00", - # "2023-05-16 15:30:00", - # "2023-05-16 16:15:00", - # "2023-05-17 09:30:00", - # "2023-05-17 10:15:00", - # "2023-05-17 11:00:00", - # "2023-05-17 11:45:00", - # "2023-05-17 12:30:00", - # "2023-05-17 13:15:00", - # "2023-05-17 14:00:00", - # "2023-05-17 14:45:00", - # "2023-05-17 15:30:00", - # "2023-05-17 16:15:00", - # "2023-03-01 10:00:00", - # "2023-03-02 10:30:00", - # "2023-04-03 11:30:00", - # "2023-05-09 14:45:00", - # "2023-03-16 13:15:00", - # "2023-04-11 16:00:00", - # "2023-05-14 09:45:00", - # ], "week_adj8": [ "2024-04-16 09:30:00", "2024-04-16 10:15:00", @@ -1432,6 +1404,77 @@ def get_day_of_week( ), id="week_offset", ), + pytest.param( + PyDoughPandasTest( + week_offset7, + "Broker", + lambda: pd.DataFrame( + { + "date_time": [ + "2023-04-02 09:30:00", + "2023-04-02 10:15:00", + "2023-04-02 11:00:00", + "2023-04-02 11:45:00", + "2023-04-02 12:30:00", + "2023-04-02 13:15:00", + "2023-04-02 14:00:00", + "2023-04-02 14:45:00", + "2023-04-02 15:30:00", + "2023-04-02 16:15:00", + "2023-04-03 09:30:00", + "2023-04-03 10:15:00", + "2023-04-03 11:00:00", + "2023-04-03 11:45:00", + "2023-04-03 12:30:00", + "2023-04-03 13:15:00", + "2023-04-03 14:00:00", + "2023-04-03 14:45:00", + "2023-04-03 15:30:00", + "2023-04-03 16:15:00", + "2023-01-15 10:00:00", + "2023-01-16 10:30:00", + "2023-02-20 11:30:00", + "2023-03-25 14:45:00", + "2023-01-30 13:15:00", + "2023-02-28 16:00:00", + "2023-03-30 09:45:00", + ], + "week_adj7": [ + "2023-05-16 09:30:00", + "2023-05-16 10:15:00", + "2023-05-16 11:00:00", + "2023-05-16 11:45:00", + "2023-05-16 12:30:00", + "2023-05-16 13:15:00", + "2023-05-16 14:00:00", + "2023-05-16 14:45:00", + "2023-05-16 15:30:00", + "2023-05-16 16:15:00", + "2023-05-17 09:30:00", + "2023-05-17 10:15:00", + "2023-05-17 11:00:00", + "2023-05-17 11:45:00", + "2023-05-17 12:30:00", + "2023-05-17 13:15:00", + "2023-05-17 14:00:00", + "2023-05-17 14:45:00", + "2023-05-17 15:30:00", + "2023-05-17 16:15:00", + "2023-03-01 10:00:00", + "2023-03-02 10:30:00", + "2023-04-03 11:30:00", + "2023-05-09 14:45:00", + "2023-03-16 13:15:00", + "2023-04-11 16:00:00", + "2023-05-14 09:45:00", + ], + } + ), + "week_offset7", + skip_sql=True, + ), + id="week_offset7", + ), pytest.param( PyDoughPandasTest( window_sliding_frame_relsize, diff --git a/tests/test_pipeline_mysql.py b/tests/test_pipeline_mysql.py index a6b68edda..40bcb17ac 100644 --- a/tests/test_pipeline_mysql.py +++ b/tests/test_pipeline_mysql.py @@ -18,7 +18,7 @@ from tests.test_pydough_functions.simple_pydough_functions import ( get_part_multiple, simple_week_sampler_tpch, - week_offset, + week_offset7, ) from tests.test_pydough_functions.tpch_outputs import ( tpch_q16_output, @@ -206,7 +206,7 @@ def defog_mysql_test_data( """ if defog_custom_pipeline_test_data.test_name == "week_offset": return PyDoughPandasTest( - week_offset, + week_offset7, "Broker", lambda: pd.DataFrame( { @@ -239,180 +239,6 @@ def defog_mysql_test_data( "2023-02-28 16:00:00", "2023-03-30 09:45:00", ], - "week_adj1": [ - "2023-04-09 09:30:00", - "2023-04-09 10:15:00", - "2023-04-09 11:00:00", - "2023-04-09 11:45:00", - "2023-04-09 12:30:00", - "2023-04-09 13:15:00", - "2023-04-09 14:00:00", - "2023-04-09 14:45:00", - "2023-04-09 15:30:00", - "2023-04-09 16:15:00", - "2023-04-10 09:30:00", - "2023-04-10 10:15:00", - "2023-04-10 11:00:00", - "2023-04-10 11:45:00", - "2023-04-10 12:30:00", - "2023-04-10 13:15:00", - "2023-04-10 14:00:00", - "2023-04-10 14:45:00", - "2023-04-10 15:30:00", - "2023-04-10 16:15:00", - "2023-01-22 10:00:00", - "2023-01-23 10:30:00", - "2023-02-27 11:30:00", - "2023-04-01 14:45:00", - "2023-02-06 13:15:00", - "2023-03-07 16:00:00", - "2023-04-06 09:45:00", - ], - "week_adj2": [ - "2023-03-26 09:30:00", - "2023-03-26 10:15:00", - "2023-03-26 11:00:00", - "2023-03-26 11:45:00", - "2023-03-26 12:30:00", - "2023-03-26 13:15:00", - "2023-03-26 14:00:00", - "2023-03-26 14:45:00", - "2023-03-26 15:30:00", - "2023-03-26 16:15:00", - "2023-03-27 09:30:00", - "2023-03-27 10:15:00", - "2023-03-27 11:00:00", - "2023-03-27 11:45:00", - "2023-03-27 12:30:00", - "2023-03-27 13:15:00", - "2023-03-27 14:00:00", - "2023-03-27 14:45:00", - "2023-03-27 15:30:00", - "2023-03-27 16:15:00", - "2023-01-08 10:00:00", - "2023-01-09 10:30:00", - "2023-02-13 11:30:00", - "2023-03-18 14:45:00", - "2023-01-23 13:15:00", - "2023-02-21 16:00:00", - "2023-03-23 09:45:00", - ], - "week_adj3": [ - "2023-04-16 10:30:00", - "2023-04-16 11:15:00", - "2023-04-16 12:00:00", - "2023-04-16 12:45:00", - "2023-04-16 13:30:00", - "2023-04-16 14:15:00", - "2023-04-16 15:00:00", - "2023-04-16 15:45:00", - "2023-04-16 16:30:00", - "2023-04-16 17:15:00", - "2023-04-17 10:30:00", - "2023-04-17 11:15:00", - "2023-04-17 12:00:00", - "2023-04-17 12:45:00", - "2023-04-17 13:30:00", - "2023-04-17 14:15:00", - "2023-04-17 15:00:00", - "2023-04-17 15:45:00", - "2023-04-17 16:30:00", - "2023-04-17 17:15:00", - "2023-01-29 11:00:00", - "2023-01-30 11:30:00", - "2023-03-06 12:30:00", - "2023-04-08 15:45:00", - "2023-02-13 14:15:00", - "2023-03-14 17:00:00", - "2023-04-13 10:45:00", - ], - "week_adj4": [ - "2023-04-16 09:29:59", - "2023-04-16 10:14:59", - "2023-04-16 10:59:59", - "2023-04-16 11:44:59", - "2023-04-16 12:29:59", - "2023-04-16 13:14:59", - "2023-04-16 13:59:59", - "2023-04-16 14:44:59", - "2023-04-16 15:29:59", - "2023-04-16 16:14:59", - "2023-04-17 09:29:59", - "2023-04-17 10:14:59", - "2023-04-17 10:59:59", - "2023-04-17 11:44:59", - "2023-04-17 12:29:59", - "2023-04-17 13:14:59", - "2023-04-17 13:59:59", - "2023-04-17 14:44:59", - "2023-04-17 15:29:59", - "2023-04-17 16:14:59", - "2023-01-29 09:59:59", - "2023-01-30 10:29:59", - "2023-03-06 11:29:59", - "2023-04-08 14:44:59", - "2023-02-13 13:14:59", - "2023-03-14 15:59:59", - "2023-04-13 09:44:59", - ], - "week_adj5": [ - "2023-04-17 09:30:00", - "2023-04-17 10:15:00", - "2023-04-17 11:00:00", - "2023-04-17 11:45:00", - "2023-04-17 12:30:00", - "2023-04-17 13:15:00", - "2023-04-17 14:00:00", - "2023-04-17 14:45:00", - "2023-04-17 15:30:00", - "2023-04-17 16:15:00", - "2023-04-18 09:30:00", - "2023-04-18 10:15:00", - "2023-04-18 11:00:00", - "2023-04-18 11:45:00", - "2023-04-18 12:30:00", - "2023-04-18 13:15:00", - "2023-04-18 14:00:00", - "2023-04-18 14:45:00", - "2023-04-18 15:30:00", - "2023-04-18 16:15:00", - "2023-01-30 10:00:00", - "2023-01-31 10:30:00", - "2023-03-07 11:30:00", - "2023-04-09 14:45:00", - "2023-02-14 13:15:00", - "2023-03-15 16:00:00", - "2023-04-14 09:45:00", - ], - "week_adj6": [ - "2023-04-16 09:29:00", - "2023-04-16 10:14:00", - "2023-04-16 10:59:00", - "2023-04-16 11:44:00", - "2023-04-16 12:29:00", - "2023-04-16 13:14:00", - "2023-04-16 13:59:00", - "2023-04-16 14:44:00", - "2023-04-16 15:29:00", - "2023-04-16 16:14:00", - "2023-04-17 09:29:00", - "2023-04-17 10:14:00", - "2023-04-17 10:59:00", - "2023-04-17 11:44:00", - "2023-04-17 12:29:00", - "2023-04-17 13:14:00", - "2023-04-17 13:59:00", - "2023-04-17 14:44:00", - "2023-04-17 15:29:00", - "2023-04-17 16:14:00", - "2023-01-29 09:59:00", - "2023-01-30 10:29:00", - "2023-03-06 11:29:00", - "2023-04-08 14:44:00", - "2023-02-13 13:14:00", - "2023-03-14 15:59:00", - "2023-04-13 09:44:00", - ], "week_adj7": [ "2023-05-16 09:30:00", "2023-05-16 10:15:00", @@ -442,38 +268,9 @@ def defog_mysql_test_data( "2023-04-11 16:00:00", "2023-05-14 09:45:00", ], - "week_adj8": [ - "2024-04-16 09:30:00", - "2024-04-16 10:15:00", - "2024-04-16 11:00:00", - "2024-04-16 11:45:00", - "2024-04-16 12:30:00", - "2024-04-16 13:15:00", - "2024-04-16 14:00:00", - "2024-04-16 14:45:00", - "2024-04-16 15:30:00", - "2024-04-16 16:15:00", - "2024-04-17 09:30:00", - "2024-04-17 10:15:00", - "2024-04-17 11:00:00", - "2024-04-17 11:45:00", - "2024-04-17 12:30:00", - "2024-04-17 13:15:00", - "2024-04-17 14:00:00", - "2024-04-17 14:45:00", - "2024-04-17 15:30:00", - "2024-04-17 16:15:00", - "2024-01-29 10:00:00", - "2024-01-30 10:30:00", - "2024-03-05 11:30:00", - "2024-04-08 14:45:00", - "2024-02-13 13:15:00", - "2024-03-13 16:00:00", - "2024-04-13 09:45:00", - ], } ), - "week_offset", + "week_offset7", skip_sql=True, ) diff --git a/tests/test_pipeline_tpch_sf.py b/tests/test_pipeline_tpch_sf.py index 46c75492a..df98dba33 100644 --- a/tests/test_pipeline_tpch_sf.py +++ b/tests/test_pipeline_tpch_sf.py @@ -20,6 +20,9 @@ from tests.test_pydough_functions.tpch_test_functions import ( impl_tpch_q16, ) + +from tests.test_pydough_functions.simple_pydough_functions import week_offset7 + from tests.testing_utilities import ( graph_fetcher, harmonize_types, @@ -32,6 +35,88 @@ from pydough import init_pydough_context, to_df, to_sql +@pytest.fixture( + params=[ + pytest.param( + PyDoughPandasTest( + week_offset7, + "Broker", + lambda: pd.DataFrame( + { + "date_time": [ + "2023-04-02 09:30:00", + "2023-04-02 10:15:00", + "2023-04-02 11:00:00", + "2023-04-02 11:45:00", + "2023-04-02 12:30:00", + "2023-04-02 13:15:00", + "2023-04-02 14:00:00", + "2023-04-02 14:45:00", + "2023-04-02 15:30:00", + "2023-04-02 16:15:00", + "2023-04-03 09:30:00", + "2023-04-03 10:15:00", + "2023-04-03 11:00:00", + "2023-04-03 11:45:00", + "2023-04-03 12:30:00", + "2023-04-03 13:15:00", + "2023-04-03 14:00:00", + "2023-04-03 14:45:00", + "2023-04-03 15:30:00", + "2023-04-03 16:15:00", + "2023-01-15 10:00:00", + "2023-01-16 10:30:00", + "2023-02-20 11:30:00", + "2023-03-25 14:45:00", + "2023-01-30 13:15:00", + "2023-02-28 16:00:00", + "2023-03-30 09:45:00", + ], + "week_adj7": [ + "2023-05-16 09:30:00", + "2023-05-16 10:15:00", + "2023-05-16 11:00:00", + "2023-05-16 11:45:00", + "2023-05-16 12:30:00", + "2023-05-16 13:15:00", + "2023-05-16 14:00:00", + "2023-05-16 14:45:00", + "2023-05-16 15:30:00", + "2023-05-16 16:15:00", + "2023-05-17 09:30:00", + "2023-05-17 10:15:00", + "2023-05-17 11:00:00", + "2023-05-17 11:45:00", + "2023-05-17 12:30:00", + "2023-05-17 13:15:00", + "2023-05-17 14:00:00", + "2023-05-17 14:45:00", + "2023-05-17 15:30:00", + "2023-05-17 16:15:00", + "2023-03-01 10:00:00", + "2023-03-02 10:30:00", + "2023-04-03 11:30:00", + "2023-05-09 14:45:00", + "2023-03-14 13:15:00", + "2023-04-11 16:00:00", + "2023-05-14 09:45:00", + ], + } + ), + "week_offset7", + ), + id="sf_week_offset_7", + ), + ], +) +def snowflake_params_week_offset_7_data(request) -> PyDoughPandasTest: + """ + Test data for e2e tests for the TPC-H query 16. Returns an instance of + PyDoughPandasTest containing information about the test. + """ + return request.param + + @pytest.fixture( params=[ pytest.param( @@ -254,3 +339,18 @@ def test_defog_e2e( reference_database=sqlite_defog_connection, coerce_types=True, ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_week_offset_7_sf( + snowflake_params_week_offset_7_data: PyDoughPandasTest, + get_sf_defog_graphs: graph_fetcher, + sf_conn_db_context: DatabaseContext, +): + """ """ + snowflake_params_week_offset_7_data.run_e2e_test( + get_sf_defog_graphs, + sf_conn_db_context("DEFOG", snowflake_params_week_offset_7_data.graph_name), + coerce_types=True, + ) diff --git a/tests/test_pydough_functions/simple_pydough_functions.py b/tests/test_pydough_functions/simple_pydough_functions.py index d19189be4..eaad6a48c 100644 --- a/tests/test_pydough_functions/simple_pydough_functions.py +++ b/tests/test_pydough_functions/simple_pydough_functions.py @@ -2075,11 +2075,19 @@ def week_offset(): week_adj4=DATETIME(date_time, "-1 s", "2 w"), week_adj5=DATETIME(date_time, "1 d", "2 w"), week_adj6=DATETIME(date_time, "-1 m", "2 w"), - # week_adj7=DATETIME(date_time, "1 mm", "2 w"), week_adj8=DATETIME(date_time, "1 y", "2 w"), ) +def week_offset7(): + return transactions.WHERE( + (YEAR(date_time) < 2025) & (DAY(date_time) > 1) + ).CALCULATE( + date_time, + week_adj7=DATETIME(date_time, "1 mm", "2 w"), + ) + + def datediff(): y1_datetime = datetime.datetime(2025, 5, 2, 11, 00, 0) y_datetime = datetime.datetime(2023, 4, 3, 13, 16, 30) From fcc698b7747e11ad1c0e02b44d5f7298231f8f44 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Fri, 22 Aug 2025 14:15:50 -0700 Subject: [PATCH 38/46] remove str_count --- .../transform_bindings/sf_transform_bindings.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py index 4defbc6ad..a3e337be6 100644 --- a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -5,8 +5,6 @@ __all__ = ["SnowflakeTransformBindings"] -import re - import sqlglot.expressions as sqlglot_expressions from sqlglot.expressions import Expression as SQLGlotExpression @@ -48,8 +46,6 @@ def convert_call_to_sqlglot( match operator: case pydop.SUM: return self.convert_sum(args, types) - case pydop.STRCOUNT: - return self.convert_str_count(args, types) case pydop.GETPART: return self.convert_get_part(args, types) if operator in self.PYDOP_TO_SNOWFLAKE_FUNC: @@ -78,18 +74,6 @@ def convert_sum( # For other types, use SUM directly return sqlglot_expressions.Sum(this=arg[0]) - # HA: TODO: FIX base and remove this - def convert_str_count( - self, args: SQLGlotExpression, types: list[PyDoughType] - ) -> SQLGlotExpression: - if isinstance(args[1], sqlglot_expressions.Literal): - escaped_pattern = re.escape(args[1].this) - args[1] = sqlglot_expressions.Literal.string(escaped_pattern) - return sqlglot_expressions.Anonymous( - this="REGEXP_COUNT", - expressions=args, - ) - def convert_get_part( self, args: SQLGlotExpression, types: list[PyDoughType] ) -> SQLGlotExpression: From ae623b355429b4757afe217665cf46aa49d0fab1 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 25 Aug 2025 14:36:56 -0700 Subject: [PATCH 39/46] [run all] update mysql init script --- tests/gen_data/init_defog_mysql.sql | 25 ++-- tests/test_pipeline_mysql.py | 2 +- .../agg_simplification_1_mysql.sql | 6 +- .../agg_simplification_1_snowflake.sql | 52 ++++---- .../agg_simplification_2_mysql.sql | 2 +- .../agg_simplification_2_snowflake.sql | 2 +- .../aggregation_functions_mysql.sql | 26 ++-- .../aggregation_functions_snowflake.sql | 72 +++++------ .../arithmetic_and_binary_operators_mysql.sql | 22 ++-- ...thmetic_and_binary_operators_snowflake.sql | 22 ++-- .../casting_functions_mysql.sql | 2 +- .../casting_functions_snowflake.sql | 2 +- ...omparisons_and_logical_operators_mysql.sql | 26 ++-- ...risons_and_logical_operators_snowflake.sql | 38 +++--- .../conditional_functions_mysql.sql | 14 +- .../conditional_functions_snowflake.sql | 28 ++-- .../cumulative_stock_analysis_mysql.sql | 34 ++--- .../cumulative_stock_analysis_snowflake.sql | 34 ++--- tests/test_sql_refsols/datediff_mysql.sql | 2 +- tests/test_sql_refsols/datediff_snowflake.sql | 2 +- .../datetime_functions_mysql.sql | 2 +- .../datetime_functions_snowflake.sql | 2 +- .../datetime_sampler_mysql.sql | 2 +- .../datetime_sampler_snowflake.sql | 2 +- .../defog_broker_adv10_mysql.sql | 16 +-- .../defog_broker_adv10_snowflake.sql | 28 ++-- .../defog_broker_adv11_mysql.sql | 16 +-- .../defog_broker_adv11_snowflake.sql | 16 +-- .../defog_broker_adv12_mysql.sql | 2 +- .../defog_broker_adv12_snowflake.sql | 2 +- .../defog_broker_adv13_mysql.sql | 2 +- .../defog_broker_adv13_snowflake.sql | 2 +- .../defog_broker_adv14_mysql.sql | 12 +- .../defog_broker_adv14_snowflake.sql | 12 +- .../defog_broker_adv15_mysql.sql | 2 +- .../defog_broker_adv15_snowflake.sql | 2 +- .../defog_broker_adv16_mysql.sql | 16 +-- .../defog_broker_adv16_snowflake.sql | 22 ++-- .../defog_broker_adv1_mysql.sql | 14 +- .../defog_broker_adv1_snowflake.sql | 18 +-- .../defog_broker_adv2_mysql.sql | 10 +- .../defog_broker_adv2_snowflake.sql | 18 +-- .../defog_broker_adv3_mysql.sql | 10 +- .../defog_broker_adv3_snowflake.sql | 22 ++-- .../defog_broker_adv4_mysql.sql | 16 +-- .../defog_broker_adv4_snowflake.sql | 20 +-- .../defog_broker_adv5_mysql.sql | 28 ++-- .../defog_broker_adv5_snowflake.sql | 54 ++++---- .../defog_broker_adv6_mysql.sql | 16 +-- .../defog_broker_adv6_snowflake.sql | 24 ++-- .../defog_broker_adv7_mysql.sql | 24 ++-- .../defog_broker_adv7_snowflake.sql | 44 +++---- .../defog_broker_adv8_mysql.sql | 12 +- .../defog_broker_adv8_snowflake.sql | 12 +- .../defog_broker_adv9_mysql.sql | 18 +-- .../defog_broker_adv9_snowflake.sql | 18 +-- .../defog_broker_basic10_mysql.sql | 10 +- .../defog_broker_basic10_snowflake.sql | 10 +- .../defog_broker_basic1_mysql.sql | 14 +- .../defog_broker_basic1_snowflake.sql | 22 ++-- .../defog_broker_basic2_mysql.sql | 2 +- .../defog_broker_basic2_snowflake.sql | 2 +- .../defog_broker_basic3_mysql.sql | 14 +- .../defog_broker_basic3_snowflake.sql | 22 ++-- .../defog_broker_basic4_mysql.sql | 22 ++-- .../defog_broker_basic4_snowflake.sql | 36 +++--- .../defog_broker_basic5_mysql.sql | 8 +- .../defog_broker_basic5_snowflake.sql | 8 +- .../defog_broker_basic6_mysql.sql | 8 +- .../defog_broker_basic6_snowflake.sql | 8 +- .../defog_broker_basic7_mysql.sql | 2 +- .../defog_broker_basic7_snowflake.sql | 2 +- .../defog_broker_basic8_mysql.sql | 2 +- .../defog_broker_basic8_snowflake.sql | 2 +- .../defog_broker_basic9_mysql.sql | 10 +- .../defog_broker_basic9_snowflake.sql | 10 +- .../defog_broker_gen1_mysql.sql | 12 +- .../defog_broker_gen1_snowflake.sql | 12 +- .../defog_broker_gen2_mysql.sql | 10 +- .../defog_broker_gen2_snowflake.sql | 10 +- .../defog_broker_gen3_mysql.sql | 14 +- .../defog_broker_gen3_snowflake.sql | 20 +-- .../defog_broker_gen4_mysql.sql | 12 +- .../defog_broker_gen4_snowflake.sql | 20 +-- .../defog_broker_gen5_mysql.sql | 2 +- .../defog_broker_gen5_snowflake.sql | 4 +- .../defog_dealership_adv10_snowflake.sql | 16 +-- .../defog_dealership_adv11_snowflake.sql | 12 +- .../defog_dealership_adv12_snowflake.sql | 38 +++--- .../defog_dealership_adv14_snowflake.sql | 2 +- .../defog_dealership_adv15_snowflake.sql | 20 +-- .../defog_dealership_adv16_snowflake.sql | 22 ++-- .../defog_dealership_adv1_snowflake.sql | 20 +-- .../defog_dealership_adv2_snowflake.sql | 22 ++-- .../defog_dealership_adv3_snowflake.sql | 22 ++-- .../defog_dealership_adv4_snowflake.sql | 24 ++-- .../defog_dealership_adv5_snowflake.sql | 26 ++-- .../defog_dealership_adv6_snowflake.sql | 30 ++--- .../defog_dealership_adv7_snowflake.sql | 28 ++-- .../defog_dealership_adv9_snowflake.sql | 2 +- .../defog_dealership_basic10_snowflake.sql | 24 ++-- .../defog_dealership_basic1_snowflake.sql | 14 +- .../defog_dealership_basic2_snowflake.sql | 8 +- .../defog_dealership_basic3_snowflake.sql | 16 +-- .../defog_dealership_basic4_snowflake.sql | 12 +- .../defog_dealership_basic5_snowflake.sql | 24 ++-- .../defog_dealership_basic6_snowflake.sql | 12 +- .../defog_dealership_basic7_snowflake.sql | 2 +- .../defog_dealership_basic8_snowflake.sql | 24 ++-- .../defog_dealership_basic9_snowflake.sql | 2 +- .../defog_dealership_gen1_snowflake.sql | 2 +- .../defog_dealership_gen2_snowflake.sql | 2 +- .../defog_dealership_gen3_snowflake.sql | 2 +- .../defog_dealership_gen4_snowflake.sql | 34 ++--- .../defog_dealership_gen5_snowflake.sql | 22 ++-- .../defog_ewallet_adv10_snowflake.sql | 18 +-- .../defog_ewallet_adv11_snowflake.sql | 18 +-- .../defog_ewallet_adv12_snowflake.sql | 20 +-- .../defog_ewallet_adv13_snowflake.sql | 2 +- .../defog_ewallet_adv14_snowflake.sql | 2 +- .../defog_ewallet_adv15_snowflake.sql | 26 ++-- .../defog_ewallet_adv16_snowflake.sql | 20 +-- .../defog_ewallet_adv1_snowflake.sql | 22 ++-- .../defog_ewallet_adv2_snowflake.sql | 16 +-- .../defog_ewallet_adv3_snowflake.sql | 20 +-- .../defog_ewallet_adv4_snowflake.sql | 10 +- .../defog_ewallet_adv5_snowflake.sql | 2 +- .../defog_ewallet_adv6_snowflake.sql | 17 +-- .../defog_ewallet_adv7_snowflake.sql | 18 +-- .../defog_ewallet_adv8_snowflake.sql | 24 ++-- .../defog_ewallet_adv9_snowflake.sql | 2 +- .../defog_ewallet_basic10_snowflake.sql | 22 ++-- .../defog_ewallet_basic1_snowflake.sql | 16 +-- .../defog_ewallet_basic2_snowflake.sql | 10 +- .../defog_ewallet_basic3_snowflake.sql | 8 +- .../defog_ewallet_basic4_snowflake.sql | 8 +- .../defog_ewallet_basic5_snowflake.sql | 10 +- .../defog_ewallet_basic6_snowflake.sql | 2 +- .../defog_ewallet_basic7_snowflake.sql | 2 +- .../defog_ewallet_basic8_snowflake.sql | 22 ++-- .../defog_ewallet_basic9_snowflake.sql | 22 ++-- .../defog_ewallet_gen1_snowflake.sql | 14 +- .../defog_ewallet_gen2_snowflake.sql | 26 ++-- .../defog_ewallet_gen3_snowflake.sql | 2 +- .../defog_ewallet_gen4_snowflake.sql | 50 +++---- .../defog_ewallet_gen5_snowflake.sql | 22 ++-- .../epoch_culture_events_info_mysql.sql | 40 +++--- .../epoch_culture_events_info_snowflake.sql | 52 ++++---- .../epoch_event_gap_per_era_mysql.sql | 20 +-- .../epoch_event_gap_per_era_snowflake.sql | 36 +++--- .../epoch_events_per_season_mysql.sql | 12 +- .../epoch_events_per_season_snowflake.sql | 12 +- .../epoch_first_event_per_era_mysql.sql | 16 +-- .../epoch_first_event_per_era_snowflake.sql | 26 ++-- .../epoch_intra_season_searches_mysql.sql | 36 +++--- .../epoch_intra_season_searches_snowflake.sql | 122 +++++++++--------- ...st_popular_search_engine_per_tod_mysql.sql | 12 +- ...opular_search_engine_per_tod_snowflake.sql | 26 ++-- ...ch_most_popular_topic_per_region_mysql.sql | 16 +-- ...ost_popular_topic_per_region_snowflake.sql | 28 ++-- .../epoch_num_predawn_cold_war_mysql.sql | 18 +-- .../epoch_num_predawn_cold_war_snowflake.sql | 32 ++--- ...vent_search_other_users_per_user_mysql.sql | 10 +- ..._search_other_users_per_user_snowflake.sql | 40 +++--- ...rlapping_event_searches_per_user_mysql.sql | 20 +-- ...ping_event_searches_per_user_snowflake.sql | 44 +++---- .../epoch_pct_searches_per_tod_mysql.sql | 12 +- .../epoch_pct_searches_per_tod_snowflake.sql | 26 ++-- .../epoch_search_results_by_tod_mysql.sql | 14 +- .../epoch_search_results_by_tod_snowflake.sql | 30 ++--- .../epoch_summer_events_per_type_mysql.sql | 14 +- ...epoch_summer_events_per_type_snowflake.sql | 14 +- .../epoch_unique_users_per_engine_mysql.sql | 16 +-- ...poch_unique_users_per_engine_snowflake.sql | 32 ++--- ...och_users_most_cold_war_searches_mysql.sql | 22 ++-- ...users_most_cold_war_searches_snowflake.sql | 38 +++--- .../test_sql_refsols/extract_colors_mysql.sql | 2 +- .../extract_colors_snowflake.sql | 2 +- .../floor_and_ceil_2_mysql.sql | 2 +- .../floor_and_ceil_2_snowflake.sql | 2 +- .../floor_and_ceil_snowflake.sql | 2 +- .../get_part_multiple_mysql.sql | 2 +- .../get_part_multiple_snowflake.sql | 2 +- .../get_part_single_mysql.sql | 2 +- .../get_part_single_snowflake.sql | 2 +- .../global_acctbal_breakdown_mysql.sql | 2 +- .../global_acctbal_breakdown_snowflake.sql | 2 +- .../hour_minute_day_mysql.sql | 16 +-- .../hour_minute_day_snowflake.sql | 16 +-- .../nation_acctbal_breakdown_mysql.sql | 12 +- .../nation_acctbal_breakdown_snowflake.sql | 38 +++--- .../numerical_functions_mysql.sql | 2 +- .../numerical_functions_snowflake.sql | 2 +- .../part_cross_part_a_mysql.sql | 30 ++--- .../part_cross_part_a_snowflake.sql | 44 +++---- .../part_cross_part_b_mysql.sql | 34 ++--- .../part_cross_part_b_snowflake.sql | 62 ++++----- .../part_cross_part_c_mysql.sql | 32 ++--- .../part_cross_part_c_snowflake.sql | 60 ++++----- .../quantile_test_1_mysql.sql | 12 +- .../quantile_test_1_snowflake.sql | 10 +- .../quantile_test_2_mysql.sql | 72 +++++------ .../quantile_test_2_snowflake.sql | 72 +++++------ tests/test_sql_refsols/rank_a_mysql.sql | 2 +- tests/test_sql_refsols/rank_a_snowflake.sql | 2 +- tests/test_sql_refsols/rank_b_mysql.sql | 2 +- tests/test_sql_refsols/rank_b_snowflake.sql | 2 +- tests/test_sql_refsols/rank_c_mysql.sql | 2 +- tests/test_sql_refsols/rank_c_snowflake.sql | 2 +- .../region_acctbal_breakdown_mysql.sql | 34 ++--- .../region_acctbal_breakdown_snowflake.sql | 38 +++--- .../test_sql_refsols/simple_filter_mysql.sql | 2 +- .../simple_filter_snowflake.sql | 2 +- tests/test_sql_refsols/simple_scan_mysql.sql | 2 +- .../simple_scan_snowflake.sql | 2 +- .../simple_smallest_or_largest_snowflake.sql | 2 +- .../test_sql_refsols/simple_var_std_mysql.sql | 10 +- .../simple_var_std_snowflake.sql | 36 +++--- .../simplification_1_mysql.sql | 2 +- .../simplification_1_snowflake.sql | 2 +- .../simplification_2_mysql.sql | 2 +- .../simplification_2_snowflake.sql | 2 +- .../simplification_3_mysql.sql | 2 +- .../simplification_3_snowflake.sql | 50 +++---- tests/test_sql_refsols/smoke_a_mysql.sql | 2 +- tests/test_sql_refsols/smoke_a_snowflake.sql | 10 +- tests/test_sql_refsols/smoke_b_mysql.sql | 2 +- tests/test_sql_refsols/smoke_b_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_c_mysql.sql | 2 +- tests/test_sql_refsols/smoke_c_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_d_mysql.sql | 42 +++--- tests/test_sql_refsols/smoke_d_snowflake.sql | 42 +++--- ...nsaction_week_sampler_friday_one_mysql.sql | 2 +- ...tion_week_sampler_friday_one_snowflake.sql | 2 +- ...saction_week_sampler_friday_zero_mysql.sql | 2 +- ...ion_week_sampler_friday_zero_snowflake.sql | 2 +- ...nsaction_week_sampler_monday_one_mysql.sql | 2 +- ...tion_week_sampler_monday_one_snowflake.sql | 2 +- ...saction_week_sampler_monday_zero_mysql.sql | 2 +- ...ion_week_sampler_monday_zero_snowflake.sql | 2 +- ...action_week_sampler_saturday_one_mysql.sql | 2 +- ...on_week_sampler_saturday_one_snowflake.sql | 2 +- ...ction_week_sampler_saturday_zero_mysql.sql | 2 +- ...n_week_sampler_saturday_zero_snowflake.sql | 2 +- ...nsaction_week_sampler_sunday_one_mysql.sql | 2 +- ...tion_week_sampler_sunday_one_snowflake.sql | 2 +- ...saction_week_sampler_sunday_zero_mysql.sql | 2 +- ...ion_week_sampler_sunday_zero_snowflake.sql | 2 +- ...action_week_sampler_thursday_one_mysql.sql | 2 +- ...on_week_sampler_thursday_one_snowflake.sql | 2 +- ...ction_week_sampler_thursday_zero_mysql.sql | 2 +- ...n_week_sampler_thursday_zero_snowflake.sql | 2 +- ...saction_week_sampler_tuesday_one_mysql.sql | 2 +- ...ion_week_sampler_tuesday_one_snowflake.sql | 2 +- ...action_week_sampler_tuesday_zero_mysql.sql | 2 +- ...on_week_sampler_tuesday_zero_snowflake.sql | 2 +- ...ction_week_sampler_wednesday_one_mysql.sql | 2 +- ...n_week_sampler_wednesday_one_snowflake.sql | 2 +- ...tion_week_sampler_wednesday_zero_mysql.sql | 2 +- ..._week_sampler_wednesday_zero_snowflake.sql | 2 +- .../string_functions_mysql.sql | 42 +++--- .../string_functions_snowflake.sql | 44 ++++--- ..._battery_failure_rates_anomalies_mysql.sql | 24 ++-- ...tery_failure_rates_anomalies_snowflake.sql | 32 ++--- ...ograph_country_cartesian_oddball_mysql.sql | 6 +- ...ph_country_cartesian_oddball_snowflake.sql | 14 +- ...aph_country_combination_analysis_mysql.sql | 14 +- ...country_combination_analysis_snowflake.sql | 62 ++++----- ...h_country_incident_rate_analysis_mysql.sql | 34 ++--- ...untry_incident_rate_analysis_snowflake.sql | 98 +++++++------- ...ror_percentages_sun_set_by_error_mysql.sql | 18 +-- ...percentages_sun_set_by_error_snowflake.sql | 28 ++-- ..._rate_sun_set_by_factory_country_mysql.sql | 18 +-- ...e_sun_set_by_factory_country_snowflake.sql | 36 +++--- ...technograph_global_incident_rate_mysql.sql | 4 +- ...nograph_global_incident_rate_snowflake.sql | 18 +-- .../technograph_hot_purchase_window_mysql.sql | 16 +-- ...hnograph_hot_purchase_window_snowflake.sql | 16 +-- ...ph_incident_rate_by_release_year_mysql.sql | 12 +- ...ncident_rate_by_release_year_snowflake.sql | 54 ++++---- ...hnograph_incident_rate_per_brand_mysql.sql | 12 +- ...raph_incident_rate_per_brand_snowflake.sql | 22 ++-- ...echnograph_monthly_incident_rate_mysql.sql | 24 ++-- ...ograph_monthly_incident_rate_snowflake.sql | 82 ++++++------ ...nograph_most_unreliable_products_mysql.sql | 18 +-- ...aph_most_unreliable_products_snowflake.sql | 36 +++--- ...ive_incident_rate_goldcopperstar_mysql.sql | 22 ++-- ...incident_rate_goldcopperstar_snowflake.sql | 96 +++++++------- ...cumulative_incident_rate_overall_mysql.sql | 10 +- ...lative_incident_rate_overall_snowflake.sql | 68 +++++----- .../time_threshold_reached_mysql.sql | 10 +- .../time_threshold_reached_snowflake.sql | 22 ++-- tests/test_sql_refsols/tpch_q10_mysql.sql | 38 +++--- tests/test_sql_refsols/tpch_q10_snowflake.sql | 46 +++---- tests/test_sql_refsols/tpch_q11_mysql.sql | 18 +-- tests/test_sql_refsols/tpch_q11_snowflake.sql | 58 ++++----- tests/test_sql_refsols/tpch_q12_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q12_snowflake.sql | 20 +-- tests/test_sql_refsols/tpch_q13_mysql.sql | 6 +- tests/test_sql_refsols/tpch_q13_snowflake.sql | 16 +-- tests/test_sql_refsols/tpch_q14_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q14_snowflake.sql | 20 +-- tests/test_sql_refsols/tpch_q15_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q15_snowflake.sql | 66 +++++----- tests/test_sql_refsols/tpch_q16_mysql.sql | 26 ++-- tests/test_sql_refsols/tpch_q16_snowflake.sql | 26 ++-- tests/test_sql_refsols/tpch_q17_mysql.sql | 14 +- tests/test_sql_refsols/tpch_q17_snowflake.sql | 20 +-- tests/test_sql_refsols/tpch_q18_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q18_snowflake.sql | 34 ++--- tests/test_sql_refsols/tpch_q19_mysql.sql | 50 +++---- tests/test_sql_refsols/tpch_q19_snowflake.sql | 50 +++---- tests/test_sql_refsols/tpch_q1_mysql.sql | 2 +- tests/test_sql_refsols/tpch_q1_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q20_mysql.sql | 30 ++--- tests/test_sql_refsols/tpch_q20_snowflake.sql | 50 +++---- tests/test_sql_refsols/tpch_q21_mysql.sql | 38 +++--- tests/test_sql_refsols/tpch_q21_snowflake.sql | 86 ++++++------ tests/test_sql_refsols/tpch_q22_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q22_snowflake.sql | 36 +++--- tests/test_sql_refsols/tpch_q2_mysql.sql | 38 +++--- tests/test_sql_refsols/tpch_q2_snowflake.sql | 58 ++++----- tests/test_sql_refsols/tpch_q3_mysql.sql | 24 ++-- tests/test_sql_refsols/tpch_q3_snowflake.sql | 24 ++-- tests/test_sql_refsols/tpch_q4_mysql.sql | 12 +- tests/test_sql_refsols/tpch_q4_snowflake.sql | 12 +- tests/test_sql_refsols/tpch_q5_mysql.sql | 42 +++--- tests/test_sql_refsols/tpch_q5_snowflake.sql | 46 +++---- tests/test_sql_refsols/tpch_q6_mysql.sql | 2 +- tests/test_sql_refsols/tpch_q6_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q7_mysql.sql | 46 +++---- tests/test_sql_refsols/tpch_q7_snowflake.sql | 52 ++++---- tests/test_sql_refsols/tpch_q8_mysql.sql | 44 +++---- tests/test_sql_refsols/tpch_q8_snowflake.sql | 44 +++---- tests/test_sql_refsols/tpch_q9_mysql.sql | 34 ++--- tests/test_sql_refsols/tpch_q9_snowflake.sql | 34 ++--- .../unary_and_slicing_operators_mysql.sql | 2 +- .../unary_and_slicing_operators_snowflake.sql | 2 +- tests/test_sql_refsols/week_offset_mysql.sql | 2 +- .../week_offset_snowflake.sql | 2 +- .../window_functions_mysql.sql | 28 ++-- .../window_functions_snowflake.sql | 28 ++-- .../window_sliding_frame_relsize_mysql.sql | 26 ++-- ...window_sliding_frame_relsize_snowflake.sql | 26 ++-- .../window_sliding_frame_relsum_mysql.sql | 26 ++-- .../window_sliding_frame_relsum_snowflake.sql | 26 ++-- 346 files changed, 3264 insertions(+), 3250 deletions(-) diff --git a/tests/gen_data/init_defog_mysql.sql b/tests/gen_data/init_defog_mysql.sql index 02aa196e5..1594565c2 100644 --- a/tests/gen_data/init_defog_mysql.sql +++ b/tests/gen_data/init_defog_mysql.sql @@ -553,12 +553,12 @@ INSERT INTO `sales` (`_id`, `car_id`, `salesperson_id`, `customer_id`, `sale_pri (14, 2, 3, 1, 23200.00, SUBDATE(CURDATE(), INTERVAL 21 DAY)), (15, 8, 6, 12, 43500.00, SUBDATE(CURDATE(), INTERVAL 3 DAY)), (16, 10, 4, 2, 29500.00, SUBDATE(CURDATE(), INTERVAL 5 DAY)), - (17, 3, 2, 3, 46000.00, SUBDATE(CURDATE(), INTERVAL 7 DAY) + INTERVAL 1 DAY), - (18, 3, 2, 7, 47500.00, SUBDATE(CURDATE(), INTERVAL 7 DAY)), - (19, 3, 2, 10, 46500.00, SUBDATE(CURDATE(), INTERVAL 7 DAY) - INTERVAL 1 DAY), - (20, 4, 1, 3, 48000.00, SUBDATE(CURDATE(), INTERVAL 56 DAY) + INTERVAL 1 DAY), - (21, 4, 1, 7, 45000.00, SUBDATE(CURDATE(), INTERVAL 56 DAY)), - (22, 4, 1, 10, 49000.00, SUBDATE(CURDATE(), INTERVAL 56 DAY) - INTERVAL 1 DAY); + (17, 3, 2, 3, 46000.00, CURRENT_DATE - INTERVAL 7 DAY + INTERVAL 1 DAY), + (18, 3, 2, 7, 47500.00, CURRENT_DATE - INTERVAL 7 DAY), + (19, 3, 2, 10, 46500.00, CURRENT_DATE - INTERVAL 7 DAY - INTERVAL 1 DAY), + (20, 4, 1, 3, 48000.00, CURRENT_DATE - INTERVAL 56 DAY + INTERVAL 1 DAY), + (21, 4, 1, 7, 45000.00, CURRENT_DATE - INTERVAL 56 DAY), + (22, 4, 1, 10, 49000.00, CURRENT_DATE - INTERVAL 56 DAY - INTERVAL 1 DAY); INSERT INTO `inventory_snapshots` (`_id`, `snapshot_date`, `car_id`, `is_in_inventory`) VALUES (1, '2023-03-15', 1, TRUE), @@ -603,12 +603,13 @@ INSERT INTO `payments_received` (`_id`, `sale_id`, `payment_date`, `payment_amou (15, 14, SUBDATE(CURDATE(), INTERVAL 1 DAY), 17200.00, 'financing'), (16, 15, SUBDATE(CURDATE(), INTERVAL 1 DAY), 37500.00, 'credit_card'), (17, 16, SUBDATE(CURDATE(), INTERVAL 5 DAY), 26500.00, 'debit_card'), - (18, 17, SUBDATE(CURDATE(), INTERVAL 7 DAY) + INTERVAL 1 DAY, 115000.00, 'financing'), - (19, 18, SUBDATE(CURDATE(), INTERVAL 7 DAY), 115000.00, 'credit_card'), - (20, 19, SUBDATE(CURDATE(), INTERVAL 7 DAY) - INTERVAL 1 DAY, 115000.00, 'debit_card'), - (21, 20, SUBDATE(CURDATE(), INTERVAL 56 DAY) + INTERVAL 1 DAY, 115000.00, 'cash'), - (22, 21, SUBDATE(CURDATE(), INTERVAL 56 DAY), 115000.00, 'check'), - (23, 22, SUBDATE(CURDATE(), INTERVAL 56 DAY) - INTERVAL 1 DAY, 115000.00, 'credit_card'); + (18, 17, CURRENT_DATE - INTERVAL 7 DAY + INTERVAL 1 DAY, 115000.00, 'financing'), + (19, 18, CURRENT_DATE - INTERVAL 7 DAY, 115000.00, 'credit_card'), + (20, 19, CURRENT_DATE - INTERVAL 7 DAY - INTERVAL 1 DAY, 115000.00, 'debit_card'), + (21, 20, CURRENT_DATE - INTERVAL 56 DAY + INTERVAL 1 DAY, 115000.00, 'cash'), + (22, 21, CURRENT_DATE - INTERVAL 56 DAY, 115000.00, 'check'), + (23, 22, CURRENT_DATE - INTERVAL 56 DAY - INTERVAL 1 DAY, 115000.00, 'credit_card'); + INSERT INTO `payments_made` (`_id`, `vendor_name`, `payment_date`, `payment_amount`, `payment_method`, `invoice_number`, `invoice_date`, `due_date`) VALUES (1, 'Car Manufacturer Inc', '2023-03-01', 150000.00, 'bank_transfer', 'INV-001', '2023-02-25', '2023-03-25'), diff --git a/tests/test_pipeline_mysql.py b/tests/test_pipeline_mysql.py index 40bcb17ac..fa47351d9 100644 --- a/tests/test_pipeline_mysql.py +++ b/tests/test_pipeline_mysql.py @@ -204,7 +204,7 @@ def defog_mysql_test_data( Test data for e2e tests for the TPC-H queries. Returns an instance of PyDoughPandasTest containing information about the test. """ - if defog_custom_pipeline_test_data.test_name == "week_offset": + if defog_custom_pipeline_test_data.test_name == "week_offset7": return PyDoughPandasTest( week_offset7, "Broker", diff --git a/tests/test_sql_refsols/agg_simplification_1_mysql.sql b/tests/test_sql_refsols/agg_simplification_1_mysql.sql index ca660a3c8..c9e195d5b 100644 --- a/tests/test_sql_refsols/agg_simplification_1_mysql.sql +++ b/tests/test_sql_refsols/agg_simplification_1_mysql.sql @@ -172,11 +172,11 @@ WITH _t1 AS ( THEN CHAR_LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) ELSE NULL END AS expr_87, - sbtickerexchange AS sbTickerExchange - FROM main.sbTicker + sbtickerexchange + FROM main.sbticker ), _t0 AS ( SELECT - CHAR_LENGTH(CASE WHEN sbTickerExchange <> 'NYSE Arca' THEN sbTickerExchange ELSE NULL END) AS aug_exchange, + CHAR_LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS aug_exchange, AVG(expr_72) AS avg_expr_72, AVG(expr_73) AS avg_expr_73, AVG(expr_74) AS avg_expr_74, diff --git a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql index 1a1c852a2..83fcdd09c 100644 --- a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql +++ b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql @@ -1,29 +1,29 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS AUG_EXCHANGE, - COUNT(*) AS COUNT_ONE - FROM MAIN.SBTICKER + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS aug_exchange, + COUNT(*) AS count_one + FROM main.sbticker GROUP BY 1 ) SELECT - AUG_EXCHANGE AS aug_exchange, - COUNT_ONE AS su1, - COUNT_ONE * 2 AS su2, - COUNT_ONE * -1 AS su3, - COUNT_ONE * -3 AS su4, + aug_exchange, + count_one AS su1, + count_one * 2 AS su2, + count_one * -1 AS su3, + count_one * -3 AS su4, 0 AS su5, - COUNT_ONE * 0.5 AS su6, + count_one * 0.5 AS su6, 0 AS su7, - COALESCE(AUG_EXCHANGE, 0) AS su8, - COUNT_ONE AS co1, - COUNT_ONE AS co2, - COUNT_ONE AS co3, - COUNT_ONE AS co4, - COUNT_ONE AS co5, - COUNT_ONE AS co6, + COALESCE(aug_exchange, 0) AS su8, + count_one AS co1, + count_one AS co2, + count_one AS co3, + count_one AS co4, + count_one AS co5, + count_one AS co6, 0 AS co7, - COUNT_ONE * IFF(NOT AUG_EXCHANGE IS NULL, 1, 0) AS co8, + count_one * IFF(NOT aug_exchange IS NULL, 1, 0) AS co8, 1 AS nd1, 1 AS nd2, 1 AS nd3, @@ -31,7 +31,7 @@ SELECT 1 AS nd5, 1 AS nd6, 0 AS nd7, - CAST(NOT AUG_EXCHANGE IS NULL AS BIGINT) AS nd8, + CAST(NOT aug_exchange IS NULL AS BIGINT) AS nd8, 1 AS av1, 2 AS av2, -1 AS av3, @@ -39,7 +39,7 @@ SELECT 0 AS av5, 0.5 AS av6, NULL AS av7, - AUG_EXCHANGE AS av8, + aug_exchange AS av8, 1 AS mi1, 2 AS mi2, -1 AS mi3, @@ -47,7 +47,7 @@ SELECT 0 AS mi5, 0.5 AS mi6, NULL AS mi7, - AUG_EXCHANGE AS mi8, + aug_exchange AS mi8, 1 AS ma1, 2 AS ma2, -1 AS ma3, @@ -55,7 +55,7 @@ SELECT 0 AS ma5, 0.5 AS ma6, NULL AS ma7, - AUG_EXCHANGE AS ma8, + aug_exchange AS ma8, 1 AS an1, 2 AS an2, -1 AS an3, @@ -63,7 +63,7 @@ SELECT 0 AS an5, 0.5 AS an6, NULL AS an7, - AUG_EXCHANGE AS an8, + aug_exchange AS an8, 1 AS me1, 2 AS me2, -1 AS me3, @@ -71,7 +71,7 @@ SELECT 0 AS me5, 0.5 AS me6, NULL AS me7, - AUG_EXCHANGE AS me8, + aug_exchange AS me8, 1 AS qu1, 2 AS qu2, -1 AS qu3, @@ -79,7 +79,7 @@ SELECT 0 AS qu5, 0.5 AS qu6, NULL AS qu7, - AUG_EXCHANGE AS qu8 -FROM _T0 + aug_exchange AS qu8 +FROM _t0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/agg_simplification_2_mysql.sql b/tests/test_sql_refsols/agg_simplification_2_mysql.sql index 45f6fd045..c6948799f 100644 --- a/tests/test_sql_refsols/agg_simplification_2_mysql.sql +++ b/tests/test_sql_refsols/agg_simplification_2_mysql.sql @@ -9,7 +9,7 @@ SELECT ANY_VALUE(LOWER(sbcuststate)) AS a7, ANY_VALUE(LOWER(sbcuststate)) AS a8, ANY_VALUE(LOWER(sbcuststate)) AS a9 -FROM main.sbCustomer +FROM main.sbcustomer GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql index adf33c620..c6f20a0d2 100644 --- a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql +++ b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql @@ -9,7 +9,7 @@ SELECT ANY_VALUE(LOWER(sbcuststate)) AS a7, ANY_VALUE(LOWER(sbcuststate)) AS a8, ANY_VALUE(LOWER(sbcuststate)) AS a9 -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/aggregation_functions_mysql.sql b/tests/test_sql_refsols/aggregation_functions_mysql.sql index 9e2e68cef..ab0f2d6b1 100644 --- a/tests/test_sql_refsols/aggregation_functions_mysql.sql +++ b/tests/test_sql_refsols/aggregation_functions_mysql.sql @@ -2,7 +2,7 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, o_custkey - FROM tpch.ORDERS + FROM tpch.orders GROUP BY 2 ), _t2 AS ( @@ -10,30 +10,30 @@ WITH _s1 AS ( CASE WHEN ABS( ( - ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal DESC) - 1.0 + ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal DESC) - 1.0 ) - ( ( - COUNT(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) - 1.0 + COUNT(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) - 1.0 ) / 2.0 ) ) < 1.0 - THEN CUSTOMER.c_acctbal + THEN customer.c_acctbal ELSE NULL END AS expr_15, CASE WHEN TRUNCATE( - CAST(0.19999999999999996 * COUNT(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.19999999999999996 * COUNT(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal DESC) - THEN CUSTOMER.c_acctbal + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal DESC) + THEN customer.c_acctbal ELSE NULL END AS expr_16, - CUSTOMER.c_acctbal, - CUSTOMER.c_nationkey, + customer.c_acctbal, + customer.c_nationkey, _s1.n_rows - FROM tpch.CUSTOMER AS CUSTOMER + FROM tpch.customer AS customer LEFT JOIN _s1 AS _s1 - ON CUSTOMER.c_custkey = _s1.o_custkey + ON _s1.o_custkey = customer.c_custkey ), _t1 AS ( SELECT ANY_VALUE(c_acctbal) AS anything_c_acctbal, @@ -90,9 +90,9 @@ SELECT _t1.ndistinct_c_acctbal AS count_distinct_value, _t1.sample_variance_c_acctbal AS variance_value, _t1.sample_std_c_acctbal AS stddev_value -FROM tpch.NATION AS NATION +FROM tpch.nation AS nation JOIN _t1 AS _t1 - ON NATION.n_nationkey = _t1.c_nationkey + ON _t1.c_nationkey = nation.n_nationkey AND ( _t1.sum_n_rows = 0 OR _t1.sum_n_rows IS NULL ) diff --git a/tests/test_sql_refsols/aggregation_functions_snowflake.sql b/tests/test_sql_refsols/aggregation_functions_snowflake.sql index 56ba5b89c..0477091f2 100644 --- a/tests/test_sql_refsols/aggregation_functions_snowflake.sql +++ b/tests/test_sql_refsols/aggregation_functions_snowflake.sql @@ -1,47 +1,47 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + COUNT(*) AS n_rows, + o_custkey + FROM tpch.orders GROUP BY 2 -), _T1 AS ( +), _t1 AS ( SELECT PERCENTILE_DISC(0.8) WITHIN GROUP (ORDER BY - CUSTOMER.c_acctbal) AS AGG_7, - ANY_VALUE(CUSTOMER.c_acctbal) AS ANYTHING_C_ACCTBAL, - AVG(CUSTOMER.c_acctbal) AS AVG_C_ACCTBAL, - COUNT(CUSTOMER.c_acctbal) AS COUNT_C_ACCTBAL, - MAX(CUSTOMER.c_acctbal) AS MAX_C_ACCTBAL, - MEDIAN(CUSTOMER.c_acctbal) AS MEDIAN_C_ACCTBAL, - MIN(CUSTOMER.c_acctbal) AS MIN_C_ACCTBAL, - COUNT(DISTINCT CUSTOMER.c_acctbal) AS NDISTINCT_C_ACCTBAL, - STDDEV(CUSTOMER.c_acctbal) AS SAMPLE_STD_C_ACCTBAL, - VARIANCE(CUSTOMER.c_acctbal) AS SAMPLE_VARIANCE_C_ACCTBAL, - SUM(CUSTOMER.c_acctbal) AS SUM_C_ACCTBAL, - SUM(_S1.N_ROWS) AS SUM_N_ROWS, - CUSTOMER.c_nationkey AS C_NATIONKEY - FROM TPCH.CUSTOMER AS CUSTOMER - LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.O_CUSTKEY + customer.c_acctbal) AS agg_7, + ANY_VALUE(customer.c_acctbal) AS anything_c_acctbal, + AVG(customer.c_acctbal) AS avg_c_acctbal, + COUNT(customer.c_acctbal) AS count_c_acctbal, + MAX(customer.c_acctbal) AS max_c_acctbal, + MEDIAN(customer.c_acctbal) AS median_c_acctbal, + MIN(customer.c_acctbal) AS min_c_acctbal, + COUNT(DISTINCT customer.c_acctbal) AS ndistinct_c_acctbal, + STDDEV(customer.c_acctbal) AS sample_std_c_acctbal, + VARIANCE(customer.c_acctbal) AS sample_variance_c_acctbal, + SUM(customer.c_acctbal) AS sum_c_acctbal, + SUM(_s1.n_rows) AS sum_n_rows, + customer.c_nationkey + FROM tpch.customer AS customer + LEFT JOIN _s1 AS _s1 + ON _s1.o_custkey = customer.c_custkey GROUP BY 13 ) SELECT - COALESCE(_T1.SUM_C_ACCTBAL, 0) AS sum_value, - _T1.AVG_C_ACCTBAL AS avg_value, - _T1.MEDIAN_C_ACCTBAL AS median_value, - _T1.MIN_C_ACCTBAL AS min_value, - _T1.MAX_C_ACCTBAL AS max_value, - _T1.AGG_7 AS quantile_value, - _T1.ANYTHING_C_ACCTBAL AS anything_value, - _T1.COUNT_C_ACCTBAL AS count_value, - _T1.NDISTINCT_C_ACCTBAL AS count_distinct_value, - _T1.SAMPLE_VARIANCE_C_ACCTBAL AS variance_value, - _T1.SAMPLE_STD_C_ACCTBAL AS stddev_value -FROM TPCH.NATION AS NATION -JOIN _T1 AS _T1 - ON NATION.n_nationkey = _T1.C_NATIONKEY + COALESCE(_t1.sum_c_acctbal, 0) AS sum_value, + _t1.avg_c_acctbal AS avg_value, + _t1.median_c_acctbal AS median_value, + _t1.min_c_acctbal AS min_value, + _t1.max_c_acctbal AS max_value, + _t1.agg_7 AS quantile_value, + _t1.anything_c_acctbal AS anything_value, + _t1.count_c_acctbal AS count_value, + _t1.ndistinct_c_acctbal AS count_distinct_value, + _t1.sample_variance_c_acctbal AS variance_value, + _t1.sample_std_c_acctbal AS stddev_value +FROM tpch.nation AS nation +JOIN _t1 AS _t1 + ON _t1.c_nationkey = nation.n_nationkey AND ( - _T1.SUM_N_ROWS = 0 OR _T1.SUM_N_ROWS IS NULL + _t1.sum_n_rows = 0 OR _t1.sum_n_rows IS NULL ) diff --git a/tests/test_sql_refsols/arithmetic_and_binary_operators_mysql.sql b/tests/test_sql_refsols/arithmetic_and_binary_operators_mysql.sql index 8a1800df2..0a1276bc9 100644 --- a/tests/test_sql_refsols/arithmetic_and_binary_operators_mysql.sql +++ b/tests/test_sql_refsols/arithmetic_and_binary_operators_mysql.sql @@ -1,16 +1,16 @@ SELECT ( - LINEITEM.l_extendedprice * ( + lineitem.l_extendedprice * ( 1 - ( - POWER(LINEITEM.l_discount, 2) + POWER(lineitem.l_discount, 2) ) ) + 1.0 - ) / PART.p_retailprice AS computed_value, - LINEITEM.l_quantity + LINEITEM.l_extendedprice AS total, - LINEITEM.l_extendedprice - LINEITEM.l_quantity AS delta, - LINEITEM.l_quantity * LINEITEM.l_discount AS product, - LINEITEM.l_extendedprice / LINEITEM.l_quantity AS ratio, - POWER(LINEITEM.l_discount, 2) AS exponent -FROM tpch.LINEITEM AS LINEITEM -JOIN tpch.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey + ) / part.p_retailprice AS computed_value, + lineitem.l_quantity + lineitem.l_extendedprice AS total, + lineitem.l_extendedprice - lineitem.l_quantity AS delta, + lineitem.l_quantity * lineitem.l_discount AS product, + lineitem.l_extendedprice / lineitem.l_quantity AS ratio, + POWER(lineitem.l_discount, 2) AS exponent +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey diff --git a/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql b/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql index 21058a870..0a1276bc9 100644 --- a/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql +++ b/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql @@ -1,16 +1,16 @@ SELECT ( - LINEITEM.l_extendedprice * ( + lineitem.l_extendedprice * ( 1 - ( - POWER(LINEITEM.l_discount, 2) + POWER(lineitem.l_discount, 2) ) ) + 1.0 - ) / PART.p_retailprice AS computed_value, - LINEITEM.l_quantity + LINEITEM.l_extendedprice AS total, - LINEITEM.l_extendedprice - LINEITEM.l_quantity AS delta, - LINEITEM.l_quantity * LINEITEM.l_discount AS product, - LINEITEM.l_extendedprice / LINEITEM.l_quantity AS ratio, - POWER(LINEITEM.l_discount, 2) AS exponent -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey + ) / part.p_retailprice AS computed_value, + lineitem.l_quantity + lineitem.l_extendedprice AS total, + lineitem.l_extendedprice - lineitem.l_quantity AS delta, + lineitem.l_quantity * lineitem.l_discount AS product, + lineitem.l_extendedprice / lineitem.l_quantity AS ratio, + POWER(lineitem.l_discount, 2) AS exponent +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey diff --git a/tests/test_sql_refsols/casting_functions_mysql.sql b/tests/test_sql_refsols/casting_functions_mysql.sql index 45fd9570b..f5dea591c 100644 --- a/tests/test_sql_refsols/casting_functions_mysql.sql +++ b/tests/test_sql_refsols/casting_functions_mysql.sql @@ -3,4 +3,4 @@ SELECT CAST(o_totalprice AS CHAR) AS cast_to_string2, TRUNCATE(CAST(o_totalprice AS FLOAT), 0) AS cast_to_integer, CAST(o_shippriority AS DOUBLE) AS cast_to_float -FROM tpch.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/casting_functions_snowflake.sql b/tests/test_sql_refsols/casting_functions_snowflake.sql index 1ac6e57cc..6393eacfd 100644 --- a/tests/test_sql_refsols/casting_functions_snowflake.sql +++ b/tests/test_sql_refsols/casting_functions_snowflake.sql @@ -3,4 +3,4 @@ SELECT CAST(o_totalprice AS TEXT) AS cast_to_string2, CAST(o_totalprice AS BIGINT) AS cast_to_integer, CAST(o_shippriority AS DOUBLE) AS cast_to_float -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/comparisons_and_logical_operators_mysql.sql b/tests/test_sql_refsols/comparisons_and_logical_operators_mysql.sql index 6984b67ef..b3569f559 100644 --- a/tests/test_sql_refsols/comparisons_and_logical_operators_mysql.sql +++ b/tests/test_sql_refsols/comparisons_and_logical_operators_mysql.sql @@ -2,23 +2,23 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, o_custkey - FROM tpch.ORDERS + FROM tpch.orders GROUP BY 2 ) SELECT - CUSTOMER.c_acctbal < 0 AS in_debt, + customer.c_acctbal < 0 AS in_debt, _s1.n_rows <= 12 OR _s1.n_rows IS NULL AS at_most_12_orders, - REGION.r_name = 'EUROPE' AS is_european, - NATION.n_name <> 'GERMANY' AS non_german, - CUSTOMER.c_acctbal > 0 AS non_empty_acct, + region.r_name = 'EUROPE' AS is_european, + nation.n_name <> 'GERMANY' AS non_german, + customer.c_acctbal > 0 AS non_empty_acct, NOT _s1.n_rows IS NULL AND _s1.n_rows >= 5 AS at_least_5_orders, - REGION.r_name = 'ASIA' OR REGION.r_name = 'EUROPE' AS is_eurasian, - CUSTOMER.c_acctbal < 0 AND REGION.r_name = 'EUROPE' AS is_european_in_debt -FROM tpch.CUSTOMER AS CUSTOMER + region.r_name = 'ASIA' OR region.r_name = 'EUROPE' AS is_eurasian, + customer.c_acctbal < 0 AND region.r_name = 'EUROPE' AS is_european_in_debt +FROM tpch.customer AS customer LEFT JOIN _s1 AS _s1 - ON CUSTOMER.c_custkey = _s1.o_custkey -JOIN tpch.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN tpch.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey + ON _s1.o_custkey = customer.c_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey diff --git a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql index 2eef20cb9..b3569f559 100644 --- a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql +++ b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql @@ -1,24 +1,24 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + COUNT(*) AS n_rows, + o_custkey + FROM tpch.orders GROUP BY 2 ) SELECT - CUSTOMER.c_acctbal < 0 AS in_debt, - _S1.N_ROWS <= 12 OR _S1.N_ROWS IS NULL AS at_most_12_orders, - REGION.r_name = 'EUROPE' AS is_european, - NATION.n_name <> 'GERMANY' AS non_german, - CUSTOMER.c_acctbal > 0 AS non_empty_acct, - NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS >= 5 AS at_least_5_orders, - REGION.r_name = 'ASIA' OR REGION.r_name = 'EUROPE' AS is_eurasian, - CUSTOMER.c_acctbal < 0 AND REGION.r_name = 'EUROPE' AS is_european_in_debt -FROM TPCH.CUSTOMER AS CUSTOMER -LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.O_CUSTKEY -JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey + customer.c_acctbal < 0 AS in_debt, + _s1.n_rows <= 12 OR _s1.n_rows IS NULL AS at_most_12_orders, + region.r_name = 'EUROPE' AS is_european, + nation.n_name <> 'GERMANY' AS non_german, + customer.c_acctbal > 0 AS non_empty_acct, + NOT _s1.n_rows IS NULL AND _s1.n_rows >= 5 AS at_least_5_orders, + region.r_name = 'ASIA' OR region.r_name = 'EUROPE' AS is_eurasian, + customer.c_acctbal < 0 AND region.r_name = 'EUROPE' AS is_european_in_debt +FROM tpch.customer AS customer +LEFT JOIN _s1 AS _s1 + ON _s1.o_custkey = customer.c_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey diff --git a/tests/test_sql_refsols/conditional_functions_mysql.sql b/tests/test_sql_refsols/conditional_functions_mysql.sql index b95af92ef..5a744f134 100644 --- a/tests/test_sql_refsols/conditional_functions_mysql.sql +++ b/tests/test_sql_refsols/conditional_functions_mysql.sql @@ -2,19 +2,19 @@ WITH _s1 AS ( SELECT MIN(o_totalprice) AS min_o_totalprice, o_custkey - FROM tpch.ORDERS + FROM tpch.orders GROUP BY 2 ) SELECT - CASE WHEN CUSTOMER.c_acctbal > 1000 THEN 'High' ELSE 'Low' END AS iff_col, - CUSTOMER.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, + CASE WHEN customer.c_acctbal > 1000 THEN 'High' ELSE 'Low' END AS iff_col, + customer.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, COALESCE(_s1.min_o_totalprice, 0.0) AS default_val, NOT _s1.min_o_totalprice IS NULL AS has_acct_bal, _s1.min_o_totalprice IS NULL AS no_acct_bal, - CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS no_debt_bal -FROM tpch.CUSTOMER AS CUSTOMER + CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END AS no_debt_bal +FROM tpch.customer AS customer LEFT JOIN _s1 AS _s1 - ON CUSTOMER.c_custkey = _s1.o_custkey + ON _s1.o_custkey = customer.c_custkey WHERE - CUSTOMER.c_acctbal <= 1000 AND CUSTOMER.c_acctbal >= 100 + customer.c_acctbal <= 1000 AND customer.c_acctbal >= 100 diff --git a/tests/test_sql_refsols/conditional_functions_snowflake.sql b/tests/test_sql_refsols/conditional_functions_snowflake.sql index 4c32b8762..e866f55e9 100644 --- a/tests/test_sql_refsols/conditional_functions_snowflake.sql +++ b/tests/test_sql_refsols/conditional_functions_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - MIN(o_totalprice) AS MIN_O_TOTALPRICE, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + MIN(o_totalprice) AS min_o_totalprice, + o_custkey + FROM tpch.orders GROUP BY 2 ) SELECT - IFF(CUSTOMER.c_acctbal > 1000, 'High', 'Low') AS iff_col, - CUSTOMER.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, - COALESCE(_S1.MIN_O_TOTALPRICE, 0.0) AS default_val, - NOT _S1.MIN_O_TOTALPRICE IS NULL AS has_acct_bal, - _S1.MIN_O_TOTALPRICE IS NULL AS no_acct_bal, - CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS no_debt_bal -FROM TPCH.CUSTOMER AS CUSTOMER -LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.O_CUSTKEY + IFF(customer.c_acctbal > 1000, 'High', 'Low') AS iff_col, + customer.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, + COALESCE(_s1.min_o_totalprice, 0.0) AS default_val, + NOT _s1.min_o_totalprice IS NULL AS has_acct_bal, + _s1.min_o_totalprice IS NULL AS no_acct_bal, + CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END AS no_debt_bal +FROM tpch.customer AS customer +LEFT JOIN _s1 AS _s1 + ON _s1.o_custkey = customer.c_custkey WHERE - CUSTOMER.c_acctbal <= 1000 AND CUSTOMER.c_acctbal >= 100 + customer.c_acctbal <= 1000 AND customer.c_acctbal >= 100 diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_mysql.sql b/tests/test_sql_refsols/cumulative_stock_analysis_mysql.sql index 38ea15e82..0cb4e8169 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_mysql.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_mysql.sql @@ -1,32 +1,32 @@ SELECT - sbTransaction.sbtxdatetime AS date_time, - COUNT(*) OVER (PARTITION BY CAST(CAST(sbTransaction.sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, + sbtransaction.sbtxdatetime AS date_time, + COUNT(*) OVER (PARTITION BY CAST(CAST(sbtransaction.sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, COUNT( - CASE WHEN sbTransaction.sbtxtype = 'buy' THEN sbTransaction.sbtxtype ELSE NULL END - ) OVER (PARTITION BY CAST(CAST(sbTransaction.sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, + CASE WHEN sbtransaction.sbtxtype = 'buy' THEN sbtransaction.sbtxtype ELSE NULL END + ) OVER (PARTITION BY CAST(CAST(sbtransaction.sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, ROUND( ( - 100.0 * SUM(sbTicker.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 100.0 * SUM(sbticker.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS pct_apple_txns, SUM( CASE - WHEN sbTransaction.sbtxtype = 'buy' - THEN sbTransaction.sbtxshares - ELSE 0 - sbTransaction.sbtxshares + WHEN sbtransaction.sbtxtype = 'buy' + THEN sbtransaction.sbtxshares + ELSE 0 - sbtransaction.sbtxshares END - ) OVER (ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, + ) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, ROUND( - AVG(sbTransaction.sbtxamount) OVER (ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + AVG(sbtransaction.sbtxamount) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS rolling_avg_amount -FROM main.sbTransaction AS sbTransaction -JOIN main.sbTicker AS sbTicker - ON sbTicker.sbtickerid = sbTransaction.sbtxtickerid +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid WHERE - EXTRACT(MONTH FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) = 4 - AND EXTRACT(YEAR FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) = 2023 - AND sbTransaction.sbtxstatus = 'success' + EXTRACT(MONTH FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) = 4 + AND EXTRACT(YEAR FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) = 2023 + AND sbtransaction.sbtxstatus = 'success' ORDER BY 1 diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index e07b6545e..25d8b846f 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -1,32 +1,32 @@ SELECT - SBTRANSACTION.sbtxdatetime AS date_time, - COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, + sbtransaction.sbtxdatetime AS date_time, + COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, COUNT( - CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END - ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, + CASE WHEN sbtransaction.sbtxtype = 'buy' THEN sbtransaction.sbtxtype ELSE NULL END + ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, ROUND( ( - 100.0 * COUNT_IF(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 100.0 * COUNT_IF(sbticker.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS pct_apple_txns, SUM( IFF( - SBTRANSACTION.sbtxtype = 'buy', - SBTRANSACTION.sbtxshares, - 0 - SBTRANSACTION.sbtxshares + sbtransaction.sbtxtype = 'buy', + sbtransaction.sbtxshares, + 0 - sbtransaction.sbtxshares ) - ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, + ) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, ROUND( - AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + AVG(sbtransaction.sbtxamount) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS rolling_avg_amount -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid WHERE - MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 4 - AND SBTRANSACTION.sbtxstatus = 'success' - AND YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 + MONTH(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 4 + AND YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 + AND sbtransaction.sbtxstatus = 'success' ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_mysql.sql b/tests/test_sql_refsols/datediff_mysql.sql index e175d4ef5..81660bdb8 100644 --- a/tests/test_sql_refsols/datediff_mysql.sql +++ b/tests/test_sql_refsols/datediff_mysql.sql @@ -20,7 +20,7 @@ SELECT DATE_FORMAT(CAST('2023-04-03 13:16:30' AS DATETIME), '%Y-%m-%d %H:%i:00') ) AS minutes_diff, TIMESTAMPDIFF(SECOND, sbtxdatetime, CAST('2023-04-03 13:16:30' AS DATETIME)) AS seconds_diff -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 ORDER BY diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql index 615e2b218..90148f8b4 100644 --- a/tests/test_sql_refsols/datediff_snowflake.sql +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -8,7 +8,7 @@ SELECT DATEDIFF(HOUR, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS hours_diff, DATEDIFF(MINUTE, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS minutes_diff, DATEDIFF(SECOND, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS seconds_diff -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 ORDER BY diff --git a/tests/test_sql_refsols/datetime_functions_mysql.sql b/tests/test_sql_refsols/datetime_functions_mysql.sql index 11b470926..804b1a65d 100644 --- a/tests/test_sql_refsols/datetime_functions_mysql.sql +++ b/tests/test_sql_refsols/datetime_functions_mysql.sql @@ -61,4 +61,4 @@ SELECT DAYNAME(o_orderdate) AS dayname_col, DAYNAME('1995-06-30') AS dayname_str, DAYNAME(CAST('1993-08-15 00:00:00' AS DATETIME)) AS dayname_dt -FROM tpch.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/datetime_functions_snowflake.sql b/tests/test_sql_refsols/datetime_functions_snowflake.sql index da530defe..9efb94cfe 100644 --- a/tests/test_sql_refsols/datetime_functions_snowflake.sql +++ b/tests/test_sql_refsols/datetime_functions_snowflake.sql @@ -85,4 +85,4 @@ SELECT WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 6 THEN 'Saturday' END AS dayname_dt -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/datetime_sampler_mysql.sql b/tests/test_sql_refsols/datetime_sampler_mysql.sql index 0075b3059..80cb85f3d 100644 --- a/tests/test_sql_refsols/datetime_sampler_mysql.sql +++ b/tests/test_sql_refsols/datetime_sampler_mysql.sql @@ -458,4 +458,4 @@ SELECT ) AS _expr98, TIMESTAMPDIFF(SECOND, CURRENT_TIMESTAMP(), CAST('1999-03-14' AS DATETIME)) AS _expr99, TIMESTAMPDIFF(SECOND, CAST('2022-11-24' AS DATE), CAST('2019-07-04 11:30:00' AS DATETIME)) AS _expr100 -FROM tpch.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/datetime_sampler_snowflake.sql b/tests/test_sql_refsols/datetime_sampler_snowflake.sql index c8697dd70..5d6798a50 100644 --- a/tests/test_sql_refsols/datetime_sampler_snowflake.sql +++ b/tests/test_sql_refsols/datetime_sampler_snowflake.sql @@ -167,4 +167,4 @@ SELECT DATEDIFF(MINUTE, CURRENT_TIMESTAMP(), CAST('2018-02-14 12:41:06' AS TIMESTAMP)) AS _expr98, DATEDIFF(SECOND, CURRENT_TIMESTAMP(), CAST('1999-03-14' AS TIMESTAMP)) AS _expr99, DATEDIFF(SECOND, CAST('2022-11-24' AS DATE), CAST('2019-07-04 11:30:00' AS TIMESTAMP)) AS _expr100 -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/defog_broker_adv10_mysql.sql b/tests/test_sql_refsols/defog_broker_adv10_mysql.sql index cbb89eb1e..9ce90757f 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_mysql.sql @@ -3,22 +3,22 @@ WITH _s1 AS ( EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) AS expr_1, EXTRACT(MONTH FROM CAST(sbtxdatetime AS DATETIME)) AS expr_2, COUNT(*) AS n_rows, - sbtxcustid AS sbTxCustId - FROM main.sbTransaction + sbtxcustid + FROM main.sbtransaction GROUP BY 1, 2, 4 ) SELECT - sbCustomer.sbcustid AS _id, - sbCustomer.sbcustname AS name, + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name, COALESCE(_s1.n_rows, 0) AS num_transactions -FROM main.sbCustomer AS sbCustomer +FROM main.sbcustomer AS sbcustomer LEFT JOIN _s1 AS _s1 - ON _s1.expr_1 = EXTRACT(YEAR FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)) - AND _s1.expr_2 = EXTRACT(MONTH FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)) - AND _s1.sbTxCustId = sbCustomer.sbcustid + ON _s1.expr_1 = EXTRACT(YEAR FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)) + AND _s1.expr_2 = EXTRACT(MONTH FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)) + AND _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 3 DESC LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql index d403616c5..b7b4c5729 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -1,24 +1,24 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - YEAR(CAST(sbtxdatetime AS TIMESTAMP)) AS EXPR_1, - MONTH(CAST(sbtxdatetime AS TIMESTAMP)) AS EXPR_2, - COUNT(*) AS N_ROWS, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + YEAR(CAST(sbtxdatetime AS TIMESTAMP)) AS expr_1, + MONTH(CAST(sbtxdatetime AS TIMESTAMP)) AS expr_2, + COUNT(*) AS n_rows, + sbtxcustid + FROM main.sbtransaction GROUP BY 1, 2, 4 ) SELECT - SBCUSTOMER.sbcustid AS _id, - SBCUSTOMER.sbcustname AS name, - COALESCE(_S1.N_ROWS, 0) AS num_transactions -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID - AND _S1.EXPR_1 = YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) - AND _S1.EXPR_2 = MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name, + COALESCE(_s1.n_rows, 0) AS num_transactions +FROM main.sbcustomer AS sbcustomer +LEFT JOIN _s1 AS _s1 + ON _s1.expr_1 = YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) + AND _s1.expr_2 = MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) + AND _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv11_mysql.sql b/tests/test_sql_refsols/defog_broker_adv11_mysql.sql index 3cbcf960f..e1dc3aa43 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_mysql.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT - sbTransaction.sbtxcustid AS _u_1 - FROM main.sbTransaction AS sbTransaction - JOIN main.sbTicker AS sbTicker - ON sbTicker.sbtickerid = sbTransaction.sbtxtickerid - AND sbTicker.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') + sbtransaction.sbtxcustid AS _u_1 + FROM main.sbtransaction AS sbtransaction + JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') GROUP BY 1 ) SELECT COUNT(*) AS n_customers -FROM main.sbCustomer AS sbCustomer +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbCustomer.sbcustid + ON _u_0._u_1 = sbcustomer.sbcustid WHERE - NOT _u_0._u_1 IS NULL AND sbCustomer.sbcustemail LIKE '%.com' + NOT _u_0._u_1 IS NULL AND sbcustomer.sbcustemail LIKE '%.com' diff --git a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql index a7400d9fe..f497c81e3 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT - SBTRANSACTION.sbtxcustid AS _u_1 - FROM MAIN.SBTRANSACTION AS SBTRANSACTION - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid - AND SBTICKER.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') + sbtransaction.sbtxcustid AS _u_1 + FROM main.sbtransaction AS sbtransaction + JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') GROUP BY 1 ) SELECT COUNT(*) AS n_customers -FROM MAIN.SBCUSTOMER AS SBCUSTOMER +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON SBCUSTOMER.sbcustid = _u_0._u_1 + ON _u_0._u_1 = sbcustomer.sbcustid WHERE - ENDSWITH(SBCUSTOMER.sbcustemail, '.com') AND NOT _u_0._u_1 IS NULL + ENDSWITH(sbcustomer.sbcustemail, '.com') AND NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_adv12_mysql.sql b/tests/test_sql_refsols/defog_broker_adv12_mysql.sql index 671ed92d8..f8cae8dd9 100644 --- a/tests/test_sql_refsols/defog_broker_adv12_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv12_mysql.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS n_customers -FROM main.sbCustomer +FROM main.sbcustomer WHERE ( LOWER(sbcustname) LIKE '%ez' OR LOWER(sbcustname) LIKE 'j%' diff --git a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql index 4344097be..b2ee83029 100644 --- a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS n_customers -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE ( ENDSWITH(LOWER(sbcustname), 'ez') OR STARTSWITH(LOWER(sbcustname), 'j') diff --git a/tests/test_sql_refsols/defog_broker_adv13_mysql.sql b/tests/test_sql_refsols/defog_broker_adv13_mysql.sql index 6f05f4db7..011c5ba86 100644 --- a/tests/test_sql_refsols/defog_broker_adv13_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv13_mysql.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS cust_country, COUNT(*) AS TAC -FROM main.sbCustomer +FROM main.sbcustomer WHERE sbcustjoindate >= CAST('2023-01-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql index 1bebc416b..011c5ba86 100644 --- a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS cust_country, COUNT(*) AS TAC -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE sbcustjoindate >= CAST('2023-01-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv14_mysql.sql b/tests/test_sql_refsols/defog_broker_adv14_mysql.sql index 2e6957884..acabae18a 100644 --- a/tests/test_sql_refsols/defog_broker_adv14_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv14_mysql.sql @@ -1,9 +1,9 @@ SELECT - sbTicker.sbtickertype AS ticker_type, - AVG(sbDailyPrice.sbdpclose) AS ACP -FROM main.sbTicker AS sbTicker -JOIN main.sbDailyPrice AS sbDailyPrice - ON DATEDIFF(CURRENT_TIMESTAMP(), sbDailyPrice.sbdpdate) <= 7 - AND sbDailyPrice.sbdptickerid = sbTicker.sbtickerid + sbticker.sbtickertype AS ticker_type, + AVG(sbdailyprice.sbdpclose) AS ACP +FROM main.sbticker AS sbticker +JOIN main.sbdailyprice AS sbdailyprice + ON DATEDIFF(CURRENT_TIMESTAMP(), sbdailyprice.sbdpdate) <= 7 + AND sbdailyprice.sbdptickerid = sbticker.sbtickerid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql index a8d0ebe14..0d9f76898 100644 --- a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql @@ -1,9 +1,9 @@ SELECT - SBTICKER.sbtickertype AS ticker_type, - AVG(SBDAILYPRICE.sbdpclose) AS ACP -FROM MAIN.SBTICKER AS SBTICKER -JOIN MAIN.SBDAILYPRICE AS SBDAILYPRICE - ON DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 - AND SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid + sbticker.sbtickertype AS ticker_type, + AVG(sbdailyprice.sbdpclose) AS ACP +FROM main.sbticker AS sbticker +JOIN main.sbdailyprice AS sbdailyprice + ON DATEDIFF(DAY, CAST(sbdailyprice.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + AND sbdailyprice.sbdptickerid = sbticker.sbtickerid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_adv15_mysql.sql b/tests/test_sql_refsols/defog_broker_adv15_mysql.sql index 3de2ea42c..45af26175 100644 --- a/tests/test_sql_refsols/defog_broker_adv15_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv15_mysql.sql @@ -3,7 +3,7 @@ SELECT 100 * ( COALESCE(SUM(sbcuststatus = 'active'), 0) / COUNT(*) ) AS ar -FROM main.sbCustomer +FROM main.sbcustomer WHERE sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql index e641bc601..e735bcfcd 100644 --- a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql @@ -3,7 +3,7 @@ SELECT 100 * ( COALESCE(COUNT_IF(sbcuststatus = 'active'), 0) / COUNT(*) ) AS ar -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv16_mysql.sql b/tests/test_sql_refsols/defog_broker_adv16_mysql.sql index 47b4d81c5..7a3498e90 100644 --- a/tests/test_sql_refsols/defog_broker_adv16_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv16_mysql.sql @@ -1,9 +1,9 @@ WITH _s1 AS ( SELECT SUM(sbtxtax + sbtxcommission) AS sum_expr_2, - SUM(sbtxamount) AS sum_sbTxAmount, - sbtxtickerid AS sbTxTickerId - FROM main.sbTransaction + SUM(sbtxamount) AS sum_sbtxamount, + sbtxtickerid + FROM main.sbtransaction WHERE sbtxdatetime >= DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-1' MONTH) AND sbtxtype = 'sell' @@ -11,14 +11,14 @@ WITH _s1 AS ( 3 ) SELECT - sbTicker.sbtickersymbol COLLATE utf8mb4_bin AS symbol, + sbticker.sbtickersymbol COLLATE utf8mb4_bin AS symbol, ( 100.0 * ( - COALESCE(_s1.sum_sbTxAmount, 0) - COALESCE(_s1.sum_expr_2, 0) + COALESCE(_s1.sum_sbtxamount, 0) - COALESCE(_s1.sum_expr_2, 0) ) - ) / COALESCE(_s1.sum_sbTxAmount, 0) AS SPM -FROM main.sbTicker AS sbTicker + ) / COALESCE(_s1.sum_sbtxamount, 0) AS SPM +FROM main.sbticker AS sbticker JOIN _s1 AS _s1 - ON _s1.sbTxTickerId = sbTicker.sbtickerid + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 1 diff --git a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql index 6ca9217ef..93d7cefd8 100644 --- a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql @@ -1,23 +1,23 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(sbtxtax + sbtxcommission) AS SUM_EXPR_2, - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxtickerid AS SBTXTICKERID - FROM MAIN.SBTRANSACTION + SUM(sbtxtax + sbtxcommission) AS sum_expr_2, + SUM(sbtxamount) AS sum_sbtxamount, + sbtxtickerid + FROM main.sbtransaction WHERE sbtxdatetime >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP()) AND sbtxtype = 'sell' GROUP BY 3 ) SELECT - SBTICKER.sbtickersymbol AS symbol, + sbticker.sbtickersymbol AS symbol, ( 100.0 * ( - COALESCE(_S1.SUM_SBTXAMOUNT, 0) - COALESCE(_S1.SUM_EXPR_2, 0) + COALESCE(_s1.sum_sbtxamount, 0) - COALESCE(_s1.sum_expr_2, 0) ) - ) / COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS SPM -FROM MAIN.SBTICKER AS SBTICKER -JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.SBTXTICKERID + ) / COALESCE(_s1.sum_sbtxamount, 0) AS SPM +FROM main.sbticker AS sbticker +JOIN _s1 AS _s1 + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv1_mysql.sql b/tests/test_sql_refsols/defog_broker_adv1_mysql.sql index 73a9236e4..8307f4daa 100644 --- a/tests/test_sql_refsols/defog_broker_adv1_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv1_mysql.sql @@ -1,17 +1,17 @@ WITH _s1 AS ( SELECT - SUM(sbtxamount) AS sum_sbTxAmount, - sbtxcustid AS sbTxCustId - FROM main.sbTransaction + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction GROUP BY 2 ) SELECT - sbCustomer.sbcustname AS name, - COALESCE(_s1.sum_sbTxAmount, 0) AS total_amount -FROM main.sbCustomer AS sbCustomer + sbcustomer.sbcustname AS name, + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount +FROM main.sbcustomer AS sbcustomer LEFT JOIN _s1 AS _s1 - ON _s1.sbTxCustId = sbCustomer.sbcustid + ON _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 2 DESC LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql index 293aef3b2..b83dcb2ac 100644 --- a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql @@ -1,17 +1,17 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction GROUP BY 2 ) SELECT - SBCUSTOMER.sbcustname AS name, - COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + sbcustomer.sbcustname AS name, + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount +FROM main.sbcustomer AS sbcustomer +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 2 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv2_mysql.sql b/tests/test_sql_refsols/defog_broker_adv2_mysql.sql index 5467c8bd2..b062e7491 100644 --- a/tests/test_sql_refsols/defog_broker_adv2_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv2_mysql.sql @@ -1,8 +1,8 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - sbtxtickerid AS sbTxTickerId - FROM main.sbTransaction + sbtxtickerid + FROM main.sbtransaction WHERE sbtxdatetime >= CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-10' DAY) AS DATE) AND sbtxtype = 'buy' @@ -10,11 +10,11 @@ WITH _s1 AS ( 2 ) SELECT - sbTicker.sbtickersymbol AS symbol, + sbticker.sbtickersymbol AS symbol, COALESCE(_s1.n_rows, 0) AS tx_count -FROM main.sbTicker AS sbTicker +FROM main.sbticker AS sbticker LEFT JOIN _s1 AS _s1 - ON _s1.sbTxTickerId = sbTicker.sbtickerid + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 2 DESC LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql index 50990724f..b4dfab519 100644 --- a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql @@ -1,8 +1,8 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - sbtxtickerid AS SBTXTICKERID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + sbtxtickerid + FROM main.sbtransaction WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -10, CURRENT_TIMESTAMP())) AND sbtxtype = 'buy' @@ -10,11 +10,11 @@ WITH _S1 AS ( 2 ) SELECT - SBTICKER.sbtickersymbol AS symbol, - COALESCE(_S1.N_ROWS, 0) AS tx_count -FROM MAIN.SBTICKER AS SBTICKER -LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.SBTXTICKERID + sbticker.sbtickersymbol AS symbol, + COALESCE(_s1.n_rows, 0) AS tx_count +FROM main.sbticker AS sbticker +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 2 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_mysql.sql b/tests/test_sql_refsols/defog_broker_adv3_mysql.sql index 6b4ec7960..3a0ab0c8f 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_mysql.sql @@ -2,18 +2,18 @@ WITH _t1 AS ( SELECT COUNT(*) AS n_rows, SUM(sbtxstatus = 'success') AS sum_expr_2, - sbtxcustid AS sbTxCustId - FROM main.sbTransaction + sbtxcustid + FROM main.sbtransaction GROUP BY 3 ) SELECT - sbCustomer.sbcustname AS name, + sbcustomer.sbcustname AS name, ( 100.0 * COALESCE(_t1.sum_expr_2, 0) ) / _t1.n_rows AS success_rate -FROM main.sbCustomer AS sbCustomer +FROM main.sbcustomer AS sbcustomer JOIN _t1 AS _t1 - ON _t1.n_rows >= 5 AND _t1.sbTxCustId = sbCustomer.sbcustid + ON _t1.n_rows >= 5 AND _t1.sbtxcustid = sbcustomer.sbcustid ORDER BY 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql index d08f16b72..542ba352c 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql @@ -1,19 +1,19 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - COUNT(*) AS N_ROWS, - COUNT_IF(sbtxstatus = 'success') AS SUM_EXPR_2, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + COUNT_IF(sbtxstatus = 'success') AS sum_expr_2, + sbtxcustid + FROM main.sbtransaction GROUP BY 3 ) SELECT - SBCUSTOMER.sbcustname AS name, + sbcustomer.sbcustname AS name, ( - 100.0 * COALESCE(_T1.SUM_EXPR_2, 0) - ) / _T1.N_ROWS AS success_rate -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN _T1 AS _T1 - ON SBCUSTOMER.sbcustid = _T1.SBTXCUSTID AND _T1.N_ROWS >= 5 + 100.0 * COALESCE(_t1.sum_expr_2, 0) + ) / _t1.n_rows AS success_rate +FROM main.sbcustomer AS sbcustomer +JOIN _t1 AS _t1 + ON _t1.n_rows >= 5 AND _t1.sbtxcustid = sbcustomer.sbcustid ORDER BY 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv4_mysql.sql b/tests/test_sql_refsols/defog_broker_adv4_mysql.sql index 1b7e1cc1b..ecdf0e275 100644 --- a/tests/test_sql_refsols/defog_broker_adv4_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv4_mysql.sql @@ -1,20 +1,20 @@ WITH _s1 AS ( SELECT - MAX(sbdphigh) AS max_sbDpHigh, - MIN(sbdplow) AS min_sbDpLow, - sbdptickerid AS sbDpTickerId - FROM main.sbDailyPrice + MAX(sbdphigh) AS max_sbdphigh, + MIN(sbdplow) AS min_sbdplow, + sbdptickerid + FROM main.sbdailyprice WHERE sbdpdate <= CAST('2023-04-04' AS DATE) AND sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 3 ) SELECT - sbTicker.sbtickersymbol AS symbol, - _s1.max_sbDpHigh - _s1.min_sbDpLow AS price_change -FROM main.sbTicker AS sbTicker + sbticker.sbtickersymbol AS symbol, + _s1.max_sbdphigh - _s1.min_sbdplow AS price_change +FROM main.sbticker AS sbticker LEFT JOIN _s1 AS _s1 - ON _s1.sbDpTickerId = sbTicker.sbtickerid + ON _s1.sbdptickerid = sbticker.sbtickerid ORDER BY 2 DESC LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql index 463f8ee2c..37d5e5c4a 100644 --- a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - MAX(sbdphigh) AS MAX_SBDPHIGH, - MIN(sbdplow) AS MIN_SBDPLOW, - sbdptickerid AS SBDPTICKERID - FROM MAIN.SBDAILYPRICE + MAX(sbdphigh) AS max_sbdphigh, + MIN(sbdplow) AS min_sbdplow, + sbdptickerid + FROM main.sbdailyprice WHERE sbdpdate <= CAST('2023-04-04' AS DATE) AND sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 3 ) SELECT - SBTICKER.sbtickersymbol AS symbol, - _S1.MAX_SBDPHIGH - _S1.MIN_SBDPLOW AS price_change -FROM MAIN.SBTICKER AS SBTICKER -LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.SBDPTICKERID + sbticker.sbtickersymbol AS symbol, + _s1.max_sbdphigh - _s1.min_sbdplow AS price_change +FROM main.sbticker AS sbticker +LEFT JOIN _s1 AS _s1 + ON _s1.sbdptickerid = sbticker.sbtickerid ORDER BY 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv5_mysql.sql b/tests/test_sql_refsols/defog_broker_adv5_mysql.sql index 36b410c1c..a4a0efd6a 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_mysql.sql @@ -1,6 +1,6 @@ WITH _s0 AS ( SELECT - COUNT(sbdpclose) AS count_sbDpClose, + COUNT(sbdpclose) AS count_sbdpclose, MAX(sbdphigh) AS max_high, MIN(sbdplow) AS min_low, CONCAT_WS( @@ -8,9 +8,9 @@ WITH _s0 AS ( EXTRACT(YEAR FROM CAST(sbdpdate AS DATETIME)), LPAD(EXTRACT(MONTH FROM CAST(sbdpdate AS DATETIME)), 2, '0') ) AS month, - SUM(sbdpclose) AS sum_sbDpClose, - sbdptickerid AS sbDpTickerId - FROM main.sbDailyPrice + SUM(sbdpclose) AS sum_sbdpclose, + sbdptickerid + FROM main.sbdailyprice GROUP BY 4, 6 @@ -18,26 +18,26 @@ WITH _s0 AS ( SELECT MAX(_s0.max_high) AS max_high, MIN(_s0.min_low) AS min_low, - SUM(_s0.count_sbDpClose) AS sum_count_sbDpClose, - SUM(_s0.sum_sbDpClose) AS sum_sum_sbDpClose, + SUM(_s0.count_sbdpclose) AS sum_count_sbdpclose, + SUM(_s0.sum_sbdpclose) AS sum_sum_sbdpclose, _s0.month, - sbTicker.sbtickersymbol AS sbTickerSymbol + sbticker.sbtickersymbol FROM _s0 AS _s0 - JOIN main.sbTicker AS sbTicker - ON _s0.sbDpTickerId = sbTicker.sbtickerid + JOIN main.sbticker AS sbticker + ON _s0.sbdptickerid = sbticker.sbtickerid GROUP BY 5, 6 ) SELECT - sbTickerSymbol AS symbol, + sbtickersymbol AS symbol, month, - sum_sum_sbDpClose / sum_count_sbDpClose AS avg_close, + sum_sum_sbdpclose / sum_count_sbdpclose AS avg_close, max_high, min_low, ( ( - sum_sum_sbDpClose / sum_count_sbDpClose - ) - LAG(sum_sum_sbDpClose / sum_count_sbDpClose, 1) OVER (PARTITION BY sbTickerSymbol ORDER BY CASE WHEN month COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, month COLLATE utf8mb4_bin) - ) / LAG(sum_sum_sbDpClose / sum_count_sbDpClose, 1) OVER (PARTITION BY sbTickerSymbol ORDER BY CASE WHEN month COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, month COLLATE utf8mb4_bin) AS momc + sum_sum_sbdpclose / sum_count_sbdpclose + ) - LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY CASE WHEN month COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, month COLLATE utf8mb4_bin) + ) / LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY CASE WHEN month COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, month COLLATE utf8mb4_bin) AS momc FROM _t0 diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index a628e33fd..09b128632 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -1,43 +1,43 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - COUNT(sbdpclose) AS COUNT_SBDPCLOSE, - MAX(sbdphigh) AS MAX_HIGH, - MIN(sbdplow) AS MIN_LOW, + COUNT(sbdpclose) AS count_sbdpclose, + MAX(sbdphigh) AS max_high, + MIN(sbdplow) AS min_low, CONCAT_WS( '-', YEAR(CAST(sbdpdate AS TIMESTAMP)), LPAD(MONTH(CAST(sbdpdate AS TIMESTAMP)), 2, '0') - ) AS MONTH, - SUM(sbdpclose) AS SUM_SBDPCLOSE, - sbdptickerid AS SBDPTICKERID - FROM MAIN.SBDAILYPRICE + ) AS month, + SUM(sbdpclose) AS sum_sbdpclose, + sbdptickerid + FROM main.sbdailyprice GROUP BY 4, 6 -), _T0 AS ( +), _t0 AS ( SELECT - MAX(_S0.MAX_HIGH) AS MAX_HIGH, - MIN(_S0.MIN_LOW) AS MIN_LOW, - SUM(_S0.COUNT_SBDPCLOSE) AS SUM_COUNT_SBDPCLOSE, - SUM(_S0.SUM_SBDPCLOSE) AS SUM_SUM_SBDPCLOSE, - _S0.MONTH, - SBTICKER.sbtickersymbol AS SBTICKERSYMBOL - FROM _S0 AS _S0 - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = _S0.SBDPTICKERID + MAX(_s0.max_high) AS max_high, + MIN(_s0.min_low) AS min_low, + SUM(_s0.count_sbdpclose) AS sum_count_sbdpclose, + SUM(_s0.sum_sbdpclose) AS sum_sum_sbdpclose, + _s0.month, + sbticker.sbtickersymbol + FROM _s0 AS _s0 + JOIN main.sbticker AS sbticker + ON _s0.sbdptickerid = sbticker.sbtickerid GROUP BY 5, 6 ) SELECT - SBTICKERSYMBOL AS symbol, - MONTH AS month, - SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE AS avg_close, - MAX_HIGH AS max_high, - MIN_LOW AS min_low, + sbtickersymbol AS symbol, + month, + sum_sum_sbdpclose / sum_count_sbdpclose AS avg_close, + max_high, + min_low, ( ( - SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE - ) - LAG(SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) - ) / LAG(SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) AS momc -FROM _T0 + sum_sum_sbdpclose / sum_count_sbdpclose + ) - LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY month) + ) / LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY month) AS momc +FROM _t0 diff --git a/tests/test_sql_refsols/defog_broker_adv6_mysql.sql b/tests/test_sql_refsols/defog_broker_adv6_mysql.sql index 67d545279..cbbff3f2a 100644 --- a/tests/test_sql_refsols/defog_broker_adv6_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv6_mysql.sql @@ -1,17 +1,17 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbTxAmount, - sbtxcustid AS sbTxCustId - FROM main.sbTransaction + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction GROUP BY 3 ) SELECT - sbCustomer.sbcustname AS name, + sbcustomer.sbcustname AS name, _s1.n_rows AS num_tx, - COALESCE(_s1.sum_sbTxAmount, 0) AS total_amount, - RANK() OVER (ORDER BY COALESCE(_s1.sum_sbTxAmount, 0) DESC) AS cust_rank -FROM main.sbCustomer AS sbCustomer + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount, + RANK() OVER (ORDER BY COALESCE(_s1.sum_sbtxamount, 0) DESC) AS cust_rank +FROM main.sbcustomer AS sbcustomer JOIN _s1 AS _s1 - ON _s1.sbTxCustId = sbCustomer.sbcustid + ON _s1.sbtxcustid = sbcustomer.sbcustid diff --git a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql index e8dc4a0e7..cbbff3f2a 100644 --- a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql @@ -1,17 +1,17 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction GROUP BY 3 ) SELECT - SBCUSTOMER.sbcustname AS name, - _S1.N_ROWS AS num_tx, - COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount, - RANK() OVER (ORDER BY COALESCE(_S1.SUM_SBTXAMOUNT, 0) DESC) AS cust_rank -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + sbcustomer.sbcustname AS name, + _s1.n_rows AS num_tx, + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount, + RANK() OVER (ORDER BY COALESCE(_s1.sum_sbtxamount, 0) DESC) AS cust_rank +FROM main.sbcustomer AS sbcustomer +JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid diff --git a/tests/test_sql_refsols/defog_broker_adv7_mysql.sql b/tests/test_sql_refsols/defog_broker_adv7_mysql.sql index ed593aee6..ecae9708d 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_mysql.sql @@ -6,7 +6,7 @@ WITH _s2 AS ( LPAD(EXTRACT(MONTH FROM CAST(sbcustjoindate AS DATETIME)), 2, '0') ) AS month, COUNT(*) AS n_rows - FROM main.sbCustomer + FROM main.sbcustomer WHERE sbcustjoindate < STR_TO_DATE( CONCAT(YEAR(CURRENT_TIMESTAMP()), ' ', MONTH(CURRENT_TIMESTAMP()), ' 1'), @@ -25,23 +25,23 @@ WITH _s2 AS ( 1 ), _s3 AS ( SELECT - AVG(sbTransaction.sbtxamount) AS avg_sbTxAmount, + AVG(sbtransaction.sbtxamount) AS avg_sbtxamount, CONCAT_WS( '-', - EXTRACT(YEAR FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)), - LPAD(EXTRACT(MONTH FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)), 2, '0') + EXTRACT(YEAR FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)), + LPAD(EXTRACT(MONTH FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)), 2, '0') ) AS month - FROM main.sbCustomer AS sbCustomer - JOIN main.sbTransaction AS sbTransaction - ON EXTRACT(MONTH FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)) = EXTRACT(MONTH FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) - AND EXTRACT(YEAR FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)) = EXTRACT(YEAR FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) - AND sbCustomer.sbcustid = sbTransaction.sbtxcustid + FROM main.sbcustomer AS sbcustomer + JOIN main.sbtransaction AS sbtransaction + ON EXTRACT(MONTH FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)) = EXTRACT(MONTH FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) + AND EXTRACT(YEAR FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)) = EXTRACT(YEAR FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid WHERE - sbCustomer.sbcustjoindate < STR_TO_DATE( + sbcustomer.sbcustjoindate < STR_TO_DATE( CONCAT(YEAR(CURRENT_TIMESTAMP()), ' ', MONTH(CURRENT_TIMESTAMP()), ' 1'), '%Y %c %e' ) - AND sbCustomer.sbcustjoindate >= STR_TO_DATE( + AND sbcustomer.sbcustjoindate >= STR_TO_DATE( CONCAT( YEAR(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-6' MONTH)), ' ', @@ -56,7 +56,7 @@ WITH _s2 AS ( SELECT _s2.month, _s2.n_rows AS customer_signups, - _s3.avg_sbTxAmount AS avg_tx_amount + _s3.avg_sbtxamount AS avg_tx_amount FROM _s2 AS _s2 LEFT JOIN _s3 AS _s3 ON _s2.month = _s3.month diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index 1e67b2da7..c2416b560 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -1,40 +1,40 @@ -WITH _S2 AS ( +WITH _s2 AS ( SELECT CONCAT_WS( '-', YEAR(CAST(sbcustjoindate AS TIMESTAMP)), LPAD(MONTH(CAST(sbcustjoindate AS TIMESTAMP)), 2, '0') - ) AS MONTH, - COUNT(*) AS N_ROWS - FROM MAIN.SBCUSTOMER + ) AS month, + COUNT(*) AS n_rows + FROM main.sbcustomer WHERE sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY 1 -), _S3 AS ( +), _s3 AS ( SELECT - AVG(SBTRANSACTION.sbtxamount) AS AVG_SBTXAMOUNT, + AVG(sbtransaction.sbtxamount) AS avg_sbtxamount, CONCAT_WS( '-', - YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), - LPAD(MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), 2, '0') - ) AS MONTH - FROM MAIN.SBCUSTOMER AS SBCUSTOMER - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) - AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)), + LPAD(MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)), 2, '0') + ) AS month + FROM main.sbcustomer AS sbcustomer + JOIN main.sbtransaction AS sbtransaction + ON MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + AND YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid WHERE - SBCUSTOMER.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) - AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) + sbcustomer.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) + AND sbcustomer.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY 2 ) SELECT - _S2.MONTH AS month, - _S2.N_ROWS AS customer_signups, - _S3.AVG_SBTXAMOUNT AS avg_tx_amount -FROM _S2 AS _S2 -LEFT JOIN _S3 AS _S3 - ON _S2.MONTH = _S3.MONTH + _s2.month, + _s2.n_rows AS customer_signups, + _s3.avg_sbtxamount AS avg_tx_amount +FROM _s2 AS _s2 +LEFT JOIN _s3 AS _s3 + ON _s2.month = _s3.month diff --git a/tests/test_sql_refsols/defog_broker_adv8_mysql.sql b/tests/test_sql_refsols/defog_broker_adv8_mysql.sql index 89faf1ae6..8d40b94a1 100644 --- a/tests/test_sql_refsols/defog_broker_adv8_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv8_mysql.sql @@ -1,7 +1,7 @@ WITH _u_0 AS ( SELECT sbcustid AS _u_1 - FROM main.sbCustomer + FROM main.sbcustomer WHERE LOWER(sbcustcountry) = 'usa' GROUP BY @@ -9,13 +9,13 @@ WITH _u_0 AS ( ) SELECT CASE WHEN COUNT(*) > 0 THEN COUNT(*) ELSE NULL END AS n_transactions, - COALESCE(SUM(sbTransaction.sbtxamount), 0) AS total_amount -FROM main.sbTransaction AS sbTransaction + COALESCE(SUM(sbtransaction.sbtxamount), 0) AS total_amount +FROM main.sbtransaction AS sbtransaction LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbTransaction.sbtxcustid + ON _u_0._u_1 = sbtransaction.sbtxcustid WHERE NOT _u_0._u_1 IS NULL - AND sbTransaction.sbtxdatetime < CAST(DATE_SUB( + AND sbtransaction.sbtxdatetime < CAST(DATE_SUB( CURRENT_TIMESTAMP(), INTERVAL ( ( @@ -23,7 +23,7 @@ WHERE ) % 7 ) DAY ) AS DATE) - AND sbTransaction.sbtxdatetime >= DATE_ADD( + AND sbtransaction.sbtxdatetime >= DATE_ADD( CAST(DATE_SUB( CURRENT_TIMESTAMP(), INTERVAL ( diff --git a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql index 5a061a0dc..50141aab4 100644 --- a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql @@ -1,7 +1,7 @@ WITH _u_0 AS ( SELECT sbcustid AS _u_1 - FROM MAIN.SBCUSTOMER + FROM main.sbcustomer WHERE LOWER(sbcustcountry) = 'usa' GROUP BY @@ -9,13 +9,13 @@ WITH _u_0 AS ( ) SELECT CASE WHEN COUNT(*) > 0 THEN COUNT(*) ELSE NULL END AS n_transactions, - COALESCE(SUM(SBTRANSACTION.sbtxamount), 0) AS total_amount -FROM MAIN.SBTRANSACTION AS SBTRANSACTION + COALESCE(SUM(sbtransaction.sbtxamount), 0) AS total_amount +FROM main.sbtransaction AS sbtransaction LEFT JOIN _u_0 AS _u_0 - ON SBTRANSACTION.sbtxcustid = _u_0._u_1 + ON _u_0._u_1 = sbtransaction.sbtxcustid WHERE NOT _u_0._u_1 IS NULL - AND SBTRANSACTION.sbtxdatetime < DATE_TRUNC( + AND sbtransaction.sbtxdatetime < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -27,7 +27,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND SBTRANSACTION.sbtxdatetime >= DATEADD( + AND sbtransaction.sbtxdatetime >= DATEADD( WEEK, -1, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_broker_adv9_mysql.sql b/tests/test_sql_refsols/defog_broker_adv9_mysql.sql index 0597a6a1d..b80b0812e 100644 --- a/tests/test_sql_refsols/defog_broker_adv9_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv9_mysql.sql @@ -1,24 +1,24 @@ SELECT CAST(DATE_SUB( - CAST(sbTransaction.sbtxdatetime AS DATETIME), + CAST(sbtransaction.sbtxdatetime AS DATETIME), INTERVAL ( ( - DAYOFWEEK(CAST(sbTransaction.sbtxdatetime AS DATETIME)) + 5 + DAYOFWEEK(CAST(sbtransaction.sbtxdatetime AS DATETIME)) + 5 ) % 7 ) DAY ) AS DATE) AS week, COUNT(*) AS num_transactions, COALESCE(SUM(( ( - DAYOFWEEK(sbTransaction.sbtxdatetime) + 5 + DAYOFWEEK(sbtransaction.sbtxdatetime) + 5 ) % 7 ) IN (5, 6)), 0) AS weekend_transactions -FROM main.sbTransaction AS sbTransaction -JOIN main.sbTicker AS sbTicker - ON sbTicker.sbtickerid = sbTransaction.sbtxtickerid - AND sbTicker.sbtickertype = 'stock' +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickertype = 'stock' WHERE - sbTransaction.sbtxdatetime < CAST(DATE_SUB( + sbtransaction.sbtxdatetime < CAST(DATE_SUB( CURRENT_TIMESTAMP(), INTERVAL ( ( @@ -26,7 +26,7 @@ WHERE ) % 7 ) DAY ) AS DATE) - AND sbTransaction.sbtxdatetime >= DATE_ADD( + AND sbtransaction.sbtxdatetime >= DATE_ADD( CAST(DATE_SUB( CURRENT_TIMESTAMP(), INTERVAL ( diff --git a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql index 8cdd93e22..e98831783 100644 --- a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql @@ -5,27 +5,27 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP) + CAST(sbtransaction.sbtxdatetime AS TIMESTAMP) ) ) AS week, COUNT(*) AS num_transactions, COALESCE( COUNT_IF(( ( - DAYOFWEEK(SBTRANSACTION.sbtxdatetime) + 6 + DAYOFWEEK(sbtransaction.sbtxdatetime) + 6 ) % 7 ) IN (5, 6)), 0 ) AS weekend_transactions -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid - AND SBTICKER.sbtickertype = 'stock' +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickertype = 'stock' WHERE - SBTRANSACTION.sbtxdatetime < DATE_TRUNC( + sbtransaction.sbtxdatetime < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -37,7 +37,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND SBTRANSACTION.sbtxdatetime >= DATEADD( + AND sbtransaction.sbtxdatetime >= DATEADD( WEEK, -8, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_broker_basic10_mysql.sql b/tests/test_sql_refsols/defog_broker_basic10_mysql.sql index 8cffdf6da..1b3a16cf5 100644 --- a/tests/test_sql_refsols/defog_broker_basic10_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic10_mysql.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM main.sbDailyPrice + FROM main.sbdailyprice GROUP BY 1 ) SELECT - sbTicker.sbtickerid AS _id, - sbTicker.sbtickersymbol AS symbol -FROM main.sbTicker AS sbTicker + sbticker.sbtickerid AS _id, + sbticker.sbtickersymbol AS symbol +FROM main.sbticker AS sbticker LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbTicker.sbtickerid + ON _u_0._u_1 = sbticker.sbtickerid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql index f926019f9..1b3a16cf5 100644 --- a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM MAIN.SBDAILYPRICE + FROM main.sbdailyprice GROUP BY 1 ) SELECT - SBTICKER.sbtickerid AS _id, - SBTICKER.sbtickersymbol AS symbol -FROM MAIN.SBTICKER AS SBTICKER + sbticker.sbtickerid AS _id, + sbticker.sbtickersymbol AS symbol +FROM main.sbticker AS sbticker LEFT JOIN _u_0 AS _u_0 - ON SBTICKER.sbtickerid = _u_0._u_1 + ON _u_0._u_1 = sbticker.sbtickerid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic1_mysql.sql b/tests/test_sql_refsols/defog_broker_basic1_mysql.sql index 1175d6b8e..c825e2913 100644 --- a/tests/test_sql_refsols/defog_broker_basic1_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic1_mysql.sql @@ -1,20 +1,20 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbTxAmount, - sbtxcustid AS sbTxCustId - FROM main.sbTransaction + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction WHERE sbtxdatetime >= CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-30' DAY) AS DATE) GROUP BY 3 ) SELECT - sbCustomer.sbcustcountry AS country, + sbcustomer.sbcustcountry AS country, COALESCE(SUM(_s1.n_rows), 0) AS num_transactions, - COALESCE(SUM(_s1.sum_sbTxAmount), 0) AS total_amount -FROM main.sbCustomer AS sbCustomer + COALESCE(SUM(_s1.sum_sbtxamount), 0) AS total_amount +FROM main.sbcustomer AS sbcustomer LEFT JOIN _s1 AS _s1 - ON _s1.sbTxCustId = sbCustomer.sbcustid + ON _s1.sbtxcustid = sbcustomer.sbcustid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql index f555d7941..121a66b86 100644 --- a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -30, CURRENT_TIMESTAMP())) GROUP BY 3 ) SELECT - SBCUSTOMER.sbcustcountry AS country, - COALESCE(SUM(_S1.N_ROWS), 0) AS num_transactions, - COALESCE(SUM(_S1.SUM_SBTXAMOUNT), 0) AS total_amount -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + sbcustomer.sbcustcountry AS country, + COALESCE(SUM(_s1.n_rows), 0) AS num_transactions, + COALESCE(SUM(_s1.sum_sbtxamount), 0) AS total_amount +FROM main.sbcustomer AS sbcustomer +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_basic2_mysql.sql b/tests/test_sql_refsols/defog_broker_basic2_mysql.sql index 71161206c..a8d5822df 100644 --- a/tests/test_sql_refsols/defog_broker_basic2_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic2_mysql.sql @@ -2,7 +2,7 @@ SELECT sbtxtype COLLATE utf8mb4_bin AS transaction_type, COUNT(DISTINCT sbtxcustid) AS num_customers, AVG(sbtxshares) AS avg_shares -FROM main.sbTransaction +FROM main.sbtransaction WHERE sbtxdatetime <= CAST('2023-03-31' AS DATE) AND sbtxdatetime >= CAST('2023-01-01' AS DATE) diff --git a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql index f5697ff7a..2c2ba028b 100644 --- a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql @@ -2,7 +2,7 @@ SELECT sbtxtype AS transaction_type, COUNT(DISTINCT sbtxcustid) AS num_customers, AVG(sbtxshares) AS avg_shares -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE sbtxdatetime <= CAST('2023-03-31' AS DATE) AND sbtxdatetime >= CAST('2023-01-01' AS DATE) diff --git a/tests/test_sql_refsols/defog_broker_basic3_mysql.sql b/tests/test_sql_refsols/defog_broker_basic3_mysql.sql index 72c0e0d50..ce16e2df1 100644 --- a/tests/test_sql_refsols/defog_broker_basic3_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic3_mysql.sql @@ -1,19 +1,19 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbTxAmount, - sbtxtickerid AS sbTxTickerId - FROM main.sbTransaction + SUM(sbtxamount) AS sum_sbtxamount, + sbtxtickerid + FROM main.sbtransaction GROUP BY 3 ) SELECT - sbTicker.sbtickersymbol AS symbol, + sbticker.sbtickersymbol AS symbol, COALESCE(_s1.n_rows, 0) AS num_transactions, - COALESCE(_s1.sum_sbTxAmount, 0) AS total_amount -FROM main.sbTicker AS sbTicker + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount +FROM main.sbticker AS sbticker LEFT JOIN _s1 AS _s1 - ON _s1.sbTxTickerId = sbTicker.sbtickerid + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 3 DESC LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql index d2103a902..14a43a168 100644 --- a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxtickerid AS SBTXTICKERID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + SUM(sbtxamount) AS sum_sbtxamount, + sbtxtickerid + FROM main.sbtransaction GROUP BY 3 ) SELECT - SBTICKER.sbtickersymbol AS symbol, - COALESCE(_S1.N_ROWS, 0) AS num_transactions, - COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount -FROM MAIN.SBTICKER AS SBTICKER -LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.SBTXTICKERID + sbticker.sbtickersymbol AS symbol, + COALESCE(_s1.n_rows, 0) AS num_transactions, + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount +FROM main.sbticker AS sbticker +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 3 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_basic4_mysql.sql b/tests/test_sql_refsols/defog_broker_basic4_mysql.sql index 1fcd150c0..d078e262b 100644 --- a/tests/test_sql_refsols/defog_broker_basic4_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic4_mysql.sql @@ -1,31 +1,31 @@ WITH _s0 AS ( SELECT COUNT(*) AS num_transactions, - sbtxcustid AS sbTxCustId, - sbtxtickerid AS sbTxTickerId - FROM main.sbTransaction + sbtxcustid, + sbtxtickerid + FROM main.sbtransaction GROUP BY 2, 3 ), _s2 AS ( SELECT SUM(_s0.num_transactions) AS num_transactions, - sbTicker.sbtickertype AS sbTickerType, - _s0.sbTxCustId + sbticker.sbtickertype, + _s0.sbtxcustid FROM _s0 AS _s0 - JOIN main.sbTicker AS sbTicker - ON _s0.sbTxTickerId = sbTicker.sbtickerid + JOIN main.sbticker AS sbticker + ON _s0.sbtxtickerid = sbticker.sbtickerid GROUP BY 2, 3 ) SELECT - sbCustomer.sbcuststate AS state, - _s2.sbTickerType AS ticker_type, + sbcustomer.sbcuststate AS state, + _s2.sbtickertype AS ticker_type, SUM(_s2.num_transactions) AS num_transactions FROM _s2 AS _s2 -JOIN main.sbCustomer AS sbCustomer - ON _s2.sbTxCustId = sbCustomer.sbcustid +JOIN main.sbcustomer AS sbcustomer + ON _s2.sbtxcustid = sbcustomer.sbcustid GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql index fe28def67..726590352 100644 --- a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql @@ -1,31 +1,31 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - COUNT(*) AS NUM_TRANSACTIONS, - sbtxcustid AS SBTXCUSTID, - sbtxtickerid AS SBTXTICKERID - FROM MAIN.SBTRANSACTION + COUNT(*) AS num_transactions, + sbtxcustid, + sbtxtickerid + FROM main.sbtransaction GROUP BY 2, 3 -), _S2 AS ( +), _s2 AS ( SELECT - SUM(_S0.NUM_TRANSACTIONS) AS NUM_TRANSACTIONS, - SBTICKER.sbtickertype AS SBTICKERTYPE, - _S0.SBTXCUSTID - FROM _S0 AS _S0 - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = _S0.SBTXTICKERID + SUM(_s0.num_transactions) AS num_transactions, + sbticker.sbtickertype, + _s0.sbtxcustid + FROM _s0 AS _s0 + JOIN main.sbticker AS sbticker + ON _s0.sbtxtickerid = sbticker.sbtickerid GROUP BY 2, 3 ) SELECT - SBCUSTOMER.sbcuststate AS state, - _S2.SBTICKERTYPE AS ticker_type, - SUM(_S2.NUM_TRANSACTIONS) AS num_transactions -FROM _S2 AS _S2 -JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = _S2.SBTXCUSTID + sbcustomer.sbcuststate AS state, + _s2.sbtickertype AS ticker_type, + SUM(_s2.num_transactions) AS num_transactions +FROM _s2 AS _s2 +JOIN main.sbcustomer AS sbcustomer + ON _s2.sbtxcustid = sbcustomer.sbcustid GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/defog_broker_basic5_mysql.sql b/tests/test_sql_refsols/defog_broker_basic5_mysql.sql index 550aab5c2..669d92e42 100644 --- a/tests/test_sql_refsols/defog_broker_basic5_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic5_mysql.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM main.sbTransaction + FROM main.sbtransaction WHERE sbtxtype = 'buy' GROUP BY 1 ) SELECT - sbCustomer.sbcustid AS _id -FROM main.sbCustomer AS sbCustomer + sbcustomer.sbcustid AS _id +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbCustomer.sbcustid + ON _u_0._u_1 = sbcustomer.sbcustid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql index 7d9a16807..669d92e42 100644 --- a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM MAIN.SBTRANSACTION + FROM main.sbtransaction WHERE sbtxtype = 'buy' GROUP BY 1 ) SELECT - SBCUSTOMER.sbcustid AS _id -FROM MAIN.SBCUSTOMER AS SBCUSTOMER + sbcustomer.sbcustid AS _id +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON SBCUSTOMER.sbcustid = _u_0._u_1 + ON _u_0._u_1 = sbcustomer.sbcustid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic6_mysql.sql b/tests/test_sql_refsols/defog_broker_basic6_mysql.sql index 803c5d5b5..170c215bd 100644 --- a/tests/test_sql_refsols/defog_broker_basic6_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic6_mysql.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM main.sbDailyPrice + FROM main.sbdailyprice WHERE sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 1 ) SELECT - sbTicker.sbtickerid AS _id -FROM main.sbTicker AS sbTicker + sbticker.sbtickerid AS _id +FROM main.sbticker AS sbticker LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbTicker.sbtickerid + ON _u_0._u_1 = sbticker.sbtickerid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql index 39ecccabf..170c215bd 100644 --- a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM MAIN.SBDAILYPRICE + FROM main.sbdailyprice WHERE sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 1 ) SELECT - SBTICKER.sbtickerid AS _id -FROM MAIN.SBTICKER AS SBTICKER + sbticker.sbtickerid AS _id +FROM main.sbticker AS sbticker LEFT JOIN _u_0 AS _u_0 - ON SBTICKER.sbtickerid = _u_0._u_1 + ON _u_0._u_1 = sbticker.sbtickerid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic7_mysql.sql b/tests/test_sql_refsols/defog_broker_basic7_mysql.sql index 49dd01d9f..d8f4a45fb 100644 --- a/tests/test_sql_refsols/defog_broker_basic7_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic7_mysql.sql @@ -1,7 +1,7 @@ SELECT sbtxstatus AS status, COUNT(*) AS num_transactions -FROM main.sbTransaction +FROM main.sbtransaction GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql index 64b64904a..c1f3031b1 100644 --- a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbtxstatus AS status, COUNT(*) AS num_transactions -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic8_mysql.sql b/tests/test_sql_refsols/defog_broker_basic8_mysql.sql index cca6560a7..21c4e9f66 100644 --- a/tests/test_sql_refsols/defog_broker_basic8_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic8_mysql.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS country, COUNT(*) AS num_customers -FROM main.sbCustomer +FROM main.sbcustomer GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql index fab020c76..fb20ad227 100644 --- a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS country, COUNT(*) AS num_customers -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic9_mysql.sql b/tests/test_sql_refsols/defog_broker_basic9_mysql.sql index 9e6df0dec..f96baada7 100644 --- a/tests/test_sql_refsols/defog_broker_basic9_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic9_mysql.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM main.sbTransaction + FROM main.sbtransaction GROUP BY 1 ) SELECT - sbCustomer.sbcustid AS _id, - sbCustomer.sbcustname AS name -FROM main.sbCustomer AS sbCustomer + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbCustomer.sbcustid + ON _u_0._u_1 = sbcustomer.sbcustid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql index 5ad788527..f96baada7 100644 --- a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM MAIN.SBTRANSACTION + FROM main.sbtransaction GROUP BY 1 ) SELECT - SBCUSTOMER.sbcustid AS _id, - SBCUSTOMER.sbcustname AS name -FROM MAIN.SBCUSTOMER AS SBCUSTOMER + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON SBCUSTOMER.sbcustid = _u_0._u_1 + ON _u_0._u_1 = sbcustomer.sbcustid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_gen1_mysql.sql b/tests/test_sql_refsols/defog_broker_gen1_mysql.sql index 125f71020..a329967ed 100644 --- a/tests/test_sql_refsols/defog_broker_gen1_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen1_mysql.sql @@ -1,8 +1,8 @@ SELECT - MIN(sbDailyPrice.sbdpclose) AS lowest_price -FROM main.sbDailyPrice AS sbDailyPrice -JOIN main.sbTicker AS sbTicker - ON sbDailyPrice.sbdptickerid = sbTicker.sbtickerid - AND sbTicker.sbtickersymbol = 'VTI' + MIN(sbdailyprice.sbdpclose) AS lowest_price +FROM main.sbdailyprice AS sbdailyprice +JOIN main.sbticker AS sbticker + ON sbdailyprice.sbdptickerid = sbticker.sbtickerid + AND sbticker.sbtickersymbol = 'VTI' WHERE - DATEDIFF(CURRENT_TIMESTAMP(), sbDailyPrice.sbdpdate) <= 7 + DATEDIFF(CURRENT_TIMESTAMP(), sbdailyprice.sbdpdate) <= 7 diff --git a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql index 55d275bc0..db65bbc3a 100644 --- a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql @@ -1,8 +1,8 @@ SELECT - MIN(SBDAILYPRICE.sbdpclose) AS lowest_price -FROM MAIN.SBDAILYPRICE AS SBDAILYPRICE -JOIN MAIN.SBTICKER AS SBTICKER - ON SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid - AND SBTICKER.sbtickersymbol = 'VTI' + MIN(sbdailyprice.sbdpclose) AS lowest_price +FROM main.sbdailyprice AS sbdailyprice +JOIN main.sbticker AS sbticker + ON sbdailyprice.sbdptickerid = sbticker.sbtickerid + AND sbticker.sbtickersymbol = 'VTI' WHERE - DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(sbdailyprice.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_broker_gen2_mysql.sql b/tests/test_sql_refsols/defog_broker_gen2_mysql.sql index b6de5b9f0..c7213060d 100644 --- a/tests/test_sql_refsols/defog_broker_gen2_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen2_mysql.sql @@ -1,6 +1,6 @@ SELECT - COUNT(sbTransaction.sbtxcustid) AS transaction_count -FROM main.sbTransaction AS sbTransaction -JOIN main.sbCustomer AS sbCustomer - ON sbCustomer.sbcustid = sbTransaction.sbtxcustid - AND sbCustomer.sbcustjoindate >= CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-70' DAY) AS DATE) + COUNT(sbtransaction.sbtxcustid) AS transaction_count +FROM main.sbtransaction AS sbtransaction +JOIN main.sbcustomer AS sbcustomer + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + AND sbcustomer.sbcustjoindate >= CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-70' DAY) AS DATE) diff --git a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql index f42cf1b23..e2117c631 100644 --- a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql @@ -1,6 +1,6 @@ SELECT - COUNT(SBTRANSACTION.sbtxcustid) AS transaction_count -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('DAY', DATEADD(DAY, -70, CURRENT_TIMESTAMP())) + COUNT(sbtransaction.sbtxcustid) AS transaction_count +FROM main.sbtransaction AS sbtransaction +JOIN main.sbcustomer AS sbcustomer + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + AND sbcustomer.sbcustjoindate >= DATE_TRUNC('DAY', DATEADD(DAY, -70, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_broker_gen3_mysql.sql b/tests/test_sql_refsols/defog_broker_gen3_mysql.sql index 3711b91d6..cd81bfe81 100644 --- a/tests/test_sql_refsols/defog_broker_gen3_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen3_mysql.sql @@ -1,14 +1,14 @@ WITH _s1 AS ( SELECT - MIN(sbtxdatetime) AS min_sbTxDateTime, - sbtxcustid AS sbTxCustId - FROM main.sbTransaction + MIN(sbtxdatetime) AS min_sbtxdatetime, + sbtxcustid + FROM main.sbtransaction GROUP BY 2 ) SELECT - sbCustomer.sbcustid AS cust_id, - TIMESTAMPDIFF(SECOND, sbCustomer.sbcustjoindate, _s1.min_sbTxDateTime) / 86400.0 AS DaysFromJoinToFirstTransaction -FROM main.sbCustomer AS sbCustomer + sbcustomer.sbcustid AS cust_id, + TIMESTAMPDIFF(SECOND, sbcustomer.sbcustjoindate, _s1.min_sbtxdatetime) / 86400.0 AS DaysFromJoinToFirstTransaction +FROM main.sbcustomer AS sbcustomer JOIN _s1 AS _s1 - ON _s1.sbTxCustId = sbCustomer.sbcustid + ON _s1.sbtxcustid = sbcustomer.sbcustid diff --git a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql index 7a344e4ec..9a3cc7626 100644 --- a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - MIN(sbtxdatetime) AS MIN_SBTXDATETIME, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + MIN(sbtxdatetime) AS min_sbtxdatetime, + sbtxcustid + FROM main.sbtransaction GROUP BY 2 ) SELECT - SBCUSTOMER.sbcustid AS cust_id, + sbcustomer.sbcustid AS cust_id, DATEDIFF( SECOND, - CAST(SBCUSTOMER.sbcustjoindate AS DATETIME), - CAST(_S1.MIN_SBTXDATETIME AS DATETIME) + CAST(sbcustomer.sbcustjoindate AS DATETIME), + CAST(_s1.min_sbtxdatetime AS DATETIME) ) / 86400.0 AS DaysFromJoinToFirstTransaction -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID +FROM main.sbcustomer AS sbcustomer +JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid diff --git a/tests/test_sql_refsols/defog_broker_gen4_mysql.sql b/tests/test_sql_refsols/defog_broker_gen4_mysql.sql index 7212a373c..035a650b1 100644 --- a/tests/test_sql_refsols/defog_broker_gen4_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen4_mysql.sql @@ -1,8 +1,8 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - sbtxcustid AS sbTxCustId - FROM main.sbTransaction + sbtxcustid + FROM main.sbtransaction WHERE CAST(CAST(sbtxdatetime AS DATETIME) AS DATE) = CAST('2023-04-01' AS DATE) AND sbtxtype = 'sell' @@ -10,12 +10,12 @@ WITH _s1 AS ( 2 ) SELECT - sbCustomer.sbcustid AS _id, - sbCustomer.sbcustname AS name, + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name, COALESCE(_s1.n_rows, 0) AS num_tx -FROM main.sbCustomer AS sbCustomer +FROM main.sbcustomer AS sbcustomer LEFT JOIN _s1 AS _s1 - ON _s1.sbTxCustId = sbCustomer.sbcustid + ON _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 3 DESC LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql index dcb16e69c..c534bb045 100644 --- a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql @@ -1,8 +1,8 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + sbtxcustid + FROM main.sbtransaction WHERE CAST(sbtxdatetime AS TIMESTAMP) < CAST('2023-04-02' AS DATE) AND CAST(sbtxdatetime AS TIMESTAMP) >= CAST('2023-04-01' AS DATE) @@ -11,12 +11,12 @@ WITH _S1 AS ( 2 ) SELECT - SBCUSTOMER.sbcustid AS _id, - SBCUSTOMER.sbcustname AS name, - COALESCE(_S1.N_ROWS, 0) AS num_tx -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name, + COALESCE(_s1.n_rows, 0) AS num_tx +FROM main.sbcustomer AS sbcustomer +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_gen5_mysql.sql b/tests/test_sql_refsols/defog_broker_gen5_mysql.sql index 6ea6f8d1a..411769387 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_mysql.sql @@ -4,7 +4,7 @@ SELECT '%Y %c %e' ) AS month, AVG(sbtxprice) AS avg_price -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(QUARTER FROM CAST(sbtxdatetime AS DATETIME)) = 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) = 2023 diff --git a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql index 18311845d..e0c8a99a3 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql @@ -1,11 +1,11 @@ SELECT DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month, AVG(sbtxprice) AS avg_price -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE QUARTER(CAST(sbtxdatetime AS TIMESTAMP)) = 1 - AND sbtxstatus = 'success' AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 + AND sbtxstatus = 'success' GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql index a07ccf3df..376248e57 100644 --- a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - MAX(payment_date) AS MAX_PAYMENT_DATE, - sale_id AS SALE_ID - FROM MAIN.PAYMENTS_RECEIVED + MAX(payment_date) AS max_payment_date, + sale_id + FROM main.payments_received GROUP BY 2 ) SELECT ROUND( AVG( - DATEDIFF(DAY, CAST(SALES.sale_date AS DATETIME), CAST(_S1.MAX_PAYMENT_DATE AS DATETIME)) + DATEDIFF(DAY, CAST(sales.sale_date AS DATETIME), CAST(_s1.max_payment_date AS DATETIME)) ), 2 ) AS avg_days_to_payment -FROM MAIN.SALES AS SALES -LEFT JOIN _S1 AS _S1 - ON SALES._id = _S1.SALE_ID +FROM main.sales AS sales +LEFT JOIN _s1 AS _s1 + ON _s1.sale_id = sales._id diff --git a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql index 5d3582b3f..57a27617d 100644 --- a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql @@ -1,11 +1,11 @@ SELECT ( ( - COALESCE(SUM(SALES.sale_price), 0) - COALESCE(SUM(CARS.cost), 0) - ) / COALESCE(SUM(CARS.cost), 0) + COALESCE(SUM(sales.sale_price), 0) - COALESCE(SUM(cars.cost), 0) + ) / COALESCE(SUM(cars.cost), 0) ) * 100 AS GPM -FROM MAIN.SALES AS SALES -JOIN MAIN.CARS AS CARS - ON CARS._id = SALES.car_id +FROM main.sales AS sales +JOIN main.cars AS cars + ON cars._id = sales.car_id WHERE - YEAR(CAST(SALES.sale_date AS TIMESTAMP)) = 2023 + YEAR(CAST(sales.sale_date AS TIMESTAMP)) = 2023 diff --git a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql index bd7f07392..441231c8e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql @@ -1,28 +1,28 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - ANY_VALUE(SALES.car_id) AS ANYTHING_CAR_ID, - ANY_VALUE(CARS.make) AS ANYTHING_MAKE, - ANY_VALUE(CARS.model) AS ANYTHING_MODEL, - ANY_VALUE(SALES.sale_price) AS ANYTHING_SALE_PRICE, - CARS._id AS _ID_1 - FROM MAIN.SALES AS SALES - JOIN MAIN.CARS AS CARS - ON CARS._id = SALES.car_id - JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS - ON CARS._id = INVENTORY_SNAPSHOTS.car_id - AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 - AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date + ANY_VALUE(sales.car_id) AS anything_car_id, + ANY_VALUE(cars.make) AS anything_make, + ANY_VALUE(cars.model) AS anything_model, + ANY_VALUE(sales.sale_price) AS anything_sale_price, + cars._id AS _id_1 + FROM main.sales AS sales + JOIN main.cars AS cars + ON cars._id = sales.car_id + JOIN main.inventory_snapshots AS inventory_snapshots + ON cars._id = inventory_snapshots.car_id + AND inventory_snapshots.is_in_inventory = 0 + AND inventory_snapshots.snapshot_date = sales.sale_date GROUP BY - SALES._id, + sales._id, 5 ) SELECT - ANYTHING_MAKE AS make, - ANYTHING_MODEL AS model, - ANYTHING_SALE_PRICE AS sale_price -FROM _T1 + anything_make AS make, + anything_model AS model, + anything_sale_price AS sale_price +FROM _t1 WHERE - ANYTHING_CAR_ID = _ID_1 + _id_1 = anything_car_id ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql index a785f1d56..aa0f7479e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql @@ -1,5 +1,5 @@ SELECT COUNT(*) AS TSC -FROM MAIN.SALES +FROM main.sales WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql index 006deec16..33e8ec651 100644 --- a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - AVG(sale_price) AS AVG_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + AVG(sale_price) AS avg_sale_price, + salesperson_id + FROM main.sales GROUP BY 2 ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - _S1.AVG_SALE_PRICE AS ASP -FROM MAIN.SALESPERSONS AS SALESPERSONS -LEFT JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons.first_name, + salespersons.last_name, + _s1.avg_sale_price AS ASP +FROM main.salespersons AS salespersons +LEFT JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 3 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql index f9dfe34b2..f51f3467f 100644 --- a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(sale_price) AS SUM_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + SUM(sale_price) AS sum_sale_price, + salesperson_id + FROM main.sales GROUP BY 2 ) SELECT - SALESPERSONS._id, - SALESPERSONS.first_name, - SALESPERSONS.last_name, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total -FROM MAIN.SALESPERSONS AS SALESPERSONS -LEFT JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons._id, + salespersons.first_name, + salespersons.last_name, + COALESCE(_s1.sum_sale_price, 0) AS total +FROM main.salespersons AS salespersons +LEFT JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql index 3b1358f39..28c10f073 100644 --- a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql @@ -5,24 +5,24 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(payments_received.payment_date AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP) + CAST(payments_received.payment_date AS TIMESTAMP) ) ) AS payment_week, COUNT(*) AS total_payments, COALESCE( COUNT_IF(( ( - DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + DAYOFWEEK(payments_received.payment_date) + 6 ) % 7 ) IN (5, 6)), 0 ) AS weekend_payments -FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED -JOIN MAIN.SALES AS SALES - ON PAYMENTS_RECEIVED.sale_id = SALES._id AND SALES.sale_price > 30000 +FROM main.payments_received AS payments_received +JOIN main.sales AS sales + ON payments_received.sale_id = sales._id AND sales.sale_price > 30000 WHERE DATEDIFF( WEEK, @@ -30,10 +30,10 @@ WHERE DAY, ( ( - DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + DAYOFWEEK(payments_received.payment_date) + 6 ) % 7 ) * -1, - PAYMENTS_RECEIVED.payment_date + payments_received.payment_date ) AS DATETIME), DATEADD( DAY, @@ -51,10 +51,10 @@ WHERE DAY, ( ( - DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + DAYOFWEEK(payments_received.payment_date) + 6 ) % 7 ) * -1, - PAYMENTS_RECEIVED.payment_date + payments_received.payment_date ) AS DATETIME), DATEADD( DAY, diff --git a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql index fccee1e5d..951d47afe 100644 --- a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql @@ -1,21 +1,21 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + salesperson_id + FROM main.sales WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY 2 ) SELECT - SALESPERSONS._id, - SALESPERSONS.first_name, - SALESPERSONS.last_name, - _S1.N_ROWS AS num_sales -FROM MAIN.SALESPERSONS AS SALESPERSONS -JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons._id, + salespersons.first_name, + salespersons.last_name, + _s1.n_rows AS num_sales +FROM main.salespersons AS salespersons +JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 4 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql index 0f9f5ed4c..05258a65e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql @@ -1,17 +1,17 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - car_id AS CAR_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + car_id + FROM main.sales GROUP BY 2 ) SELECT - CARS.make, - CARS.model, - COALESCE(_S1.N_ROWS, 0) AS num_sales -FROM MAIN.CARS AS CARS -LEFT JOIN _S1 AS _S1 - ON CARS._id = _S1.CAR_ID + cars.make, + cars.model, + COALESCE(_s1.n_rows, 0) AS num_sales +FROM main.cars AS cars +LEFT JOIN _s1 AS _s1 + ON _s1.car_id = cars._id WHERE - CONTAINS(LOWER(CARS.vin_number), 'm5') + CONTAINS(LOWER(cars.vin_number), 'm5') diff --git a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql index 5aeeccbf3..2d82c7314 100644 --- a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql @@ -1,25 +1,25 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sale_price) AS SUM_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + SUM(sale_price) AS sum_sale_price, + car_id + FROM main.sales WHERE sale_date >= DATEADD(DAY, -30, CURRENT_TIMESTAMP()) GROUP BY 3 ) SELECT - COALESCE(_S1.N_ROWS, 0) AS num_sales, + COALESCE(_s1.n_rows, 0) AS num_sales, CASE WHEN ( - NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS > 0 + NOT _s1.n_rows IS NULL AND _s1.n_rows > 0 ) - THEN COALESCE(_S1.SUM_SALE_PRICE, 0) + THEN COALESCE(_s1.sum_sale_price, 0) ELSE NULL END AS total_revenue -FROM MAIN.CARS AS CARS -LEFT JOIN _S1 AS _S1 - ON CARS._id = _S1.CAR_ID +FROM main.cars AS cars +LEFT JOIN _s1 AS _s1 + ON _s1.car_id = cars._id WHERE - CONTAINS(LOWER(CARS.make), 'toyota') + CONTAINS(LOWER(cars.make), 'toyota') diff --git a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql index f27054fd2..c6080293e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sale_price) AS SUM_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + SUM(sale_price) AS sum_sale_price, + salesperson_id + FROM main.sales GROUP BY 3 ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_sales, - _S1.N_ROWS AS num_sales, - RANK() OVER (ORDER BY COALESCE(_S1.SUM_SALE_PRICE, 0) DESC) AS sales_rank -FROM MAIN.SALESPERSONS AS SALESPERSONS -JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons.first_name, + salespersons.last_name, + COALESCE(_s1.sum_sale_price, 0) AS total_sales, + _s1.n_rows AS num_sales, + RANK() OVER (ORDER BY COALESCE(_s1.sum_sale_price, 0) DESC) AS sales_rank +FROM main.salespersons AS salespersons +JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 3 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql index 0d6b733bb..e9166f5be 100644 --- a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql @@ -1,26 +1,26 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - car_id AS CAR_ID - FROM MAIN.INVENTORY_SNAPSHOTS + car_id + FROM main.inventory_snapshots QUALIFY NOT is_in_inventory AND ROW_NUMBER() OVER (PARTITION BY car_id ORDER BY snapshot_date DESC) = 1 -), _S3 AS ( +), _s3 AS ( SELECT - MAX(sale_price) AS MAX_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES + MAX(sale_price) AS max_sale_price, + car_id + FROM main.sales GROUP BY 2 ) SELECT - CARS.make, - CARS.model, - _S3.MAX_SALE_PRICE AS highest_sale_price -FROM MAIN.CARS AS CARS -JOIN _T1 AS _T1 - ON CARS._id = _T1.CAR_ID -LEFT JOIN _S3 AS _S3 - ON CARS._id = _S3.CAR_ID + cars.make, + cars.model, + _s3.max_sale_price AS highest_sale_price +FROM main.cars AS cars +JOIN _t1 AS _t1 + ON _t1.car_id = cars._id +LEFT JOIN _s3 AS _s3 + ON _s3.car_id = cars._id ORDER BY 3 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql index 075f4c2c9..265fc93bd 100644 --- a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - AVG(sale_price) AS AVG_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES + AVG(sale_price) AS avg_sale_price, + car_id + FROM main.sales GROUP BY 2 ) SELECT - CARS.make, - CARS.model, - CARS.year, - CARS.color, - CARS.vin_number, - _S1.AVG_SALE_PRICE AS avg_sale_price -FROM MAIN.CARS AS CARS -LEFT JOIN _S1 AS _S1 - ON CARS._id = _S1.CAR_ID + cars.make, + cars.model, + cars.year, + cars.color, + cars.vin_number, + _s1.avg_sale_price +FROM main.cars AS cars +LEFT JOIN _s1 AS _s1 + ON _s1.car_id = cars._id WHERE - CONTAINS(LOWER(CARS.make), 'fords') OR CONTAINS(LOWER(CARS.model), 'mustang') + CONTAINS(LOWER(cars.make), 'fords') OR CONTAINS(LOWER(cars.model), 'mustang') diff --git a/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql index ffee74ac5..a581d84e5 100644 --- a/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql @@ -1,5 +1,5 @@ SELECT AVG(sale_price) AS ASP -FROM MAIN.SALES +FROM main.sales WHERE sale_date <= '2023-03-31' AND sale_date >= '2023-01-01' diff --git a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql index 8ef019134..ad6e9ed12 100644 --- a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql @@ -1,22 +1,22 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sale_price) AS SUM_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + SUM(sale_price) AS sum_sale_price, + salesperson_id + FROM main.sales WHERE sale_date >= DATEADD(MONTH, -3, CURRENT_TIMESTAMP()) GROUP BY 3 ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - COALESCE(_S1.N_ROWS, 0) AS total_sales, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue -FROM MAIN.SALESPERSONS AS SALESPERSONS -LEFT JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons.first_name, + salespersons.last_name, + COALESCE(_s1.n_rows, 0) AS total_sales, + COALESCE(_s1.sum_sale_price, 0) AS total_revenue +FROM main.salespersons AS salespersons +LEFT JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 4 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql index 672f26b06..bbd756397 100644 --- a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT car_id AS _u_1 - FROM MAIN.SALES + FROM main.sales GROUP BY 1 ) SELECT - CARS._id, - CARS.make, - CARS.model, - CARS.year -FROM MAIN.CARS AS CARS + cars._id, + cars.make, + cars.model, + cars.year +FROM main.cars AS cars LEFT JOIN _u_0 AS _u_0 - ON CARS._id = _u_0._u_1 + ON _u_0._u_1 = cars._id WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql index 8214ad5c0..16cb73183 100644 --- a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql @@ -1,14 +1,14 @@ WITH _u_0 AS ( SELECT customer_id AS _u_1 - FROM MAIN.SALES + FROM main.sales GROUP BY 1 ) SELECT - CUSTOMERS._id -FROM MAIN.CUSTOMERS AS CUSTOMERS + customers._id +FROM main.customers AS customers LEFT JOIN _u_0 AS _u_0 - ON CUSTOMERS._id = _u_0._u_1 + ON _u_0._u_1 = customers._id WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql index 7341c1804..4310aba26 100644 --- a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT - SALES.salesperson_id AS _u_1 - FROM MAIN.SALES AS SALES - JOIN MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED - ON PAYMENTS_RECEIVED.payment_method = 'cash' - AND PAYMENTS_RECEIVED.sale_id = SALES._id + sales.salesperson_id AS _u_1 + FROM main.sales AS sales + JOIN main.payments_received AS payments_received + ON payments_received.payment_method = 'cash' + AND payments_received.sale_id = sales._id GROUP BY 1 ) SELECT - SALESPERSONS._id AS salesperson_id -FROM MAIN.SALESPERSONS AS SALESPERSONS + salespersons._id AS salesperson_id +FROM main.salespersons AS salespersons LEFT JOIN _u_0 AS _u_0 - ON SALESPERSONS._id = _u_0._u_1 + ON _u_0._u_1 = salespersons._id WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql index acc3292db..8d94ed4be 100644 --- a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT salesperson_id AS _u_1 - FROM MAIN.SALES + FROM main.sales GROUP BY 1 ) SELECT - SALESPERSONS._id, - SALESPERSONS.first_name, - SALESPERSONS.last_name -FROM MAIN.SALESPERSONS AS SALESPERSONS + salespersons._id, + salespersons.first_name, + salespersons.last_name +FROM main.salespersons AS salespersons LEFT JOIN _u_0 AS _u_0 - ON SALESPERSONS._id = _u_0._u_1 + ON _u_0._u_1 = salespersons._id WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql index e148d933a..7e60facb1 100644 --- a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql @@ -1,22 +1,22 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS_1, - SUM(sale_price) AS SUM_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + COUNT(*) AS n_rows_1, + SUM(sale_price) AS sum_sale_price, + salesperson_id + FROM main.sales WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY 3 ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - _S1.N_ROWS_1 AS total_sales, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue -FROM MAIN.SALESPERSONS AS SALESPERSONS -JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons.first_name, + salespersons.last_name, + _s1.n_rows_1 AS total_sales, + COALESCE(_s1.sum_sale_price, 0) AS total_revenue +FROM main.salespersons AS salespersons +JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql index a32d0be09..e34a0bded 100644 --- a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql @@ -1,10 +1,10 @@ SELECT - CUSTOMERS.state, - COUNT(DISTINCT SALES.customer_id) AS unique_customers, - COALESCE(SUM(SALES.sale_price), 0) AS total_revenue -FROM MAIN.SALES AS SALES -JOIN MAIN.CUSTOMERS AS CUSTOMERS - ON CUSTOMERS._id = SALES.customer_id + customers.state, + COUNT(DISTINCT sales.customer_id) AS unique_customers, + COALESCE(SUM(sales.sale_price), 0) AS total_revenue +FROM main.sales AS sales +JOIN main.customers AS customers + ON customers._id = sales.customer_id GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql index 0462e8672..e906254e2 100644 --- a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql @@ -2,7 +2,7 @@ SELECT payment_method, COUNT(*) AS total_payments, COALESCE(SUM(payment_amount), 0) AS total_amount -FROM MAIN.PAYMENTS_RECEIVED +FROM main.payments_received GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql index 2dbf6c3ac..df98deb1d 100644 --- a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sale_price) AS SUM_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + SUM(sale_price) AS sum_sale_price, + car_id + FROM main.sales GROUP BY 3 ) SELECT - CARS.make, - CARS.model, - COALESCE(_S1.N_ROWS, 0) AS total_sales, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue -FROM MAIN.CARS AS CARS -LEFT JOIN _S1 AS _S1 - ON CARS._id = _S1.CAR_ID + cars.make, + cars.model, + COALESCE(_s1.n_rows, 0) AS total_sales, + COALESCE(_s1.sum_sale_price, 0) AS total_revenue +FROM main.cars AS cars +LEFT JOIN _s1 AS _s1 + ON _s1.car_id = cars._id ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql index 0ad936b14..8b2f15206 100644 --- a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql @@ -1,7 +1,7 @@ SELECT state, COUNT(*) AS total_signups -FROM MAIN.CUSTOMERS +FROM main.customers GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql index 064fa879d..0b56ff82e 100644 --- a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql @@ -3,7 +3,7 @@ SELECT last_name, phone, DATEDIFF(DAY, CAST(hire_date AS DATETIME), CAST(termination_date AS DATETIME)) * 1.0 AS days_employed -FROM MAIN.SALESPERSONS +FROM main.salespersons WHERE NOT termination_date IS NULL ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql index 34244c823..d7f5d6345 100644 --- a/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS weekend_payments -FROM MAIN.PAYMENTS_MADE +FROM main.payments_made WHERE ( ( diff --git a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql index 769b3c8a4..84fb51a65 100644 --- a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql @@ -2,7 +2,7 @@ SELECT payment_date, payment_method, COALESCE(SUM(payment_amount), 0) AS total_amount -FROM MAIN.PAYMENTS_RECEIVED +FROM main.payments_received WHERE DATEDIFF( WEEK, diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql index 83ac1134c..6825403cf 100644 --- a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -1,33 +1,33 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS QUARTER, - SUM(sale_price) AS SUM_SALE_PRICE, - customer_id AS CUSTOMER_ID - FROM MAIN.SALES + DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS quarter, + SUM(sale_price) AS sum_sale_price, + customer_id + FROM main.sales WHERE YEAR(CAST(sale_date AS TIMESTAMP)) = 2023 GROUP BY 1, 3 -), _T1 AS ( +), _t1 AS ( SELECT - SUM(_S0.SUM_SALE_PRICE) AS SUM_SUM_SALE_PRICE, - _S0.QUARTER, - CUSTOMERS.state AS STATE - FROM _S0 AS _S0 - JOIN MAIN.CUSTOMERS AS CUSTOMERS - ON CUSTOMERS._id = _S0.CUSTOMER_ID + SUM(_s0.sum_sale_price) AS sum_sum_sale_price, + _s0.quarter, + customers.state + FROM _s0 AS _s0 + JOIN main.customers AS customers + ON _s0.customer_id = customers._id GROUP BY 2, 3 ) SELECT - QUARTER AS quarter, - STATE AS customer_state, - COALESCE(SUM_SUM_SALE_PRICE, 0) AS total_sales -FROM _T1 + quarter, + state AS customer_state, + COALESCE(sum_sum_sale_price, 0) AS total_sales +FROM _t1 WHERE - NOT SUM_SUM_SALE_PRICE IS NULL AND SUM_SUM_SALE_PRICE > 0 + NOT sum_sum_sale_price IS NULL AND sum_sum_sale_price > 0 ORDER BY 1 NULLS FIRST, 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql index 067021c1d..830b28cec 100644 --- a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql @@ -1,18 +1,18 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - car_id AS CAR_ID - FROM MAIN.INVENTORY_SNAPSHOTS + car_id + FROM main.inventory_snapshots WHERE MONTH(CAST(snapshot_date AS TIMESTAMP)) = 3 AND YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 QUALIFY - is_in_inventory AND RANK() OVER (ORDER BY snapshot_date DESC) = 1 + RANK() OVER (ORDER BY snapshot_date DESC) = 1 AND is_in_inventory ) SELECT - CARS._id, - CARS.make, - CARS.model, - CARS.year -FROM _T0 AS _T0 -JOIN MAIN.CARS AS CARS - ON CARS._id = _T0.CAR_ID + cars._id, + cars.make, + cars.model, + cars.year +FROM _t0 AS _t0 +JOIN main.cars AS cars + ON _t0.car_id = cars._id diff --git a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql index 89d60f61b..273fe3fb6 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql @@ -1,16 +1,16 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - sender_id AS SENDER_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + COUNT(*) AS n_rows, + sender_id + FROM main.wallet_transactions_daily WHERE sender_type = 0 GROUP BY 2 ) SELECT - USERS.uid AS user_id, - _S1.N_ROWS AS total_transactions -FROM MAIN.USERS AS USERS -JOIN _S1 AS _S1 - ON USERS.uid = _S1.SENDER_ID + users.uid AS user_id, + _s1.n_rows AS total_transactions +FROM main.users AS users +JOIN _s1 AS _s1 + ON _s1.sender_id = users.uid diff --git a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql index 34e032cdc..e8d3f43cd 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT SUM( DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) - ) AS SUM_DURATION, - user_id AS USER_ID - FROM MAIN.USER_SESSIONS + ) AS sum_duration, + user_id + FROM main.user_sessions WHERE session_end_ts < '2023-06-08' AND session_start_ts >= '2023-06-01' GROUP BY 2 ) SELECT - USERS.uid, - COALESCE(_S1.SUM_DURATION, 0) AS total_duration -FROM MAIN.USERS AS USERS -JOIN _S1 AS _S1 - ON USERS.uid = _S1.USER_ID + users.uid, + COALESCE(_s1.sum_duration, 0) AS total_duration +FROM main.users AS users +JOIN _s1 AS _s1 + ON _s1.user_id = users.uid ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql index 93638d1ec..a874f7588 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql @@ -1,16 +1,16 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(amount) AS SUM_AMOUNT, - coupon_id AS COUPON_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + SUM(amount) AS sum_amount, + coupon_id + FROM main.wallet_transactions_daily GROUP BY 2 ) SELECT - COUPONS.cid AS coupon_id, - COALESCE(_S1.SUM_AMOUNT, 0) AS total_discount -FROM MAIN.COUPONS AS COUPONS -LEFT JOIN _S1 AS _S1 - ON COUPONS.cid = _S1.COUPON_ID + coupons.cid AS coupon_id, + COALESCE(_s1.sum_amount, 0) AS total_discount +FROM main.coupons AS coupons +LEFT JOIN _s1 AS _s1 + ON _s1.coupon_id = coupons.cid WHERE - COUPONS.merchant_id = '1' + coupons.merchant_id = '1' diff --git a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql index bf5f205c2..0ebf11a50 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS TUC -FROM MAIN.USER_SESSIONS +FROM main.user_sessions WHERE session_end_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) OR session_start_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql index c90bef4e0..3cfa5fa6f 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql @@ -1,5 +1,5 @@ SELECT COALESCE(COUNT_IF(status = 'success'), 0) / COUNT(*) AS _expr0 -FROM MAIN.WALLET_TRANSACTIONS_DAILY +FROM main.wallet_transactions_daily WHERE DATEDIFF(MONTH, CAST(created_at AS DATETIME), CURRENT_TIMESTAMP()) = 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql index b0e8d3341..d60f519f9 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql @@ -1,21 +1,21 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - COUPONS.merchant_id AS MERCHANT_ID - FROM MAIN.COUPONS AS COUPONS - JOIN MAIN.MERCHANTS AS MERCHANTS - ON COUPONS.merchant_id = MERCHANTS.mid - AND DATEDIFF(MONTH, CAST(MERCHANTS.created_at AS DATETIME), CAST(COUPONS.created_at AS DATETIME)) = 0 + COUNT(*) AS n_rows, + coupons.merchant_id + FROM main.coupons AS coupons + JOIN main.merchants AS merchants + ON DATEDIFF(MONTH, CAST(merchants.created_at AS DATETIME), CAST(coupons.created_at AS DATETIME)) = 0 + AND coupons.merchant_id = merchants.mid GROUP BY 2 ) SELECT - MERCHANTS.mid AS merchant_id, - MERCHANTS.name AS merchant_name, - COALESCE(_S3.N_ROWS, 0) AS coupons_per_merchant -FROM MAIN.MERCHANTS AS MERCHANTS -LEFT JOIN _S3 AS _S3 - ON MERCHANTS.mid = _S3.MERCHANT_ID + merchants.mid AS merchant_id, + merchants.name AS merchant_name, + COALESCE(_s3.n_rows, 0) AS coupons_per_merchant +FROM main.merchants AS merchants +LEFT JOIN _s3 AS _s3 + ON _s3.merchant_id = merchants.mid ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql index 923769829..635f567ce 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - user_id AS USER_ID - FROM MAIN.NOTIFICATIONS + COUNT(*) AS n_rows, + user_id + FROM main.notifications WHERE status = 'unread' AND type = 'promotion' GROUP BY 2 ) SELECT - USERS.username, - _S1.N_ROWS AS total_unread_notifs -FROM MAIN.USERS AS USERS -JOIN _S1 AS _S1 - ON USERS.uid = _S1.USER_ID + users.username, + _s1.n_rows AS total_unread_notifs +FROM main.users AS users +JOIN _s1 AS _s1 + ON _s1.user_id = users.uid WHERE - LOWER(USERS.country) = 'us' + LOWER(users.country) = 'us' diff --git a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql index a73f40ff2..4466e1c8c 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(DISTINCT coupon_id) AS NDISTINCT_COUPON_ID, - COUNT(DISTINCT txid) AS NDISTINCT_TXID, - receiver_id AS RECEIVER_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + COUNT(DISTINCT coupon_id) AS ndistinct_coupon_id, + COUNT(DISTINCT txid) AS ndistinct_txid, + receiver_id + FROM main.wallet_transactions_daily WHERE status = 'success' GROUP BY 3 ) SELECT - MERCHANTS.name, + merchants.name, ( - _S1.NDISTINCT_COUPON_ID * 1.0 - ) / _S1.NDISTINCT_TXID AS CPUR -FROM MAIN.MERCHANTS AS MERCHANTS -JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.RECEIVER_ID + _s1.ndistinct_coupon_id * 1.0 + ) / _s1.ndistinct_txid AS CPUR +FROM main.merchants AS merchants +JOIN _s1 AS _s1 + ON _s1.receiver_id = merchants.mid diff --git a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql index 8bff2a903..bd7a73fe3 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql @@ -5,23 +5,23 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(notifications.created_at AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(NOTIFICATIONS.created_at AS TIMESTAMP) + CAST(notifications.created_at AS TIMESTAMP) ) ) AS week, COUNT(*) AS num_notifs, COALESCE(COUNT_IF(( ( - DAYOFWEEK(NOTIFICATIONS.created_at) + 6 + DAYOFWEEK(notifications.created_at) + 6 ) % 7 ) IN (5, 6)), 0) AS weekend_notifs -FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS -JOIN MAIN.USERS AS USERS - ON NOTIFICATIONS.user_id = USERS.uid AND USERS.country IN ('US', 'CA') +FROM main.notifications AS notifications +JOIN main.users AS users + ON notifications.user_id = users.uid AND users.country IN ('US', 'CA') WHERE - NOTIFICATIONS.created_at < DATE_TRUNC( + notifications.created_at < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -33,7 +33,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND NOTIFICATIONS.created_at >= DATEADD( + AND notifications.created_at >= DATEADD( WEEK, -3, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql index 84e9f51cd..ca5865599 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql @@ -1,16 +1,16 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - merchant_id AS MERCHANT_ID - FROM MAIN.COUPONS + COUNT(*) AS n_rows, + merchant_id + FROM main.coupons GROUP BY 2 ) SELECT - MERCHANTS.name AS merchant_name, - _S1.N_ROWS AS total_coupons -FROM MAIN.MERCHANTS AS MERCHANTS -JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.MERCHANT_ID + merchants.name AS merchant_name, + _s1.n_rows AS total_coupons +FROM main.merchants AS merchants +JOIN _s1 AS _s1 + ON _s1.merchant_id = merchants.mid WHERE - CONTAINS(LOWER(MERCHANTS.category), 'retail') AND MERCHANTS.status = 'active' + CONTAINS(LOWER(merchants.category), 'retail') AND merchants.status = 'active' diff --git a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql index dc63e9c66..b6ab12c52 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql @@ -2,11 +2,11 @@ SELECT COUNT(*) AS num_transactions, CASE WHEN COUNT(*) > 0 - THEN COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) + THEN COALESCE(SUM(wallet_transactions_daily.amount), 0) ELSE NULL END AS total_amount -FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY -JOIN MAIN.USERS AS USERS - ON USERS.country = 'US' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id +FROM main.wallet_transactions_daily AS wallet_transactions_daily +JOIN main.users AS users + ON users.country = 'US' AND users.uid = wallet_transactions_daily.sender_id WHERE - DATEDIFF(DAY, CAST(WALLET_TRANSACTIONS_DAILY.created_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(wallet_transactions_daily.created_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql index 9a4fb1eaa..679a19eab 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql @@ -1,5 +1,5 @@ SELECT AVG(balance) AS AMB -FROM MAIN.WALLET_USER_BALANCE_DAILY +FROM main.wallet_user_balance_daily WHERE DATEDIFF(DAY, CAST(updated_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql index a1b7d10d1..facbf73f3 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql @@ -1,13 +1,14 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - balance AS BALANCE - FROM MAIN.WALLET_USER_BALANCE_DAILY + balance, + user_id + FROM main.wallet_user_balance_daily QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY updated_at DESC) = 1 ) SELECT - USERS.uid AS user_id, - _T0.BALANCE AS latest_balance -FROM MAIN.USERS AS USERS -JOIN _T0 AS _T0 - ON USERS.uid = USERS.uid + users.uid AS user_id, + _t0.balance AS latest_balance +FROM main.users AS users +JOIN _t0 AS _t0 + ON _t0.user_id = users.uid diff --git a/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql index 5c8ab9215..3a44a5777 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql @@ -1,14 +1,14 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - marketing_opt_in AS MARKETING_OPT_IN, - user_id AS USER_ID - FROM MAIN.USER_SETTING_SNAPSHOT + marketing_opt_in, + user_id + FROM main.user_setting_snapshot QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) = 1 ) SELECT - USERS.uid, - _T0.MARKETING_OPT_IN AS marketing_opt_in -FROM MAIN.USERS AS USERS -JOIN _T0 AS _T0 - ON USERS.uid = _T0.USER_ID + users.uid, + _t0.marketing_opt_in +FROM main.users AS users +JOIN _t0 AS _t0 + ON _t0.user_id = users.uid diff --git a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql index 041eb0000..d8a15f120 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(amount) AS SUM_AMOUNT, - receiver_id AS RECEIVER_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + SUM(amount) AS sum_amount, + receiver_id + FROM main.wallet_transactions_daily WHERE receiver_type = 1 AND status = 'success' GROUP BY 2 ) SELECT - MERCHANTS.mid AS merchants_id, - MERCHANTS.name AS merchants_name, - MERCHANTS.category, - COALESCE(_S1.SUM_AMOUNT, 0) AS total_revenue, - ROW_NUMBER() OVER (ORDER BY COALESCE(_S1.SUM_AMOUNT, 0) DESC) AS mrr -FROM MAIN.MERCHANTS AS MERCHANTS -JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.RECEIVER_ID + merchants.mid AS merchants_id, + merchants.name AS merchants_name, + merchants.category, + COALESCE(_s1.sum_amount, 0) AS total_revenue, + ROW_NUMBER() OVER (ORDER BY COALESCE(_s1.sum_amount, 0) DESC) AS mrr +FROM main.merchants AS merchants +JOIN _s1 AS _s1 + ON _s1.receiver_id = merchants.mid diff --git a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql index f2607877b..fc9507f0f 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql @@ -1,7 +1,7 @@ SELECT DATE_TRUNC('MONTH', CAST(created_at AS TIMESTAMP)) AS year_month, COUNT(DISTINCT sender_id) AS active_users -FROM MAIN.WALLET_TRANSACTIONS_DAILY +FROM main.wallet_transactions_daily WHERE created_at < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND created_at >= DATEADD(MONTH, -2, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql index eec471299..75fa0c7cb 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql @@ -1,9 +1,9 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(amount) AS SUM_AMOUNT, - receiver_id AS RECEIVER_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + COUNT(*) AS n_rows, + SUM(amount) AS sum_amount, + receiver_id + FROM main.wallet_transactions_daily WHERE created_at >= DATE_TRUNC('DAY', DATEADD(DAY, -150, CURRENT_TIMESTAMP())) AND receiver_type = 1 @@ -11,12 +11,12 @@ WITH _S1 AS ( 3 ) SELECT - MERCHANTS.name AS merchant_name, - COALESCE(_S1.N_ROWS, 0) AS total_transactions, - COALESCE(_S1.SUM_AMOUNT, 0) AS total_amount -FROM MAIN.MERCHANTS AS MERCHANTS -LEFT JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.RECEIVER_ID + merchants.name AS merchant_name, + COALESCE(_s1.n_rows, 0) AS total_transactions, + COALESCE(_s1.sum_amount, 0) AS total_amount +FROM main.merchants AS merchants +LEFT JOIN _s1 AS _s1 + ON _s1.receiver_id = merchants.mid ORDER BY 3 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql index f9fb46604..5ea6919b3 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql @@ -1,12 +1,12 @@ SELECT - DATE_TRUNC('MONTH', CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) AS month, - COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS active_users -FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY -JOIN MAIN.USERS AS USERS - ON USERS.status = 'active' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id + DATE_TRUNC('MONTH', CAST(wallet_transactions_daily.created_at AS TIMESTAMP)) AS month, + COUNT(DISTINCT wallet_transactions_daily.sender_id) AS active_users +FROM main.wallet_transactions_daily AS wallet_transactions_daily +JOIN main.users AS users + ON users.status = 'active' AND users.uid = wallet_transactions_daily.sender_id WHERE - WALLET_TRANSACTIONS_DAILY.sender_type = 0 - AND WALLET_TRANSACTIONS_DAILY.status = 'success' - AND YEAR(CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) = 2023 + YEAR(CAST(wallet_transactions_daily.created_at AS TIMESTAMP)) = 2023 + AND wallet_transactions_daily.sender_type = 0 + AND wallet_transactions_daily.status = 'success' GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql index 998fa51ee..9ca419d96 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT merchant_id AS _u_1 - FROM MAIN.COUPONS + FROM main.coupons GROUP BY 1 ) SELECT - MERCHANTS.mid AS merchant_id, - MERCHANTS.name AS merchant_name -FROM MAIN.MERCHANTS AS MERCHANTS + merchants.mid AS merchant_id, + merchants.name AS merchant_name +FROM main.merchants AS merchants LEFT JOIN _u_0 AS _u_0 - ON MERCHANTS.mid = _u_0._u_1 + ON _u_0._u_1 = merchants.mid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql index 7fe4d0718..80b4b414d 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT receiver_id AS _u_1 - FROM MAIN.WALLET_TRANSACTIONS_DAILY + FROM main.wallet_transactions_daily WHERE receiver_type = 1 GROUP BY 1 ) SELECT - MERCHANTS.mid AS merchant -FROM MAIN.MERCHANTS AS MERCHANTS + merchants.mid AS merchant +FROM main.merchants AS merchants LEFT JOIN _u_0 AS _u_0 - ON MERCHANTS.mid = _u_0._u_1 + ON _u_0._u_1 = merchants.mid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql index 432e6a920..b831e9388 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT user_id AS _u_1 - FROM MAIN.NOTIFICATIONS + FROM main.notifications WHERE type = 'transaction' GROUP BY 1 ) SELECT - USERS.uid AS user_id -FROM MAIN.USERS AS USERS + users.uid AS user_id +FROM main.users AS users LEFT JOIN _u_0 AS _u_0 - ON USERS.uid = _u_0._u_1 + ON _u_0._u_1 = users.uid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql index 294d9c309..b1a33dd01 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT user_id AS _u_1 - FROM MAIN.NOTIFICATIONS + FROM main.notifications GROUP BY 1 ) SELECT - USERS.uid, - USERS.username -FROM MAIN.USERS AS USERS + users.uid, + users.username +FROM main.users AS users LEFT JOIN _u_0 AS _u_0 - ON USERS.uid = _u_0._u_1 + ON _u_0._u_1 = users.uid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql index 36d041330..bd8925e79 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql @@ -1,7 +1,7 @@ SELECT device_type, COUNT(*) AS count -FROM MAIN.USER_SESSIONS +FROM main.user_sessions GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql index b9b49f533..2575506fa 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql @@ -1,7 +1,7 @@ SELECT status, COUNT(*) AS count -FROM MAIN.WALLET_TRANSACTIONS_DAILY +FROM main.wallet_transactions_daily GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql index 4132cad40..035c4d087 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(txid) AS COUNT_TXID, - SUM(amount) AS SUM_AMOUNT, - coupon_id AS COUPON_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + COUNT(txid) AS count_txid, + SUM(amount) AS sum_amount, + coupon_id + FROM main.wallet_transactions_daily GROUP BY 3 ) SELECT - COUPONS.code AS coupon_code, - COALESCE(_S1.COUNT_TXID, 0) AS redemption_count, - COALESCE(_S1.SUM_AMOUNT, 0) AS total_discount -FROM MAIN.COUPONS AS COUPONS -LEFT JOIN _S1 AS _S1 - ON COUPONS.cid = _S1.COUPON_ID + coupons.code AS coupon_code, + COALESCE(_s1.count_txid, 0) AS redemption_count, + COALESCE(_s1.sum_amount, 0) AS total_discount +FROM main.coupons AS coupons +LEFT JOIN _s1 AS _s1 + ON _s1.coupon_id = coupons.cid ORDER BY 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql index 559681b4e..114ba10b7 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - country AS COUNTRY, - uid AS UID - FROM MAIN.USERS + country, + uid + FROM main.users ) SELECT - _S1.COUNTRY AS country, - COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS user_count, - COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) AS total_amount -FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY -LEFT JOIN _S1 AS _S1 - ON WALLET_TRANSACTIONS_DAILY.sender_id = _S1.UID + _s1.country, + COUNT(DISTINCT wallet_transactions_daily.sender_id) AS user_count, + COALESCE(SUM(wallet_transactions_daily.amount), 0) AS total_amount +FROM main.wallet_transactions_daily AS wallet_transactions_daily +LEFT JOIN _s1 AS _s1 + ON _s1.uid = wallet_transactions_daily.sender_id WHERE - WALLET_TRANSACTIONS_DAILY.sender_type = 0 + wallet_transactions_daily.sender_type = 0 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql index 047f6ad99..fb87bcce3 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql @@ -1,9 +1,9 @@ SELECT - MEDIAN(WALLET_MERCHANT_BALANCE_DAILY.balance) AS _expr0 -FROM MAIN.WALLET_MERCHANT_BALANCE_DAILY AS WALLET_MERCHANT_BALANCE_DAILY -JOIN MAIN.MERCHANTS AS MERCHANTS - ON CONTAINS(LOWER(MERCHANTS.category), 'retail') - AND MERCHANTS.mid = WALLET_MERCHANT_BALANCE_DAILY.merchant_id - AND MERCHANTS.status = 'active' + MEDIAN(wallet_merchant_balance_daily.balance) AS _expr0 +FROM main.wallet_merchant_balance_daily AS wallet_merchant_balance_daily +JOIN main.merchants AS merchants + ON CONTAINS(LOWER(merchants.category), 'retail') + AND merchants.mid = wallet_merchant_balance_daily.merchant_id + AND merchants.status = 'active' WHERE - DATE_TRUNC('DAY', CAST(WALLET_MERCHANT_BALANCE_DAILY.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) + DATE_TRUNC('DAY', CAST(wallet_merchant_balance_daily.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) diff --git a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql index efe787625..958b2afa2 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql @@ -1,23 +1,23 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - MIN(snapshot_date) AS MIN_DATE - FROM MAIN.USER_SETTING_SNAPSHOT + MIN(snapshot_date) AS min_date + FROM main.user_setting_snapshot WHERE YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 -), _S1 AS ( +), _s1 AS ( SELECT - AVG(tx_limit_daily) AS AVG_TX_LIMIT_DAILY, - AVG(tx_limit_monthly) AS AVG_TX_LIMIT_MONTHLY, - snapshot_date AS SNAPSHOT_DATE - FROM MAIN.USER_SETTING_SNAPSHOT + AVG(tx_limit_daily) AS avg_tx_limit_daily, + AVG(tx_limit_monthly) AS avg_tx_limit_monthly, + snapshot_date + FROM main.user_setting_snapshot WHERE YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 GROUP BY 3 ) SELECT - _S1.AVG_TX_LIMIT_DAILY AS avg_daily_limit, - _S1.AVG_TX_LIMIT_MONTHLY AS avg_monthly_limit -FROM _S0 AS _S0 -LEFT JOIN _S1 AS _S1 - ON _S0.MIN_DATE = _S1.SNAPSHOT_DATE + _s1.avg_tx_limit_daily AS avg_daily_limit, + _s1.avg_tx_limit_monthly AS avg_monthly_limit +FROM _s0 AS _s0 +LEFT JOIN _s1 AS _s1 + ON _s0.min_date = _s1.snapshot_date diff --git a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql index 627792b9f..7432d05ac 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql @@ -3,6 +3,6 @@ SELECT AVG( DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) ) AS avg_session_duration_seconds -FROM MAIN.USER_SESSIONS +FROM main.user_sessions GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql index dd68d2e5c..ad361d520 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql @@ -1,35 +1,35 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - merchant_id AS MERCHANT_ID, - start_date AS START_DATE - FROM MAIN.COUPONS -), _S1 AS ( + merchant_id, + start_date + FROM main.coupons +), _s1 AS ( SELECT - MIN(START_DATE) AS MIN_START_DATE, - MERCHANT_ID - FROM _T0 + MIN(start_date) AS min_start_date, + merchant_id + FROM _t0 GROUP BY 2 -), _S3 AS ( +), _s3 AS ( SELECT - MAX(cid) AS MAX_CID, - merchant_id AS MERCHANT_ID, - start_date AS START_DATE - FROM MAIN.COUPONS + MAX(cid) AS max_cid, + merchant_id, + start_date + FROM main.coupons GROUP BY 2, 3 ) SELECT - MERCHANTS.mid AS merchants_id, - MERCHANTS.created_at AS merchant_registration_date, - _S1.MIN_START_DATE AS earliest_coupon_start_date, - _S3.MAX_CID AS earliest_coupon_id -FROM MAIN.MERCHANTS AS MERCHANTS -LEFT JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.MERCHANT_ID -LEFT JOIN _S3 AS _S3 - ON MERCHANTS.mid = _S3.MERCHANT_ID AND _S1.MIN_START_DATE = _S3.START_DATE -JOIN _T0 AS _S5 - ON MERCHANTS.mid = _S5.MERCHANT_ID - AND _S5.START_DATE <= DATEADD(YEAR, 1, CAST(MERCHANTS.created_at AS TIMESTAMP)) + merchants.mid AS merchants_id, + merchants.created_at AS merchant_registration_date, + _s1.min_start_date AS earliest_coupon_start_date, + _s3.max_cid AS earliest_coupon_id +FROM main.merchants AS merchants +LEFT JOIN _s1 AS _s1 + ON _s1.merchant_id = merchants.mid +LEFT JOIN _s3 AS _s3 + ON _s1.min_start_date = _s3.start_date AND _s3.merchant_id = merchants.mid +JOIN _t0 AS _s5 + ON _s5.merchant_id = merchants.mid + AND _s5.start_date <= DATEADD(YEAR, 1, CAST(merchants.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql index d36e88502..dbace8406 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql @@ -1,20 +1,20 @@ WITH _u_0 AS ( SELECT - NOTIFICATIONS.user_id AS _u_1 - FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS - JOIN MAIN.USERS AS USERS - ON NOTIFICATIONS.created_at <= DATEADD(YEAR, 1, CAST(USERS.created_at AS TIMESTAMP)) - AND NOTIFICATIONS.created_at >= USERS.created_at - AND NOTIFICATIONS.user_id = USERS.uid + notifications.user_id AS _u_1 + FROM main.notifications AS notifications + JOIN main.users AS users + ON notifications.created_at <= DATEADD(YEAR, 1, CAST(users.created_at AS TIMESTAMP)) + AND notifications.created_at >= users.created_at + AND notifications.user_id = users.uid GROUP BY 1 ) SELECT - USERS.username, - USERS.email, - USERS.created_at -FROM MAIN.USERS AS USERS + users.username, + users.email, + users.created_at +FROM main.users AS users LEFT JOIN _u_0 AS _u_0 - ON USERS.uid = _u_0._u_1 + ON _u_0._u_1 = users.uid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/epoch_culture_events_info_mysql.sql b/tests/test_sql_refsols/epoch_culture_events_info_mysql.sql index 06ba1fed6..fab15cb85 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_mysql.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_mysql.sql @@ -2,30 +2,30 @@ WITH _s2 AS ( SELECT ev_dt, ev_key - FROM EVENTS + FROM events ) SELECT - EVENTS.ev_name AS event_name, - ERAS.er_name AS era_name, - EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) AS event_year, - SEASONS.s_name AS season_name, - TIMES.t_name AS tod -FROM EVENTS AS EVENTS -JOIN ERAS AS ERAS - ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) - AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) + events.ev_name AS event_name, + eras.er_name AS era_name, + EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) AS event_year, + seasons.s_name AS season_name, + times.t_name AS tod +FROM events AS events +JOIN eras AS eras + ON eras.er_end_year > EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) + AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) JOIN _s2 AS _s2 - ON EVENTS.ev_key = _s2.ev_key -JOIN SEASONS AS SEASONS - ON SEASONS.s_month1 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) - OR SEASONS.s_month2 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) - OR SEASONS.s_month3 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) + ON _s2.ev_key = events.ev_key +JOIN seasons AS seasons + ON seasons.s_month1 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) + OR seasons.s_month2 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) + OR seasons.s_month3 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) JOIN _s2 AS _s6 - ON EVENTS.ev_key = _s6.ev_key -JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(_s6.ev_dt) AND TIMES.t_start_hour <= HOUR(_s6.ev_dt) + ON _s6.ev_key = events.ev_key +JOIN times AS times + ON times.t_end_hour > HOUR(_s6.ev_dt) AND times.t_start_hour <= HOUR(_s6.ev_dt) WHERE - EVENTS.ev_typ = 'culture' + events.ev_typ = 'culture' ORDER BY - EVENTS.ev_dt + events.ev_dt LIMIT 6 diff --git a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql index 37b479c66..7db29730d 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql @@ -1,32 +1,32 @@ -WITH _S2 AS ( +WITH _s2 AS ( SELECT - ev_dt AS EV_DT, - ev_key AS EV_KEY - FROM EVENTS + ev_dt, + ev_key + FROM events ) SELECT - EVENTS.ev_name AS event_name, - ERAS.er_name AS era_name, - YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) AS event_year, - SEASONS.s_name AS season_name, - TIMES.t_name AS tod -FROM EVENTS AS EVENTS -JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) - AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) -JOIN _S2 AS _S2 - ON EVENTS.ev_key = _S2.EV_KEY -JOIN SEASONS AS SEASONS - ON SEASONS.s_month1 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) - OR SEASONS.s_month2 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) - OR SEASONS.s_month3 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) -JOIN _S2 AS _S6 - ON EVENTS.ev_key = _S6.EV_KEY -JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(CAST(_S6.EV_DT AS TIMESTAMP)) - AND TIMES.t_start_hour <= HOUR(CAST(_S6.EV_DT AS TIMESTAMP)) + events.ev_name AS event_name, + eras.er_name AS era_name, + YEAR(CAST(events.ev_dt AS TIMESTAMP)) AS event_year, + seasons.s_name AS season_name, + times.t_name AS tod +FROM events AS events +JOIN eras AS eras + ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) + AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) +JOIN _s2 AS _s2 + ON _s2.ev_key = events.ev_key +JOIN seasons AS seasons + ON seasons.s_month1 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) + OR seasons.s_month2 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) + OR seasons.s_month3 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) +JOIN _s2 AS _s6 + ON _s6.ev_key = events.ev_key +JOIN times AS times + ON times.t_end_hour > HOUR(CAST(_s6.ev_dt AS TIMESTAMP)) + AND times.t_start_hour <= HOUR(CAST(_s6.ev_dt AS TIMESTAMP)) WHERE - EVENTS.ev_typ = 'culture' + events.ev_typ = 'culture' ORDER BY - EVENTS.ev_dt NULLS FIRST + events.ev_dt NULLS FIRST LIMIT 6 diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_mysql.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_mysql.sql index ccf668e33..2ace28546 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_mysql.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_mysql.sql @@ -1,17 +1,17 @@ WITH _t2 AS ( SELECT DATEDIFF( - EVENTS.ev_dt, - LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name, ERAS.er_name ORDER BY CASE WHEN EVENTS.ev_dt IS NULL THEN 1 ELSE 0 END, EVENTS.ev_dt) + events.ev_dt, + LAG(events.ev_dt, 1) OVER (PARTITION BY eras.er_name, eras.er_name ORDER BY CASE WHEN events.ev_dt IS NULL THEN 1 ELSE 0 END, events.ev_dt) ) AS day_gap, - ERAS.er_end_year, - ERAS.er_name, - ERAS.er_start_year, - EVENTS.ev_dt - FROM ERAS AS ERAS - JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) - AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) + eras.er_end_year, + eras.er_name, + eras.er_start_year, + events.ev_dt + FROM eras AS eras + JOIN events AS events + ON eras.er_end_year > EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) + AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) ) SELECT er_name AS era_name, diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index da1449442..e4de3b246 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -1,27 +1,27 @@ -WITH _T2 AS ( +WITH _t2 AS ( SELECT DATEDIFF( DAY, - CAST(LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name, ERAS.er_name ORDER BY EVENTS.ev_dt) AS DATETIME), - CAST(EVENTS.ev_dt AS DATETIME) - ) AS DAY_GAP, - ERAS.er_end_year AS ER_END_YEAR, - ERAS.er_name AS ER_NAME, - ERAS.er_start_year AS ER_START_YEAR, - EVENTS.ev_dt AS EV_DT - FROM ERAS AS ERAS - JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) - AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + CAST(LAG(events.ev_dt, 1) OVER (PARTITION BY eras.er_name, eras.er_name ORDER BY events.ev_dt) AS DATETIME), + CAST(events.ev_dt AS DATETIME) + ) AS day_gap, + eras.er_end_year, + eras.er_name, + eras.er_start_year, + events.ev_dt + FROM eras AS eras + JOIN events AS events + ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) + AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) ) SELECT - ER_NAME AS era_name, - AVG(DAY_GAP) AS avg_event_gap -FROM _T2 + er_name AS era_name, + AVG(day_gap) AS avg_event_gap +FROM _t2 WHERE - ER_END_YEAR > YEAR(CAST(EV_DT AS TIMESTAMP)) - AND ER_START_YEAR <= YEAR(CAST(EV_DT AS TIMESTAMP)) + er_end_year > YEAR(CAST(ev_dt AS TIMESTAMP)) + AND er_start_year <= YEAR(CAST(ev_dt AS TIMESTAMP)) GROUP BY 1 ORDER BY - ANY_VALUE(ER_START_YEAR) NULLS FIRST + ANY_VALUE(er_start_year) NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_events_per_season_mysql.sql b/tests/test_sql_refsols/epoch_events_per_season_mysql.sql index fb6587435..a2aaab7c9 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_mysql.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_mysql.sql @@ -1,11 +1,11 @@ SELECT - SEASONS.s_name COLLATE utf8mb4_bin AS season_name, + seasons.s_name COLLATE utf8mb4_bin AS season_name, COUNT(*) AS n_events -FROM SEASONS AS SEASONS -JOIN EVENTS AS EVENTS - ON SEASONS.s_month1 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) - OR SEASONS.s_month2 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) - OR SEASONS.s_month3 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) +FROM seasons AS seasons +JOIN events AS events + ON seasons.s_month1 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) + OR seasons.s_month2 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) + OR seasons.s_month3 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql index 65ed9d6f2..f3744ccc7 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -1,11 +1,11 @@ SELECT - SEASONS.s_name AS season_name, + seasons.s_name AS season_name, COUNT(*) AS n_events -FROM SEASONS AS SEASONS -JOIN EVENTS AS EVENTS - ON SEASONS.s_month1 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) - OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) - OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) +FROM seasons AS seasons +JOIN events AS events + ON seasons.s_month1 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + OR seasons.s_month2 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + OR seasons.s_month3 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_mysql.sql b/tests/test_sql_refsols/epoch_first_event_per_era_mysql.sql index b9ab2bbb5..a9bce845d 100644 --- a/tests/test_sql_refsols/epoch_first_event_per_era_mysql.sql +++ b/tests/test_sql_refsols/epoch_first_event_per_era_mysql.sql @@ -1,13 +1,13 @@ WITH _t AS ( SELECT - ERAS.er_name, - ERAS.er_start_year, - EVENTS.ev_name, - ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY CASE WHEN EVENTS.ev_dt IS NULL THEN 1 ELSE 0 END, EVENTS.ev_dt) AS _w - FROM ERAS AS ERAS - JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) - AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) + eras.er_name, + eras.er_start_year, + events.ev_name, + ROW_NUMBER() OVER (PARTITION BY eras.er_name ORDER BY CASE WHEN events.ev_dt IS NULL THEN 1 ELSE 0 END, events.ev_dt) AS _w + FROM eras AS eras + JOIN events AS events + ON eras.er_end_year > EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) + AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) ) SELECT er_name AS era_name, diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql index 155d48459..c313bfd21 100644 --- a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql @@ -1,18 +1,18 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - ERAS.er_name AS ER_NAME, - ERAS.er_start_year AS ER_START_YEAR, - EVENTS.ev_name AS EV_NAME - FROM ERAS AS ERAS - JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) - AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + eras.er_name, + eras.er_start_year, + events.ev_name + FROM eras AS eras + JOIN events AS events + ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) + AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) QUALIFY - ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) = 1 + ROW_NUMBER() OVER (PARTITION BY eras.er_name ORDER BY events.ev_dt) = 1 ) SELECT - ER_NAME AS era_name, - EV_NAME AS event_name -FROM _T1 + er_name AS era_name, + ev_name AS event_name +FROM _t1 ORDER BY - ER_START_YEAR NULLS FIRST + er_start_year NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_mysql.sql b/tests/test_sql_refsols/epoch_intra_season_searches_mysql.sql index e8a88149c..9901748b1 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_mysql.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_mysql.sql @@ -4,24 +4,24 @@ WITH _s0 AS ( s_month2, s_month3, s_name - FROM SEASONS + FROM seasons ), _s5 AS ( SELECT ev_dt, ev_name - FROM EVENTS + FROM events ), _s9 AS ( SELECT COUNT(*) AS n_rows, _s2.s_name, - SEARCHES.search_id + searches.search_id FROM _s0 AS _s2 - JOIN SEARCHES AS SEARCHES - ON _s2.s_month1 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) - OR _s2.s_month2 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) - OR _s2.s_month3 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + JOIN searches AS searches + ON _s2.s_month1 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + OR _s2.s_month2 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + OR _s2.s_month3 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) JOIN _s5 AS _s5 - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(_s5.ev_name), '%') + ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(_s5.ev_name), '%') JOIN _s0 AS _s7 ON _s2.s_name = _s7.s_name AND ( @@ -40,12 +40,12 @@ WITH _s0 AS ( )) AS sum_is_intra_season, _s0.s_name FROM _s0 AS _s0 - JOIN SEARCHES AS SEARCHES - ON _s0.s_month1 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) - OR _s0.s_month2 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) - OR _s0.s_month3 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + JOIN searches AS searches + ON _s0.s_month1 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + OR _s0.s_month2 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + OR _s0.s_month3 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) LEFT JOIN _s9 AS _s9 - ON SEARCHES.search_id = _s9.search_id AND _s0.s_name = _s9.s_name + ON _s0.s_name = _s9.s_name AND _s9.search_id = searches.search_id GROUP BY 3 ), _s17 AS ( @@ -58,12 +58,12 @@ WITH _s0 AS ( ON _s10.s_month1 = EXTRACT(MONTH FROM CAST(_s11.ev_dt AS DATETIME)) OR _s10.s_month2 = EXTRACT(MONTH FROM CAST(_s11.ev_dt AS DATETIME)) OR _s10.s_month3 = EXTRACT(MONTH FROM CAST(_s11.ev_dt AS DATETIME)) - JOIN SEARCHES AS SEARCHES - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(_s11.ev_name), '%') + JOIN searches AS searches + ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(_s11.ev_name), '%') JOIN _s0 AS _s15 - ON _s15.s_month1 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) - OR _s15.s_month2 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) - OR _s15.s_month3 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + ON _s15.s_month1 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + OR _s15.s_month2 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + OR _s15.s_month3 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) GROUP BY 3 ) diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index e6ae52b96..1ddb4623b 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -1,82 +1,82 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - s_month1 AS S_MONTH1, - s_month2 AS S_MONTH2, - s_month3 AS S_MONTH3, - s_name AS S_NAME - FROM SEASONS -), _S5 AS ( + s_month1, + s_month2, + s_month3, + s_name + FROM seasons +), _s5 AS ( SELECT - ev_dt AS EV_DT, - ev_name AS EV_NAME - FROM EVENTS -), _S9 AS ( + ev_dt, + ev_name + FROM events +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - _S2.S_NAME, - SEARCHES.search_id AS SEARCH_ID - FROM _S0 AS _S2 - JOIN SEARCHES AS SEARCHES - ON _S2.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S2.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S2.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - JOIN _S5 AS _S5 - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S5.EV_NAME)) - JOIN _S0 AS _S7 - ON _S2.S_NAME = _S7.S_NAME + COUNT(*) AS n_rows, + _s2.s_name, + searches.search_id + FROM _s0 AS _s2 + JOIN searches AS searches + ON _s2.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s2.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s2.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + JOIN _s5 AS _s5 + ON CONTAINS(LOWER(searches.search_string), LOWER(_s5.ev_name)) + JOIN _s0 AS _s7 + ON _s2.s_name = _s7.s_name AND ( - _S7.S_MONTH1 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) - OR _S7.S_MONTH2 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) - OR _S7.S_MONTH3 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) + _s7.s_month1 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) + OR _s7.s_month2 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) + OR _s7.s_month3 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) ) GROUP BY 2, 3 -), _S16 AS ( +), _s16 AS ( SELECT - COUNT(*) AS N_ROWS, + COUNT(*) AS n_rows, COUNT_IF(( - NOT _S9.N_ROWS IS NULL AND _S9.N_ROWS > 0 - )) AS SUM_IS_INTRA_SEASON, - _S0.S_NAME - FROM _S0 AS _S0 - JOIN SEARCHES AS SEARCHES - ON _S0.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S0.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S0.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - LEFT JOIN _S9 AS _S9 - ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.S_NAME = _S9.S_NAME + NOT _s9.n_rows IS NULL AND _s9.n_rows > 0 + )) AS sum_is_intra_season, + _s0.s_name + FROM _s0 AS _s0 + JOIN searches AS searches + ON _s0.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s0.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s0.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + LEFT JOIN _s9 AS _s9 + ON _s0.s_name = _s9.s_name AND _s9.search_id = searches.search_id GROUP BY 3 -), _S17 AS ( +), _s17 AS ( SELECT - COUNT(*) AS N_ROWS, - COUNT_IF(_S15.S_NAME = _S10.S_NAME) AS SUM_IS_INTRA_SEASON, - _S10.S_NAME - FROM _S0 AS _S10 - JOIN _S5 AS _S11 - ON _S10.S_MONTH1 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) - OR _S10.S_MONTH2 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) - OR _S10.S_MONTH3 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) - JOIN SEARCHES AS SEARCHES - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S11.EV_NAME)) - JOIN _S0 AS _S15 - ON _S15.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S15.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S15.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + COUNT(*) AS n_rows, + COUNT_IF(_s15.s_name = _s10.s_name) AS sum_is_intra_season, + _s10.s_name + FROM _s0 AS _s10 + JOIN _s5 AS _s11 + ON _s10.s_month1 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) + OR _s10.s_month2 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) + OR _s10.s_month3 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) + JOIN searches AS searches + ON CONTAINS(LOWER(searches.search_string), LOWER(_s11.ev_name)) + JOIN _s0 AS _s15 + ON _s15.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s15.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s15.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) GROUP BY 3 ) SELECT - _S16.S_NAME AS season_name, + _s16.s_name AS season_name, ROUND(( - 100.0 * COALESCE(_S16.SUM_IS_INTRA_SEASON, 0) - ) / _S16.N_ROWS, 2) AS pct_season_searches, + 100.0 * COALESCE(_s16.sum_is_intra_season, 0) + ) / _s16.n_rows, 2) AS pct_season_searches, ROUND(( - 100.0 * COALESCE(_S17.SUM_IS_INTRA_SEASON, 0) - ) / COALESCE(_S17.N_ROWS, 0), 2) AS pct_event_searches -FROM _S16 AS _S16 -LEFT JOIN _S17 AS _S17 - ON _S16.S_NAME = _S17.S_NAME + 100.0 * COALESCE(_s17.sum_is_intra_season, 0) + ) / COALESCE(_s17.n_rows, 0), 2) AS pct_event_searches +FROM _s16 AS _s16 +LEFT JOIN _s17 AS _s17 + ON _s16.s_name = _s17.s_name ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_mysql.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_mysql.sql index 6b682dc33..283696a20 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_mysql.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_mysql.sql @@ -1,12 +1,12 @@ WITH _t2 AS ( SELECT COUNT(*) AS n_searches, - SEARCHES.search_engine, - TIMES.t_name - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) - AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) + searches.search_engine, + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(searches.search_ts) + AND times.t_start_hour <= HOUR(searches.search_ts) GROUP BY 2, 3 diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql index 7e70f42ff..cabbb3e36 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql @@ -1,22 +1,22 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - COUNT(*) AS N_SEARCHES, - SEARCHES.search_engine AS SEARCH_ENGINE, - TIMES.t_name AS T_NAME - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) - AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + COUNT(*) AS n_searches, + searches.search_engine, + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) + AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) GROUP BY 2, 3 QUALIFY - ROW_NUMBER() OVER (PARTITION BY TIMES.t_name ORDER BY COUNT(*) DESC, SEARCHES.search_engine) = 1 + ROW_NUMBER() OVER (PARTITION BY times.t_name ORDER BY COUNT(*) DESC, searches.search_engine) = 1 ) SELECT - T_NAME AS tod, - SEARCH_ENGINE AS search_engine, - N_SEARCHES AS n_searches -FROM _T1 + t_name AS tod, + search_engine, + n_searches +FROM _t1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_mysql.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_mysql.sql index 857c90fe3..97631c55a 100644 --- a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_mysql.sql +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_mysql.sql @@ -1,13 +1,13 @@ WITH _t1 AS ( SELECT - COUNT(DISTINCT SEARCHES.search_id) AS n_searches, - EVENTS.ev_typ, - USERS.user_region - FROM EVENTS AS EVENTS - JOIN SEARCHES AS SEARCHES - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') - JOIN USERS AS USERS - ON SEARCHES.search_user_id = USERS.user_id + COUNT(DISTINCT searches.search_id) AS n_searches, + events.ev_typ, + users.user_region + FROM events AS events + JOIN searches AS searches + ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') + JOIN users AS users + ON searches.search_user_id = users.user_id GROUP BY 2, 3 diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql index 803dccc7f..1f7517326 100644 --- a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql @@ -1,21 +1,21 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - COUNT(DISTINCT SEARCHES.search_id) AS N_SEARCHES, - EVENTS.ev_typ AS EV_TYP, - USERS.user_region AS USER_REGION - FROM EVENTS AS EVENTS - JOIN SEARCHES AS SEARCHES - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) - JOIN USERS AS USERS - ON SEARCHES.search_user_id = USERS.user_id + COUNT(DISTINCT searches.search_id) AS n_searches, + events.ev_typ, + users.user_region + FROM events AS events + JOIN searches AS searches + ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) + JOIN users AS users + ON searches.search_user_id = users.user_id GROUP BY 2, 3 QUALIFY - ROW_NUMBER() OVER (PARTITION BY USERS.user_region ORDER BY COUNT(DISTINCT SEARCHES.search_id) DESC) = 1 + ROW_NUMBER() OVER (PARTITION BY users.user_region ORDER BY COUNT(DISTINCT searches.search_id) DESC) = 1 ) SELECT - USER_REGION AS region, - EV_TYP AS event_type, - N_SEARCHES AS n_searches -FROM _T0 + user_region AS region, + ev_typ AS event_type, + n_searches +FROM _t0 diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_mysql.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_mysql.sql index efc1d7023..96e96ea50 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_mysql.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_mysql.sql @@ -2,25 +2,25 @@ WITH _s0 AS ( SELECT ev_dt, ev_key - FROM EVENTS + FROM events ), _u_0 AS ( SELECT _s2.ev_key AS _u_1 FROM _s0 AS _s2 - JOIN ERAS AS ERAS - ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(_s2.ev_dt AS DATETIME)) - AND ERAS.er_name = 'Cold War' - AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(_s2.ev_dt AS DATETIME)) + JOIN eras AS eras + ON eras.er_end_year > EXTRACT(YEAR FROM CAST(_s2.ev_dt AS DATETIME)) + AND eras.er_name = 'Cold War' + AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(_s2.ev_dt AS DATETIME)) GROUP BY 1 ) SELECT COUNT(*) AS n_events FROM _s0 AS _s0 -JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(_s0.ev_dt) - AND TIMES.t_name = 'Pre-Dawn' - AND TIMES.t_start_hour <= HOUR(_s0.ev_dt) +JOIN times AS times + ON times.t_end_hour > HOUR(_s0.ev_dt) + AND times.t_name = 'Pre-Dawn' + AND times.t_start_hour <= HOUR(_s0.ev_dt) LEFT JOIN _u_0 AS _u_0 ON _s0.ev_key = _u_0._u_1 WHERE diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql index 22cd7db4f..5e8914950 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -1,27 +1,27 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - ev_dt AS EV_DT, - ev_key AS EV_KEY - FROM EVENTS + ev_dt, + ev_key + FROM events ), _u_0 AS ( SELECT - _S2.EV_KEY AS _u_1 - FROM _S0 AS _S2 - JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) - AND ERAS.er_name = 'Cold War' - AND ERAS.er_start_year <= YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) + _s2.ev_key AS _u_1 + FROM _s0 AS _s2 + JOIN eras AS eras + ON eras.er_end_year > YEAR(CAST(_s2.ev_dt AS TIMESTAMP)) + AND eras.er_name = 'Cold War' + AND eras.er_start_year <= YEAR(CAST(_s2.ev_dt AS TIMESTAMP)) GROUP BY 1 ) SELECT COUNT(*) AS n_events -FROM _S0 AS _S0 -JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(CAST(_S0.EV_DT AS TIMESTAMP)) - AND TIMES.t_name = 'Pre-Dawn' - AND TIMES.t_start_hour <= HOUR(CAST(_S0.EV_DT AS TIMESTAMP)) +FROM _s0 AS _s0 +JOIN times AS times + ON times.t_end_hour > HOUR(CAST(_s0.ev_dt AS TIMESTAMP)) + AND times.t_name = 'Pre-Dawn' + AND times.t_start_hour <= HOUR(CAST(_s0.ev_dt AS TIMESTAMP)) LEFT JOIN _u_0 AS _u_0 - ON _S0.EV_KEY = _u_0._u_1 + ON _s0.ev_key = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_mysql.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_mysql.sql index 2174a9706..b4c3e9a5c 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_mysql.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_mysql.sql @@ -2,12 +2,12 @@ WITH _s0 AS ( SELECT user_id, user_name - FROM USERS + FROM users ), _s1 AS ( SELECT search_string, search_user_id - FROM SEARCHES + FROM searches ) SELECT ANY_VALUE(_s0.user_name) COLLATE utf8mb4_bin AS user_name, @@ -15,10 +15,10 @@ SELECT FROM _s0 AS _s0 JOIN _s1 AS _s1 ON _s0.user_id = _s1.search_user_id -JOIN EVENTS AS EVENTS - ON LOWER(_s1.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') +JOIN events AS events + ON LOWER(_s1.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') JOIN _s1 AS _s5 - ON LOWER(_s5.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + ON LOWER(_s5.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') JOIN _s0 AS _s7 ON _s0.user_name <> _s7.user_name AND _s5.search_user_id = _s7.user_id GROUP BY diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql index 5acfed6ba..760a8ee7a 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql @@ -1,28 +1,28 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - user_id AS USER_ID, - user_name AS USER_NAME - FROM USERS -), _S1 AS ( + user_id, + user_name + FROM users +), _s1 AS ( SELECT - search_string AS SEARCH_STRING, - search_user_id AS SEARCH_USER_ID - FROM SEARCHES + search_string, + search_user_id + FROM searches ) SELECT - ANY_VALUE(_S0.USER_NAME) AS user_name, - COUNT(DISTINCT _S7.USER_ID) AS n_other_users -FROM _S0 AS _S0 -JOIN _S1 AS _S1 - ON _S0.USER_ID = _S1.SEARCH_USER_ID -JOIN EVENTS AS EVENTS - ON CONTAINS(LOWER(_S1.SEARCH_STRING), LOWER(EVENTS.ev_name)) -JOIN _S1 AS _S5 - ON CONTAINS(LOWER(_S5.SEARCH_STRING), LOWER(EVENTS.ev_name)) -JOIN _S0 AS _S7 - ON _S0.USER_NAME <> _S7.USER_NAME AND _S5.SEARCH_USER_ID = _S7.USER_ID + ANY_VALUE(_s0.user_name) AS user_name, + COUNT(DISTINCT _s7.user_id) AS n_other_users +FROM _s0 AS _s0 +JOIN _s1 AS _s1 + ON _s0.user_id = _s1.search_user_id +JOIN events AS events + ON CONTAINS(LOWER(_s1.search_string), LOWER(events.ev_name)) +JOIN _s1 AS _s5 + ON CONTAINS(LOWER(_s5.search_string), LOWER(events.ev_name)) +JOIN _s0 AS _s7 + ON _s0.user_name <> _s7.user_name AND _s5.search_user_id = _s7.user_id GROUP BY - _S0.USER_ID + _s0.user_id ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_mysql.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_mysql.sql index 474801186..45172b767 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_mysql.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_mysql.sql @@ -2,23 +2,23 @@ WITH _s0 AS ( SELECT user_id, user_name - FROM USERS + FROM users ), _t2 AS ( SELECT - ANY_VALUE(SEARCHES.search_user_id) AS anything_search_user_id, + ANY_VALUE(searches.search_user_id) AS anything_search_user_id, ANY_VALUE(_s0.user_name) AS anything_user_name, _s0.user_id FROM _s0 AS _s0 - JOIN SEARCHES AS SEARCHES - ON SEARCHES.search_user_id = _s0.user_id - JOIN EVENTS AS EVENTS - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') - JOIN SEARCHES AS SEARCHES_2 - ON LOWER(SEARCHES_2.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN searches AS searches + ON _s0.user_id = searches.search_user_id + JOIN events AS events + ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') + JOIN searches AS searches_2 + ON LOWER(searches_2.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') JOIN _s0 AS _s7 - ON SEARCHES_2.search_user_id = _s7.user_id AND _s0.user_name <> _s7.user_name + ON _s0.user_name <> _s7.user_name AND _s7.user_id = searches_2.search_user_id GROUP BY - SEARCHES.search_id, + searches.search_id, 3 ) SELECT diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql index eeaeb8d4e..e6b9376d7 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -1,34 +1,34 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - user_id AS USER_ID, - user_name AS USER_NAME - FROM USERS -), _T2 AS ( + user_id, + user_name + FROM users +), _t2 AS ( SELECT - ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID, - ANY_VALUE(_S0.USER_NAME) AS ANYTHING_USER_NAME, - _S0.USER_ID - FROM _S0 AS _S0 - JOIN SEARCHES AS SEARCHES - ON SEARCHES.search_user_id = _S0.USER_ID - JOIN EVENTS AS EVENTS - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) - JOIN SEARCHES AS SEARCHES_2 - ON CONTAINS(LOWER(SEARCHES_2.search_string), LOWER(EVENTS.ev_name)) - JOIN _S0 AS _S7 - ON SEARCHES_2.search_user_id = _S7.USER_ID AND _S0.USER_NAME <> _S7.USER_NAME + ANY_VALUE(searches.search_user_id) AS anything_search_user_id, + ANY_VALUE(_s0.user_name) AS anything_user_name, + _s0.user_id + FROM _s0 AS _s0 + JOIN searches AS searches + ON _s0.user_id = searches.search_user_id + JOIN events AS events + ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) + JOIN searches AS searches_2 + ON CONTAINS(LOWER(searches_2.search_string), LOWER(events.ev_name)) + JOIN _s0 AS _s7 + ON _s0.user_name <> _s7.user_name AND _s7.user_id = searches_2.search_user_id GROUP BY - SEARCHES.search_id, + searches.search_id, 3 ) SELECT - ANY_VALUE(ANYTHING_USER_NAME) AS user_name, + ANY_VALUE(anything_user_name) AS user_name, COUNT(*) AS n_searches -FROM _T2 +FROM _t2 WHERE - ANYTHING_SEARCH_USER_ID = USER_ID + anything_search_user_id = user_id GROUP BY - USER_ID + user_id ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_mysql.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_mysql.sql index ae3ac5c3a..ff0084360 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_mysql.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_mysql.sql @@ -1,12 +1,12 @@ WITH _t0 AS ( SELECT - ANY_VALUE(TIMES.t_start_hour) AS anything_t_start_hour, + ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, COUNT(*) AS n_rows, - TIMES.t_name - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) - AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(searches.search_ts) + AND times.t_start_hour <= HOUR(searches.search_ts) GROUP BY 3 ) diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql index 0d4297b4d..aa17edcc7 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -1,20 +1,20 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, - COUNT(*) AS N_ROWS, - TIMES.t_name AS T_NAME - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) - AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, + COUNT(*) AS n_rows, + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) + AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) GROUP BY 3 ) SELECT - T_NAME AS tod, + t_name AS tod, ROUND(( - 100.0 * N_ROWS - ) / SUM(N_ROWS) OVER (), 2) AS pct_searches -FROM _T0 + 100.0 * n_rows + ) / SUM(n_rows) OVER (), 2) AS pct_searches +FROM _t0 ORDER BY - ANYTHING_T_START_HOUR NULLS FIRST + anything_t_start_hour NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_mysql.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_mysql.sql index 3ec0c5e41..e11dc7c82 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_mysql.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_mysql.sql @@ -1,13 +1,13 @@ WITH _t0 AS ( SELECT - ANY_VALUE(TIMES.t_start_hour) AS anything_t_start_hour, - AVG(SEARCHES.search_num_results) AS avg_search_num_results, + ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, + AVG(searches.search_num_results) AS avg_search_num_results, COUNT(*) AS n_rows, - TIMES.t_name - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) - AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(searches.search_ts) + AND times.t_start_hour <= HOUR(searches.search_ts) GROUP BY 4 ) diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql index ba9737406..089aac377 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -1,22 +1,22 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, - AVG(SEARCHES.search_num_results) AS AVG_SEARCH_NUM_RESULTS, - COUNT(*) AS N_ROWS, - TIMES.t_name AS T_NAME - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) - AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, + AVG(searches.search_num_results) AS avg_search_num_results, + COUNT(*) AS n_rows, + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) + AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) GROUP BY 4 ) SELECT - T_NAME AS tod, + t_name AS tod, ROUND(( - 100.0 * N_ROWS - ) / SUM(N_ROWS) OVER (), 2) AS pct_searches, - ROUND(AVG_SEARCH_NUM_RESULTS, 2) AS avg_results -FROM _T0 + 100.0 * n_rows + ) / SUM(n_rows) OVER (), 2) AS pct_searches, + ROUND(avg_search_num_results, 2) AS avg_results +FROM _t0 ORDER BY - ANYTHING_T_START_HOUR NULLS FIRST + anything_t_start_hour NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_mysql.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_mysql.sql index efe7ff8dc..8bf1f2ac7 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_mysql.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_mysql.sql @@ -1,14 +1,14 @@ SELECT - EVENTS.ev_typ COLLATE utf8mb4_bin AS event_type, + events.ev_typ COLLATE utf8mb4_bin AS event_type, COUNT(*) AS n_events -FROM EVENTS AS EVENTS -JOIN SEASONS AS SEASONS +FROM events AS events +JOIN seasons AS seasons ON ( - SEASONS.s_month1 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) - OR SEASONS.s_month2 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) - OR SEASONS.s_month3 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) + seasons.s_month1 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) + OR seasons.s_month2 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) + OR seasons.s_month3 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) ) - AND SEASONS.s_name = 'Summer' + AND seasons.s_name = 'Summer' GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql index eb48862b3..b7091de07 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql @@ -1,14 +1,14 @@ SELECT - EVENTS.ev_typ AS event_type, + events.ev_typ AS event_type, COUNT(*) AS n_events -FROM EVENTS AS EVENTS -JOIN SEASONS AS SEASONS +FROM events AS events +JOIN seasons AS seasons ON ( - SEASONS.s_month1 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) - OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) - OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + seasons.s_month1 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + OR seasons.s_month2 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + OR seasons.s_month3 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) ) - AND SEASONS.s_name = 'Summer' + AND seasons.s_name = 'Summer' GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_mysql.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_mysql.sql index cb4ad0509..189201c3b 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_mysql.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_mysql.sql @@ -1,17 +1,17 @@ WITH _s2 AS ( SELECT DISTINCT search_engine - FROM SEARCHES + FROM searches ), _s3 AS ( SELECT - COUNT(DISTINCT USERS.user_id) AS ndistinct_user_id, - SEARCHES.search_engine - FROM SEARCHES AS SEARCHES - JOIN USERS AS USERS - ON SEARCHES.search_user_id = USERS.user_id + COUNT(DISTINCT users.user_id) AS ndistinct_user_id, + searches.search_engine + FROM searches AS searches + JOIN users AS users + ON searches.search_user_id = users.user_id WHERE - EXTRACT(YEAR FROM CAST(SEARCHES.search_ts AS DATETIME)) <= 2019 - AND EXTRACT(YEAR FROM CAST(SEARCHES.search_ts AS DATETIME)) >= 2010 + EXTRACT(YEAR FROM CAST(searches.search_ts AS DATETIME)) <= 2019 + AND EXTRACT(YEAR FROM CAST(searches.search_ts AS DATETIME)) >= 2010 GROUP BY 2 ) diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql index 924c69027..030770bb5 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql @@ -1,25 +1,25 @@ -WITH _S2 AS ( +WITH _s2 AS ( SELECT DISTINCT - search_engine AS SEARCH_ENGINE - FROM SEARCHES -), _S3 AS ( + search_engine + FROM searches +), _s3 AS ( SELECT - COUNT(DISTINCT USERS.user_id) AS NDISTINCT_USER_ID, - SEARCHES.search_engine AS SEARCH_ENGINE - FROM SEARCHES AS SEARCHES - JOIN USERS AS USERS - ON SEARCHES.search_user_id = USERS.user_id + COUNT(DISTINCT users.user_id) AS ndistinct_user_id, + searches.search_engine + FROM searches AS searches + JOIN users AS users + ON searches.search_user_id = users.user_id WHERE - YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) <= 2019 - AND YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) >= 2010 + YEAR(CAST(searches.search_ts AS TIMESTAMP)) <= 2019 + AND YEAR(CAST(searches.search_ts AS TIMESTAMP)) >= 2010 GROUP BY 2 ) SELECT - _S2.SEARCH_ENGINE AS engine, - COALESCE(_S3.NDISTINCT_USER_ID, 0) AS n_users -FROM _S2 AS _S2 -LEFT JOIN _S3 AS _S3 - ON _S2.SEARCH_ENGINE = _S3.SEARCH_ENGINE + _s2.search_engine AS engine, + COALESCE(_s3.ndistinct_user_id, 0) AS n_users +FROM _s2 AS _s2 +LEFT JOIN _s3 AS _s3 + ON _s2.search_engine = _s3.search_engine ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_mysql.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_mysql.sql index da4046422..f282ee41b 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_mysql.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_mysql.sql @@ -1,15 +1,15 @@ WITH _t1 AS ( SELECT - ANY_VALUE(SEARCHES.search_user_id) AS anything_search_user_id - FROM SEARCHES AS SEARCHES - JOIN EVENTS AS EVENTS - ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') - JOIN ERAS AS ERAS - ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) - AND ERAS.er_name = 'Cold War' - AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) + ANY_VALUE(searches.search_user_id) AS anything_search_user_id + FROM searches AS searches + JOIN events AS events + ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') + JOIN eras AS eras + ON eras.er_end_year > EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) + AND eras.er_name = 'Cold War' + AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) GROUP BY - SEARCHES.search_id + searches.search_id ), _s5 AS ( SELECT COUNT(*) AS n_cold_war_searches, @@ -21,9 +21,9 @@ WITH _t1 AS ( SELECT user_name COLLATE utf8mb4_bin AS user_name, _s5.n_cold_war_searches -FROM USERS AS USERS +FROM users AS users JOIN _s5 AS _s5 - ON USERS.user_id = _s5.anything_search_user_id + ON _s5.anything_search_user_id = users.user_id ORDER BY 2 DESC, 1 diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql index 6c9e77849..244b30369 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -1,29 +1,29 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID - FROM SEARCHES AS SEARCHES - JOIN EVENTS AS EVENTS - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) - JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) - AND ERAS.er_name = 'Cold War' - AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + ANY_VALUE(searches.search_user_id) AS anything_search_user_id + FROM searches AS searches + JOIN events AS events + ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) + JOIN eras AS eras + ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) + AND eras.er_name = 'Cold War' + AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) GROUP BY - SEARCHES.search_id -), _S5 AS ( + searches.search_id +), _s5 AS ( SELECT - COUNT(*) AS N_COLD_WAR_SEARCHES, - ANYTHING_SEARCH_USER_ID - FROM _T0 + COUNT(*) AS n_cold_war_searches, + anything_search_user_id + FROM _t0 GROUP BY 2 ) SELECT - USERS.user_name, - _S5.N_COLD_WAR_SEARCHES AS n_cold_war_searches -FROM USERS AS USERS -JOIN _S5 AS _S5 - ON USERS.user_id = _S5.ANYTHING_SEARCH_USER_ID + users.user_name, + _s5.n_cold_war_searches +FROM users AS users +JOIN _s5 AS _s5 + ON _s5.anything_search_user_id = users.user_id ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/extract_colors_mysql.sql b/tests/test_sql_refsols/extract_colors_mysql.sql index cdf697d7d..21077d450 100644 --- a/tests/test_sql_refsols/extract_colors_mysql.sql +++ b/tests/test_sql_refsols/extract_colors_mysql.sql @@ -78,7 +78,7 @@ SELECT ELSE NULL END ) AS c6 -FROM tpch.PART +FROM tpch.part ORDER BY 1 LIMIT 5 diff --git a/tests/test_sql_refsols/extract_colors_snowflake.sql b/tests/test_sql_refsols/extract_colors_snowflake.sql index a78c12923..07a4abd25 100644 --- a/tests/test_sql_refsols/extract_colors_snowflake.sql +++ b/tests/test_sql_refsols/extract_colors_snowflake.sql @@ -6,7 +6,7 @@ SELECT UPPER(SPLIT_PART(p_name, ' ', 4)) AS c4, UPPER(SPLIT_PART(p_name, ' ', 5)) AS c5, UPPER(SPLIT_PART(p_name, ' ', 6)) AS c6 -FROM TPCH.PART +FROM tpch.part ORDER BY 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/floor_and_ceil_2_mysql.sql b/tests/test_sql_refsols/floor_and_ceil_2_mysql.sql index ef20f8825..2d60308c2 100644 --- a/tests/test_sql_refsols/floor_and_ceil_2_mysql.sql +++ b/tests/test_sql_refsols/floor_and_ceil_2_mysql.sql @@ -3,7 +3,7 @@ SELECT ps_partkey AS part_key, FLOOR(ps_availqty) AS complete_parts, CEIL(ps_supplycost * FLOOR(ps_availqty)) AS total_cost -FROM tpch.PARTSUPP +FROM tpch.partsupp ORDER BY 4 DESC LIMIT 10 diff --git a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql index cc39b84ab..9c0b4527b 100644 --- a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql +++ b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql @@ -3,7 +3,7 @@ SELECT ps_partkey AS part_key, FLOOR(ps_availqty) AS complete_parts, CEIL(ps_supplycost * FLOOR(ps_availqty)) AS total_cost -FROM TPCH.PARTSUPP +FROM tpch.partsupp ORDER BY 4 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/floor_and_ceil_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_snowflake.sql index fbccc9e04..38b321fcd 100644 --- a/tests/test_sql_refsols/floor_and_ceil_snowflake.sql +++ b/tests/test_sql_refsols/floor_and_ceil_snowflake.sql @@ -8,4 +8,4 @@ SELECT FLOOR(-6) AS floor_int_neg, CEIL(-6) AS ceil_int_neg FROM (VALUES - (NULL)) AS _Q_0(_COL_0) + (NULL)) AS _q_0(_col_0) diff --git a/tests/test_sql_refsols/get_part_multiple_mysql.sql b/tests/test_sql_refsols/get_part_multiple_mysql.sql index 42b197207..5496d5543 100644 --- a/tests/test_sql_refsols/get_part_multiple_mysql.sql +++ b/tests/test_sql_refsols/get_part_multiple_mysql.sql @@ -744,7 +744,7 @@ SELECT THEN SUBSTRING_INDEX(SUBSTRING_INDEX(sbcustpostalcode, '0', 1), '0', -1) ELSE NULL END AS p18 -FROM main.sbCustomer +FROM main.sbcustomer WHERE TRUNCATE(CAST(SUBSTRING(sbcustid, 2) AS FLOAT), 0) <= 4 ORDER BY diff --git a/tests/test_sql_refsols/get_part_multiple_snowflake.sql b/tests/test_sql_refsols/get_part_multiple_snowflake.sql index b1b83fa0d..e52d4abc3 100644 --- a/tests/test_sql_refsols/get_part_multiple_snowflake.sql +++ b/tests/test_sql_refsols/get_part_multiple_snowflake.sql @@ -18,7 +18,7 @@ SELECT SPLIT_PART(sbcuststate, sbcuststate, CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p16, SPLIT_PART(SPLIT_PART(sbcustphone, '-', 1), '5', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p17, SPLIT_PART(sbcustpostalcode, '0', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p18 -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE CAST(SUBSTRING(sbcustid, 2) AS BIGINT) <= 4 ORDER BY diff --git a/tests/test_sql_refsols/get_part_single_mysql.sql b/tests/test_sql_refsols/get_part_single_mysql.sql index 89d134dae..754673da0 100644 --- a/tests/test_sql_refsols/get_part_single_mysql.sql +++ b/tests/test_sql_refsols/get_part_single_mysql.sql @@ -10,6 +10,6 @@ SELECT THEN SUBSTRING_INDEX(SUBSTRING_INDEX(sbcustname, ' ', -1), ' ', 1) ELSE NULL END AS last_name -FROM main.sbCustomer +FROM main.sbcustomer WHERE sbcustname = 'Alex Rodriguez' diff --git a/tests/test_sql_refsols/get_part_single_snowflake.sql b/tests/test_sql_refsols/get_part_single_snowflake.sql index 4a85cbc15..a9694cfb1 100644 --- a/tests/test_sql_refsols/get_part_single_snowflake.sql +++ b/tests/test_sql_refsols/get_part_single_snowflake.sql @@ -1,5 +1,5 @@ SELECT SPLIT_PART(sbcustname, ' ', -1) AS last_name -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE sbcustname = 'Alex Rodriguez' diff --git a/tests/test_sql_refsols/global_acctbal_breakdown_mysql.sql b/tests/test_sql_refsols/global_acctbal_breakdown_mysql.sql index 28964d1f2..bebd765c0 100644 --- a/tests/test_sql_refsols/global_acctbal_breakdown_mysql.sql +++ b/tests/test_sql_refsols/global_acctbal_breakdown_mysql.sql @@ -40,7 +40,7 @@ WITH _t0 AS ( ELSE NULL END AS expr_7, c_acctbal - FROM tpch.CUSTOMER + FROM tpch.customer ) SELECT COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS n_red_acctbal, diff --git a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql index 9ff814a80..973d5975d 100644 --- a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql @@ -4,4 +4,4 @@ SELECT MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS median_red_acctbal, MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS median_black_acctbal, MEDIAN(c_acctbal) AS median_overall_acctbal -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/hour_minute_day_mysql.sql b/tests/test_sql_refsols/hour_minute_day_mysql.sql index 071de60fe..e6b900ec3 100644 --- a/tests/test_sql_refsols/hour_minute_day_mysql.sql +++ b/tests/test_sql_refsols/hour_minute_day_mysql.sql @@ -1,11 +1,11 @@ SELECT - sbTransaction.sbtxid COLLATE utf8mb4_bin AS transaction_id, - HOUR(sbTransaction.sbtxdatetime) AS _expr0, - MINUTE(sbTransaction.sbtxdatetime) AS _expr1, - SECOND(sbTransaction.sbtxdatetime) AS _expr2 -FROM main.sbTransaction AS sbTransaction -JOIN main.sbTicker AS sbTicker - ON sbTicker.sbtickerid = sbTransaction.sbtxtickerid - AND sbTicker.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') + sbtransaction.sbtxid COLLATE utf8mb4_bin AS transaction_id, + HOUR(sbtransaction.sbtxdatetime) AS _expr0, + MINUTE(sbtransaction.sbtxdatetime) AS _expr1, + SECOND(sbtransaction.sbtxdatetime) AS _expr2 +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') ORDER BY 1 diff --git a/tests/test_sql_refsols/hour_minute_day_snowflake.sql b/tests/test_sql_refsols/hour_minute_day_snowflake.sql index 278a2c7c3..571c2b0be 100644 --- a/tests/test_sql_refsols/hour_minute_day_snowflake.sql +++ b/tests/test_sql_refsols/hour_minute_day_snowflake.sql @@ -1,11 +1,11 @@ SELECT - SBTRANSACTION.sbtxid AS transaction_id, - HOUR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr0, - MINUTE(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr1, - SECOND(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr2 -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid - AND SBTICKER.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') + sbtransaction.sbtxid AS transaction_id, + HOUR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr0, + MINUTE(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr1, + SECOND(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr2 +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_mysql.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_mysql.sql index ab30332cc..5b394aff4 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_mysql.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_mysql.sql @@ -41,7 +41,7 @@ WITH _t2 AS ( END AS expr_7, c_acctbal, c_nationkey - FROM tpch.CUSTOMER + FROM tpch.customer ), _s3 AS ( SELECT AVG(expr_5) AS median_black_acctbal, @@ -55,16 +55,16 @@ WITH _t2 AS ( 6 ) SELECT - NATION.n_name COLLATE utf8mb4_bin AS nation_name, + nation.n_name COLLATE utf8mb4_bin AS nation_name, _s3.n_red_acctbal, _s3.n_black_acctbal, _s3.median_red_acctbal, _s3.median_black_acctbal, _s3.median_overall_acctbal -FROM tpch.NATION AS NATION -JOIN tpch.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' JOIN _s3 AS _s3 - ON NATION.n_nationkey = _s3.c_nationkey + ON _s3.c_nationkey = nation.n_nationkey ORDER BY 1 diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql index 696a66e0a..5a3587e17 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql @@ -1,26 +1,26 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_BLACK_ACCTBAL, - MEDIAN(c_acctbal) AS MEDIAN_OVERALL_ACCTBAL, - MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, - COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, - COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, - c_nationkey AS C_NATIONKEY - FROM TPCH.CUSTOMER + MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS median_black_acctbal, + MEDIAN(c_acctbal) AS median_overall_acctbal, + MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS median_red_acctbal, + COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS n_black_acctbal, + COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS n_red_acctbal, + c_nationkey + FROM tpch.customer GROUP BY 6 ) SELECT - NATION.n_name AS nation_name, - _S3.N_RED_ACCTBAL AS n_red_acctbal, - _S3.N_BLACK_ACCTBAL AS n_black_acctbal, - _S3.MEDIAN_RED_ACCTBAL AS median_red_acctbal, - _S3.MEDIAN_BLACK_ACCTBAL AS median_black_acctbal, - _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal -FROM TPCH.NATION AS NATION -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' -JOIN _S3 AS _S3 - ON NATION.n_nationkey = _S3.C_NATIONKEY + nation.n_name AS nation_name, + _s3.n_red_acctbal, + _s3.n_black_acctbal, + _s3.median_red_acctbal, + _s3.median_black_acctbal, + _s3.median_overall_acctbal +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' +JOIN _s3 AS _s3 + ON _s3.c_nationkey = nation.n_nationkey ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/numerical_functions_mysql.sql b/tests/test_sql_refsols/numerical_functions_mysql.sql index 5c032c866..d71e930de 100644 --- a/tests/test_sql_refsols/numerical_functions_mysql.sql +++ b/tests/test_sql_refsols/numerical_functions_mysql.sql @@ -8,4 +8,4 @@ SELECT CASE WHEN c_acctbal = 0 THEN 0 ELSE CASE WHEN c_acctbal < 0 THEN -1 ELSE 1 END END AS sign_value, LEAST(c_acctbal, 0) AS smallest_value, GREATEST(c_acctbal, 0) AS largest_value -FROM tpch.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/numerical_functions_snowflake.sql b/tests/test_sql_refsols/numerical_functions_snowflake.sql index b138f575b..d02e9691a 100644 --- a/tests/test_sql_refsols/numerical_functions_snowflake.sql +++ b/tests/test_sql_refsols/numerical_functions_snowflake.sql @@ -8,4 +8,4 @@ SELECT SIGN(c_acctbal) AS sign_value, LEAST(c_acctbal, 0) AS smallest_value, GREATEST(c_acctbal, 0) AS largest_value -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/part_cross_part_a_mysql.sql b/tests/test_sql_refsols/part_cross_part_a_mysql.sql index e9c18cf97..3d1d98aa3 100644 --- a/tests/test_sql_refsols/part_cross_part_a_mysql.sql +++ b/tests/test_sql_refsols/part_cross_part_a_mysql.sql @@ -1,32 +1,32 @@ WITH _s0 AS ( SELECT DISTINCT - sbtickerexchange AS sbTickerExchange - FROM main.sbTicker + sbtickerexchange + FROM main.sbticker ), _s9 AS ( SELECT COUNT(*) AS n_rows, - sbCustomer.sbcustid AS sbCustId, - _s2.sbTickerExchange + sbcustomer.sbcustid, + _s2.sbtickerexchange FROM _s0 AS _s2 - CROSS JOIN main.sbCustomer AS sbCustomer - JOIN main.sbTransaction AS sbTransaction - ON sbCustomer.sbcustid = sbTransaction.sbtxcustid - JOIN main.sbTicker AS sbTicker - ON _s2.sbTickerExchange = sbTicker.sbtickerexchange - AND sbTicker.sbtickerid = sbTransaction.sbtxtickerid + CROSS JOIN main.sbcustomer AS sbcustomer + JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + JOIN main.sbticker AS sbticker + ON _s2.sbtickerexchange = sbticker.sbtickerexchange + AND sbticker.sbtickerid = sbtransaction.sbtxtickerid GROUP BY 2, 3 ) SELECT - sbCustomer.sbcuststate COLLATE utf8mb4_bin AS state, - _s0.sbTickerExchange COLLATE utf8mb4_bin AS exchange, + sbcustomer.sbcuststate COLLATE utf8mb4_bin AS state, + _s0.sbtickerexchange COLLATE utf8mb4_bin AS exchange, COALESCE(SUM(_s9.n_rows), 0) AS n FROM _s0 AS _s0 -CROSS JOIN main.sbCustomer AS sbCustomer +CROSS JOIN main.sbcustomer AS sbcustomer LEFT JOIN _s9 AS _s9 - ON _s0.sbTickerExchange = _s9.sbTickerExchange - AND _s9.sbCustId = sbCustomer.sbcustid + ON _s0.sbtickerexchange = _s9.sbtickerexchange + AND _s9.sbcustid = sbcustomer.sbcustid GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/part_cross_part_a_snowflake.sql b/tests/test_sql_refsols/part_cross_part_a_snowflake.sql index 0505c200f..5d7c38cea 100644 --- a/tests/test_sql_refsols/part_cross_part_a_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_a_snowflake.sql @@ -1,32 +1,32 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT DISTINCT - sbtickerexchange AS SBTICKEREXCHANGE - FROM MAIN.SBTICKER -), _S9 AS ( + sbtickerexchange + FROM main.sbticker +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - SBCUSTOMER.sbcustid AS SBCUSTID, - _S2.SBTICKEREXCHANGE - FROM _S0 AS _S2 - CROSS JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerexchange = _S2.SBTICKEREXCHANGE - AND SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + COUNT(*) AS n_rows, + sbcustomer.sbcustid, + _s2.sbtickerexchange + FROM _s0 AS _s2 + CROSS JOIN main.sbcustomer AS sbcustomer + JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + JOIN main.sbticker AS sbticker + ON _s2.sbtickerexchange = sbticker.sbtickerexchange + AND sbticker.sbtickerid = sbtransaction.sbtxtickerid GROUP BY 2, 3 ) SELECT - SBCUSTOMER.sbcuststate AS state, - _S0.SBTICKEREXCHANGE AS exchange, - COALESCE(SUM(_S9.N_ROWS), 0) AS n -FROM _S0 AS _S0 -CROSS JOIN MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S9 AS _S9 - ON SBCUSTOMER.sbcustid = _S9.SBCUSTID - AND _S0.SBTICKEREXCHANGE = _S9.SBTICKEREXCHANGE + sbcustomer.sbcuststate AS state, + _s0.sbtickerexchange AS exchange, + COALESCE(SUM(_s9.n_rows), 0) AS n +FROM _s0 AS _s0 +CROSS JOIN main.sbcustomer AS sbcustomer +LEFT JOIN _s9 AS _s9 + ON _s0.sbtickerexchange = _s9.sbtickerexchange + AND _s9.sbcustid = sbcustomer.sbcustid GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/part_cross_part_b_mysql.sql b/tests/test_sql_refsols/part_cross_part_b_mysql.sql index 9200e7434..1160bd99b 100644 --- a/tests/test_sql_refsols/part_cross_part_b_mysql.sql +++ b/tests/test_sql_refsols/part_cross_part_b_mysql.sql @@ -1,24 +1,24 @@ WITH _s0 AS ( SELECT DISTINCT - sbcuststate AS sbCustState - FROM main.sbCustomer + sbcuststate + FROM main.sbcustomer ), _t2 AS ( SELECT - sbtxdatetime AS sbTxDateTime - FROM main.sbTransaction + sbtxdatetime + FROM main.sbtransaction WHERE EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) = 2023 ), _s1 AS ( SELECT DISTINCT STR_TO_DATE( - CONCAT(YEAR(CAST(sbTxDateTime AS DATETIME)), ' ', MONTH(CAST(sbTxDateTime AS DATETIME)), ' 1'), + CONCAT(YEAR(CAST(sbtxdatetime AS DATETIME)), ' ', MONTH(CAST(sbtxdatetime AS DATETIME)), ' 1'), '%Y %c %e' ) AS month FROM _t2 ), _s3 AS ( SELECT DISTINCT STR_TO_DATE( - CONCAT(YEAR(CAST(sbTxDateTime AS DATETIME)), ' ', MONTH(CAST(sbTxDateTime AS DATETIME)), ' 1'), + CONCAT(YEAR(CAST(sbtxdatetime AS DATETIME)), ' ', MONTH(CAST(sbtxdatetime AS DATETIME)), ' 1'), '%Y %c %e' ) AS month FROM _t2 @@ -26,35 +26,35 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows, _s3.month, - _s2.sbCustState + _s2.sbcuststate FROM _s0 AS _s2 CROSS JOIN _s3 AS _s3 - JOIN main.sbTransaction AS sbTransaction - ON EXTRACT(YEAR FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) = 2023 + JOIN main.sbtransaction AS sbtransaction + ON EXTRACT(YEAR FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) = 2023 AND _s3.month = STR_TO_DATE( CONCAT( - YEAR(CAST(sbTransaction.sbtxdatetime AS DATETIME)), + YEAR(CAST(sbtransaction.sbtxdatetime AS DATETIME)), ' ', - MONTH(CAST(sbTransaction.sbtxdatetime AS DATETIME)), + MONTH(CAST(sbtransaction.sbtxdatetime AS DATETIME)), ' 1' ), '%Y %c %e' ) - JOIN main.sbCustomer AS sbCustomer - ON _s2.sbCustState = sbCustomer.sbcuststate - AND sbCustomer.sbcustid = sbTransaction.sbtxcustid + JOIN main.sbcustomer AS sbcustomer + ON _s2.sbcuststate = sbcustomer.sbcuststate + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid GROUP BY 2, 3 ) SELECT - _s0.sbCustState COLLATE utf8mb4_bin AS state, + _s0.sbcuststate COLLATE utf8mb4_bin AS state, _s1.month AS month_of_year, - SUM(COALESCE(_s9.n_rows, 0)) OVER (PARTITION BY _s0.sbCustState ORDER BY _s1.month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n + SUM(COALESCE(_s9.n_rows, 0)) OVER (PARTITION BY _s0.sbcuststate ORDER BY _s1.month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n FROM _s0 AS _s0 CROSS JOIN _s1 AS _s1 LEFT JOIN _s9 AS _s9 - ON _s0.sbCustState = _s9.sbCustState AND _s1.month = _s9.month + ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month ORDER BY 1, 2 diff --git a/tests/test_sql_refsols/part_cross_part_b_snowflake.sql b/tests/test_sql_refsols/part_cross_part_b_snowflake.sql index e96e0332c..695035c21 100644 --- a/tests/test_sql_refsols/part_cross_part_b_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_b_snowflake.sql @@ -1,46 +1,46 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT DISTINCT - sbcuststate AS SBCUSTSTATE - FROM MAIN.SBCUSTOMER -), _T2 AS ( + sbcuststate + FROM main.sbcustomer +), _t2 AS ( SELECT - sbtxdatetime AS SBTXDATETIME - FROM MAIN.SBTRANSACTION + sbtxdatetime + FROM main.sbtransaction WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _S1 AS ( +), _s1 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH - FROM _T2 -), _S3 AS ( + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month + FROM _t2 +), _s3 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH - FROM _T2 -), _S9 AS ( + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month + FROM _t2 +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - _S3.MONTH, - _S2.SBCUSTSTATE - FROM _S0 AS _S2 - CROSS JOIN _S3 AS _S3 - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 - AND _S3.MONTH = DATE_TRUNC('MONTH', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) - JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND SBCUSTOMER.sbcuststate = _S2.SBCUSTSTATE + COUNT(*) AS n_rows, + _s3.month, + _s2.sbcuststate + FROM _s0 AS _s2 + CROSS JOIN _s3 AS _s3 + JOIN main.sbtransaction AS sbtransaction + ON YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 + AND _s3.month = DATE_TRUNC('MONTH', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + JOIN main.sbcustomer AS sbcustomer + ON _s2.sbcuststate = sbcustomer.sbcuststate + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid GROUP BY 2, 3 ) SELECT - _S0.SBCUSTSTATE AS state, - _S1.MONTH AS month_of_year, - SUM(COALESCE(_S9.N_ROWS, 0)) OVER (PARTITION BY _S0.SBCUSTSTATE ORDER BY _S1.MONTH ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n -FROM _S0 AS _S0 -CROSS JOIN _S1 AS _S1 -LEFT JOIN _S9 AS _S9 - ON _S0.SBCUSTSTATE = _S9.SBCUSTSTATE AND _S1.MONTH = _S9.MONTH + _s0.sbcuststate AS state, + _s1.month AS month_of_year, + SUM(COALESCE(_s9.n_rows, 0)) OVER (PARTITION BY _s0.sbcuststate ORDER BY _s1.month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n +FROM _s0 AS _s0 +CROSS JOIN _s1 AS _s1 +LEFT JOIN _s9 AS _s9 + ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month ORDER BY 1 NULLS FIRST, 2 NULLS FIRST diff --git a/tests/test_sql_refsols/part_cross_part_c_mysql.sql b/tests/test_sql_refsols/part_cross_part_c_mysql.sql index f8b06a49d..0f876d168 100644 --- a/tests/test_sql_refsols/part_cross_part_c_mysql.sql +++ b/tests/test_sql_refsols/part_cross_part_c_mysql.sql @@ -1,24 +1,24 @@ WITH _s0 AS ( SELECT DISTINCT - sbcuststate AS sbCustState - FROM main.sbCustomer + sbcuststate + FROM main.sbcustomer ), _t2 AS ( SELECT - sbtxdatetime AS sbTxDateTime - FROM main.sbTransaction + sbtxdatetime + FROM main.sbtransaction WHERE EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) = 2023 ), _s1 AS ( SELECT DISTINCT STR_TO_DATE( - CONCAT(YEAR(CAST(sbTxDateTime AS DATETIME)), ' ', MONTH(CAST(sbTxDateTime AS DATETIME)), ' 1'), + CONCAT(YEAR(CAST(sbtxdatetime AS DATETIME)), ' ', MONTH(CAST(sbtxdatetime AS DATETIME)), ' 1'), '%Y %c %e' ) AS month FROM _t2 ), _s3 AS ( SELECT DISTINCT STR_TO_DATE( - CONCAT(YEAR(CAST(sbTxDateTime AS DATETIME)), ' ', MONTH(CAST(sbTxDateTime AS DATETIME)), ' 1'), + CONCAT(YEAR(CAST(sbtxdatetime AS DATETIME)), ' ', MONTH(CAST(sbtxdatetime AS DATETIME)), ' 1'), '%Y %c %e' ) AS month FROM _t2 @@ -26,33 +26,33 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows, _s3.month, - _s2.sbCustState + _s2.sbcuststate FROM _s0 AS _s2 CROSS JOIN _s3 AS _s3 - JOIN main.sbTransaction AS sbTransaction - ON EXTRACT(YEAR FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) = 2023 + JOIN main.sbtransaction AS sbtransaction + ON EXTRACT(YEAR FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) = 2023 AND _s3.month = STR_TO_DATE( CONCAT( - YEAR(CAST(sbTransaction.sbtxdatetime AS DATETIME)), + YEAR(CAST(sbtransaction.sbtxdatetime AS DATETIME)), ' ', - MONTH(CAST(sbTransaction.sbtxdatetime AS DATETIME)), + MONTH(CAST(sbtransaction.sbtxdatetime AS DATETIME)), ' 1' ), '%Y %c %e' ) - JOIN main.sbCustomer AS sbCustomer - ON _s2.sbCustState = sbCustomer.sbcuststate - AND sbCustomer.sbcustid = sbTransaction.sbtxcustid + JOIN main.sbcustomer AS sbcustomer + ON _s2.sbcuststate = sbcustomer.sbcuststate + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid GROUP BY 2, 3 ) SELECT - _s0.sbCustState AS state, + _s0.sbcuststate AS state, MAX(COALESCE(_s9.n_rows, 0)) AS max_n FROM _s0 AS _s0 CROSS JOIN _s1 AS _s1 LEFT JOIN _s9 AS _s9 - ON _s0.sbCustState = _s9.sbCustState AND _s1.month = _s9.month + ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month GROUP BY 1 diff --git a/tests/test_sql_refsols/part_cross_part_c_snowflake.sql b/tests/test_sql_refsols/part_cross_part_c_snowflake.sql index 8df574e96..82c088a76 100644 --- a/tests/test_sql_refsols/part_cross_part_c_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_c_snowflake.sql @@ -1,44 +1,44 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT DISTINCT - sbcuststate AS SBCUSTSTATE - FROM MAIN.SBCUSTOMER -), _T2 AS ( + sbcuststate + FROM main.sbcustomer +), _t2 AS ( SELECT - sbtxdatetime AS SBTXDATETIME - FROM MAIN.SBTRANSACTION + sbtxdatetime + FROM main.sbtransaction WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _S1 AS ( +), _s1 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH - FROM _T2 -), _S3 AS ( + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month + FROM _t2 +), _s3 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH - FROM _T2 -), _S9 AS ( + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month + FROM _t2 +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - _S3.MONTH, - _S2.SBCUSTSTATE - FROM _S0 AS _S2 - CROSS JOIN _S3 AS _S3 - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 - AND _S3.MONTH = DATE_TRUNC('MONTH', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) - JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND SBCUSTOMER.sbcuststate = _S2.SBCUSTSTATE + COUNT(*) AS n_rows, + _s3.month, + _s2.sbcuststate + FROM _s0 AS _s2 + CROSS JOIN _s3 AS _s3 + JOIN main.sbtransaction AS sbtransaction + ON YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 + AND _s3.month = DATE_TRUNC('MONTH', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + JOIN main.sbcustomer AS sbcustomer + ON _s2.sbcuststate = sbcustomer.sbcuststate + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid GROUP BY 2, 3 ) SELECT - _S0.SBCUSTSTATE AS state, - MAX(COALESCE(_S9.N_ROWS, 0)) AS max_n -FROM _S0 AS _S0 -CROSS JOIN _S1 AS _S1 -LEFT JOIN _S9 AS _S9 - ON _S0.SBCUSTSTATE = _S9.SBCUSTSTATE AND _S1.MONTH = _S9.MONTH + _s0.sbcuststate AS state, + MAX(COALESCE(_s9.n_rows, 0)) AS max_n +FROM _s0 AS _s0 +CROSS JOIN _s1 AS _s1 +LEFT JOIN _s9 AS _s9 + ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month GROUP BY 1 diff --git a/tests/test_sql_refsols/quantile_test_1_mysql.sql b/tests/test_sql_refsols/quantile_test_1_mysql.sql index 015388656..a296b9612 100644 --- a/tests/test_sql_refsols/quantile_test_1_mysql.sql +++ b/tests/test_sql_refsols/quantile_test_1_mysql.sql @@ -1,14 +1,14 @@ WITH _t0 AS ( SELECT CASE - WHEN TRUNCATE(CAST(0.30000000000000004 * COUNT(ORDERS.o_totalprice) OVER () AS FLOAT), 0) < ROW_NUMBER() OVER (ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + WHEN TRUNCATE(CAST(0.30000000000000004 * COUNT(orders.o_totalprice) OVER () AS FLOAT), 0) < ROW_NUMBER() OVER (ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_1 - FROM tpch.CUSTOMER AS CUSTOMER - JOIN tpch.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 1998 + FROM tpch.customer AS customer + JOIN tpch.orders AS orders + ON EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) = 1998 + AND customer.c_custkey = orders.o_custkey ) SELECT MAX(expr_1) AS seventieth_order_price diff --git a/tests/test_sql_refsols/quantile_test_1_snowflake.sql b/tests/test_sql_refsols/quantile_test_1_snowflake.sql index f1352353d..00345f528 100644 --- a/tests/test_sql_refsols/quantile_test_1_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_1_snowflake.sql @@ -1,7 +1,7 @@ SELECT PERCENTILE_DISC(0.7) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS seventieth_order_price -FROM TPCH.CUSTOMER AS CUSTOMER -JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 + orders.o_totalprice) AS seventieth_order_price +FROM tpch.customer AS customer +JOIN tpch.orders AS orders + ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1998 + AND customer.c_custkey = orders.o_custkey diff --git a/tests/test_sql_refsols/quantile_test_2_mysql.sql b/tests/test_sql_refsols/quantile_test_2_mysql.sql index f60fdde4c..5f10e0086 100644 --- a/tests/test_sql_refsols/quantile_test_2_mysql.sql +++ b/tests/test_sql_refsols/quantile_test_2_mysql.sql @@ -3,7 +3,7 @@ WITH _s0 AS ( n_name COLLATE utf8mb4_bin AS n_name, n_nationkey, n_regionkey - FROM tpch.NATION + FROM tpch.nation ORDER BY 1 LIMIT 5 @@ -11,81 +11,81 @@ WITH _s0 AS ( SELECT CASE WHEN TRUNCATE( - CAST(0.99 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.99 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_10, CASE WHEN TRUNCATE( - CAST(0.75 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.75 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_11, CASE WHEN TRUNCATE( - CAST(0.25 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.25 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_12, CASE WHEN TRUNCATE( - CAST(0.09999999999999998 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.09999999999999998 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_13, CASE WHEN TRUNCATE( - CAST(0.010000000000000009 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.010000000000000009 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_14, CASE WHEN TRUNCATE( - CAST(0.0 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.0 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_15, CASE WHEN TRUNCATE( - CAST(0.5 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.5 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_16, CASE WHEN TRUNCATE( - CAST(1.0 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(1.0 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_17, CASE WHEN TRUNCATE( - CAST(0.9 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), + CAST(0.9 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) - THEN ORDERS.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) + THEN orders.o_totalprice ELSE NULL END AS expr_9, - CUSTOMER.c_nationkey - FROM tpch.CUSTOMER AS CUSTOMER - JOIN tpch.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 1998 + customer.c_nationkey + FROM tpch.customer AS customer + JOIN tpch.orders AS orders + ON EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) = 1998 + AND customer.c_custkey = orders.o_custkey ), _s5 AS ( SELECT MAX(expr_10) AS max_expr_10, @@ -103,7 +103,7 @@ WITH _s0 AS ( 10 ) SELECT - REGION.r_name AS region_name, + region.r_name AS region_name, _s0.n_name COLLATE utf8mb4_bin AS nation_name, _s5.max_expr_17 AS orders_min, _s5.max_expr_10 AS orders_1_percent, @@ -115,8 +115,8 @@ SELECT _s5.max_expr_14 AS orders_99_percent, _s5.max_expr_15 AS orders_max FROM _s0 AS _s0 -JOIN tpch.REGION AS REGION - ON REGION.r_regionkey = _s0.n_regionkey +JOIN tpch.region AS region + ON _s0.n_regionkey = region.r_regionkey LEFT JOIN _s5 AS _s5 ON _s0.n_nationkey = _s5.c_nationkey ORDER BY diff --git a/tests/test_sql_refsols/quantile_test_2_snowflake.sql b/tests/test_sql_refsols/quantile_test_2_snowflake.sql index 1054e1756..d0703b387 100644 --- a/tests/test_sql_refsols/quantile_test_2_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_2_snowflake.sql @@ -1,56 +1,56 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - n_name AS N_NAME, - n_nationkey AS N_NATIONKEY, - n_regionkey AS N_REGIONKEY - FROM TPCH.NATION + n_name, + n_nationkey, + n_regionkey + FROM tpch.nation ORDER BY 1 NULLS FIRST LIMIT 5 -), _S5 AS ( +), _s5 AS ( SELECT PERCENTILE_DISC(0.1) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_0, + orders.o_totalprice) AS agg_0, PERCENTILE_DISC(0.01) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_1, + orders.o_totalprice) AS agg_1, PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_2, + orders.o_totalprice) AS agg_2, PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_3, + orders.o_totalprice) AS agg_3, PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_4, + orders.o_totalprice) AS agg_4, PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_5, + orders.o_totalprice) AS agg_5, PERCENTILE_DISC(1.0) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_6, + orders.o_totalprice) AS agg_6, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_7, + orders.o_totalprice) AS agg_7, PERCENTILE_DISC(0.0) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_8, - CUSTOMER.c_nationkey AS C_NATIONKEY - FROM TPCH.CUSTOMER AS CUSTOMER - JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 + orders.o_totalprice) AS agg_8, + customer.c_nationkey + FROM tpch.customer AS customer + JOIN tpch.orders AS orders + ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1998 + AND customer.c_custkey = orders.o_custkey GROUP BY 10 ) SELECT - REGION.r_name AS region_name, - _S0.N_NAME AS nation_name, - _S5.AGG_8 AS orders_min, - _S5.AGG_1 AS orders_1_percent, - _S5.AGG_0 AS orders_10_percent, - _S5.AGG_2 AS orders_25_percent, - _S5.AGG_7 AS orders_median, - _S5.AGG_3 AS orders_75_percent, - _S5.AGG_4 AS orders_90_percent, - _S5.AGG_5 AS orders_99_percent, - _S5.AGG_6 AS orders_max -FROM _S0 AS _S0 -JOIN TPCH.REGION AS REGION - ON REGION.r_regionkey = _S0.N_REGIONKEY -LEFT JOIN _S5 AS _S5 - ON _S0.N_NATIONKEY = _S5.C_NATIONKEY + region.r_name AS region_name, + _s0.n_name AS nation_name, + _s5.agg_8 AS orders_min, + _s5.agg_1 AS orders_1_percent, + _s5.agg_0 AS orders_10_percent, + _s5.agg_2 AS orders_25_percent, + _s5.agg_7 AS orders_median, + _s5.agg_3 AS orders_75_percent, + _s5.agg_4 AS orders_90_percent, + _s5.agg_5 AS orders_99_percent, + _s5.agg_6 AS orders_max +FROM _s0 AS _s0 +JOIN tpch.region AS region + ON _s0.n_regionkey = region.r_regionkey +LEFT JOIN _s5 AS _s5 + ON _s0.n_nationkey = _s5.c_nationkey ORDER BY 2 NULLS FIRST diff --git a/tests/test_sql_refsols/rank_a_mysql.sql b/tests/test_sql_refsols/rank_a_mysql.sql index 9f38c9016..d9f8e3d1d 100644 --- a/tests/test_sql_refsols/rank_a_mysql.sql +++ b/tests/test_sql_refsols/rank_a_mysql.sql @@ -1,4 +1,4 @@ SELECT c_custkey AS id, ROW_NUMBER() OVER (ORDER BY CASE WHEN c_acctbal IS NULL THEN 1 ELSE 0 END DESC, c_acctbal DESC) AS rk -FROM tpch.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/rank_a_snowflake.sql b/tests/test_sql_refsols/rank_a_snowflake.sql index 9a7f14d7c..483dd35e1 100644 --- a/tests/test_sql_refsols/rank_a_snowflake.sql +++ b/tests/test_sql_refsols/rank_a_snowflake.sql @@ -1,4 +1,4 @@ SELECT c_custkey AS id, ROW_NUMBER() OVER (ORDER BY c_acctbal DESC) AS rk -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/rank_b_mysql.sql b/tests/test_sql_refsols/rank_b_mysql.sql index 33fad6085..acbb95e8f 100644 --- a/tests/test_sql_refsols/rank_b_mysql.sql +++ b/tests/test_sql_refsols/rank_b_mysql.sql @@ -1,4 +1,4 @@ SELECT o_orderkey AS order_key, RANK() OVER (ORDER BY CASE WHEN o_orderpriority COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, o_orderpriority COLLATE utf8mb4_bin) AS `rank` -FROM tpch.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/rank_b_snowflake.sql b/tests/test_sql_refsols/rank_b_snowflake.sql index b323162a0..14229140a 100644 --- a/tests/test_sql_refsols/rank_b_snowflake.sql +++ b/tests/test_sql_refsols/rank_b_snowflake.sql @@ -1,4 +1,4 @@ SELECT o_orderkey AS order_key, RANK() OVER (ORDER BY o_orderpriority) AS rank -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/rank_c_mysql.sql b/tests/test_sql_refsols/rank_c_mysql.sql index 267ba4985..c4366d33c 100644 --- a/tests/test_sql_refsols/rank_c_mysql.sql +++ b/tests/test_sql_refsols/rank_c_mysql.sql @@ -1,4 +1,4 @@ SELECT o_orderdate AS order_date, DENSE_RANK() OVER (ORDER BY CASE WHEN o_orderdate IS NULL THEN 1 ELSE 0 END, o_orderdate) AS `rank` -FROM tpch.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/rank_c_snowflake.sql b/tests/test_sql_refsols/rank_c_snowflake.sql index 8b019c54b..159e7b9ba 100644 --- a/tests/test_sql_refsols/rank_c_snowflake.sql +++ b/tests/test_sql_refsols/rank_c_snowflake.sql @@ -1,4 +1,4 @@ SELECT o_orderdate AS order_date, DENSE_RANK() OVER (ORDER BY o_orderdate) AS rank -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_mysql.sql b/tests/test_sql_refsols/region_acctbal_breakdown_mysql.sql index d07881959..6fd2dcd6a 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_mysql.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_mysql.sql @@ -3,47 +3,47 @@ WITH _t1 AS ( CASE WHEN ABS( ( - ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END DESC) - 1.0 + ROW_NUMBER() OVER (PARTITION BY nation.n_regionkey ORDER BY CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END DESC) - 1.0 ) - ( ( - COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER (PARTITION BY NATION.n_regionkey) - 1.0 + COUNT(CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END) OVER (PARTITION BY nation.n_regionkey) - 1.0 ) / 2.0 ) ) < 1.0 - THEN CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END + THEN CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END ELSE NULL END AS expr_5, CASE WHEN ABS( ( - ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal DESC) - 1.0 + ROW_NUMBER() OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal DESC) - 1.0 ) - ( ( - COUNT(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey) - 1.0 + COUNT(customer.c_acctbal) OVER (PARTITION BY nation.n_regionkey) - 1.0 ) / 2.0 ) ) < 1.0 - THEN CUSTOMER.c_acctbal + THEN customer.c_acctbal ELSE NULL END AS expr_6, CASE WHEN ABS( ( - ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END DESC) - 1.0 + ROW_NUMBER() OVER (PARTITION BY nation.n_regionkey ORDER BY CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END DESC) - 1.0 ) - ( ( - COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER (PARTITION BY NATION.n_regionkey) - 1.0 + COUNT(CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END) OVER (PARTITION BY nation.n_regionkey) - 1.0 ) / 2.0 ) ) < 1.0 - THEN CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END + THEN CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END ELSE NULL END AS expr_7, - CUSTOMER.c_acctbal, - NATION.n_regionkey - FROM tpch.NATION AS NATION - JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey + customer.c_acctbal, + nation.n_regionkey + FROM tpch.nation AS nation + JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey ), _s3 AS ( SELECT AVG(expr_5) AS median_black_acctbal, @@ -57,14 +57,14 @@ WITH _t1 AS ( 6 ) SELECT - REGION.r_name COLLATE utf8mb4_bin AS region_name, + region.r_name COLLATE utf8mb4_bin AS region_name, _s3.n_red_acctbal, _s3.n_black_acctbal, _s3.median_red_acctbal, _s3.median_black_acctbal, _s3.median_overall_acctbal -FROM tpch.REGION AS REGION +FROM tpch.region AS region JOIN _s3 AS _s3 - ON REGION.r_regionkey = _s3.n_regionkey + ON _s3.n_regionkey = region.r_regionkey ORDER BY 1 diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql index a3d6f89f5..b4ab449d5 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql @@ -1,26 +1,26 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - MEDIAN(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_BLACK_ACCTBAL, - MEDIAN(CUSTOMER.c_acctbal) AS MEDIAN_OVERALL_ACCTBAL, - MEDIAN(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, - COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, - COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, - NATION.n_regionkey AS N_REGIONKEY - FROM TPCH.NATION AS NATION - JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey + MEDIAN(CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END) AS median_black_acctbal, + MEDIAN(customer.c_acctbal) AS median_overall_acctbal, + MEDIAN(CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END) AS median_red_acctbal, + COUNT(CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END) AS n_black_acctbal, + COUNT(CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END) AS n_red_acctbal, + nation.n_regionkey + FROM tpch.nation AS nation + JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey GROUP BY 6 ) SELECT - REGION.r_name AS region_name, - _S3.N_RED_ACCTBAL AS n_red_acctbal, - _S3.N_BLACK_ACCTBAL AS n_black_acctbal, - _S3.MEDIAN_RED_ACCTBAL AS median_red_acctbal, - _S3.MEDIAN_BLACK_ACCTBAL AS median_black_acctbal, - _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal -FROM TPCH.REGION AS REGION -JOIN _S3 AS _S3 - ON REGION.r_regionkey = _S3.N_REGIONKEY + region.r_name AS region_name, + _s3.n_red_acctbal, + _s3.n_black_acctbal, + _s3.median_red_acctbal, + _s3.median_black_acctbal, + _s3.median_overall_acctbal +FROM tpch.region AS region +JOIN _s3 AS _s3 + ON _s3.n_regionkey = region.r_regionkey ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/simple_filter_mysql.sql b/tests/test_sql_refsols/simple_filter_mysql.sql index ade2244dd..b3caa6ec4 100644 --- a/tests/test_sql_refsols/simple_filter_mysql.sql +++ b/tests/test_sql_refsols/simple_filter_mysql.sql @@ -2,6 +2,6 @@ SELECT o_orderdate AS order_date, o_orderkey, o_totalprice -FROM tpch.ORDERS +FROM tpch.orders WHERE o_totalprice < 1000.0 diff --git a/tests/test_sql_refsols/simple_filter_snowflake.sql b/tests/test_sql_refsols/simple_filter_snowflake.sql index dfa0ed0dd..b3caa6ec4 100644 --- a/tests/test_sql_refsols/simple_filter_snowflake.sql +++ b/tests/test_sql_refsols/simple_filter_snowflake.sql @@ -2,6 +2,6 @@ SELECT o_orderdate AS order_date, o_orderkey, o_totalprice -FROM TPCH.ORDERS +FROM tpch.orders WHERE o_totalprice < 1000.0 diff --git a/tests/test_sql_refsols/simple_scan_mysql.sql b/tests/test_sql_refsols/simple_scan_mysql.sql index 0ba15bd3d..bf57acc21 100644 --- a/tests/test_sql_refsols/simple_scan_mysql.sql +++ b/tests/test_sql_refsols/simple_scan_mysql.sql @@ -1,3 +1,3 @@ SELECT o_orderkey AS `key` -FROM tpch.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/simple_scan_snowflake.sql b/tests/test_sql_refsols/simple_scan_snowflake.sql index e0125c3c4..4a2aac94f 100644 --- a/tests/test_sql_refsols/simple_scan_snowflake.sql +++ b/tests/test_sql_refsols/simple_scan_snowflake.sql @@ -1,3 +1,3 @@ SELECT o_orderkey AS key -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql index 2235cea26..9a77bc82b 100644 --- a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql +++ b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql @@ -26,4 +26,4 @@ SELECT GREATEST('', 'alphabet soup', 'Hello World') AS l8, GREATEST(NULL, 'alphabet soup', 'Hello World') AS l9 FROM (VALUES - (NULL)) AS _Q_0(_COL_0) + (NULL)) AS _q_0(_col_0) diff --git a/tests/test_sql_refsols/simple_var_std_mysql.sql b/tests/test_sql_refsols/simple_var_std_mysql.sql index 4e0ce2829..e35c1f144 100644 --- a/tests/test_sql_refsols/simple_var_std_mysql.sql +++ b/tests/test_sql_refsols/simple_var_std_mysql.sql @@ -51,20 +51,20 @@ WITH _s1 AS ( COUNT(s_acctbal) - 1 ) AS sample_var, s_nationkey - FROM tpch.SUPPLIER + FROM tpch.supplier GROUP BY 5 ) SELECT - NATION.n_name AS name, + nation.n_name AS name, _s1.pop_var AS var, _s1.pop_std AS std, _s1.sample_var, _s1.sample_std, _s1.pop_var, _s1.pop_std -FROM tpch.NATION AS NATION +FROM tpch.nation AS nation JOIN _s1 AS _s1 - ON NATION.n_nationkey = _s1.s_nationkey + ON _s1.s_nationkey = nation.n_nationkey WHERE - NATION.n_name IN ('ALGERIA', 'ARGENTINA') + nation.n_name IN ('ALGERIA', 'ARGENTINA') diff --git a/tests/test_sql_refsols/simple_var_std_snowflake.sql b/tests/test_sql_refsols/simple_var_std_snowflake.sql index d864bf2b5..6e8b2ccfc 100644 --- a/tests/test_sql_refsols/simple_var_std_snowflake.sql +++ b/tests/test_sql_refsols/simple_var_std_snowflake.sql @@ -1,24 +1,24 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - STDDEV_POP(s_acctbal) AS POP_STD, - VARIANCE_POP(s_acctbal) AS POP_VAR, - STDDEV(s_acctbal) AS SAMPLE_STD, - VARIANCE(s_acctbal) AS SAMPLE_VAR, - s_nationkey AS S_NATIONKEY - FROM TPCH.SUPPLIER + STDDEV_POP(s_acctbal) AS pop_std, + VARIANCE_POP(s_acctbal) AS pop_var, + STDDEV(s_acctbal) AS sample_std, + VARIANCE(s_acctbal) AS sample_var, + s_nationkey + FROM tpch.supplier GROUP BY 5 ) SELECT - NATION.n_name AS name, - _S1.POP_VAR AS var, - _S1.POP_STD AS std, - _S1.SAMPLE_VAR AS sample_var, - _S1.SAMPLE_STD AS sample_std, - _S1.POP_VAR AS pop_var, - _S1.POP_STD AS pop_std -FROM TPCH.NATION AS NATION -JOIN _S1 AS _S1 - ON NATION.n_nationkey = _S1.S_NATIONKEY + nation.n_name AS name, + _s1.pop_var AS var, + _s1.pop_std AS std, + _s1.sample_var, + _s1.sample_std, + _s1.pop_var, + _s1.pop_std +FROM tpch.nation AS nation +JOIN _s1 AS _s1 + ON _s1.s_nationkey = nation.n_nationkey WHERE - NATION.n_name IN ('ALGERIA', 'ARGENTINA') + nation.n_name IN ('ALGERIA', 'ARGENTINA') diff --git a/tests/test_sql_refsols/simplification_1_mysql.sql b/tests/test_sql_refsols/simplification_1_mysql.sql index c76b9f254..dc516015d 100644 --- a/tests/test_sql_refsols/simplification_1_mysql.sql +++ b/tests/test_sql_refsols/simplification_1_mysql.sql @@ -23,4 +23,4 @@ SELECT TRUE AS s21, TRUE AS s22, TRUE AS s23 -FROM main.sbCustomer +FROM main.sbcustomer diff --git a/tests/test_sql_refsols/simplification_1_snowflake.sql b/tests/test_sql_refsols/simplification_1_snowflake.sql index 295d976e7..9e7a4ecbe 100644 --- a/tests/test_sql_refsols/simplification_1_snowflake.sql +++ b/tests/test_sql_refsols/simplification_1_snowflake.sql @@ -23,4 +23,4 @@ SELECT TRUE AS s21, TRUE AS s22, TRUE AS s23 -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer diff --git a/tests/test_sql_refsols/simplification_2_mysql.sql b/tests/test_sql_refsols/simplification_2_mysql.sql index ae0fe6c24..963c3a426 100644 --- a/tests/test_sql_refsols/simplification_2_mysql.sql +++ b/tests/test_sql_refsols/simplification_2_mysql.sql @@ -47,4 +47,4 @@ SELECT NULL AS s45, NULL AS s46, COALESCE(MAX(sbcustname), '') LIKE '%r%' AS s47 -FROM main.sbCustomer +FROM main.sbcustomer diff --git a/tests/test_sql_refsols/simplification_2_snowflake.sql b/tests/test_sql_refsols/simplification_2_snowflake.sql index b4df6c451..963c3a426 100644 --- a/tests/test_sql_refsols/simplification_2_snowflake.sql +++ b/tests/test_sql_refsols/simplification_2_snowflake.sql @@ -47,4 +47,4 @@ SELECT NULL AS s45, NULL AS s46, COALESCE(MAX(sbcustname), '') LIKE '%r%' AS s47 -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer diff --git a/tests/test_sql_refsols/simplification_3_mysql.sql b/tests/test_sql_refsols/simplification_3_mysql.sql index 6b7bf9f07..6313ba227 100644 --- a/tests/test_sql_refsols/simplification_3_mysql.sql +++ b/tests/test_sql_refsols/simplification_3_mysql.sql @@ -22,7 +22,7 @@ WITH _t2 AS ( SUM(ABS(COALESCE(TRUNCATE(CAST(sbcustpostalcode AS FLOAT), 0), 0))) OVER (ORDER BY sbcustname COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0.1 ) AS rsum2 - FROM main.sbCustomer + FROM main.sbcustomer ), _t1 AS ( SELECT CASE diff --git a/tests/test_sql_refsols/simplification_3_snowflake.sql b/tests/test_sql_refsols/simplification_3_snowflake.sql index 422f38d7e..a1b6b5a76 100644 --- a/tests/test_sql_refsols/simplification_3_snowflake.sql +++ b/tests/test_sql_refsols/simplification_3_snowflake.sql @@ -1,28 +1,28 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - ROW_NUMBER() OVER (ORDER BY sbcustname) AS RANK, - AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS RAVG1, + ROW_NUMBER() OVER (ORDER BY sbcustname) AS rank, + AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS ravg1, COALESCE( AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 0.1 - ) AS RAVG2, - COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER () AS RCNT1, + ) AS ravg2, + COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER () AS rcnt1, COALESCE( COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0.1 - ) AS RCNT2, - COUNT(*) OVER () AS RSIZ1, + ) AS rcnt2, + COUNT(*) OVER () AS rsiz1, COALESCE( COUNT(*) OVER (ORDER BY sbcustname ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING), 0.1 - ) AS RSIZ2, - SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS RSUM1, + ) AS rsiz2, + SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS rsum1, COALESCE( SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0.1 - ) AS RSUM2, - sbcustpostalcode AS SBCUSTPOSTALCODE - FROM MAIN.SBCUSTOMER + ) AS rsum2, + sbcustpostalcode + FROM main.sbcustomer ) SELECT TRUE AS s00, @@ -51,16 +51,16 @@ SELECT FALSE AS s23, TRUE AS s24, PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY - ABS(CAST(SBCUSTPOSTALCODE AS BIGINT))) AS s25, - MEDIAN(ABS(CAST(SBCUSTPOSTALCODE AS BIGINT))) AS s26, - MIN(RANK) AS s27, - MAX(RANK) AS s28, - ANY_VALUE(RSUM1) AS s29, - ROUND(SUM(RSUM2), 2) AS s30, - ANY_VALUE(RAVG1) AS s31, - ROUND(SUM(RAVG2), 2) AS s32, - ANY_VALUE(RCNT1) AS s33, - ROUND(SUM(RCNT2), 2) AS s34, - ANY_VALUE(RSIZ1) AS s35, - ROUND(SUM(RSIZ2), 2) AS s36 -FROM _T1 + ABS(CAST(sbcustpostalcode AS BIGINT))) AS s25, + MEDIAN(ABS(CAST(sbcustpostalcode AS BIGINT))) AS s26, + MIN(rank) AS s27, + MAX(rank) AS s28, + ANY_VALUE(rsum1) AS s29, + ROUND(SUM(rsum2), 2) AS s30, + ANY_VALUE(ravg1) AS s31, + ROUND(SUM(ravg2), 2) AS s32, + ANY_VALUE(rcnt1) AS s33, + ROUND(SUM(rcnt2), 2) AS s34, + ANY_VALUE(rsiz1) AS s35, + ROUND(SUM(rsiz2), 2) AS s36 +FROM _t1 diff --git a/tests/test_sql_refsols/smoke_a_mysql.sql b/tests/test_sql_refsols/smoke_a_mysql.sql index 85723adcf..da1137e3f 100644 --- a/tests/test_sql_refsols/smoke_a_mysql.sql +++ b/tests/test_sql_refsols/smoke_a_mysql.sql @@ -74,7 +74,7 @@ SELECT ) / 100.0 ) AS h, ROUND(POWER(GREATEST(p_size, 10), 0.5), 3) AS i -FROM tpch.PART +FROM tpch.part ORDER BY 1 LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_a_snowflake.sql b/tests/test_sql_refsols/smoke_a_snowflake.sql index 0eaf982f4..9a0ae9ce2 100644 --- a/tests/test_sql_refsols/smoke_a_snowflake.sql +++ b/tests/test_sql_refsols/smoke_a_snowflake.sql @@ -39,13 +39,19 @@ SELECT RPAD(CAST(p_size AS TEXT), 3, '0') AS e, REPLACE(p_mfgr, 'Manufacturer#', 'm') AS f, REPLACE(LOWER(p_container), ' ', '') AS g, - REGEXP_COUNT(p_name, 'o') + ( + CASE + WHEN LENGTH('o') = 0 + THEN 0 + ELSE CAST(( + LENGTH(p_name) - LENGTH(REPLACE(p_name, 'o', '')) + ) / LENGTH('o') AS BIGINT) + END + ( ( CHARINDEX('o', p_name) - 1 ) / 100.0 ) AS h, ROUND(POWER(GREATEST(p_size, 10), 0.5), 3) AS i -FROM TPCH.PART +FROM tpch.part ORDER BY 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_b_mysql.sql b/tests/test_sql_refsols/smoke_b_mysql.sql index 5b4b461a1..3156d546a 100644 --- a/tests/test_sql_refsols/smoke_b_mysql.sql +++ b/tests/test_sql_refsols/smoke_b_mysql.sql @@ -97,7 +97,7 @@ SELECT ) % 7 ) DAY ) AS DATE) AS q -FROM tpch.ORDERS +FROM tpch.orders WHERE o_clerk LIKE '%5' AND o_comment LIKE '%fo%' AND o_orderpriority LIKE '3%' ORDER BY diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql index 33ca38803..0e8b04f07 100644 --- a/tests/test_sql_refsols/smoke_b_snowflake.sql +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -62,7 +62,7 @@ SELECT 'DAY', DATEADD(DAY, DAYOFWEEK(CAST(o_orderdate AS TIMESTAMP)) * -1, CAST(o_orderdate AS TIMESTAMP)) ) AS q -FROM TPCH.ORDERS +FROM tpch.orders WHERE CONTAINS(o_comment, 'fo') AND ENDSWITH(o_clerk, '5') diff --git a/tests/test_sql_refsols/smoke_c_mysql.sql b/tests/test_sql_refsols/smoke_c_mysql.sql index 3a9921c68..0a4e5d4b4 100644 --- a/tests/test_sql_refsols/smoke_c_mysql.sql +++ b/tests/test_sql_refsols/smoke_c_mysql.sql @@ -21,7 +21,7 @@ WITH _t1 AS ( c_acctbal, c_mktsegment, c_name - FROM tpch.CUSTOMER + FROM tpch.customer ) SELECT COUNT(*) AS a, diff --git a/tests/test_sql_refsols/smoke_c_snowflake.sql b/tests/test_sql_refsols/smoke_c_snowflake.sql index c80e86cfe..4bcbbcc4d 100644 --- a/tests/test_sql_refsols/smoke_c_snowflake.sql +++ b/tests/test_sql_refsols/smoke_c_snowflake.sql @@ -18,4 +18,4 @@ SELECT PERCENTILE_DISC(0.2) WITHIN GROUP (ORDER BY c_acctbal) AS q, MEDIAN(c_acctbal) AS r -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/smoke_d_mysql.sql b/tests/test_sql_refsols/smoke_d_mysql.sql index 9d87a783e..a5c6638ff 100644 --- a/tests/test_sql_refsols/smoke_d_mysql.sql +++ b/tests/test_sql_refsols/smoke_d_mysql.sql @@ -1,29 +1,29 @@ SELECT - CUSTOMER.c_custkey AS `key`, - ROW_NUMBER() OVER (ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal, CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS a, - ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal, CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS b, - RANK() OVER (ORDER BY CASE WHEN CUSTOMER.c_mktsegment COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_mktsegment COLLATE utf8mb4_bin) AS c, - DENSE_RANK() OVER (ORDER BY CASE WHEN CUSTOMER.c_mktsegment COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_mktsegment COLLATE utf8mb4_bin) AS d, - NTILE(100) OVER (ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal, CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS e, - NTILE(12) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal, CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS f, - LAG(CUSTOMER.c_custkey, 1) OVER (ORDER BY CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS g, - LAG(CUSTOMER.c_custkey, 2, -1) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS h, - LEAD(CUSTOMER.c_custkey, 1) OVER (ORDER BY CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS i, - LEAD(CUSTOMER.c_custkey, 6000) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS j, - SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) AS k, - SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, - ROUND(AVG(CUSTOMER.c_acctbal) OVER (), 2) AS m, + customer.c_custkey AS `key`, + ROW_NUMBER() OVER (ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal, CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS a, + ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal, CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS b, + RANK() OVER (ORDER BY CASE WHEN customer.c_mktsegment COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, customer.c_mktsegment COLLATE utf8mb4_bin) AS c, + DENSE_RANK() OVER (ORDER BY CASE WHEN customer.c_mktsegment COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, customer.c_mktsegment COLLATE utf8mb4_bin) AS d, + NTILE(100) OVER (ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal, CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS e, + NTILE(12) OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal, CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS f, + LAG(customer.c_custkey, 1) OVER (ORDER BY CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS g, + LAG(customer.c_custkey, 2, -1) OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS h, + LEAD(customer.c_custkey, 1) OVER (ORDER BY CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS i, + LEAD(customer.c_custkey, 6000) OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS j, + SUM(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) AS k, + SUM(customer.c_acctbal) OVER (ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, + ROUND(AVG(customer.c_acctbal) OVER (), 2) AS m, ROUND( - AVG(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), + AVG(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 2 ) AS n, - COUNT(CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS o, + COUNT(CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END) OVER () AS o, COUNT(*) OVER () AS p -FROM tpch.NATION AS NATION -JOIN tpch.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' -JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey ORDER BY 1 LIMIT 10 diff --git a/tests/test_sql_refsols/smoke_d_snowflake.sql b/tests/test_sql_refsols/smoke_d_snowflake.sql index 3c14fdd8e..fe9dfe411 100644 --- a/tests/test_sql_refsols/smoke_d_snowflake.sql +++ b/tests/test_sql_refsols/smoke_d_snowflake.sql @@ -1,29 +1,29 @@ SELECT - CUSTOMER.c_custkey AS key, - ROW_NUMBER() OVER (ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS a, - ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS b, - RANK() OVER (ORDER BY CUSTOMER.c_mktsegment) AS c, - DENSE_RANK() OVER (ORDER BY CUSTOMER.c_mktsegment) AS d, - NTILE(100) OVER (ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS e, - NTILE(12) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS f, - LAG(CUSTOMER.c_custkey, 1) OVER (ORDER BY CUSTOMER.c_custkey) AS g, - LAG(CUSTOMER.c_custkey, 2, -1) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey) AS h, - LEAD(CUSTOMER.c_custkey, 1) OVER (ORDER BY CUSTOMER.c_custkey) AS i, - LEAD(CUSTOMER.c_custkey, 6000) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey) AS j, - SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) AS k, - SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, - ROUND(AVG(CUSTOMER.c_acctbal) OVER (), 2) AS m, + customer.c_custkey AS key, + ROW_NUMBER() OVER (ORDER BY customer.c_acctbal, customer.c_custkey) AS a, + ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal, customer.c_custkey) AS b, + RANK() OVER (ORDER BY customer.c_mktsegment) AS c, + DENSE_RANK() OVER (ORDER BY customer.c_mktsegment) AS d, + NTILE(100) OVER (ORDER BY customer.c_acctbal, customer.c_custkey) AS e, + NTILE(12) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal, customer.c_custkey) AS f, + LAG(customer.c_custkey, 1) OVER (ORDER BY customer.c_custkey) AS g, + LAG(customer.c_custkey, 2, -1) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey) AS h, + LEAD(customer.c_custkey, 1) OVER (ORDER BY customer.c_custkey) AS i, + LEAD(customer.c_custkey, 6000) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey) AS j, + SUM(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) AS k, + SUM(customer.c_acctbal) OVER (ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, + ROUND(AVG(customer.c_acctbal) OVER (), 2) AS m, ROUND( - AVG(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), + AVG(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 2 ) AS n, - COUNT(CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS o, + COUNT(CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END) OVER () AS o, COUNT(*) OVER () AS p -FROM TPCH.NATION AS NATION -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey ORDER BY 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_mysql.sql index 64a3df88c..ea67de38f 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 1 ) % 7 ) + 1 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql index 7c055025b..b7abadaab 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 2 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_mysql.sql index 9a8fca38f..559605368 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 1 ) % 7 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql index c3878ac5d..18d65f3ec 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 2 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_mysql.sql index b97773516..2302545b0 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 5 ) % 7 ) + 1 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql index ed2d77fe4..2507f64b0 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 6 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_mysql.sql index a0dfce5e1..b510ab219 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 5 ) % 7 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql index 087eca477..9cc943050 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 6 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_mysql.sql index cba89f20c..51397046f 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 0 ) % 7 ) + 1 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql index 75693c067..cb89fecc5 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 1 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_mysql.sql index 0856e6eec..bba17aad8 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 0 ) % 7 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql index 096676be4..e05df5b6c 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 1 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_mysql.sql index 9296b026b..bc77c9052 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + -1 ) % 7 ) + 1 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql index 301b5bde4..3cf42e00b 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql @@ -25,7 +25,7 @@ SELECT THEN 'Saturday' END AS dayname, DAYOFWEEK(sbtxdatetime) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_mysql.sql index d343e744d..6720885bd 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + -1 ) % 7 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql index 70a72d914..cfd9286a4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql @@ -25,7 +25,7 @@ SELECT THEN 'Saturday' END AS dayname, DAYOFWEEK(sbtxdatetime) AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_mysql.sql index 8555255b9..30f47d1f4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 2 ) % 7 ) + 1 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql index b85cc65a2..f90847533 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 3 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_mysql.sql index d01d4d91d..ac2595b65 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 2 ) % 7 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql index 9481d96f6..49bcc08ed 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 3 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_mysql.sql index 21fabdc49..a320b4e20 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 4 ) % 7 ) + 1 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql index 81db985e0..c38c8adfe 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 5 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_mysql.sql index 6740e5155..5c6829778 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 4 ) % 7 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql index f37c1cef8..288348ef7 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 5 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_mysql.sql index ba262aef8..ff91cde12 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 3 ) % 7 ) + 1 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql index 2dac3db47..1739fbb7c 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 4 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_mysql.sql index 7d854af73..a65245878 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 3 ) % 7 AS dayofweek -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql index 113a907a3..7359370e5 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 4 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/string_functions_mysql.sql b/tests/test_sql_refsols/string_functions_mysql.sql index 6a3b70cd3..0d4c60c2a 100644 --- a/tests/test_sql_refsols/string_functions_mysql.sql +++ b/tests/test_sql_refsols/string_functions_mysql.sql @@ -1,19 +1,19 @@ SELECT - LOWER(CUSTOMER.c_name) AS lowercase_name, - UPPER(CUSTOMER.c_name) AS uppercase_name, - CHAR_LENGTH(CUSTOMER.c_name) AS name_length, - CUSTOMER.c_name LIKE 'A%' AS starts_with_A, - CUSTOMER.c_name LIKE '%z' AS ends_with_z, - CUSTOMER.c_name LIKE '%sub%' AS contains_sub, - CUSTOMER.c_name LIKE '%test%' AS matches_like, - CONCAT_WS('::', CUSTOMER.c_name, NATION.n_name) AS joined_string, - LPAD(CUSTOMER.c_name, 20, '*') AS lpad_name, - RPAD(CUSTOMER.c_name, 20, '-') AS rpad_name, + LOWER(customer.c_name) AS lowercase_name, + UPPER(customer.c_name) AS uppercase_name, + CHAR_LENGTH(customer.c_name) AS name_length, + customer.c_name LIKE 'A%' AS starts_with_A, + customer.c_name LIKE '%z' AS ends_with_z, + customer.c_name LIKE '%sub%' AS contains_sub, + customer.c_name LIKE '%test%' AS matches_like, + CONCAT_WS('::', customer.c_name, nation.n_name) AS joined_string, + LPAD(customer.c_name, 20, '*') AS lpad_name, + RPAD(customer.c_name, 20, '-') AS rpad_name, CASE - WHEN CUSTOMER.c_name = '\\s' + WHEN customer.c_name = '\\s' THEN '' ELSE REGEXP_REPLACE( - CAST(CUSTOMER.c_name AS CHAR) COLLATE utf8mb4_bin, + CAST(customer.c_name AS CHAR) COLLATE utf8mb4_bin, CONCAT( '^[', REGEXP_REPLACE('\\s', '([]\\[\\^\\-])', '\\\\\\1'), @@ -25,10 +25,10 @@ SELECT ) END AS stripped, CASE - WHEN CUSTOMER.c_name = 'aeiou' + WHEN customer.c_name = 'aeiou' THEN '' ELSE REGEXP_REPLACE( - CAST(CUSTOMER.c_name AS CHAR) COLLATE utf8mb4_bin, + CAST(customer.c_name AS CHAR) COLLATE utf8mb4_bin, CONCAT( '^[', REGEXP_REPLACE('aeiou', '([]\\[\\^\\-])', '\\\\\\1'), @@ -39,16 +39,16 @@ SELECT '' ) END AS stripped_vowels, - REPLACE(CUSTOMER.c_name, 'Corp', 'Inc') AS replaced_name, - REPLACE(CUSTOMER.c_name, 'Ltd', '') AS removed_substr, + REPLACE(customer.c_name, 'Corp', 'Inc') AS replaced_name, + REPLACE(customer.c_name, 'Ltd', '') AS removed_substr, CASE WHEN CHAR_LENGTH('e') = 0 THEN 0 ELSE CAST(( - CHAR_LENGTH(CUSTOMER.c_name) - CHAR_LENGTH(REPLACE(CUSTOMER.c_name, 'e', '')) + CHAR_LENGTH(customer.c_name) - CHAR_LENGTH(REPLACE(customer.c_name, 'e', '')) ) / CHAR_LENGTH('e') AS SIGNED) END AS count_e, - LOCATE('Alex', CUSTOMER.c_name) - 1 AS idx_Alex -FROM tpch.CUSTOMER AS CUSTOMER -JOIN tpch.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + LOCATE('Alex', customer.c_name) - 1 AS idx_Alex +FROM tpch.customer AS customer +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/string_functions_snowflake.sql b/tests/test_sql_refsols/string_functions_snowflake.sql index 909e7fa3c..613e229a7 100644 --- a/tests/test_sql_refsols/string_functions_snowflake.sql +++ b/tests/test_sql_refsols/string_functions_snowflake.sql @@ -1,20 +1,26 @@ SELECT - LOWER(CUSTOMER.c_name) AS lowercase_name, - UPPER(CUSTOMER.c_name) AS uppercase_name, - LENGTH(CUSTOMER.c_name) AS name_length, - STARTSWITH(CUSTOMER.c_name, 'A') AS starts_with_A, - ENDSWITH(CUSTOMER.c_name, 'z') AS ends_with_z, - CONTAINS(CUSTOMER.c_name, 'sub') AS contains_sub, - CUSTOMER.c_name LIKE '%test%' AS matches_like, - CONCAT_WS('::', CUSTOMER.c_name, NATION.n_name) AS joined_string, - LPAD(CUSTOMER.c_name, 20, '*') AS lpad_name, - RPAD(CUSTOMER.c_name, 20, '-') AS rpad_name, - TRIM(CUSTOMER.c_name, '\n\t ') AS stripped, - TRIM(CUSTOMER.c_name, 'aeiou') AS stripped_vowels, - REPLACE(CUSTOMER.c_name, 'Corp', 'Inc') AS replaced_name, - REPLACE(CUSTOMER.c_name, 'Ltd', '') AS removed_substr, - REGEXP_COUNT(CUSTOMER.c_name, 'e') AS count_e, - CHARINDEX('Alex', CUSTOMER.c_name) - 1 AS idx_Alex -FROM TPCH.CUSTOMER AS CUSTOMER -JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + LOWER(customer.c_name) AS lowercase_name, + UPPER(customer.c_name) AS uppercase_name, + LENGTH(customer.c_name) AS name_length, + STARTSWITH(customer.c_name, 'A') AS starts_with_A, + ENDSWITH(customer.c_name, 'z') AS ends_with_z, + CONTAINS(customer.c_name, 'sub') AS contains_sub, + customer.c_name LIKE '%test%' AS matches_like, + CONCAT_WS('::', customer.c_name, nation.n_name) AS joined_string, + LPAD(customer.c_name, 20, '*') AS lpad_name, + RPAD(customer.c_name, 20, '-') AS rpad_name, + TRIM(customer.c_name, '\n\t ') AS stripped, + TRIM(customer.c_name, 'aeiou') AS stripped_vowels, + REPLACE(customer.c_name, 'Corp', 'Inc') AS replaced_name, + REPLACE(customer.c_name, 'Ltd', '') AS removed_substr, + CASE + WHEN LENGTH('e') = 0 + THEN 0 + ELSE CAST(( + LENGTH(customer.c_name) - LENGTH(REPLACE(customer.c_name, 'e', '')) + ) / LENGTH('e') AS BIGINT) + END AS count_e, + CHARINDEX('Alex', customer.c_name) - 1 AS idx_Alex +FROM tpch.customer AS customer +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_mysql.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_mysql.sql index 6c2b00f56..9d62895e0 100644 --- a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_mysql.sql +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_mysql.sql @@ -1,24 +1,24 @@ WITH _s7 AS ( SELECT COUNT(*) AS n_rows, - INCIDENTS.in_device_id - FROM main.INCIDENTS AS INCIDENTS - JOIN main.ERRORS AS ERRORS - ON ERRORS.er_id = INCIDENTS.in_error_id AND ERRORS.er_name = 'Battery Failure' + incidents.in_device_id + FROM main.incidents AS incidents + JOIN main.errors AS errors + ON errors.er_id = incidents.in_error_id AND errors.er_name = 'Battery Failure' GROUP BY 2 ) SELECT - COUNTRIES.co_name COLLATE utf8mb4_bin AS country_name, - PRODUCTS.pr_name COLLATE utf8mb4_bin AS product_name, + countries.co_name COLLATE utf8mb4_bin AS country_name, + products.pr_name COLLATE utf8mb4_bin AS product_name, ROUND(COALESCE(SUM(_s7.n_rows), 0) / COUNT(*), 2) AS ir -FROM main.COUNTRIES AS COUNTRIES -JOIN main.DEVICES AS DEVICES - ON COUNTRIES.co_id = DEVICES.de_production_country_id -JOIN main.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id +FROM main.countries AS countries +JOIN main.devices AS devices + ON countries.co_id = devices.de_production_country_id +JOIN main.products AS products + ON devices.de_product_id = products.pr_id LEFT JOIN _s7 AS _s7 - ON DEVICES.de_id = _s7.in_device_id + ON _s7.in_device_id = devices.de_id GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql index 6f5f383d2..0b97ba986 100644 --- a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql @@ -1,24 +1,24 @@ -WITH _S7 AS ( +WITH _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - INCIDENTS.in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS AS INCIDENTS - JOIN MAIN.ERRORS AS ERRORS - ON ERRORS.er_id = INCIDENTS.in_error_id AND ERRORS.er_name = 'Battery Failure' + COUNT(*) AS n_rows, + incidents.in_device_id + FROM main.incidents AS incidents + JOIN main.errors AS errors + ON errors.er_id = incidents.in_error_id AND errors.er_name = 'Battery Failure' GROUP BY 2 ) SELECT - COUNTRIES.co_name AS country_name, - PRODUCTS.pr_name AS product_name, - ROUND(COALESCE(SUM(_S7.N_ROWS), 0) / COUNT(*), 2) AS ir -FROM MAIN.COUNTRIES AS COUNTRIES -JOIN MAIN.DEVICES AS DEVICES - ON COUNTRIES.co_id = DEVICES.de_production_country_id -JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id -LEFT JOIN _S7 AS _S7 - ON DEVICES.de_id = _S7.IN_DEVICE_ID + countries.co_name AS country_name, + products.pr_name AS product_name, + ROUND(COALESCE(SUM(_s7.n_rows), 0) / COUNT(*), 2) AS ir +FROM main.countries AS countries +JOIN main.devices AS devices + ON countries.co_id = devices.de_production_country_id +JOIN main.products AS products + ON devices.de_product_id = products.pr_id +LEFT JOIN _s7 AS _s7 + ON _s7.in_device_id = devices.de_id GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/technograph_country_cartesian_oddball_mysql.sql b/tests/test_sql_refsols/technograph_country_cartesian_oddball_mysql.sql index a512e83a5..76333f571 100644 --- a/tests/test_sql_refsols/technograph_country_cartesian_oddball_mysql.sql +++ b/tests/test_sql_refsols/technograph_country_cartesian_oddball_mysql.sql @@ -1,12 +1,12 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_other_countries - FROM main.COUNTRIES + FROM main.countries ) SELECT - COUNTRIES.co_name COLLATE utf8mb4_bin AS name, + countries.co_name COLLATE utf8mb4_bin AS name, _s1.n_other_countries -FROM main.COUNTRIES AS COUNTRIES +FROM main.countries AS countries CROSS JOIN _s1 AS _s1 ORDER BY 1 diff --git a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql index cc0735ab8..6f371134e 100644 --- a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql @@ -1,12 +1,12 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_OTHER_COUNTRIES - FROM MAIN.COUNTRIES + COUNT(*) AS n_other_countries + FROM main.countries ) SELECT - COUNTRIES.co_name AS name, - _S1.N_OTHER_COUNTRIES AS n_other_countries -FROM MAIN.COUNTRIES AS COUNTRIES -CROSS JOIN _S1 AS _S1 + countries.co_name AS name, + _s1.n_other_countries +FROM main.countries AS countries +CROSS JOIN _s1 AS _s1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_mysql.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_mysql.sql index a6525c93e..b617a2ed8 100644 --- a/tests/test_sql_refsols/technograph_country_combination_analysis_mysql.sql +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_mysql.sql @@ -2,16 +2,16 @@ WITH _s0 AS ( SELECT co_id, co_name - FROM main.COUNTRIES + FROM main.countries ), _s2 AS ( SELECT co_id - FROM main.COUNTRIES + FROM main.countries ), _s7 AS ( SELECT COUNT(*) AS n_rows, in_device_id - FROM main.INCIDENTS + FROM main.incidents GROUP BY 2 ), _s9 AS ( @@ -22,11 +22,11 @@ WITH _s0 AS ( _s2.co_id FROM _s2 AS _s2 CROSS JOIN _s2 AS _s3 - JOIN main.DEVICES AS DEVICES - ON DEVICES.de_production_country_id = _s2.co_id - AND DEVICES.de_purchase_country_id = _s3.co_id + JOIN main.devices AS devices + ON _s2.co_id = devices.de_production_country_id + AND _s3.co_id = devices.de_purchase_country_id LEFT JOIN _s7 AS _s7 - ON DEVICES.de_id = _s7.in_device_id + ON _s7.in_device_id = devices.de_id GROUP BY 3, 4 diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql index a51c012c6..5835cd8c9 100644 --- a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql @@ -1,46 +1,46 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - co_id AS CO_ID, - co_name AS CO_NAME - FROM MAIN.COUNTRIES -), _S2 AS ( + co_id, + co_name + FROM main.countries +), _s2 AS ( SELECT - co_id AS CO_ID - FROM MAIN.COUNTRIES -), _S7 AS ( + co_id + FROM main.countries +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS + COUNT(*) AS n_rows, + in_device_id + FROM main.incidents GROUP BY 2 -), _S9 AS ( +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S7.N_ROWS) AS SUM_N_ROWS, - _S3.CO_ID AS _ID_3, - _S2.CO_ID - FROM _S2 AS _S2 - CROSS JOIN _S2 AS _S3 - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_production_country_id = _S2.CO_ID - AND DEVICES.de_purchase_country_id = _S3.CO_ID - LEFT JOIN _S7 AS _S7 - ON DEVICES.de_id = _S7.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s7.n_rows) AS sum_n_rows, + _s3.co_id AS _id_3, + _s2.co_id + FROM _s2 AS _s2 + CROSS JOIN _s2 AS _s3 + JOIN main.devices AS devices + ON _s2.co_id = devices.de_production_country_id + AND _s3.co_id = devices.de_purchase_country_id + LEFT JOIN _s7 AS _s7 + ON _s7.in_device_id = devices.de_id GROUP BY 3, 4 ) SELECT - _S0.CO_NAME AS factory_country, - _S1.CO_NAME AS purchase_country, + _s0.co_name AS factory_country, + _s1.co_name AS purchase_country, ROUND(( - 1.0 * COALESCE(_S9.SUM_N_ROWS, 0) - ) / COALESCE(_S9.N_ROWS, 0), 2) AS ir -FROM _S0 AS _S0 -CROSS JOIN _S0 AS _S1 -LEFT JOIN _S9 AS _S9 - ON _S0.CO_ID = _S9.CO_ID AND _S1.CO_ID = _S9._ID_3 + 1.0 * COALESCE(_s9.sum_n_rows, 0) + ) / COALESCE(_s9.n_rows, 0), 2) AS ir +FROM _s0 AS _s0 +CROSS JOIN _s0 AS _s1 +LEFT JOIN _s9 AS _s9 + ON _s0.co_id = _s9.co_id AND _s1.co_id = _s9._id_3 ORDER BY 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_mysql.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_mysql.sql index 3d69560dd..de2a1c6b9 100644 --- a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_mysql.sql +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_mysql.sql @@ -1,7 +1,7 @@ WITH _t2 AS ( SELECT in_device_id - FROM main.INCIDENTS + FROM main.incidents ), _s1 AS ( SELECT COUNT(*) AS n_rows, @@ -13,10 +13,10 @@ WITH _t2 AS ( SELECT COUNT(*) AS n_rows, SUM(_s1.n_rows) AS sum_n_rows, - DEVICES.de_production_country_id - FROM main.DEVICES AS DEVICES + devices.de_production_country_id + FROM main.devices AS devices LEFT JOIN _s1 AS _s1 - ON DEVICES.de_id = _s1.in_device_id + ON _s1.in_device_id = devices.de_id GROUP BY 3 ), _s5 AS ( @@ -30,10 +30,10 @@ WITH _t2 AS ( SELECT COUNT(*) AS n_rows, SUM(_s5.n_rows) AS sum_n_rows, - DEVICES.de_purchase_country_id - FROM main.DEVICES AS DEVICES + devices.de_purchase_country_id + FROM main.devices AS devices LEFT JOIN _s5 AS _s5 - ON DEVICES.de_id = _s5.in_device_id + ON _s5.in_device_id = devices.de_id GROUP BY 3 ), _s11 AS ( @@ -47,26 +47,26 @@ WITH _t2 AS ( SELECT COUNT(*) AS n_rows, SUM(_s11.n_rows) AS sum_n_rows, - USERS.us_country_id - FROM main.USERS AS USERS - JOIN main.DEVICES AS DEVICES - ON DEVICES.de_owner_id = USERS.us_id + users.us_country_id + FROM main.users AS users + JOIN main.devices AS devices + ON devices.de_owner_id = users.us_id LEFT JOIN _s11 AS _s11 - ON DEVICES.de_id = _s11.in_device_id + ON _s11.in_device_id = devices.de_id GROUP BY 3 ) SELECT - COUNTRIES.co_name COLLATE utf8mb4_bin AS country_name, + countries.co_name COLLATE utf8mb4_bin AS country_name, ROUND(COALESCE(_s3.sum_n_rows, 0) / _s3.n_rows, 2) AS made_ir, ROUND(COALESCE(_s7.sum_n_rows, 0) / _s7.n_rows, 2) AS sold_ir, ROUND(COALESCE(_s13.sum_n_rows, 0) / COALESCE(_s13.n_rows, 0), 2) AS user_ir -FROM main.COUNTRIES AS COUNTRIES +FROM main.countries AS countries JOIN _s3 AS _s3 - ON COUNTRIES.co_id = _s3.de_production_country_id + ON _s3.de_production_country_id = countries.co_id JOIN _s7 AS _s7 - ON COUNTRIES.co_id = _s7.de_purchase_country_id + ON _s7.de_purchase_country_id = countries.co_id LEFT JOIN _s13 AS _s13 - ON COUNTRIES.co_id = _s13.us_country_id + ON _s13.us_country_id = countries.co_id ORDER BY 1 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql index 80d74eed0..13f73b452 100644 --- a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql @@ -1,72 +1,72 @@ -WITH _T2 AS ( +WITH _t2 AS ( SELECT - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS -), _S1 AS ( + in_device_id + FROM main.incidents +), _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - IN_DEVICE_ID - FROM _T2 + COUNT(*) AS n_rows, + in_device_id + FROM _t2 GROUP BY 2 -), _S3 AS ( +), _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S1.N_ROWS) AS SUM_N_ROWS, - DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID - FROM MAIN.DEVICES AS DEVICES - LEFT JOIN _S1 AS _S1 - ON DEVICES.de_id = _S1.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s1.n_rows) AS sum_n_rows, + devices.de_production_country_id + FROM main.devices AS devices + LEFT JOIN _s1 AS _s1 + ON _s1.in_device_id = devices.de_id GROUP BY 3 -), _S5 AS ( +), _s5 AS ( SELECT - COUNT(*) AS N_ROWS, - IN_DEVICE_ID - FROM _T2 + COUNT(*) AS n_rows, + in_device_id + FROM _t2 GROUP BY 2 -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S5.N_ROWS) AS SUM_N_ROWS, - DEVICES.de_purchase_country_id AS DE_PURCHASE_COUNTRY_ID - FROM MAIN.DEVICES AS DEVICES - LEFT JOIN _S5 AS _S5 - ON DEVICES.de_id = _S5.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s5.n_rows) AS sum_n_rows, + devices.de_purchase_country_id + FROM main.devices AS devices + LEFT JOIN _s5 AS _s5 + ON _s5.in_device_id = devices.de_id GROUP BY 3 -), _S11 AS ( +), _s11 AS ( SELECT - COUNT(*) AS N_ROWS, - IN_DEVICE_ID - FROM _T2 + COUNT(*) AS n_rows, + in_device_id + FROM _t2 GROUP BY 2 -), _S13 AS ( +), _s13 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S11.N_ROWS) AS SUM_N_ROWS, - USERS.us_country_id AS US_COUNTRY_ID - FROM MAIN.USERS AS USERS - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_owner_id = USERS.us_id - LEFT JOIN _S11 AS _S11 - ON DEVICES.de_id = _S11.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s11.n_rows) AS sum_n_rows, + users.us_country_id + FROM main.users AS users + JOIN main.devices AS devices + ON devices.de_owner_id = users.us_id + LEFT JOIN _s11 AS _s11 + ON _s11.in_device_id = devices.de_id GROUP BY 3 ) SELECT - COUNTRIES.co_name AS country_name, - ROUND(COALESCE(_S3.SUM_N_ROWS, 0) / _S3.N_ROWS, 2) AS made_ir, - ROUND(COALESCE(_S7.SUM_N_ROWS, 0) / _S7.N_ROWS, 2) AS sold_ir, - ROUND(COALESCE(_S13.SUM_N_ROWS, 0) / COALESCE(_S13.N_ROWS, 0), 2) AS user_ir -FROM MAIN.COUNTRIES AS COUNTRIES -JOIN _S3 AS _S3 - ON COUNTRIES.co_id = _S3.DE_PRODUCTION_COUNTRY_ID -JOIN _S7 AS _S7 - ON COUNTRIES.co_id = _S7.DE_PURCHASE_COUNTRY_ID -LEFT JOIN _S13 AS _S13 - ON COUNTRIES.co_id = _S13.US_COUNTRY_ID + countries.co_name AS country_name, + ROUND(COALESCE(_s3.sum_n_rows, 0) / _s3.n_rows, 2) AS made_ir, + ROUND(COALESCE(_s7.sum_n_rows, 0) / _s7.n_rows, 2) AS sold_ir, + ROUND(COALESCE(_s13.sum_n_rows, 0) / COALESCE(_s13.n_rows, 0), 2) AS user_ir +FROM main.countries AS countries +JOIN _s3 AS _s3 + ON _s3.de_production_country_id = countries.co_id +JOIN _s7 AS _s7 + ON _s7.de_purchase_country_id = countries.co_id +LEFT JOIN _s13 AS _s13 + ON _s13.us_country_id = countries.co_id ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_mysql.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_mysql.sql index 77459a2ed..3bf9d5ca0 100644 --- a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_mysql.sql +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_mysql.sql @@ -1,22 +1,22 @@ WITH _s5 AS ( SELECT COUNT(*) AS n_rows, - INCIDENTS.in_error_id - FROM main.INCIDENTS AS INCIDENTS - JOIN main.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN main.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' + incidents.in_error_id + FROM main.incidents AS incidents + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id + JOIN main.products AS products + ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' GROUP BY 2 ) SELECT - ERRORS.er_name AS error, + errors.er_name AS error, ROUND(( 100.0 * COALESCE(_s5.n_rows, 0) ) / SUM(COALESCE(_s5.n_rows, 0)) OVER (), 2) AS pct -FROM main.ERRORS AS ERRORS +FROM main.errors AS errors LEFT JOIN _s5 AS _s5 - ON ERRORS.er_id = _s5.in_error_id + ON _s5.in_error_id = errors.er_id ORDER BY 2 DESC diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql index 3fbc93593..3de27b18a 100644 --- a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql @@ -1,22 +1,22 @@ -WITH _S5 AS ( +WITH _s5 AS ( SELECT - COUNT(*) AS N_ROWS, - INCIDENTS.in_error_id AS IN_ERROR_ID - FROM MAIN.INCIDENTS AS INCIDENTS - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' + COUNT(*) AS n_rows, + incidents.in_error_id + FROM main.incidents AS incidents + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id + JOIN main.products AS products + ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' GROUP BY 2 ) SELECT - ERRORS.er_name AS error, + errors.er_name AS error, ROUND(( - 100.0 * COALESCE(_S5.N_ROWS, 0) - ) / SUM(COALESCE(_S5.N_ROWS, 0)) OVER (), 2) AS pct -FROM MAIN.ERRORS AS ERRORS -LEFT JOIN _S5 AS _S5 - ON ERRORS.er_id = _S5.IN_ERROR_ID + 100.0 * COALESCE(_s5.n_rows, 0) + ) / SUM(COALESCE(_s5.n_rows, 0)) OVER (), 2) AS pct +FROM main.errors AS errors +LEFT JOIN _s5 AS _s5 + ON _s5.in_error_id = errors.er_id ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_mysql.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_mysql.sql index a5401cd12..b84181987 100644 --- a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_mysql.sql +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_mysql.sql @@ -2,27 +2,27 @@ WITH _s3 AS ( SELECT COUNT(*) AS n_rows, in_device_id - FROM main.INCIDENTS + FROM main.incidents GROUP BY 2 ), _s5 AS ( SELECT COALESCE(SUM(_s3.n_rows), 0) AS sum_n_incidents, - DEVICES.de_production_country_id, + devices.de_production_country_id, COUNT(*) AS n_rows - FROM main.DEVICES AS DEVICES - JOIN main.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' + FROM main.devices AS devices + JOIN main.products AS products + ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' LEFT JOIN _s3 AS _s3 - ON DEVICES.de_id = _s3.in_device_id + ON _s3.in_device_id = devices.de_id GROUP BY 2 ) SELECT - COUNTRIES.co_name COLLATE utf8mb4_bin AS country, + countries.co_name COLLATE utf8mb4_bin AS country, ROUND(COALESCE(_s5.sum_n_incidents, 0) / COALESCE(_s5.n_rows, 0), 2) AS ir -FROM main.COUNTRIES AS COUNTRIES +FROM main.countries AS countries LEFT JOIN _s5 AS _s5 - ON COUNTRIES.co_id = _s5.de_production_country_id + ON _s5.de_production_country_id = countries.co_id ORDER BY 1 diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql index 130589712..9b395aef9 100644 --- a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql @@ -1,28 +1,28 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS + COUNT(*) AS n_rows, + in_device_id + FROM main.incidents GROUP BY 2 -), _S5 AS ( +), _s5 AS ( SELECT - COALESCE(SUM(_S3.N_ROWS), 0) AS SUM_N_INCIDENTS, - DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID, - COUNT(*) AS N_ROWS - FROM MAIN.DEVICES AS DEVICES - JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' - LEFT JOIN _S3 AS _S3 - ON DEVICES.de_id = _S3.IN_DEVICE_ID + COALESCE(SUM(_s3.n_rows), 0) AS sum_n_incidents, + devices.de_production_country_id, + COUNT(*) AS n_rows + FROM main.devices AS devices + JOIN main.products AS products + ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' + LEFT JOIN _s3 AS _s3 + ON _s3.in_device_id = devices.de_id GROUP BY 2 ) SELECT - COUNTRIES.co_name AS country, - ROUND(COALESCE(_S5.SUM_N_INCIDENTS, 0) / COALESCE(_S5.N_ROWS, 0), 2) AS ir -FROM MAIN.COUNTRIES AS COUNTRIES -LEFT JOIN _S5 AS _S5 - ON COUNTRIES.co_id = _S5.DE_PRODUCTION_COUNTRY_ID + countries.co_name AS country, + ROUND(COALESCE(_s5.sum_n_incidents, 0) / COALESCE(_s5.n_rows, 0), 2) AS ir +FROM main.countries AS countries +LEFT JOIN _s5 AS _s5 + ON _s5.de_production_country_id = countries.co_id ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_global_incident_rate_mysql.sql b/tests/test_sql_refsols/technograph_global_incident_rate_mysql.sql index 1a3dcd542..2d5a8ae63 100644 --- a/tests/test_sql_refsols/technograph_global_incident_rate_mysql.sql +++ b/tests/test_sql_refsols/technograph_global_incident_rate_mysql.sql @@ -1,11 +1,11 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows - FROM main.INCIDENTS + FROM main.incidents ), _s1 AS ( SELECT COUNT(*) AS n_rows - FROM main.DEVICES + FROM main.devices ) SELECT ROUND(_s0.n_rows / _s1.n_rows, 2) AS ir diff --git a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql index 2ca72ecd8..2d5a8ae63 100644 --- a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql @@ -1,13 +1,13 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - COUNT(*) AS N_ROWS - FROM MAIN.INCIDENTS -), _S1 AS ( + COUNT(*) AS n_rows + FROM main.incidents +), _s1 AS ( SELECT - COUNT(*) AS N_ROWS - FROM MAIN.DEVICES + COUNT(*) AS n_rows + FROM main.devices ) SELECT - ROUND(_S0.N_ROWS / _S1.N_ROWS, 2) AS ir -FROM _S0 AS _S0 -CROSS JOIN _S1 AS _S1 + ROUND(_s0.n_rows / _s1.n_rows, 2) AS ir +FROM _s0 AS _s0 +CROSS JOIN _s1 AS _s1 diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_mysql.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_mysql.sql index 2f6b90af4..4d022b716 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_mysql.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_mysql.sql @@ -1,14 +1,14 @@ SELECT - CALENDAR.ca_dt AS start_of_period, + calendar.ca_dt AS start_of_period, COUNT(*) AS n_purchases -FROM main.CALENDAR AS CALENDAR -JOIN main.CALENDAR AS CALENDAR_2 - ON CALENDAR.ca_dt <= CALENDAR_2.ca_dt - AND CALENDAR_2.ca_dt < DATE_ADD(CAST(CALENDAR.ca_dt AS DATETIME), INTERVAL '5' DAY) -JOIN main.DEVICES AS DEVICES - ON CALENDAR_2.ca_dt = CAST(CAST(DEVICES.de_purchase_ts AS DATETIME) AS DATE) +FROM main.calendar AS calendar +JOIN main.calendar AS calendar_2 + ON calendar.ca_dt <= calendar_2.ca_dt + AND calendar_2.ca_dt < DATE_ADD(CAST(calendar.ca_dt AS DATETIME), INTERVAL '5' DAY) +JOIN main.devices AS devices + ON calendar_2.ca_dt = CAST(CAST(devices.de_purchase_ts AS DATETIME) AS DATE) WHERE - EXTRACT(YEAR FROM CAST(CALENDAR.ca_dt AS DATETIME)) = 2024 + EXTRACT(YEAR FROM CAST(calendar.ca_dt AS DATETIME)) = 2024 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql index 9b7d3a13f..d7cbf77f4 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -1,14 +1,14 @@ SELECT - CALENDAR.ca_dt AS start_of_period, + calendar.ca_dt AS start_of_period, COUNT(*) AS n_purchases -FROM MAIN.CALENDAR AS CALENDAR -JOIN MAIN.CALENDAR AS CALENDAR_2 - ON CALENDAR.ca_dt <= CALENDAR_2.ca_dt - AND CALENDAR_2.ca_dt < DATEADD(DAY, 5, CAST(CALENDAR.ca_dt AS TIMESTAMP)) -JOIN MAIN.DEVICES AS DEVICES - ON CALENDAR_2.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) +FROM main.calendar AS calendar +JOIN main.calendar AS calendar_2 + ON calendar.ca_dt <= calendar_2.ca_dt + AND calendar_2.ca_dt < DATEADD(DAY, 5, CAST(calendar.ca_dt AS TIMESTAMP)) +JOIN main.devices AS devices + ON calendar_2.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) WHERE - YEAR(CAST(CALENDAR.ca_dt AS TIMESTAMP)) = 2024 + YEAR(CAST(calendar.ca_dt AS TIMESTAMP)) = 2024 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_mysql.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_mysql.sql index 0af58b20e..45f491c62 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_mysql.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_mysql.sql @@ -2,14 +2,14 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows, de_product_id - FROM main.DEVICES + FROM main.devices GROUP BY 2 ), _s1 AS ( SELECT pr_id, pr_release - FROM main.PRODUCTS + FROM main.products ), _s6 AS ( SELECT EXTRACT(YEAR FROM CAST(_s1.pr_release AS DATETIME)) AS release_year, @@ -23,11 +23,11 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows, EXTRACT(YEAR FROM CAST(_s3.pr_release AS DATETIME)) AS release_year - FROM main.DEVICES AS DEVICES + FROM main.devices AS devices JOIN _s1 AS _s3 - ON DEVICES.de_product_id = _s3.pr_id - JOIN main.INCIDENTS AS INCIDENTS - ON DEVICES.de_id = INCIDENTS.in_device_id + ON _s3.pr_id = devices.de_product_id + JOIN main.incidents AS incidents + ON devices.de_id = incidents.in_device_id GROUP BY 2 ) diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index 0d7c08ce3..316a5e3b1 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -1,41 +1,41 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - COUNT(*) AS N_ROWS, - de_product_id AS DE_PRODUCT_ID - FROM MAIN.DEVICES + COUNT(*) AS n_rows, + de_product_id + FROM main.devices GROUP BY 2 -), _S1 AS ( +), _s1 AS ( SELECT - pr_id AS PR_ID, - pr_release AS PR_RELEASE - FROM MAIN.PRODUCTS -), _S6 AS ( + pr_id, + pr_release + FROM main.products +), _s6 AS ( SELECT - YEAR(CAST(_S1.PR_RELEASE AS TIMESTAMP)) AS RELEASE_YEAR, - SUM(_S0.N_ROWS) AS SUM_N_ROWS - FROM _S0 AS _S0 - JOIN _S1 AS _S1 - ON _S0.DE_PRODUCT_ID = _S1.PR_ID + YEAR(CAST(_s1.pr_release AS TIMESTAMP)) AS release_year, + SUM(_s0.n_rows) AS sum_n_rows + FROM _s0 AS _s0 + JOIN _s1 AS _s1 + ON _s0.de_product_id = _s1.pr_id GROUP BY 1 -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - YEAR(CAST(_S3.PR_RELEASE AS TIMESTAMP)) AS RELEASE_YEAR - FROM MAIN.DEVICES AS DEVICES - JOIN _S1 AS _S3 - ON DEVICES.de_product_id = _S3.PR_ID - JOIN MAIN.INCIDENTS AS INCIDENTS - ON DEVICES.de_id = INCIDENTS.in_device_id + COUNT(*) AS n_rows, + YEAR(CAST(_s3.pr_release AS TIMESTAMP)) AS release_year + FROM main.devices AS devices + JOIN _s1 AS _s3 + ON _s3.pr_id = devices.de_product_id + JOIN main.incidents AS incidents + ON devices.de_id = incidents.in_device_id GROUP BY 2 ) SELECT - _S6.RELEASE_YEAR AS year, - ROUND(COALESCE(_S7.N_ROWS, 0) / _S6.SUM_N_ROWS, 2) AS ir -FROM _S6 AS _S6 -LEFT JOIN _S7 AS _S7 - ON _S6.RELEASE_YEAR = _S7.RELEASE_YEAR + _s6.release_year AS year, + ROUND(COALESCE(_s7.n_rows, 0) / _s6.sum_n_rows, 2) AS ir +FROM _s6 AS _s6 +LEFT JOIN _s7 AS _s7 + ON _s6.release_year = _s7.release_year ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_mysql.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_mysql.sql index a44317597..c88b87172 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_per_brand_mysql.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_mysql.sql @@ -2,18 +2,18 @@ WITH _s3 AS ( SELECT COUNT(*) AS n_rows, in_device_id - FROM main.INCIDENTS + FROM main.incidents GROUP BY 2 ) SELECT - PRODUCTS.pr_brand COLLATE utf8mb4_bin AS brand, + products.pr_brand COLLATE utf8mb4_bin AS brand, ROUND(COALESCE(SUM(_s3.n_rows), 0) / COUNT(*), 2) AS ir -FROM main.DEVICES AS DEVICES -JOIN main.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id +FROM main.devices AS devices +JOIN main.products AS products + ON devices.de_product_id = products.pr_id LEFT JOIN _s3 AS _s3 - ON DEVICES.de_id = _s3.in_device_id + ON _s3.in_device_id = devices.de_id GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql index bad452e73..075b007a3 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS + COUNT(*) AS n_rows, + in_device_id + FROM main.incidents GROUP BY 2 ) SELECT - PRODUCTS.pr_brand AS brand, - ROUND(COALESCE(SUM(_S3.N_ROWS), 0) / COUNT(*), 2) AS ir -FROM MAIN.DEVICES AS DEVICES -JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id -LEFT JOIN _S3 AS _S3 - ON DEVICES.de_id = _S3.IN_DEVICE_ID + products.pr_brand AS brand, + ROUND(COALESCE(SUM(_s3.n_rows), 0) / COUNT(*), 2) AS ir +FROM main.devices AS devices +JOIN main.products AS products + ON devices.de_product_id = products.pr_id +LEFT JOIN _s3 AS _s3 + ON _s3.in_device_id = devices.de_id GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_mysql.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_mysql.sql index 2ed8c9a13..7498c4f5b 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_mysql.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_mysql.sql @@ -1,14 +1,14 @@ WITH _t2 AS ( SELECT ca_dt - FROM main.CALENDAR + FROM main.calendar WHERE EXTRACT(YEAR FROM CAST(ca_dt AS DATETIME)) IN (2020, 2021) ), _t5 AS ( SELECT co_id, co_name - FROM main.COUNTRIES + FROM main.countries WHERE co_name = 'CN' ), _s7 AS ( @@ -16,12 +16,12 @@ WITH _t2 AS ( COUNT(*) AS n_rows, _t4.ca_dt FROM _t2 AS _t4 - JOIN main.CALENDAR AS CALENDAR - ON CALENDAR.ca_dt >= DATE_ADD(CAST(_t4.ca_dt AS DATETIME), INTERVAL '-6' MONTH) - JOIN main.DEVICES AS DEVICES - ON CALENDAR.ca_dt = CAST(CAST(DEVICES.de_purchase_ts AS DATETIME) AS DATE) + JOIN main.calendar AS calendar + ON calendar.ca_dt >= DATE_ADD(CAST(_t4.ca_dt AS DATETIME), INTERVAL '-6' MONTH) + JOIN main.devices AS devices + ON calendar.ca_dt = CAST(CAST(devices.de_purchase_ts AS DATETIME) AS DATE) JOIN _t5 AS _t5 - ON DEVICES.de_production_country_id = _t5.co_id + ON _t5.co_id = devices.de_production_country_id GROUP BY 2 ), _s15 AS ( @@ -29,12 +29,12 @@ WITH _t2 AS ( COUNT(*) AS n_rows, _t7.ca_dt FROM _t2 AS _t7 - JOIN main.INCIDENTS AS INCIDENTS - ON _t7.ca_dt = CAST(CAST(INCIDENTS.in_error_report_ts AS DATETIME) AS DATE) - JOIN main.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN main.incidents AS incidents + ON _t7.ca_dt = CAST(CAST(incidents.in_error_report_ts AS DATETIME) AS DATE) + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id JOIN _t5 AS _t8 - ON DEVICES.de_production_country_id = _t8.co_id + ON _t8.co_id = devices.de_production_country_id GROUP BY 2 ), _t0 AS ( diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index dfae7b184..846bb0250 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -1,62 +1,62 @@ -WITH _T2 AS ( +WITH _t2 AS ( SELECT - ca_dt AS CA_DT - FROM MAIN.CALENDAR + ca_dt + FROM main.calendar WHERE YEAR(CAST(ca_dt AS TIMESTAMP)) IN (2020, 2021) -), _T5 AS ( +), _t5 AS ( SELECT - co_id AS CO_ID, - co_name AS CO_NAME - FROM MAIN.COUNTRIES + co_id, + co_name + FROM main.countries WHERE co_name = 'CN' -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - _T4.CA_DT - FROM _T2 AS _T4 - JOIN MAIN.CALENDAR AS CALENDAR - ON CALENDAR.ca_dt >= DATEADD(MONTH, -6, CAST(_T4.CA_DT AS TIMESTAMP)) - JOIN MAIN.DEVICES AS DEVICES - ON CALENDAR.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - JOIN _T5 AS _T5 - ON DEVICES.de_production_country_id = _T5.CO_ID + COUNT(*) AS n_rows, + _t4.ca_dt + FROM _t2 AS _t4 + JOIN main.calendar AS calendar + ON calendar.ca_dt >= DATEADD(MONTH, -6, CAST(_t4.ca_dt AS TIMESTAMP)) + JOIN main.devices AS devices + ON calendar.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) + JOIN _t5 AS _t5 + ON _t5.co_id = devices.de_production_country_id GROUP BY 2 -), _S15 AS ( +), _s15 AS ( SELECT - COUNT(*) AS N_ROWS, - _T7.CA_DT - FROM _T2 AS _T7 - JOIN MAIN.INCIDENTS AS INCIDENTS - ON _T7.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN _T5 AS _T8 - ON DEVICES.de_production_country_id = _T8.CO_ID + COUNT(*) AS n_rows, + _t7.ca_dt + FROM _t2 AS _t7 + JOIN main.incidents AS incidents + ON _t7.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id + JOIN _t5 AS _t8 + ON _t8.co_id = devices.de_production_country_id GROUP BY 2 -), _T0 AS ( +), _t0 AS ( SELECT - MONTH(CAST(_T2.CA_DT AS TIMESTAMP)) AS MONTH, - SUM(_S7.N_ROWS) AS SUM_EXPR_3, - SUM(_S15.N_ROWS) AS SUM_N_ROWS, - YEAR(CAST(_T2.CA_DT AS TIMESTAMP)) AS YEAR - FROM _T2 AS _T2 - LEFT JOIN _S7 AS _S7 - ON _S7.CA_DT = _T2.CA_DT - LEFT JOIN _S15 AS _S15 - ON _S15.CA_DT = _T2.CA_DT + MONTH(CAST(_t2.ca_dt AS TIMESTAMP)) AS month, + SUM(_s7.n_rows) AS sum_expr_3, + SUM(_s15.n_rows) AS sum_n_rows, + YEAR(CAST(_t2.ca_dt AS TIMESTAMP)) AS year + FROM _t2 AS _t2 + LEFT JOIN _s7 AS _s7 + ON _s7.ca_dt = _t2.ca_dt + LEFT JOIN _s15 AS _s15 + ON _s15.ca_dt = _t2.ca_dt GROUP BY 1, 4 ) SELECT - CONCAT_WS('-', YEAR, LPAD(MONTH, 2, '0')) AS month, + CONCAT_WS('-', year, LPAD(month, 2, '0')) AS month, ROUND(( - 1000000.0 * COALESCE(SUM_N_ROWS, 0) - ) / COALESCE(SUM_EXPR_3, 0), 2) AS ir -FROM _T0 + 1000000.0 * COALESCE(sum_n_rows, 0) + ) / COALESCE(sum_expr_3, 0), 2) AS ir +FROM _t0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_mysql.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_mysql.sql index f672fe961..27d8d523d 100644 --- a/tests/test_sql_refsols/technograph_most_unreliable_products_mysql.sql +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_mysql.sql @@ -2,28 +2,28 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, in_device_id - FROM main.INCIDENTS + FROM main.incidents GROUP BY 2 ), _s3 AS ( SELECT COUNT(*) AS n_rows, SUM(_s1.n_rows) AS sum_n_incidents, - DEVICES.de_product_id - FROM main.DEVICES AS DEVICES + devices.de_product_id + FROM main.devices AS devices LEFT JOIN _s1 AS _s1 - ON DEVICES.de_id = _s1.in_device_id + ON _s1.in_device_id = devices.de_id GROUP BY 3 ) SELECT - PRODUCTS.pr_name AS product, - PRODUCTS.pr_brand AS product_brand, - PRODUCTS.pr_type AS product_type, + products.pr_name AS product, + products.pr_brand AS product_brand, + products.pr_type AS product_type, ROUND(COALESCE(_s3.sum_n_incidents, 0) / _s3.n_rows, 2) AS ir -FROM main.PRODUCTS AS PRODUCTS +FROM main.products AS products JOIN _s3 AS _s3 - ON PRODUCTS.pr_id = _s3.de_product_id + ON _s3.de_product_id = products.pr_id ORDER BY 4 DESC LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql index a5931737f..38be32ec0 100644 --- a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql @@ -1,29 +1,29 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS + COUNT(*) AS n_rows, + in_device_id + FROM main.incidents GROUP BY 2 -), _S3 AS ( +), _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S1.N_ROWS) AS SUM_N_INCIDENTS, - DEVICES.de_product_id AS DE_PRODUCT_ID - FROM MAIN.DEVICES AS DEVICES - LEFT JOIN _S1 AS _S1 - ON DEVICES.de_id = _S1.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s1.n_rows) AS sum_n_incidents, + devices.de_product_id + FROM main.devices AS devices + LEFT JOIN _s1 AS _s1 + ON _s1.in_device_id = devices.de_id GROUP BY 3 ) SELECT - PRODUCTS.pr_name AS product, - PRODUCTS.pr_brand AS product_brand, - PRODUCTS.pr_type AS product_type, - ROUND(COALESCE(_S3.SUM_N_INCIDENTS, 0) / _S3.N_ROWS, 2) AS ir -FROM MAIN.PRODUCTS AS PRODUCTS -JOIN _S3 AS _S3 - ON PRODUCTS.pr_id = _S3.DE_PRODUCT_ID + products.pr_name AS product, + products.pr_brand AS product_brand, + products.pr_type AS product_type, + ROUND(COALESCE(_s3.sum_n_incidents, 0) / _s3.n_rows, 2) AS ir +FROM main.products AS products +JOIN _s3 AS _s3 + ON _s3.de_product_id = products.pr_id ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_mysql.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_mysql.sql index f494528cf..38b80fbed 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_mysql.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_mysql.sql @@ -1,18 +1,18 @@ WITH _s14 AS ( SELECT ANY_VALUE(pr_release) AS release_date - FROM main.PRODUCTS + FROM main.products WHERE pr_name = 'GoldCopper-Star' ), _s6 AS ( SELECT ca_dt - FROM main.CALENDAR + FROM main.calendar ), _t5 AS ( SELECT pr_id, pr_name - FROM main.PRODUCTS + FROM main.products WHERE pr_name = 'GoldCopper-Star' ), _s7 AS ( @@ -20,12 +20,12 @@ WITH _s14 AS ( COUNT(*) AS n_rows, _s0.ca_dt FROM _s6 AS _s0 - JOIN main.INCIDENTS AS INCIDENTS - ON _s0.ca_dt = CAST(CAST(INCIDENTS.in_error_report_ts AS DATETIME) AS DATE) - JOIN main.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN main.incidents AS incidents + ON _s0.ca_dt = CAST(CAST(incidents.in_error_report_ts AS DATETIME) AS DATE) + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id JOIN _t5 AS _t5 - ON DEVICES.de_product_id = _t5.pr_id + ON _t5.pr_id = devices.de_product_id GROUP BY 2 ), _s13 AS ( @@ -33,10 +33,10 @@ WITH _s14 AS ( COUNT(*) AS n_rows, _s8.ca_dt FROM _s6 AS _s8 - JOIN main.DEVICES AS DEVICES - ON _s8.ca_dt = CAST(CAST(DEVICES.de_purchase_ts AS DATETIME) AS DATE) + JOIN main.devices AS devices + ON _s8.ca_dt = CAST(CAST(devices.de_purchase_ts AS DATETIME) AS DATE) JOIN _t5 AS _t7 - ON DEVICES.de_product_id = _t7.pr_id + ON _t7.pr_id = devices.de_product_id GROUP BY 2 ), _s15 AS ( diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index 48bdb69eb..1a33ae4a2 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -1,83 +1,83 @@ -WITH _S14 AS ( +WITH _s14 AS ( SELECT - ANY_VALUE(pr_release) AS RELEASE_DATE - FROM MAIN.PRODUCTS + ANY_VALUE(pr_release) AS release_date + FROM main.products WHERE pr_name = 'GoldCopper-Star' -), _S6 AS ( +), _s6 AS ( SELECT - ca_dt AS CA_DT - FROM MAIN.CALENDAR -), _T5 AS ( + ca_dt + FROM main.calendar +), _t5 AS ( SELECT - pr_id AS PR_ID, - pr_name AS PR_NAME - FROM MAIN.PRODUCTS + pr_id, + pr_name + FROM main.products WHERE pr_name = 'GoldCopper-Star' -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - _S0.CA_DT - FROM _S6 AS _S0 - JOIN MAIN.INCIDENTS AS INCIDENTS - ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN _T5 AS _T5 - ON DEVICES.de_product_id = _T5.PR_ID + COUNT(*) AS n_rows, + _s0.ca_dt + FROM _s6 AS _s0 + JOIN main.incidents AS incidents + ON _s0.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id + JOIN _t5 AS _t5 + ON _t5.pr_id = devices.de_product_id GROUP BY 2 -), _S13 AS ( +), _s13 AS ( SELECT - COUNT(*) AS N_ROWS, - _S8.CA_DT - FROM _S6 AS _S8 - JOIN MAIN.DEVICES AS DEVICES - ON _S8.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - JOIN _T5 AS _T7 - ON DEVICES.de_product_id = _T7.PR_ID + COUNT(*) AS n_rows, + _s8.ca_dt + FROM _s6 AS _s8 + JOIN main.devices AS devices + ON _s8.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) + JOIN _t5 AS _t7 + ON _t7.pr_id = devices.de_product_id GROUP BY 2 -), _S15 AS ( +), _s15 AS ( SELECT - SUM(_S7.N_ROWS) AS SUM_EXPR_4, - SUM(_S13.N_ROWS) AS SUM_N_ROWS, - YEAR(CAST(_S6.CA_DT AS TIMESTAMP)) AS YEAR_1 - FROM _S6 AS _S6 - LEFT JOIN _S7 AS _S7 - ON _S6.CA_DT = _S7.CA_DT - LEFT JOIN _S13 AS _S13 - ON _S13.CA_DT = _S6.CA_DT + SUM(_s7.n_rows) AS sum_expr_4, + SUM(_s13.n_rows) AS sum_n_rows, + YEAR(CAST(_s6.ca_dt AS TIMESTAMP)) AS year_1 + FROM _s6 AS _s6 + LEFT JOIN _s7 AS _s7 + ON _s6.ca_dt = _s7.ca_dt + LEFT JOIN _s13 AS _s13 + ON _s13.ca_dt = _s6.ca_dt GROUP BY 3 ) SELECT - _S15.YEAR_1 - YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) AS years_since_release, + _s15.year_1 - YEAR(CAST(_s14.release_date AS TIMESTAMP)) AS years_since_release, ROUND( - SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(_s15.sum_expr_4, 0)) OVER (ORDER BY _s15.year_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_s15.sum_n_rows, 0)) OVER (ORDER BY _s15.year_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS cum_ir, ROUND( ( 100.0 * ( - COALESCE(_S15.SUM_N_ROWS, 0) - LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR_1) + COALESCE(_s15.sum_n_rows, 0) - LAG(COALESCE(_s15.sum_n_rows, 0), 1) OVER (ORDER BY _s15.year_1) ) - ) / LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR_1), + ) / LAG(COALESCE(_s15.sum_n_rows, 0), 1) OVER (ORDER BY _s15.year_1), 2 ) AS pct_bought_change, ROUND( ( 100.0 * ( - COALESCE(_S15.SUM_EXPR_4, 0) - LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR_1) + COALESCE(_s15.sum_expr_4, 0) - LAG(COALESCE(_s15.sum_expr_4, 0), 1) OVER (ORDER BY _s15.year_1) ) - ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR_1), + ) / LAG(COALESCE(_s15.sum_expr_4, 0), 1) OVER (ORDER BY _s15.year_1), 2 ) AS pct_incident_change, - COALESCE(_S15.SUM_N_ROWS, 0) AS bought, - COALESCE(_S15.SUM_EXPR_4, 0) AS incidents -FROM _S14 AS _S14 -JOIN _S15 AS _S15 - ON _S15.YEAR_1 >= YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) + COALESCE(_s15.sum_n_rows, 0) AS bought, + COALESCE(_s15.sum_expr_4, 0) AS incidents +FROM _s14 AS _s14 +JOIN _s15 AS _s15 + ON _s15.year_1 >= YEAR(CAST(_s14.release_date AS TIMESTAMP)) ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_mysql.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_mysql.sql index c5f4658bb..1f804fb99 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_mysql.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_mysql.sql @@ -1,14 +1,14 @@ WITH _s2 AS ( SELECT ca_dt - FROM main.CALENDAR + FROM main.calendar ), _s3 AS ( SELECT COUNT(*) AS n_rows, _s0.ca_dt FROM _s2 AS _s0 - JOIN main.DEVICES AS DEVICES - ON _s0.ca_dt = CAST(CAST(DEVICES.de_purchase_ts AS DATETIME) AS DATE) + JOIN main.devices AS devices + ON _s0.ca_dt = CAST(CAST(devices.de_purchase_ts AS DATETIME) AS DATE) GROUP BY 2 ), _s7 AS ( @@ -16,8 +16,8 @@ WITH _s2 AS ( COUNT(*) AS n_rows, _s4.ca_dt FROM _s2 AS _s4 - JOIN main.INCIDENTS AS INCIDENTS - ON _s4.ca_dt = CAST(CAST(INCIDENTS.in_error_report_ts AS DATETIME) AS DATE) + JOIN main.incidents AS incidents + ON _s4.ca_dt = CAST(CAST(incidents.in_error_report_ts AS DATETIME) AS DATE) GROUP BY 2 ), _t1 AS ( diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index 21b47479a..fc1622d96 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -1,64 +1,64 @@ -WITH _S2 AS ( +WITH _s2 AS ( SELECT - ca_dt AS CA_DT - FROM MAIN.CALENDAR -), _S3 AS ( + ca_dt + FROM main.calendar +), _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - _S0.CA_DT - FROM _S2 AS _S0 - JOIN MAIN.DEVICES AS DEVICES - ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + COUNT(*) AS n_rows, + _s0.ca_dt + FROM _s2 AS _s0 + JOIN main.devices AS devices + ON _s0.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) GROUP BY 2 -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - _S4.CA_DT - FROM _S2 AS _S4 - JOIN MAIN.INCIDENTS AS INCIDENTS - ON _S4.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + COUNT(*) AS n_rows, + _s4.ca_dt + FROM _s2 AS _s4 + JOIN main.incidents AS incidents + ON _s4.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) GROUP BY 2 -), _T1 AS ( +), _t1 AS ( SELECT - SUM(_S3.N_ROWS) AS SUM_EXPR_3, - SUM(_S7.N_ROWS) AS SUM_N_ROWS, - YEAR(CAST(_S2.CA_DT AS TIMESTAMP)) AS YEAR - FROM _S2 AS _S2 - LEFT JOIN _S3 AS _S3 - ON _S2.CA_DT = _S3.CA_DT - LEFT JOIN _S7 AS _S7 - ON _S2.CA_DT = _S7.CA_DT + SUM(_s3.n_rows) AS sum_expr_3, + SUM(_s7.n_rows) AS sum_n_rows, + YEAR(CAST(_s2.ca_dt AS TIMESTAMP)) AS year + FROM _s2 AS _s2 + LEFT JOIN _s3 AS _s3 + ON _s2.ca_dt = _s3.ca_dt + LEFT JOIN _s7 AS _s7 + ON _s2.ca_dt = _s7.ca_dt GROUP BY 3 ) SELECT - YEAR AS yr, + year AS yr, ROUND( - SUM(COALESCE(SUM_N_ROWS, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(SUM_EXPR_3, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(sum_n_rows, 0)) OVER (ORDER BY year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(sum_expr_3, 0)) OVER (ORDER BY year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS cum_ir, ROUND( ( 100.0 * ( - COALESCE(SUM_EXPR_3, 0) - LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR) + COALESCE(sum_expr_3, 0) - LAG(COALESCE(sum_expr_3, 0), 1) OVER (ORDER BY year) ) - ) / LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR), + ) / LAG(COALESCE(sum_expr_3, 0), 1) OVER (ORDER BY year), 2 ) AS pct_bought_change, ROUND( ( 100.0 * ( - COALESCE(SUM_N_ROWS, 0) - LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR) + COALESCE(sum_n_rows, 0) - LAG(COALESCE(sum_n_rows, 0), 1) OVER (ORDER BY year) ) - ) / LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR), + ) / LAG(COALESCE(sum_n_rows, 0), 1) OVER (ORDER BY year), 2 ) AS pct_incident_change, - COALESCE(SUM_EXPR_3, 0) AS bought, - COALESCE(SUM_N_ROWS, 0) AS incidents -FROM _T1 + COALESCE(sum_expr_3, 0) AS bought, + COALESCE(sum_n_rows, 0) AS incidents +FROM _t1 WHERE - NOT SUM_EXPR_3 IS NULL AND SUM_EXPR_3 > 0 + NOT sum_expr_3 IS NULL AND sum_expr_3 > 0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/time_threshold_reached_mysql.sql b/tests/test_sql_refsols/time_threshold_reached_mysql.sql index 6fc578fe4..f4fe0eeba 100644 --- a/tests/test_sql_refsols/time_threshold_reached_mysql.sql +++ b/tests/test_sql_refsols/time_threshold_reached_mysql.sql @@ -3,20 +3,20 @@ WITH _t3 AS ( ( 100.0 * SUM(sbtxshares) OVER (PARTITION BY CAST(CAST(sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ) / SUM(sbtxshares) OVER (PARTITION BY CAST(CAST(sbtxdatetime AS DATETIME) AS DATE)) AS pct_of_day, - sbtxdatetime AS sbTxDateTime - FROM main.sbTransaction + sbtxdatetime + FROM main.sbtransaction WHERE EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) = 2023 ), _t AS ( SELECT - sbTxDateTime, - ROW_NUMBER() OVER (PARTITION BY CAST(CAST(sbTxDateTime AS DATETIME) AS DATE) ORDER BY CASE WHEN pct_of_day IS NULL THEN 1 ELSE 0 END, pct_of_day) AS _w + sbtxdatetime, + ROW_NUMBER() OVER (PARTITION BY CAST(CAST(sbtxdatetime AS DATETIME) AS DATE) ORDER BY CASE WHEN pct_of_day IS NULL THEN 1 ELSE 0 END, pct_of_day) AS _w FROM _t3 WHERE pct_of_day >= 50.0 ) SELECT - sbTxDateTime AS date_time + sbtxdatetime AS date_time FROM _t WHERE _w = 1 diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index a37249290..4902f2306 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -1,23 +1,23 @@ -WITH _T3 AS ( +WITH _t3 AS ( SELECT ( 100.0 * SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS PCT_OF_DAY, - sbtxdatetime AS SBTXDATETIME - FROM MAIN.SBTRANSACTION + ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS pct_of_day, + sbtxdatetime + FROM main.sbtransaction WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _T1 AS ( +), _t1 AS ( SELECT - SBTXDATETIME - FROM _T3 + sbtxdatetime + FROM _t3 WHERE - PCT_OF_DAY >= 50.0 + pct_of_day >= 50.0 QUALIFY - ROW_NUMBER() OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTXDATETIME AS TIMESTAMP)) ORDER BY PCT_OF_DAY) = 1 + ROW_NUMBER() OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY pct_of_day) = 1 ) SELECT - SBTXDATETIME AS date_time -FROM _T1 + sbtxdatetime AS date_time +FROM _t1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q10_mysql.sql b/tests/test_sql_refsols/tpch_q10_mysql.sql index 35550c939..e80a7a87a 100644 --- a/tests/test_sql_refsols/tpch_q10_mysql.sql +++ b/tests/test_sql_refsols/tpch_q10_mysql.sql @@ -1,32 +1,32 @@ WITH _s3 AS ( SELECT - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )) AS sum_expr_1, - ORDERS.o_custkey - FROM tpch.ORDERS AS ORDERS - JOIN tpch.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' + orders.o_custkey + FROM tpch.orders AS orders + JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey AND lineitem.l_returnflag = 'R' WHERE - EXTRACT(QUARTER FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 4 - AND EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 1993 + EXTRACT(QUARTER FROM CAST(orders.o_orderdate AS DATETIME)) = 4 + AND EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) = 1993 GROUP BY 2 ) SELECT - CUSTOMER.c_custkey AS C_CUSTKEY, - CUSTOMER.c_name AS C_NAME, + customer.c_custkey AS C_CUSTKEY, + customer.c_name AS C_NAME, COALESCE(_s3.sum_expr_1, 0) AS REVENUE, - CUSTOMER.c_acctbal AS C_ACCTBAL, - NATION.n_name AS N_NAME, - CUSTOMER.c_address AS C_ADDRESS, - CUSTOMER.c_phone AS C_PHONE, - CUSTOMER.c_comment AS C_COMMENT -FROM tpch.CUSTOMER AS CUSTOMER + customer.c_acctbal AS C_ACCTBAL, + nation.n_name AS N_NAME, + customer.c_address AS C_ADDRESS, + customer.c_phone AS C_PHONE, + customer.c_comment AS C_COMMENT +FROM tpch.customer AS customer LEFT JOIN _s3 AS _s3 - ON CUSTOMER.c_custkey = _s3.o_custkey -JOIN tpch.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + ON _s3.o_custkey = customer.c_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey ORDER BY 3 DESC, 1 diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql index c455acda0..1ae176529 100644 --- a/tests/test_sql_refsols/tpch_q10_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -1,32 +1,32 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS SUM_EXPR_1, - ORDERS.o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS AS ORDERS - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' + SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount + )) AS sum_expr_1, + orders.o_custkey + FROM tpch.orders AS orders + JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey AND lineitem.l_returnflag = 'R' WHERE - QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 4 - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 + QUARTER(CAST(orders.o_orderdate AS TIMESTAMP)) = 4 + AND YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY 2 ) SELECT - CUSTOMER.c_custkey AS C_CUSTKEY, - CUSTOMER.c_name AS C_NAME, - COALESCE(_S3.SUM_EXPR_1, 0) AS REVENUE, - CUSTOMER.c_acctbal AS C_ACCTBAL, - NATION.n_name AS N_NAME, - CUSTOMER.c_address AS C_ADDRESS, - CUSTOMER.c_phone AS C_PHONE, - CUSTOMER.c_comment AS C_COMMENT -FROM TPCH.CUSTOMER AS CUSTOMER -LEFT JOIN _S3 AS _S3 - ON CUSTOMER.c_custkey = _S3.O_CUSTKEY -JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + customer.c_custkey AS C_CUSTKEY, + customer.c_name AS C_NAME, + COALESCE(_s3.sum_expr_1, 0) AS REVENUE, + customer.c_acctbal AS C_ACCTBAL, + nation.n_name AS N_NAME, + customer.c_address AS C_ADDRESS, + customer.c_phone AS C_PHONE, + customer.c_comment AS C_COMMENT +FROM tpch.customer AS customer +LEFT JOIN _s3 AS _s3 + ON _s3.o_custkey = customer.c_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey ORDER BY 3 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q11_mysql.sql b/tests/test_sql_refsols/tpch_q11_mysql.sql index 812291b94..1f3db8af4 100644 --- a/tests/test_sql_refsols/tpch_q11_mysql.sql +++ b/tests/test_sql_refsols/tpch_q11_mysql.sql @@ -2,29 +2,29 @@ WITH _s0 AS ( SELECT s_nationkey, s_suppkey - FROM tpch.SUPPLIER + FROM tpch.supplier ), _t2 AS ( SELECT n_name, n_nationkey - FROM tpch.NATION + FROM tpch.nation WHERE n_name = 'GERMANY' ), _s8 AS ( SELECT - SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS sum_metric - FROM tpch.PARTSUPP AS PARTSUPP + SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_metric + FROM tpch.partsupp AS partsupp JOIN _s0 AS _s0 - ON PARTSUPP.ps_suppkey = _s0.s_suppkey + ON _s0.s_suppkey = partsupp.ps_suppkey JOIN _t2 AS _t2 ON _s0.s_nationkey = _t2.n_nationkey ), _s9 AS ( SELECT - SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS sum_expr_2, - PARTSUPP.ps_partkey - FROM tpch.PARTSUPP AS PARTSUPP + SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_expr_2, + partsupp.ps_partkey + FROM tpch.partsupp AS partsupp JOIN _s0 AS _s4 - ON PARTSUPP.ps_suppkey = _s4.s_suppkey + ON _s4.s_suppkey = partsupp.ps_suppkey JOIN _t2 AS _t4 ON _s4.s_nationkey = _t4.n_nationkey GROUP BY diff --git a/tests/test_sql_refsols/tpch_q11_snowflake.sql b/tests/test_sql_refsols/tpch_q11_snowflake.sql index 74543ab46..677c62d95 100644 --- a/tests/test_sql_refsols/tpch_q11_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q11_snowflake.sql @@ -1,43 +1,43 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - s_nationkey AS S_NATIONKEY, - s_suppkey AS S_SUPPKEY - FROM TPCH.SUPPLIER -), _T2 AS ( + s_nationkey, + s_suppkey + FROM tpch.supplier +), _t2 AS ( SELECT - n_name AS N_NAME, - n_nationkey AS N_NATIONKEY - FROM TPCH.NATION + n_name, + n_nationkey + FROM tpch.nation WHERE n_name = 'GERMANY' -), _S8 AS ( +), _s8 AS ( SELECT - SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_METRIC - FROM TPCH.PARTSUPP AS PARTSUPP - JOIN _S0 AS _S0 - ON PARTSUPP.ps_suppkey = _S0.S_SUPPKEY - JOIN _T2 AS _T2 - ON _S0.S_NATIONKEY = _T2.N_NATIONKEY -), _S9 AS ( + SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_metric + FROM tpch.partsupp AS partsupp + JOIN _s0 AS _s0 + ON _s0.s_suppkey = partsupp.ps_suppkey + JOIN _t2 AS _t2 + ON _s0.s_nationkey = _t2.n_nationkey +), _s9 AS ( SELECT - SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_EXPR_2, - PARTSUPP.ps_partkey AS PS_PARTKEY - FROM TPCH.PARTSUPP AS PARTSUPP - JOIN _S0 AS _S4 - ON PARTSUPP.ps_suppkey = _S4.S_SUPPKEY - JOIN _T2 AS _T4 - ON _S4.S_NATIONKEY = _T4.N_NATIONKEY + SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_expr_2, + partsupp.ps_partkey + FROM tpch.partsupp AS partsupp + JOIN _s0 AS _s4 + ON _s4.s_suppkey = partsupp.ps_suppkey + JOIN _t2 AS _t4 + ON _s4.s_nationkey = _t4.n_nationkey GROUP BY 2 ) SELECT - _S9.PS_PARTKEY, - COALESCE(_S9.SUM_EXPR_2, 0) AS VALUE -FROM _S8 AS _S8 -JOIN _S9 AS _S9 + _s9.ps_partkey AS PS_PARTKEY, + COALESCE(_s9.sum_expr_2, 0) AS VALUE +FROM _s8 AS _s8 +JOIN _s9 AS _s9 ON ( - COALESCE(_S8.SUM_METRIC, 0) * 0.0001 - ) < COALESCE(_S9.SUM_EXPR_2, 0) + COALESCE(_s8.sum_metric, 0) * 0.0001 + ) < COALESCE(_s9.sum_expr_2, 0) ORDER BY 2 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q12_mysql.sql b/tests/test_sql_refsols/tpch_q12_mysql.sql index 0ec228b35..8c2f23053 100644 --- a/tests/test_sql_refsols/tpch_q12_mysql.sql +++ b/tests/test_sql_refsols/tpch_q12_mysql.sql @@ -1,16 +1,16 @@ SELECT - LINEITEM.l_shipmode COLLATE utf8mb4_bin AS L_SHIPMODE, - COALESCE(SUM(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, - COALESCE(SUM(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT -FROM tpch.LINEITEM AS LINEITEM -JOIN tpch.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey + l_shipmode COLLATE utf8mb4_bin AS L_SHIPMODE, + COALESCE(SUM(orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, + COALESCE(SUM(NOT orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT +FROM tpch.lineitem AS lineitem +JOIN tpch.orders AS orders + ON lineitem.l_orderkey = orders.o_orderkey WHERE - EXTRACT(YEAR FROM CAST(LINEITEM.l_receiptdate AS DATETIME)) = 1994 - AND LINEITEM.l_commitdate < LINEITEM.l_receiptdate - AND LINEITEM.l_commitdate > LINEITEM.l_shipdate + EXTRACT(YEAR FROM CAST(lineitem.l_receiptdate AS DATETIME)) = 1994 + AND lineitem.l_commitdate < lineitem.l_receiptdate + AND lineitem.l_commitdate > lineitem.l_shipdate AND ( - LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' + lineitem.l_shipmode = 'MAIL' OR lineitem.l_shipmode = 'SHIP' ) GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql index 5e26c4382..b02a4f3ff 100644 --- a/tests/test_sql_refsols/tpch_q12_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -1,17 +1,17 @@ SELECT - LINEITEM.l_shipmode AS L_SHIPMODE, - COALESCE(COUNT_IF(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, - COALESCE(COUNT_IF(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey + lineitem.l_shipmode AS L_SHIPMODE, + COALESCE(COUNT_IF(orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, + COALESCE(COUNT_IF(NOT orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT +FROM tpch.lineitem AS lineitem +JOIN tpch.orders AS orders + ON lineitem.l_orderkey = orders.o_orderkey WHERE - LINEITEM.l_commitdate < LINEITEM.l_receiptdate - AND LINEITEM.l_commitdate > LINEITEM.l_shipdate + YEAR(CAST(lineitem.l_receiptdate AS TIMESTAMP)) = 1994 + AND lineitem.l_commitdate < lineitem.l_receiptdate + AND lineitem.l_commitdate > lineitem.l_shipdate AND ( - LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' + lineitem.l_shipmode = 'MAIL' OR lineitem.l_shipmode = 'SHIP' ) - AND YEAR(CAST(LINEITEM.l_receiptdate AS TIMESTAMP)) = 1994 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q13_mysql.sql b/tests/test_sql_refsols/tpch_q13_mysql.sql index a8eae8a73..cbe9e22ac 100644 --- a/tests/test_sql_refsols/tpch_q13_mysql.sql +++ b/tests/test_sql_refsols/tpch_q13_mysql.sql @@ -2,7 +2,7 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, o_custkey - FROM tpch.ORDERS + FROM tpch.orders WHERE NOT o_comment LIKE '%special%requests%' GROUP BY @@ -11,9 +11,9 @@ WITH _s1 AS ( SELECT COALESCE(_s1.n_rows, 0) AS C_COUNT, COUNT(*) AS CUSTDIST -FROM tpch.CUSTOMER AS CUSTOMER +FROM tpch.customer AS customer LEFT JOIN _s1 AS _s1 - ON CUSTOMER.c_custkey = _s1.o_custkey + ON _s1.o_custkey = customer.c_custkey GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q13_snowflake.sql b/tests/test_sql_refsols/tpch_q13_snowflake.sql index 17df0163e..d3d53c838 100644 --- a/tests/test_sql_refsols/tpch_q13_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q13_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + COUNT(*) AS n_rows, + o_custkey + FROM tpch.orders WHERE NOT o_comment LIKE '%special%requests%' GROUP BY 2 ) SELECT - COALESCE(_S1.N_ROWS, 0) AS C_COUNT, + COALESCE(_s1.n_rows, 0) AS C_COUNT, COUNT(*) AS CUSTDIST -FROM TPCH.CUSTOMER AS CUSTOMER -LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.O_CUSTKEY +FROM tpch.customer AS customer +LEFT JOIN _s1 AS _s1 + ON _s1.o_custkey = customer.c_custkey GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q14_mysql.sql b/tests/test_sql_refsols/tpch_q14_mysql.sql index dd59248dd..5202aaaa7 100644 --- a/tests/test_sql_refsols/tpch_q14_mysql.sql +++ b/tests/test_sql_refsols/tpch_q14_mysql.sql @@ -3,21 +3,21 @@ SELECT 100.0 * COALESCE( SUM( CASE - WHEN PART.p_type LIKE 'PROMO%' - THEN LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + WHEN part.p_type LIKE 'PROMO%' + THEN lineitem.l_extendedprice * ( + 1 - lineitem.l_discount ) ELSE 0 END ), 0 ) - ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ) / COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS PROMO_REVENUE -FROM tpch.LINEITEM AS LINEITEM -JOIN tpch.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey WHERE - EXTRACT(MONTH FROM CAST(LINEITEM.l_shipdate AS DATETIME)) = 9 - AND EXTRACT(YEAR FROM CAST(LINEITEM.l_shipdate AS DATETIME)) = 1995 + EXTRACT(MONTH FROM CAST(lineitem.l_shipdate AS DATETIME)) = 9 + AND EXTRACT(YEAR FROM CAST(lineitem.l_shipdate AS DATETIME)) = 1995 diff --git a/tests/test_sql_refsols/tpch_q14_snowflake.sql b/tests/test_sql_refsols/tpch_q14_snowflake.sql index cf4f6d086..7c04495f8 100644 --- a/tests/test_sql_refsols/tpch_q14_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q14_snowflake.sql @@ -3,21 +3,21 @@ SELECT 100.0 * COALESCE( SUM( IFF( - STARTSWITH(PART.p_type, 'PROMO'), - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + STARTSWITH(part.p_type, 'PROMO'), + lineitem.l_extendedprice * ( + 1 - lineitem.l_discount ), 0 ) ), 0 ) - ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ) / COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS PROMO_REVENUE -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey WHERE - MONTH(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) = 9 - AND YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) = 1995 + MONTH(CAST(lineitem.l_shipdate AS TIMESTAMP)) = 9 + AND YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) = 1995 diff --git a/tests/test_sql_refsols/tpch_q15_mysql.sql b/tests/test_sql_refsols/tpch_q15_mysql.sql index 8a0971a95..b5beaf375 100644 --- a/tests/test_sql_refsols/tpch_q15_mysql.sql +++ b/tests/test_sql_refsols/tpch_q15_mysql.sql @@ -4,7 +4,7 @@ WITH _t3 AS ( l_extendedprice, l_shipdate, l_suppkey - FROM tpch.LINEITEM + FROM tpch.lineitem WHERE l_shipdate < CAST('1996-04-01' AS DATE) AND l_shipdate >= CAST('1996-01-01' AS DATE) @@ -20,9 +20,9 @@ WITH _t3 AS ( ), _s2 AS ( SELECT MAX(COALESCE(_s1.sum_expr_2, 0)) AS max_revenue - FROM tpch.SUPPLIER AS SUPPLIER + FROM tpch.supplier AS supplier JOIN _s1 AS _s1 - ON SUPPLIER.s_suppkey = _s1.l_suppkey + ON _s1.l_suppkey = supplier.s_suppkey ), _s5 AS ( SELECT SUM(l_extendedprice * ( @@ -34,15 +34,15 @@ WITH _t3 AS ( 2 ) SELECT - SUPPLIER.s_suppkey AS S_SUPPKEY, - SUPPLIER.s_name AS S_NAME, - SUPPLIER.s_address AS S_ADDRESS, - SUPPLIER.s_phone AS S_PHONE, + supplier.s_suppkey AS S_SUPPKEY, + supplier.s_name AS S_NAME, + supplier.s_address AS S_ADDRESS, + supplier.s_phone AS S_PHONE, COALESCE(_s5.sum_expr_3, 0) AS TOTAL_REVENUE FROM _s2 AS _s2 -CROSS JOIN tpch.SUPPLIER AS SUPPLIER +CROSS JOIN tpch.supplier AS supplier JOIN _s5 AS _s5 - ON SUPPLIER.s_suppkey = _s5.l_suppkey - AND _s2.max_revenue = COALESCE(_s5.sum_expr_3, 0) + ON _s2.max_revenue = COALESCE(_s5.sum_expr_3, 0) + AND _s5.l_suppkey = supplier.s_suppkey ORDER BY 1 diff --git a/tests/test_sql_refsols/tpch_q15_snowflake.sql b/tests/test_sql_refsols/tpch_q15_snowflake.sql index 41ffbc19b..545e6f34c 100644 --- a/tests/test_sql_refsols/tpch_q15_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q15_snowflake.sql @@ -1,48 +1,48 @@ -WITH _T3 AS ( +WITH _t3 AS ( SELECT - l_discount AS L_DISCOUNT, - l_extendedprice AS L_EXTENDEDPRICE, - l_shipdate AS L_SHIPDATE, - l_suppkey AS L_SUPPKEY - FROM TPCH.LINEITEM + l_discount, + l_extendedprice, + l_shipdate, + l_suppkey + FROM tpch.lineitem WHERE l_shipdate < CAST('1996-04-01' AS DATE) AND l_shipdate >= CAST('1996-01-01' AS DATE) -), _S1 AS ( +), _s1 AS ( SELECT - SUM(L_EXTENDEDPRICE * ( - 1 - L_DISCOUNT - )) AS SUM_EXPR_2, - L_SUPPKEY - FROM _T3 + SUM(l_extendedprice * ( + 1 - l_discount + )) AS sum_expr_2, + l_suppkey + FROM _t3 GROUP BY 2 -), _S2 AS ( +), _s2 AS ( SELECT - MAX(COALESCE(_S1.SUM_EXPR_2, 0)) AS MAX_REVENUE - FROM TPCH.SUPPLIER AS SUPPLIER - JOIN _S1 AS _S1 - ON SUPPLIER.s_suppkey = _S1.L_SUPPKEY -), _S5 AS ( + MAX(COALESCE(_s1.sum_expr_2, 0)) AS max_revenue + FROM tpch.supplier AS supplier + JOIN _s1 AS _s1 + ON _s1.l_suppkey = supplier.s_suppkey +), _s5 AS ( SELECT - SUM(L_EXTENDEDPRICE * ( - 1 - L_DISCOUNT - )) AS SUM_EXPR_3, - L_SUPPKEY - FROM _T3 + SUM(l_extendedprice * ( + 1 - l_discount + )) AS sum_expr_3, + l_suppkey + FROM _t3 GROUP BY 2 ) SELECT - SUPPLIER.s_suppkey AS S_SUPPKEY, - SUPPLIER.s_name AS S_NAME, - SUPPLIER.s_address AS S_ADDRESS, - SUPPLIER.s_phone AS S_PHONE, - COALESCE(_S5.SUM_EXPR_3, 0) AS TOTAL_REVENUE -FROM _S2 AS _S2 -CROSS JOIN TPCH.SUPPLIER AS SUPPLIER -JOIN _S5 AS _S5 - ON SUPPLIER.s_suppkey = _S5.L_SUPPKEY - AND _S2.MAX_REVENUE = COALESCE(_S5.SUM_EXPR_3, 0) + supplier.s_suppkey AS S_SUPPKEY, + supplier.s_name AS S_NAME, + supplier.s_address AS S_ADDRESS, + supplier.s_phone AS S_PHONE, + COALESCE(_s5.sum_expr_3, 0) AS TOTAL_REVENUE +FROM _s2 AS _s2 +CROSS JOIN tpch.supplier AS supplier +JOIN _s5 AS _s5 + ON _s2.max_revenue = COALESCE(_s5.sum_expr_3, 0) + AND _s5.l_suppkey = supplier.s_suppkey ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q16_mysql.sql b/tests/test_sql_refsols/tpch_q16_mysql.sql index 257a9a323..dfd0d169a 100644 --- a/tests/test_sql_refsols/tpch_q16_mysql.sql +++ b/tests/test_sql_refsols/tpch_q16_mysql.sql @@ -1,17 +1,17 @@ SELECT - PART.p_brand COLLATE utf8mb4_bin AS P_BRAND, - PART.p_type COLLATE utf8mb4_bin AS P_TYPE, - PART.p_size AS P_SIZE, - COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT -FROM tpch.PARTSUPP AS PARTSUPP -JOIN tpch.SUPPLIER AS SUPPLIER - ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' - AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey -JOIN tpch.PART AS PART - ON NOT PART.p_type LIKE 'MEDIUM POLISHED%%' - AND PART.p_brand <> 'BRAND#45' - AND PART.p_partkey = PARTSUPP.ps_partkey - AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) + p_brand COLLATE utf8mb4_bin AS P_BRAND, + p_type COLLATE utf8mb4_bin AS P_TYPE, + part.p_size AS P_SIZE, + COUNT(DISTINCT partsupp.ps_suppkey) AS SUPPLIER_COUNT +FROM tpch.partsupp AS partsupp +JOIN tpch.supplier AS supplier + ON NOT supplier.s_comment LIKE '%Customer%Complaints%' + AND partsupp.ps_suppkey = supplier.s_suppkey +JOIN tpch.part AS part + ON NOT part.p_type LIKE 'MEDIUM POLISHED%%' + AND part.p_brand <> 'BRAND#45' + AND part.p_partkey = partsupp.ps_partkey + AND part.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q16_snowflake.sql b/tests/test_sql_refsols/tpch_q16_snowflake.sql index afe61e7fe..142fca36a 100644 --- a/tests/test_sql_refsols/tpch_q16_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q16_snowflake.sql @@ -1,17 +1,17 @@ SELECT - PART.p_brand AS P_BRAND, - PART.p_type AS P_TYPE, - PART.p_size AS P_SIZE, - COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT -FROM TPCH.PARTSUPP AS PARTSUPP -JOIN TPCH.SUPPLIER AS SUPPLIER - ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' - AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey -JOIN TPCH.PART AS PART - ON NOT STARTSWITH(PART.p_type, 'MEDIUM POLISHED%') - AND PART.p_brand <> 'BRAND#45' - AND PART.p_partkey = PARTSUPP.ps_partkey - AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) + part.p_brand AS P_BRAND, + part.p_type AS P_TYPE, + part.p_size AS P_SIZE, + COUNT(DISTINCT partsupp.ps_suppkey) AS SUPPLIER_COUNT +FROM tpch.partsupp AS partsupp +JOIN tpch.supplier AS supplier + ON NOT supplier.s_comment LIKE '%Customer%Complaints%' + AND partsupp.ps_suppkey = supplier.s_suppkey +JOIN tpch.part AS part + ON NOT STARTSWITH(part.p_type, 'MEDIUM POLISHED%') + AND part.p_brand <> 'BRAND#45' + AND part.p_partkey = partsupp.ps_partkey + AND part.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q17_mysql.sql b/tests/test_sql_refsols/tpch_q17_mysql.sql index 013d5a68a..eb92a8278 100644 --- a/tests/test_sql_refsols/tpch_q17_mysql.sql +++ b/tests/test_sql_refsols/tpch_q17_mysql.sql @@ -1,13 +1,13 @@ WITH _t AS ( SELECT - LINEITEM.l_extendedprice, - LINEITEM.l_quantity, - AVG(LINEITEM.l_quantity) OVER (PARTITION BY LINEITEM.l_partkey) AS _w - FROM tpch.PART AS PART - JOIN tpch.LINEITEM AS LINEITEM - ON LINEITEM.l_partkey = PART.p_partkey + lineitem.l_extendedprice, + lineitem.l_quantity, + AVG(lineitem.l_quantity) OVER (PARTITION BY lineitem.l_partkey) AS _w + FROM tpch.part AS part + JOIN tpch.lineitem AS lineitem + ON lineitem.l_partkey = part.p_partkey WHERE - PART.p_brand = 'Brand#23' AND PART.p_container = 'MED BOX' + part.p_brand = 'Brand#23' AND part.p_container = 'MED BOX' ) SELECT COALESCE(SUM(l_extendedprice), 0) / 7.0 AS AVG_YEARLY diff --git a/tests/test_sql_refsols/tpch_q17_snowflake.sql b/tests/test_sql_refsols/tpch_q17_snowflake.sql index ea50aeedf..5338e7f5c 100644 --- a/tests/test_sql_refsols/tpch_q17_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q17_snowflake.sql @@ -1,16 +1,16 @@ -WITH _T2 AS ( +WITH _t2 AS ( SELECT - LINEITEM.l_extendedprice AS L_EXTENDEDPRICE - FROM TPCH.PART AS PART - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_partkey = PART.p_partkey + lineitem.l_extendedprice + FROM tpch.part AS part + JOIN tpch.lineitem AS lineitem + ON lineitem.l_partkey = part.p_partkey WHERE - PART.p_brand = 'Brand#23' AND PART.p_container = 'MED BOX' + part.p_brand = 'Brand#23' AND part.p_container = 'MED BOX' QUALIFY - LINEITEM.l_quantity < ( - 0.2 * AVG(LINEITEM.l_quantity) OVER (PARTITION BY LINEITEM.l_partkey) + lineitem.l_quantity < ( + 0.2 * AVG(lineitem.l_quantity) OVER (PARTITION BY lineitem.l_partkey) ) ) SELECT - COALESCE(SUM(L_EXTENDEDPRICE), 0) / 7.0 AS AVG_YEARLY -FROM _T2 + COALESCE(SUM(l_extendedprice), 0) / 7.0 AS AVG_YEARLY +FROM _t2 diff --git a/tests/test_sql_refsols/tpch_q18_mysql.sql b/tests/test_sql_refsols/tpch_q18_mysql.sql index dea9c5fec..669914bd1 100644 --- a/tests/test_sql_refsols/tpch_q18_mysql.sql +++ b/tests/test_sql_refsols/tpch_q18_mysql.sql @@ -2,23 +2,23 @@ WITH _t1 AS ( SELECT SUM(l_quantity) AS sum_l_quantity, l_orderkey - FROM tpch.LINEITEM + FROM tpch.lineitem GROUP BY 2 ) SELECT - CUSTOMER.c_name AS C_NAME, - CUSTOMER.c_custkey AS C_CUSTKEY, - ORDERS.o_orderkey AS O_ORDERKEY, - ORDERS.o_orderdate AS O_ORDERDATE, - ORDERS.o_totalprice AS O_TOTALPRICE, + customer.c_name AS C_NAME, + customer.c_custkey AS C_CUSTKEY, + orders.o_orderkey AS O_ORDERKEY, + orders.o_orderdate AS O_ORDERDATE, + orders.o_totalprice AS O_TOTALPRICE, COALESCE(_t1.sum_l_quantity, 0) AS TOTAL_QUANTITY -FROM tpch.ORDERS AS ORDERS -JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey +FROM tpch.orders AS orders +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey JOIN _t1 AS _t1 ON NOT _t1.sum_l_quantity IS NULL - AND ORDERS.o_orderkey = _t1.l_orderkey + AND _t1.l_orderkey = orders.o_orderkey AND _t1.sum_l_quantity > 300 ORDER BY 5 DESC, diff --git a/tests/test_sql_refsols/tpch_q18_snowflake.sql b/tests/test_sql_refsols/tpch_q18_snowflake.sql index eedd7e04e..917d29d0b 100644 --- a/tests/test_sql_refsols/tpch_q18_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q18_snowflake.sql @@ -1,25 +1,25 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - SUM(l_quantity) AS SUM_L_QUANTITY, - l_orderkey AS L_ORDERKEY - FROM TPCH.LINEITEM + SUM(l_quantity) AS sum_l_quantity, + l_orderkey + FROM tpch.lineitem GROUP BY 2 ) SELECT - CUSTOMER.c_name AS C_NAME, - CUSTOMER.c_custkey AS C_CUSTKEY, - ORDERS.o_orderkey AS O_ORDERKEY, - ORDERS.o_orderdate AS O_ORDERDATE, - ORDERS.o_totalprice AS O_TOTALPRICE, - COALESCE(_T1.SUM_L_QUANTITY, 0) AS TOTAL_QUANTITY -FROM TPCH.ORDERS AS ORDERS -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey -JOIN _T1 AS _T1 - ON NOT _T1.SUM_L_QUANTITY IS NULL - AND ORDERS.o_orderkey = _T1.L_ORDERKEY - AND _T1.SUM_L_QUANTITY > 300 + customer.c_name AS C_NAME, + customer.c_custkey AS C_CUSTKEY, + orders.o_orderkey AS O_ORDERKEY, + orders.o_orderdate AS O_ORDERDATE, + orders.o_totalprice AS O_TOTALPRICE, + COALESCE(_t1.sum_l_quantity, 0) AS TOTAL_QUANTITY +FROM tpch.orders AS orders +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey +JOIN _t1 AS _t1 + ON NOT _t1.sum_l_quantity IS NULL + AND _t1.l_orderkey = orders.o_orderkey + AND _t1.sum_l_quantity > 300 ORDER BY 5 DESC NULLS LAST, 4 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q19_mysql.sql b/tests/test_sql_refsols/tpch_q19_mysql.sql index 105a94597..3ea806f1f 100644 --- a/tests/test_sql_refsols/tpch_q19_mysql.sql +++ b/tests/test_sql_refsols/tpch_q19_mysql.sql @@ -1,36 +1,36 @@ SELECT - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM tpch.LINEITEM AS LINEITEM -JOIN tpch.PART AS PART +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part ON ( ( - LINEITEM.l_quantity <= 11 - AND LINEITEM.l_quantity >= 1 - AND PART.p_brand = 'Brand#12' - AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') - AND PART.p_size <= 5 - AND PART.p_size >= 1 + lineitem.l_quantity <= 11 + AND lineitem.l_quantity >= 1 + AND part.p_brand = 'Brand#12' + AND part.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + AND part.p_size <= 5 + AND part.p_size >= 1 ) OR ( - LINEITEM.l_quantity <= 20 - AND LINEITEM.l_quantity >= 10 - AND PART.p_brand = 'Brand#23' - AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') - AND PART.p_size <= 10 - AND PART.p_size >= 1 + lineitem.l_quantity <= 20 + AND lineitem.l_quantity >= 10 + AND part.p_brand = 'Brand#23' + AND part.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') + AND part.p_size <= 10 + AND part.p_size >= 1 ) OR ( - LINEITEM.l_quantity <= 30 - AND LINEITEM.l_quantity >= 20 - AND PART.p_brand = 'Brand#34' - AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') - AND PART.p_size <= 15 - AND PART.p_size >= 1 + lineitem.l_quantity <= 30 + AND lineitem.l_quantity >= 20 + AND part.p_brand = 'Brand#34' + AND part.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + AND part.p_size <= 15 + AND part.p_size >= 1 ) ) - AND LINEITEM.l_partkey = PART.p_partkey + AND lineitem.l_partkey = part.p_partkey WHERE - LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' - AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') + lineitem.l_shipinstruct = 'DELIVER IN PERSON' + AND lineitem.l_shipmode IN ('AIR', 'AIR REG') diff --git a/tests/test_sql_refsols/tpch_q19_snowflake.sql b/tests/test_sql_refsols/tpch_q19_snowflake.sql index 3e7099562..3ea806f1f 100644 --- a/tests/test_sql_refsols/tpch_q19_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q19_snowflake.sql @@ -1,36 +1,36 @@ SELECT - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part ON ( ( - LINEITEM.l_quantity <= 11 - AND LINEITEM.l_quantity >= 1 - AND PART.p_brand = 'Brand#12' - AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') - AND PART.p_size <= 5 - AND PART.p_size >= 1 + lineitem.l_quantity <= 11 + AND lineitem.l_quantity >= 1 + AND part.p_brand = 'Brand#12' + AND part.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + AND part.p_size <= 5 + AND part.p_size >= 1 ) OR ( - LINEITEM.l_quantity <= 20 - AND LINEITEM.l_quantity >= 10 - AND PART.p_brand = 'Brand#23' - AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') - AND PART.p_size <= 10 - AND PART.p_size >= 1 + lineitem.l_quantity <= 20 + AND lineitem.l_quantity >= 10 + AND part.p_brand = 'Brand#23' + AND part.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') + AND part.p_size <= 10 + AND part.p_size >= 1 ) OR ( - LINEITEM.l_quantity <= 30 - AND LINEITEM.l_quantity >= 20 - AND PART.p_brand = 'Brand#34' - AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') - AND PART.p_size <= 15 - AND PART.p_size >= 1 + lineitem.l_quantity <= 30 + AND lineitem.l_quantity >= 20 + AND part.p_brand = 'Brand#34' + AND part.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + AND part.p_size <= 15 + AND part.p_size >= 1 ) ) - AND LINEITEM.l_partkey = PART.p_partkey + AND lineitem.l_partkey = part.p_partkey WHERE - LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' - AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') + lineitem.l_shipinstruct = 'DELIVER IN PERSON' + AND lineitem.l_shipmode IN ('AIR', 'AIR REG') diff --git a/tests/test_sql_refsols/tpch_q1_mysql.sql b/tests/test_sql_refsols/tpch_q1_mysql.sql index 094fca1f5..fbd2fbf6c 100644 --- a/tests/test_sql_refsols/tpch_q1_mysql.sql +++ b/tests/test_sql_refsols/tpch_q1_mysql.sql @@ -15,7 +15,7 @@ SELECT AVG(l_extendedprice) AS AVG_PRICE, AVG(l_discount) AS AVG_DISC, COUNT(*) AS COUNT_ORDER -FROM tpch.LINEITEM +FROM tpch.lineitem WHERE l_shipdate <= CAST('1998-12-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/tpch_q1_snowflake.sql b/tests/test_sql_refsols/tpch_q1_snowflake.sql index 34e204133..a060e085e 100644 --- a/tests/test_sql_refsols/tpch_q1_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q1_snowflake.sql @@ -15,7 +15,7 @@ SELECT AVG(l_extendedprice) AS AVG_PRICE, AVG(l_discount) AS AVG_DISC, COUNT(*) AS COUNT_ORDER -FROM TPCH.LINEITEM +FROM tpch.lineitem WHERE l_shipdate <= CAST('1998-12-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/tpch_q20_mysql.sql b/tests/test_sql_refsols/tpch_q20_mysql.sql index dd97c28d6..14e7600c7 100644 --- a/tests/test_sql_refsols/tpch_q20_mysql.sql +++ b/tests/test_sql_refsols/tpch_q20_mysql.sql @@ -2,38 +2,38 @@ WITH _s3 AS ( SELECT SUM(l_quantity) AS sum_l_quantity, l_partkey - FROM tpch.LINEITEM + FROM tpch.lineitem WHERE EXTRACT(YEAR FROM CAST(l_shipdate AS DATETIME)) = 1994 GROUP BY 2 ), _s5 AS ( SELECT - PART.p_partkey, + part.p_partkey, _s3.sum_l_quantity - FROM tpch.PART AS PART + FROM tpch.part AS part JOIN _s3 AS _s3 - ON PART.p_partkey = _s3.l_partkey + ON _s3.l_partkey = part.p_partkey WHERE - PART.p_name LIKE 'forest%' + part.p_name LIKE 'forest%' ), _s7 AS ( SELECT DISTINCT - PARTSUPP.ps_suppkey - FROM tpch.PARTSUPP AS PARTSUPP + partsupp.ps_suppkey + FROM tpch.partsupp AS partsupp JOIN _s5 AS _s5 - ON PARTSUPP.ps_availqty > ( + ON _s5.p_partkey = partsupp.ps_partkey + AND partsupp.ps_availqty > ( 0.5 * COALESCE(_s5.sum_l_quantity, 0) ) - AND PARTSUPP.ps_partkey = _s5.p_partkey ) SELECT - SUPPLIER.s_name COLLATE utf8mb4_bin AS S_NAME, - SUPPLIER.s_address AS S_ADDRESS -FROM tpch.SUPPLIER AS SUPPLIER -JOIN tpch.NATION AS NATION - ON NATION.n_name = 'CANADA' AND NATION.n_nationkey = SUPPLIER.s_nationkey + s_name COLLATE utf8mb4_bin AS S_NAME, + supplier.s_address AS S_ADDRESS +FROM tpch.supplier AS supplier +JOIN tpch.nation AS nation + ON nation.n_name = 'CANADA' AND nation.n_nationkey = supplier.s_nationkey JOIN _s7 AS _s7 - ON SUPPLIER.s_suppkey = _s7.ps_suppkey + ON _s7.ps_suppkey = supplier.s_suppkey ORDER BY 1 LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index afd1a3c47..175c86131 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -1,39 +1,39 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - SUM(l_quantity) AS SUM_L_QUANTITY, - l_partkey AS L_PARTKEY - FROM TPCH.LINEITEM + SUM(l_quantity) AS sum_l_quantity, + l_partkey + FROM tpch.lineitem WHERE YEAR(CAST(l_shipdate AS TIMESTAMP)) = 1994 GROUP BY 2 -), _S5 AS ( +), _s5 AS ( SELECT - PART.p_partkey AS P_PARTKEY, - _S3.SUM_L_QUANTITY - FROM TPCH.PART AS PART - JOIN _S3 AS _S3 - ON PART.p_partkey = _S3.L_PARTKEY + part.p_partkey, + _s3.sum_l_quantity + FROM tpch.part AS part + JOIN _s3 AS _s3 + ON _s3.l_partkey = part.p_partkey WHERE - STARTSWITH(PART.p_name, 'forest') -), _S7 AS ( + STARTSWITH(part.p_name, 'forest') +), _s7 AS ( SELECT DISTINCT - PARTSUPP.ps_suppkey AS PS_SUPPKEY - FROM TPCH.PARTSUPP AS PARTSUPP - JOIN _S5 AS _S5 - ON PARTSUPP.ps_availqty > ( - 0.5 * COALESCE(_S5.SUM_L_QUANTITY, 0) + partsupp.ps_suppkey + FROM tpch.partsupp AS partsupp + JOIN _s5 AS _s5 + ON _s5.p_partkey = partsupp.ps_partkey + AND partsupp.ps_availqty > ( + 0.5 * COALESCE(_s5.sum_l_quantity, 0) ) - AND PARTSUPP.ps_partkey = _S5.P_PARTKEY ) SELECT - SUPPLIER.s_name AS S_NAME, - SUPPLIER.s_address AS S_ADDRESS -FROM TPCH.SUPPLIER AS SUPPLIER -JOIN TPCH.NATION AS NATION - ON NATION.n_name = 'CANADA' AND NATION.n_nationkey = SUPPLIER.s_nationkey -JOIN _S7 AS _S7 - ON SUPPLIER.s_suppkey = _S7.PS_SUPPKEY + supplier.s_name AS S_NAME, + supplier.s_address AS S_ADDRESS +FROM tpch.supplier AS supplier +JOIN tpch.nation AS nation + ON nation.n_name = 'CANADA' AND nation.n_nationkey = supplier.s_nationkey +JOIN _s7 AS _s7 + ON _s7.ps_suppkey = supplier.s_suppkey ORDER BY 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q21_mysql.sql b/tests/test_sql_refsols/tpch_q21_mysql.sql index a8995442a..5288eb685 100644 --- a/tests/test_sql_refsols/tpch_q21_mysql.sql +++ b/tests/test_sql_refsols/tpch_q21_mysql.sql @@ -5,21 +5,21 @@ WITH _t5 AS ( l_orderkey, l_receiptdate, l_suppkey - FROM tpch.LINEITEM + FROM tpch.lineitem WHERE l_commitdate < l_receiptdate ), _t3 AS ( SELECT ANY_VALUE(_t5.l_suppkey) AS anything_l_suppkey, - ANY_VALUE(ORDERS.o_orderstatus) AS anything_o_orderstatus, + ANY_VALUE(orders.o_orderstatus) AS anything_o_orderstatus, _t5.l_linenumber, _t5.l_orderkey, - ORDERS.o_orderkey + orders.o_orderkey FROM _t5 AS _t5 - JOIN tpch.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _t5.l_orderkey - JOIN tpch.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _t5.l_suppkey + JOIN tpch.orders AS orders + ON _t5.l_orderkey = orders.o_orderkey + JOIN tpch.lineitem AS lineitem + ON _t5.l_suppkey <> lineitem.l_suppkey AND lineitem.l_orderkey = orders.o_orderkey GROUP BY 3, 4, @@ -28,14 +28,14 @@ WITH _t5 AS ( SELECT _t6.l_linenumber AS _u_1, _t6.l_orderkey AS _u_2, - ORDERS.o_orderkey AS _u_3 + orders.o_orderkey AS _u_3 FROM _t5 AS _t6 - JOIN tpch.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _t6.l_orderkey - JOIN tpch.LINEITEM AS LINEITEM - ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate - AND LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_suppkey <> _t6.l_suppkey + JOIN tpch.orders AS orders + ON _t6.l_orderkey = orders.o_orderkey + JOIN tpch.lineitem AS lineitem + ON _t6.l_suppkey <> lineitem.l_suppkey + AND lineitem.l_commitdate < lineitem.l_receiptdate + AND lineitem.l_orderkey = orders.o_orderkey GROUP BY 1, 2, @@ -55,13 +55,13 @@ WITH _t5 AS ( 2 ) SELECT - SUPPLIER.s_name COLLATE utf8mb4_bin AS S_NAME, + s_name COLLATE utf8mb4_bin AS S_NAME, COALESCE(_s13.n_rows, 0) AS NUMWAIT -FROM tpch.SUPPLIER AS SUPPLIER -JOIN tpch.NATION AS NATION - ON NATION.n_name = 'SAUDI ARABIA' AND NATION.n_nationkey = SUPPLIER.s_nationkey +FROM tpch.supplier AS supplier +JOIN tpch.nation AS nation + ON nation.n_name = 'SAUDI ARABIA' AND nation.n_nationkey = supplier.s_nationkey LEFT JOIN _s13 AS _s13 - ON SUPPLIER.s_suppkey = _s13.anything_l_suppkey + ON _s13.anything_l_suppkey = supplier.s_suppkey ORDER BY 2 DESC, 1 diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql index 1a48842f6..d2b7c0da2 100644 --- a/tests/test_sql_refsols/tpch_q21_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -1,67 +1,67 @@ -WITH _T5 AS ( +WITH _t5 AS ( SELECT - l_commitdate AS L_COMMITDATE, - l_linenumber AS L_LINENUMBER, - l_orderkey AS L_ORDERKEY, - l_receiptdate AS L_RECEIPTDATE, - l_suppkey AS L_SUPPKEY - FROM TPCH.LINEITEM + l_commitdate, + l_linenumber, + l_orderkey, + l_receiptdate, + l_suppkey + FROM tpch.lineitem WHERE l_commitdate < l_receiptdate -), _T3 AS ( +), _t3 AS ( SELECT - ANY_VALUE(_T5.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, - ANY_VALUE(ORDERS.o_orderstatus) AS ANYTHING_O_ORDERSTATUS, - _T5.L_LINENUMBER, - _T5.L_ORDERKEY, - ORDERS.o_orderkey AS O_ORDERKEY - FROM _T5 AS _T5 - JOIN TPCH.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _T5.L_ORDERKEY - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T5.L_SUPPKEY + ANY_VALUE(_t5.l_suppkey) AS anything_l_suppkey, + ANY_VALUE(orders.o_orderstatus) AS anything_o_orderstatus, + _t5.l_linenumber, + _t5.l_orderkey, + orders.o_orderkey + FROM _t5 AS _t5 + JOIN tpch.orders AS orders + ON _t5.l_orderkey = orders.o_orderkey + JOIN tpch.lineitem AS lineitem + ON _t5.l_suppkey <> lineitem.l_suppkey AND lineitem.l_orderkey = orders.o_orderkey GROUP BY 3, 4, 5 ), _u_0 AS ( SELECT - _T6.L_LINENUMBER AS _u_1, - _T6.L_ORDERKEY AS _u_2, - ORDERS.o_orderkey AS _u_3 - FROM _T5 AS _T6 - JOIN TPCH.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _T6.L_ORDERKEY - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate - AND LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_suppkey <> _T6.L_SUPPKEY + _t6.l_linenumber AS _u_1, + _t6.l_orderkey AS _u_2, + orders.o_orderkey AS _u_3 + FROM _t5 AS _t6 + JOIN tpch.orders AS orders + ON _t6.l_orderkey = orders.o_orderkey + JOIN tpch.lineitem AS lineitem + ON _t6.l_suppkey <> lineitem.l_suppkey + AND lineitem.l_commitdate < lineitem.l_receiptdate + AND lineitem.l_orderkey = orders.o_orderkey GROUP BY 1, 2, 3 -), _S13 AS ( +), _s13 AS ( SELECT - COUNT(*) AS N_ROWS, - _T3.ANYTHING_L_SUPPKEY - FROM _T3 AS _T3 + COUNT(*) AS n_rows, + _t3.anything_l_suppkey + FROM _t3 AS _t3 LEFT JOIN _u_0 AS _u_0 - ON _T3.L_LINENUMBER = _u_0._u_1 - AND _T3.L_ORDERKEY = _u_0._u_2 - AND _T3.O_ORDERKEY = _u_0._u_3 + ON _t3.l_linenumber = _u_0._u_1 + AND _t3.l_orderkey = _u_0._u_2 + AND _t3.o_orderkey = _u_0._u_3 WHERE - _T3.ANYTHING_O_ORDERSTATUS = 'F' AND _u_0._u_1 IS NULL + _t3.anything_o_orderstatus = 'F' AND _u_0._u_1 IS NULL GROUP BY 2 ) SELECT - SUPPLIER.s_name AS S_NAME, - COALESCE(_S13.N_ROWS, 0) AS NUMWAIT -FROM TPCH.SUPPLIER AS SUPPLIER -JOIN TPCH.NATION AS NATION - ON NATION.n_name = 'SAUDI ARABIA' AND NATION.n_nationkey = SUPPLIER.s_nationkey -LEFT JOIN _S13 AS _S13 - ON SUPPLIER.s_suppkey = _S13.ANYTHING_L_SUPPKEY + supplier.s_name AS S_NAME, + COALESCE(_s13.n_rows, 0) AS NUMWAIT +FROM tpch.supplier AS supplier +JOIN tpch.nation AS nation + ON nation.n_name = 'SAUDI ARABIA' AND nation.n_nationkey = supplier.s_nationkey +LEFT JOIN _s13 AS _s13 + ON _s13.anything_l_suppkey = supplier.s_suppkey ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q22_mysql.sql b/tests/test_sql_refsols/tpch_q22_mysql.sql index bd20251f5..f7a191ff6 100644 --- a/tests/test_sql_refsols/tpch_q22_mysql.sql +++ b/tests/test_sql_refsols/tpch_q22_mysql.sql @@ -1,28 +1,28 @@ WITH _s0 AS ( SELECT AVG(c_acctbal) AS global_avg_balance - FROM tpch.CUSTOMER + FROM tpch.customer WHERE - c_acctbal > 0.0 - AND SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') + SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') + AND c_acctbal > 0.0 ), _s3 AS ( SELECT COUNT(*) AS n_rows, o_custkey - FROM tpch.ORDERS + FROM tpch.orders GROUP BY 2 ) SELECT - SUBSTRING(CUSTOMER.c_phone, 1, 2) COLLATE utf8mb4_bin AS CNTRY_CODE, + cntry_code COLLATE utf8mb4_bin AS CNTRY_CODE, COUNT(*) AS NUM_CUSTS, - COALESCE(SUM(CUSTOMER.c_acctbal), 0) AS TOTACCTBAL + COALESCE(SUM(customer.c_acctbal), 0) AS TOTACCTBAL FROM _s0 AS _s0 -JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_acctbal > _s0.global_avg_balance - AND SUBSTRING(CUSTOMER.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') +JOIN tpch.customer AS customer + ON SUBSTRING(customer.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') + AND _s0.global_avg_balance < customer.c_acctbal LEFT JOIN _s3 AS _s3 - ON CUSTOMER.c_custkey = _s3.o_custkey + ON _s3.o_custkey = customer.c_custkey WHERE _s3.n_rows = 0 OR _s3.n_rows IS NULL GROUP BY diff --git a/tests/test_sql_refsols/tpch_q22_snowflake.sql b/tests/test_sql_refsols/tpch_q22_snowflake.sql index c95df37aa..6b975db02 100644 --- a/tests/test_sql_refsols/tpch_q22_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q22_snowflake.sql @@ -1,30 +1,30 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - AVG(c_acctbal) AS GLOBAL_AVG_BALANCE - FROM TPCH.CUSTOMER + AVG(c_acctbal) AS global_avg_balance + FROM tpch.customer WHERE - c_acctbal > 0.0 - AND SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') -), _S3 AS ( + SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') + AND c_acctbal > 0.0 +), _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + COUNT(*) AS n_rows, + o_custkey + FROM tpch.orders GROUP BY 2 ) SELECT - SUBSTRING(CUSTOMER.c_phone, 1, 2) AS CNTRY_CODE, + SUBSTRING(customer.c_phone, 1, 2) AS CNTRY_CODE, COUNT(*) AS NUM_CUSTS, - COALESCE(SUM(CUSTOMER.c_acctbal), 0) AS TOTACCTBAL -FROM _S0 AS _S0 -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_acctbal > _S0.GLOBAL_AVG_BALANCE - AND SUBSTRING(CUSTOMER.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') -LEFT JOIN _S3 AS _S3 - ON CUSTOMER.c_custkey = _S3.O_CUSTKEY + COALESCE(SUM(customer.c_acctbal), 0) AS TOTACCTBAL +FROM _s0 AS _s0 +JOIN tpch.customer AS customer + ON SUBSTRING(customer.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') + AND _s0.global_avg_balance < customer.c_acctbal +LEFT JOIN _s3 AS _s3 + ON _s3.o_custkey = customer.c_custkey WHERE - _S3.N_ROWS = 0 OR _S3.N_ROWS IS NULL + _s3.n_rows = 0 OR _s3.n_rows IS NULL GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q2_mysql.sql b/tests/test_sql_refsols/tpch_q2_mysql.sql index 8dbffd175..9a85be29b 100644 --- a/tests/test_sql_refsols/tpch_q2_mysql.sql +++ b/tests/test_sql_refsols/tpch_q2_mysql.sql @@ -1,25 +1,25 @@ WITH _t AS ( SELECT - NATION.n_name, - PART.p_mfgr, - PART.p_partkey, - SUPPLIER.s_acctbal, - SUPPLIER.s_address, - SUPPLIER.s_comment, - SUPPLIER.s_name, - SUPPLIER.s_phone, - RANK() OVER (PARTITION BY PARTSUPP.ps_partkey ORDER BY CASE WHEN PARTSUPP.ps_supplycost IS NULL THEN 1 ELSE 0 END, PARTSUPP.ps_supplycost) AS _w - FROM tpch.PART AS PART - JOIN tpch.PARTSUPP AS PARTSUPP - ON PART.p_partkey = PARTSUPP.ps_partkey - JOIN tpch.SUPPLIER AS SUPPLIER - ON PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey - JOIN tpch.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey - JOIN tpch.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'EUROPE' + nation.n_name, + part.p_mfgr, + part.p_partkey, + supplier.s_acctbal, + supplier.s_address, + supplier.s_comment, + supplier.s_name, + supplier.s_phone, + RANK() OVER (PARTITION BY partsupp.ps_partkey ORDER BY CASE WHEN partsupp.ps_supplycost IS NULL THEN 1 ELSE 0 END, partsupp.ps_supplycost) AS _w + FROM tpch.part AS part + JOIN tpch.partsupp AS partsupp + ON part.p_partkey = partsupp.ps_partkey + JOIN tpch.supplier AS supplier + ON partsupp.ps_suppkey = supplier.s_suppkey + JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey + JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'EUROPE' WHERE - PART.p_size = 15 AND PART.p_type LIKE '%BRASS' + part.p_size = 15 AND part.p_type LIKE '%BRASS' ) SELECT s_acctbal AS S_ACCTBAL, diff --git a/tests/test_sql_refsols/tpch_q2_snowflake.sql b/tests/test_sql_refsols/tpch_q2_snowflake.sql index 346be1649..b256ac78c 100644 --- a/tests/test_sql_refsols/tpch_q2_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q2_snowflake.sql @@ -1,37 +1,37 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - NATION.n_name AS N_NAME, - PART.p_mfgr AS P_MFGR, - PART.p_partkey AS P_PARTKEY, - SUPPLIER.s_acctbal AS S_ACCTBAL, - SUPPLIER.s_address AS S_ADDRESS, - SUPPLIER.s_comment AS S_COMMENT, - SUPPLIER.s_name AS S_NAME, - SUPPLIER.s_phone AS S_PHONE - FROM TPCH.PART AS PART - JOIN TPCH.PARTSUPP AS PARTSUPP - ON PART.p_partkey = PARTSUPP.ps_partkey - JOIN TPCH.SUPPLIER AS SUPPLIER - ON PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey - JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey - JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'EUROPE' + nation.n_name, + part.p_mfgr, + part.p_partkey, + supplier.s_acctbal, + supplier.s_address, + supplier.s_comment, + supplier.s_name, + supplier.s_phone + FROM tpch.part AS part + JOIN tpch.partsupp AS partsupp + ON part.p_partkey = partsupp.ps_partkey + JOIN tpch.supplier AS supplier + ON partsupp.ps_suppkey = supplier.s_suppkey + JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey + JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'EUROPE' WHERE - ENDSWITH(PART.p_type, 'BRASS') AND PART.p_size = 15 + ENDSWITH(part.p_type, 'BRASS') AND part.p_size = 15 QUALIFY - RANK() OVER (PARTITION BY PARTSUPP.ps_partkey ORDER BY PARTSUPP.ps_supplycost) = 1 + RANK() OVER (PARTITION BY partsupp.ps_partkey ORDER BY partsupp.ps_supplycost) = 1 ) SELECT - S_ACCTBAL, - S_NAME, - N_NAME, - P_PARTKEY, - P_MFGR, - S_ADDRESS, - S_PHONE, - S_COMMENT -FROM _T1 + s_acctbal AS S_ACCTBAL, + s_name AS S_NAME, + n_name AS N_NAME, + p_partkey AS P_PARTKEY, + p_mfgr AS P_MFGR, + s_address AS S_ADDRESS, + s_phone AS S_PHONE, + s_comment AS S_COMMENT +FROM _t1 ORDER BY 1 DESC NULLS LAST, 3 NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q3_mysql.sql b/tests/test_sql_refsols/tpch_q3_mysql.sql index e8aedea94..9be0110e7 100644 --- a/tests/test_sql_refsols/tpch_q3_mysql.sql +++ b/tests/test_sql_refsols/tpch_q3_mysql.sql @@ -1,18 +1,18 @@ SELECT - LINEITEM.l_orderkey AS L_ORDERKEY, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + lineitem.l_orderkey AS L_ORDERKEY, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE, - ORDERS.o_orderdate AS O_ORDERDATE, - ORDERS.o_shippriority AS O_SHIPPRIORITY -FROM tpch.ORDERS AS ORDERS -JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey AND CUSTOMER.c_mktsegment = 'BUILDING' -JOIN tpch.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_shipdate > CAST('1995-03-15' AS DATE) + orders.o_orderdate AS O_ORDERDATE, + orders.o_shippriority AS O_SHIPPRIORITY +FROM tpch.orders AS orders +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey AND customer.c_mktsegment = 'BUILDING' +JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey + AND lineitem.l_shipdate > CAST('1995-03-15' AS DATE) WHERE - ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) + orders.o_orderdate < CAST('1995-03-15' AS DATE) GROUP BY 1, 3, diff --git a/tests/test_sql_refsols/tpch_q3_snowflake.sql b/tests/test_sql_refsols/tpch_q3_snowflake.sql index 8c0db572f..6804cc526 100644 --- a/tests/test_sql_refsols/tpch_q3_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q3_snowflake.sql @@ -1,18 +1,18 @@ SELECT - LINEITEM.l_orderkey AS L_ORDERKEY, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + lineitem.l_orderkey AS L_ORDERKEY, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE, - ORDERS.o_orderdate AS O_ORDERDATE, - ORDERS.o_shippriority AS O_SHIPPRIORITY -FROM TPCH.ORDERS AS ORDERS -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey AND CUSTOMER.c_mktsegment = 'BUILDING' -JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_shipdate > CAST('1995-03-15' AS DATE) + orders.o_orderdate AS O_ORDERDATE, + orders.o_shippriority AS O_SHIPPRIORITY +FROM tpch.orders AS orders +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey AND customer.c_mktsegment = 'BUILDING' +JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey + AND lineitem.l_shipdate > CAST('1995-03-15' AS DATE) WHERE - ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) + orders.o_orderdate < CAST('1995-03-15' AS DATE) GROUP BY 1, 3, diff --git a/tests/test_sql_refsols/tpch_q4_mysql.sql b/tests/test_sql_refsols/tpch_q4_mysql.sql index 4445a7ba6..2188c1ef4 100644 --- a/tests/test_sql_refsols/tpch_q4_mysql.sql +++ b/tests/test_sql_refsols/tpch_q4_mysql.sql @@ -1,21 +1,21 @@ WITH _u_0 AS ( SELECT l_orderkey AS _u_1 - FROM tpch.LINEITEM + FROM tpch.lineitem WHERE l_commitdate < l_receiptdate GROUP BY 1 ) SELECT - ORDERS.o_orderpriority COLLATE utf8mb4_bin AS O_ORDERPRIORITY, + o_orderpriority COLLATE utf8mb4_bin AS O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT -FROM tpch.ORDERS AS ORDERS +FROM tpch.orders AS orders LEFT JOIN _u_0 AS _u_0 - ON ORDERS.o_orderkey = _u_0._u_1 + ON _u_0._u_1 = orders.o_orderkey WHERE - EXTRACT(QUARTER FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 3 - AND EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 1993 + EXTRACT(QUARTER FROM CAST(orders.o_orderdate AS DATETIME)) = 3 + AND EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) = 1993 AND NOT _u_0._u_1 IS NULL GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql index 08e5c4532..95df76f42 100644 --- a/tests/test_sql_refsols/tpch_q4_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -1,22 +1,22 @@ WITH _u_0 AS ( SELECT l_orderkey AS _u_1 - FROM TPCH.LINEITEM + FROM tpch.lineitem WHERE l_commitdate < l_receiptdate GROUP BY 1 ) SELECT - ORDERS.o_orderpriority AS O_ORDERPRIORITY, + orders.o_orderpriority AS O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT -FROM TPCH.ORDERS AS ORDERS +FROM tpch.orders AS orders LEFT JOIN _u_0 AS _u_0 - ON ORDERS.o_orderkey = _u_0._u_1 + ON _u_0._u_1 = orders.o_orderkey WHERE NOT _u_0._u_1 IS NULL - AND QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 3 - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 + AND QUARTER(CAST(orders.o_orderdate AS TIMESTAMP)) = 3 + AND YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q5_mysql.sql b/tests/test_sql_refsols/tpch_q5_mysql.sql index 3c0568734..53cada967 100644 --- a/tests/test_sql_refsols/tpch_q5_mysql.sql +++ b/tests/test_sql_refsols/tpch_q5_mysql.sql @@ -1,30 +1,30 @@ WITH _s11 AS ( SELECT - NATION.n_name, - SUPPLIER.s_suppkey - FROM tpch.SUPPLIER AS SUPPLIER - JOIN tpch.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey + nation.n_name, + supplier.s_suppkey + FROM tpch.supplier AS supplier + JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey ) SELECT - ANY_VALUE(NATION.n_name) AS N_NAME, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ANY_VALUE(nation.n_name) AS N_NAME, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM tpch.NATION AS NATION -JOIN tpch.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' -JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN tpch.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) - AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) -JOIN tpch.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.orders AS orders + ON customer.c_custkey = orders.o_custkey + AND orders.o_orderdate < CAST('1995-01-01' AS DATE) + AND orders.o_orderdate >= CAST('1994-01-01' AS DATE) +JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey JOIN _s11 AS _s11 - ON LINEITEM.l_suppkey = _s11.s_suppkey AND NATION.n_name = _s11.n_name + ON _s11.n_name = nation.n_name AND _s11.s_suppkey = lineitem.l_suppkey GROUP BY - NATION.n_nationkey + nation.n_nationkey ORDER BY 2 DESC diff --git a/tests/test_sql_refsols/tpch_q5_snowflake.sql b/tests/test_sql_refsols/tpch_q5_snowflake.sql index ceadd5291..443739351 100644 --- a/tests/test_sql_refsols/tpch_q5_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q5_snowflake.sql @@ -1,30 +1,30 @@ -WITH _S11 AS ( +WITH _s11 AS ( SELECT - NATION.n_name AS N_NAME, - SUPPLIER.s_suppkey AS S_SUPPKEY - FROM TPCH.SUPPLIER AS SUPPLIER - JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey + nation.n_name, + supplier.s_suppkey + FROM tpch.supplier AS supplier + JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey ) SELECT - ANY_VALUE(NATION.n_name) AS N_NAME, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ANY_VALUE(nation.n_name) AS N_NAME, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM TPCH.NATION AS NATION -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) - AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) -JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey -JOIN _S11 AS _S11 - ON LINEITEM.l_suppkey = _S11.S_SUPPKEY AND NATION.n_name = _S11.N_NAME +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.orders AS orders + ON customer.c_custkey = orders.o_custkey + AND orders.o_orderdate < CAST('1995-01-01' AS DATE) + AND orders.o_orderdate >= CAST('1994-01-01' AS DATE) +JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey +JOIN _s11 AS _s11 + ON _s11.n_name = nation.n_name AND _s11.s_suppkey = lineitem.l_suppkey GROUP BY - NATION.n_nationkey + nation.n_nationkey ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/tpch_q6_mysql.sql b/tests/test_sql_refsols/tpch_q6_mysql.sql index ab27699f4..93d3c085b 100644 --- a/tests/test_sql_refsols/tpch_q6_mysql.sql +++ b/tests/test_sql_refsols/tpch_q6_mysql.sql @@ -1,6 +1,6 @@ SELECT COALESCE(SUM(l_extendedprice * l_discount), 0) AS REVENUE -FROM tpch.LINEITEM +FROM tpch.lineitem WHERE l_discount <= 0.07 AND l_discount >= 0.05 diff --git a/tests/test_sql_refsols/tpch_q6_snowflake.sql b/tests/test_sql_refsols/tpch_q6_snowflake.sql index 7a58dc75a..93d3c085b 100644 --- a/tests/test_sql_refsols/tpch_q6_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q6_snowflake.sql @@ -1,6 +1,6 @@ SELECT COALESCE(SUM(l_extendedprice * l_discount), 0) AS REVENUE -FROM TPCH.LINEITEM +FROM tpch.lineitem WHERE l_discount <= 0.07 AND l_discount >= 0.05 diff --git a/tests/test_sql_refsols/tpch_q7_mysql.sql b/tests/test_sql_refsols/tpch_q7_mysql.sql index 5aad518ef..98c928103 100644 --- a/tests/test_sql_refsols/tpch_q7_mysql.sql +++ b/tests/test_sql_refsols/tpch_q7_mysql.sql @@ -1,41 +1,41 @@ WITH _s9 AS ( SELECT - NATION.n_name, - ORDERS.o_orderkey - FROM tpch.ORDERS AS ORDERS - JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey - JOIN tpch.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + nation.n_name, + orders.o_orderkey + FROM tpch.orders AS orders + JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey + JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey AND ( - NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' + nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' ) ) SELECT - NATION.n_name COLLATE utf8mb4_bin AS SUPP_NATION, + supp_nation COLLATE utf8mb4_bin AS SUPP_NATION, _s9.n_name COLLATE utf8mb4_bin AS CUST_NATION, - EXTRACT(YEAR FROM CAST(LINEITEM.l_shipdate AS DATETIME)) AS L_YEAR, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + EXTRACT(YEAR FROM CAST(lineitem.l_shipdate AS DATETIME)) AS L_YEAR, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM tpch.LINEITEM AS LINEITEM -JOIN tpch.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN tpch.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey +FROM tpch.lineitem AS lineitem +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey JOIN _s9 AS _s9 - ON LINEITEM.l_orderkey = _s9.o_orderkey - AND ( - NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' + ON ( + _s9.n_name = 'FRANCE' OR nation.n_name = 'FRANCE' ) AND ( - NATION.n_name = 'FRANCE' OR _s9.n_name = 'FRANCE' + _s9.n_name = 'GERMANY' OR nation.n_name = 'GERMANY' ) + AND _s9.o_orderkey = lineitem.l_orderkey AND ( - NATION.n_name = 'GERMANY' OR _s9.n_name = 'GERMANY' + nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' ) WHERE - EXTRACT(YEAR FROM CAST(LINEITEM.l_shipdate AS DATETIME)) IN (1995, 1996) + EXTRACT(YEAR FROM CAST(lineitem.l_shipdate AS DATETIME)) IN (1995, 1996) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index 2d651a0f8..439889188 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -1,41 +1,41 @@ -WITH _S9 AS ( +WITH _s9 AS ( SELECT - NATION.n_name AS N_NAME, - ORDERS.o_orderkey AS O_ORDERKEY - FROM TPCH.ORDERS AS ORDERS - JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey - JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + nation.n_name, + orders.o_orderkey + FROM tpch.orders AS orders + JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey + JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey AND ( - NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' + nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' ) ) SELECT - NATION.n_name AS SUPP_NATION, - _S9.N_NAME AS CUST_NATION, - YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) AS L_YEAR, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + nation.n_name AS SUPP_NATION, + _s9.n_name AS CUST_NATION, + YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) AS L_YEAR, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey -JOIN _S9 AS _S9 - ON LINEITEM.l_orderkey = _S9.O_ORDERKEY - AND ( - NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' +FROM tpch.lineitem AS lineitem +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey +JOIN _s9 AS _s9 + ON ( + _s9.n_name = 'FRANCE' OR nation.n_name = 'FRANCE' ) AND ( - NATION.n_name = 'FRANCE' OR _S9.N_NAME = 'FRANCE' + _s9.n_name = 'GERMANY' OR nation.n_name = 'GERMANY' ) + AND _s9.o_orderkey = lineitem.l_orderkey AND ( - NATION.n_name = 'GERMANY' OR _S9.N_NAME = 'GERMANY' + nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' ) WHERE - YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) IN (1995, 1996) + YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) IN (1995, 1996) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q8_mysql.sql b/tests/test_sql_refsols/tpch_q8_mysql.sql index 997d3596f..0ecdac7ba 100644 --- a/tests/test_sql_refsols/tpch_q8_mysql.sql +++ b/tests/test_sql_refsols/tpch_q8_mysql.sql @@ -1,34 +1,34 @@ SELECT - EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) AS O_YEAR, + EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) AS O_YEAR, COALESCE( SUM( CASE - WHEN NATION_2.n_name = 'BRAZIL' - THEN LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + WHEN nation_2.n_name = 'BRAZIL' + THEN lineitem.l_extendedprice * ( + 1 - lineitem.l_discount ) ELSE 0 END ), 0 - ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ) / COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS MKT_SHARE -FROM tpch.LINEITEM AS LINEITEM -JOIN tpch.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' -JOIN tpch.ORDERS AS ORDERS - ON EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) IN (1995, 1996) - AND LINEITEM.l_orderkey = ORDERS.o_orderkey -JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey -JOIN tpch.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN tpch.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' -JOIN tpch.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN tpch.NATION AS NATION_2 - ON NATION_2.n_nationkey = SUPPLIER.s_nationkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey AND part.p_type = 'ECONOMY ANODIZED STEEL' +JOIN tpch.orders AS orders + ON EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) IN (1995, 1996) + AND lineitem.l_orderkey = orders.o_orderkey +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation_2 + ON nation_2.n_nationkey = supplier.s_nationkey GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql index 38122ff7a..599805c5c 100644 --- a/tests/test_sql_refsols/tpch_q8_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -1,34 +1,34 @@ SELECT - YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) AS O_YEAR, + YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) AS O_YEAR, COALESCE( SUM( IFF( - NATION_2.n_name = 'BRAZIL', - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + nation_2.n_name = 'BRAZIL', + lineitem.l_extendedprice * ( + 1 - lineitem.l_discount ), 0 ) ), 0 - ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ) / COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS MKT_SHARE -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' -JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) IN (1995, 1996) -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey -JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' -JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN TPCH.NATION AS NATION_2 - ON NATION_2.n_nationkey = SUPPLIER.s_nationkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey AND part.p_type = 'ECONOMY ANODIZED STEEL' +JOIN tpch.orders AS orders + ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) IN (1995, 1996) + AND lineitem.l_orderkey = orders.o_orderkey +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation_2 + ON nation_2.n_nationkey = supplier.s_nationkey GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q9_mysql.sql b/tests/test_sql_refsols/tpch_q9_mysql.sql index 1b7d0331b..7500a5171 100644 --- a/tests/test_sql_refsols/tpch_q9_mysql.sql +++ b/tests/test_sql_refsols/tpch_q9_mysql.sql @@ -1,26 +1,26 @@ SELECT - NATION.n_name COLLATE utf8mb4_bin AS NATION, - EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) AS O_YEAR, + nation.n_name COLLATE utf8mb4_bin AS NATION, + EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) AS O_YEAR, COALESCE( SUM( - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity + lineitem.l_extendedprice * ( + 1 - lineitem.l_discount + ) - partsupp.ps_supplycost * lineitem.l_quantity ), 0 ) AS AMOUNT -FROM tpch.LINEITEM AS LINEITEM -JOIN tpch.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_name LIKE '%green%' -JOIN tpch.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN tpch.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey -JOIN tpch.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey -JOIN tpch.PARTSUPP AS PARTSUPP - ON LINEITEM.l_partkey = PARTSUPP.ps_partkey - AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey AND part.p_name LIKE '%green%' +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey +JOIN tpch.orders AS orders + ON lineitem.l_orderkey = orders.o_orderkey +JOIN tpch.partsupp AS partsupp + ON lineitem.l_partkey = partsupp.ps_partkey + AND lineitem.l_suppkey = partsupp.ps_suppkey GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index 47c6ab423..1268e47bc 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -1,26 +1,26 @@ SELECT - NATION.n_name AS NATION, - YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) AS O_YEAR, + nation.n_name AS NATION, + YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) AS O_YEAR, COALESCE( SUM( - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity + lineitem.l_extendedprice * ( + 1 - lineitem.l_discount + ) - partsupp.ps_supplycost * lineitem.l_quantity ), 0 ) AS AMOUNT -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART - ON CONTAINS(PART.p_name, 'green') AND LINEITEM.l_partkey = PART.p_partkey -JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey -JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey -JOIN TPCH.PARTSUPP AS PARTSUPP - ON LINEITEM.l_partkey = PARTSUPP.ps_partkey - AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON CONTAINS(part.p_name, 'green') AND lineitem.l_partkey = part.p_partkey +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey +JOIN tpch.orders AS orders + ON lineitem.l_orderkey = orders.o_orderkey +JOIN tpch.partsupp AS partsupp + ON lineitem.l_partkey = partsupp.ps_partkey + AND lineitem.l_suppkey = partsupp.ps_suppkey GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_mysql.sql b/tests/test_sql_refsols/unary_and_slicing_operators_mysql.sql index 2cb15ddc5..e606ff598 100644 --- a/tests/test_sql_refsols/unary_and_slicing_operators_mysql.sql +++ b/tests/test_sql_refsols/unary_and_slicing_operators_mysql.sql @@ -14,4 +14,4 @@ SELECT END ) AS name_second_to_last_char, c_acctbal >= 0 AS is_not_in_debt -FROM tpch.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql index 9b12e2240..b80ccca12 100644 --- a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql +++ b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql @@ -61,4 +61,4 @@ SELECT END ) AS name_second_to_last_char, c_acctbal >= 0 AS is_not_in_debt -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/week_offset_mysql.sql b/tests/test_sql_refsols/week_offset_mysql.sql index e26dedbca..8e509a22f 100644 --- a/tests/test_sql_refsols/week_offset_mysql.sql +++ b/tests/test_sql_refsols/week_offset_mysql.sql @@ -7,7 +7,7 @@ SELECT DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' DAY), INTERVAL '2' WEEK) AS week_adj5, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '-1' MINUTE), INTERVAL '2' WEEK) AS week_adj6, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' YEAR), INTERVAL '2' WEEK) AS week_adj8 -FROM main.sbTransaction +FROM main.sbtransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/week_offset_snowflake.sql b/tests/test_sql_refsols/week_offset_snowflake.sql index f1b7c6267..821cbdac1 100644 --- a/tests/test_sql_refsols/week_offset_snowflake.sql +++ b/tests/test_sql_refsols/week_offset_snowflake.sql @@ -7,7 +7,7 @@ SELECT DATEADD(WEEK, 2, DATEADD(DAY, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj5, DATEADD(WEEK, 2, DATEADD(MINUTE, -1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj6, DATEADD(WEEK, 2, DATEADD(YEAR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj8 -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/window_functions_mysql.sql b/tests/test_sql_refsols/window_functions_mysql.sql index 62661daa7..925752215 100644 --- a/tests/test_sql_refsols/window_functions_mysql.sql +++ b/tests/test_sql_refsols/window_functions_mysql.sql @@ -1,15 +1,15 @@ SELECT - DENSE_RANK() OVER (ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END DESC, CUSTOMER.c_acctbal DESC) AS rank_value, - NTILE(10) OVER (ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal) AS precentile_value, - LAG(CUSTOMER.c_acctbal, 2, 0.0) OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal) AS two_prev_value, - LEAD(CUSTOMER.c_acctbal, 2) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal) AS two_next_value, - SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, - SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, - CUSTOMER.c_acctbal / AVG(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, - CUSTOMER.c_acctbal / COUNT(CASE WHEN CUSTOMER.c_acctbal > 0.0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS relcount_value, - CUSTOMER.c_acctbal / COUNT(*) OVER () AS relsize_value -FROM tpch.REGION AS REGION -JOIN tpch.NATION AS NATION - ON NATION.n_regionkey = REGION.r_regionkey -JOIN tpch.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey + DENSE_RANK() OVER (ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END DESC, customer.c_acctbal DESC) AS rank_value, + NTILE(10) OVER (ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal) AS precentile_value, + LAG(customer.c_acctbal, 2, 0.0) OVER (PARTITION BY nation.n_regionkey ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal) AS two_prev_value, + LEAD(customer.c_acctbal, 2) OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal) AS two_next_value, + SUM(customer.c_acctbal) OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, + SUM(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, + customer.c_acctbal / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, + customer.c_acctbal / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, + customer.c_acctbal / COUNT(*) OVER () AS relsize_value +FROM tpch.region AS region +JOIN tpch.nation AS nation + ON nation.n_regionkey = region.r_regionkey +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/window_functions_snowflake.sql b/tests/test_sql_refsols/window_functions_snowflake.sql index a2ac63af7..63535e1b4 100644 --- a/tests/test_sql_refsols/window_functions_snowflake.sql +++ b/tests/test_sql_refsols/window_functions_snowflake.sql @@ -1,15 +1,15 @@ SELECT - DENSE_RANK() OVER (ORDER BY CUSTOMER.c_acctbal DESC) AS rank_value, - NTILE(10) OVER (ORDER BY CUSTOMER.c_acctbal) AS precentile_value, - LAG(CUSTOMER.c_acctbal, 2, 0.0) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal) AS two_prev_value, - LEAD(CUSTOMER.c_acctbal, 2) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal) AS two_next_value, - SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, - SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, - CUSTOMER.c_acctbal / AVG(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, - CUSTOMER.c_acctbal / COUNT(CASE WHEN CUSTOMER.c_acctbal > 0.0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS relcount_value, - CUSTOMER.c_acctbal / COUNT(*) OVER () AS relsize_value -FROM TPCH.REGION AS REGION -JOIN TPCH.NATION AS NATION - ON NATION.n_regionkey = REGION.r_regionkey -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey + DENSE_RANK() OVER (ORDER BY customer.c_acctbal DESC) AS rank_value, + NTILE(10) OVER (ORDER BY customer.c_acctbal) AS precentile_value, + LAG(customer.c_acctbal, 2, 0.0) OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal) AS two_prev_value, + LEAD(customer.c_acctbal, 2) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal) AS two_next_value, + SUM(customer.c_acctbal) OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, + SUM(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, + customer.c_acctbal / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, + customer.c_acctbal / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, + customer.c_acctbal / COUNT(*) OVER () AS relsize_value +FROM tpch.region AS region +JOIN tpch.nation AS nation + ON nation.n_regionkey = region.r_regionkey +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql index e3ecc2587..3eb15239a 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql @@ -1,16 +1,16 @@ SELECT - sbTransaction.sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM main.sbCustomer AS sbCustomer -JOIN main.sbTransaction AS sbTransaction - ON sbCustomer.sbcustid = sbTransaction.sbtxcustid + sbtransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbTransaction.sbtxdatetime + sbtransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql index 6741c2f15..842523261 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql @@ -1,16 +1,16 @@ SELECT - SBTRANSACTION.sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + sbtransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - SBTRANSACTION.sbtxdatetime NULLS FIRST + sbtransaction.sbtxdatetime NULLS FIRST LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql index ff2f29e69..02578f25c 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql @@ -1,16 +1,16 @@ SELECT - sbTransaction.sbtxid AS transaction_id, - SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM main.sbCustomer AS sbCustomer -JOIN main.sbTransaction AS sbTransaction - ON sbCustomer.sbcustid = sbTransaction.sbtxcustid + sbtransaction.sbtxid AS transaction_id, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbTransaction.sbtxdatetime + sbtransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql index 451e75183..449e8361d 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql @@ -1,16 +1,16 @@ SELECT - SBTRANSACTION.sbtxid AS transaction_id, - SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + sbtransaction.sbtxid AS transaction_id, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - SBTRANSACTION.sbtxdatetime NULLS FIRST + sbtransaction.sbtxdatetime NULLS FIRST LIMIT 8 From 3de8b89a65e85aea2d5b884593431b383f98bfc0 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 25 Aug 2025 15:03:59 -0700 Subject: [PATCH 40/46] undo changes for sql text --- README.md | 30 ++++- demos/README.md | 1 + demos/notebooks/MySQL_TPCH.ipynb | 2 +- .../agg_simplification_1_mysql.sql | 6 +- .../agg_simplification_1_snowflake.sql | 52 ++++---- .../agg_simplification_2_mysql.sql | 2 +- .../agg_simplification_2_snowflake.sql | 2 +- .../aggregation_functions_mysql.sql | 26 ++-- .../aggregation_functions_snowflake.sql | 72 +++++------ .../arithmetic_and_binary_operators_mysql.sql | 22 ++-- ...thmetic_and_binary_operators_snowflake.sql | 22 ++-- .../casting_functions_mysql.sql | 2 +- .../casting_functions_snowflake.sql | 2 +- ...omparisons_and_logical_operators_mysql.sql | 26 ++-- ...risons_and_logical_operators_snowflake.sql | 38 +++--- .../conditional_functions_mysql.sql | 14 +- .../conditional_functions_snowflake.sql | 28 ++-- .../cumulative_stock_analysis_mysql.sql | 34 ++--- .../cumulative_stock_analysis_snowflake.sql | 34 ++--- tests/test_sql_refsols/datediff_mysql.sql | 2 +- tests/test_sql_refsols/datediff_snowflake.sql | 2 +- .../datetime_functions_mysql.sql | 2 +- .../datetime_functions_snowflake.sql | 2 +- .../datetime_sampler_mysql.sql | 2 +- .../datetime_sampler_snowflake.sql | 2 +- .../defog_broker_adv10_mysql.sql | 16 +-- .../defog_broker_adv10_snowflake.sql | 28 ++-- .../defog_broker_adv11_mysql.sql | 16 +-- .../defog_broker_adv11_snowflake.sql | 16 +-- .../defog_broker_adv12_mysql.sql | 2 +- .../defog_broker_adv12_snowflake.sql | 2 +- .../defog_broker_adv13_mysql.sql | 2 +- .../defog_broker_adv13_snowflake.sql | 2 +- .../defog_broker_adv14_mysql.sql | 12 +- .../defog_broker_adv14_snowflake.sql | 12 +- .../defog_broker_adv15_mysql.sql | 2 +- .../defog_broker_adv15_snowflake.sql | 2 +- .../defog_broker_adv16_mysql.sql | 16 +-- .../defog_broker_adv16_snowflake.sql | 22 ++-- .../defog_broker_adv1_mysql.sql | 14 +- .../defog_broker_adv1_snowflake.sql | 18 +-- .../defog_broker_adv2_mysql.sql | 10 +- .../defog_broker_adv2_snowflake.sql | 18 +-- .../defog_broker_adv3_mysql.sql | 10 +- .../defog_broker_adv3_snowflake.sql | 22 ++-- .../defog_broker_adv4_mysql.sql | 16 +-- .../defog_broker_adv4_snowflake.sql | 20 +-- .../defog_broker_adv5_mysql.sql | 28 ++-- .../defog_broker_adv5_snowflake.sql | 54 ++++---- .../defog_broker_adv6_mysql.sql | 16 +-- .../defog_broker_adv6_snowflake.sql | 24 ++-- .../defog_broker_adv7_mysql.sql | 24 ++-- .../defog_broker_adv7_snowflake.sql | 44 +++---- .../defog_broker_adv8_mysql.sql | 12 +- .../defog_broker_adv8_snowflake.sql | 12 +- .../defog_broker_adv9_mysql.sql | 18 +-- .../defog_broker_adv9_snowflake.sql | 18 +-- .../defog_broker_basic10_mysql.sql | 10 +- .../defog_broker_basic10_snowflake.sql | 10 +- .../defog_broker_basic1_mysql.sql | 14 +- .../defog_broker_basic1_snowflake.sql | 22 ++-- .../defog_broker_basic2_mysql.sql | 2 +- .../defog_broker_basic2_snowflake.sql | 2 +- .../defog_broker_basic3_mysql.sql | 14 +- .../defog_broker_basic3_snowflake.sql | 22 ++-- .../defog_broker_basic4_mysql.sql | 22 ++-- .../defog_broker_basic4_snowflake.sql | 36 +++--- .../defog_broker_basic5_mysql.sql | 8 +- .../defog_broker_basic5_snowflake.sql | 8 +- .../defog_broker_basic6_mysql.sql | 8 +- .../defog_broker_basic6_snowflake.sql | 8 +- .../defog_broker_basic7_mysql.sql | 2 +- .../defog_broker_basic7_snowflake.sql | 2 +- .../defog_broker_basic8_mysql.sql | 2 +- .../defog_broker_basic8_snowflake.sql | 2 +- .../defog_broker_basic9_mysql.sql | 10 +- .../defog_broker_basic9_snowflake.sql | 10 +- .../defog_broker_gen1_mysql.sql | 12 +- .../defog_broker_gen1_snowflake.sql | 12 +- .../defog_broker_gen2_mysql.sql | 10 +- .../defog_broker_gen2_snowflake.sql | 10 +- .../defog_broker_gen3_mysql.sql | 14 +- .../defog_broker_gen3_snowflake.sql | 20 +-- .../defog_broker_gen4_mysql.sql | 12 +- .../defog_broker_gen4_snowflake.sql | 20 +-- .../defog_broker_gen5_mysql.sql | 2 +- .../defog_broker_gen5_snowflake.sql | 4 +- .../defog_dealership_adv10_snowflake.sql | 16 +-- .../defog_dealership_adv11_snowflake.sql | 12 +- .../defog_dealership_adv12_snowflake.sql | 38 +++--- .../defog_dealership_adv14_snowflake.sql | 2 +- .../defog_dealership_adv15_snowflake.sql | 20 +-- .../defog_dealership_adv16_snowflake.sql | 22 ++-- .../defog_dealership_adv1_snowflake.sql | 20 +-- .../defog_dealership_adv2_snowflake.sql | 22 ++-- .../defog_dealership_adv3_snowflake.sql | 22 ++-- .../defog_dealership_adv4_snowflake.sql | 24 ++-- .../defog_dealership_adv5_snowflake.sql | 26 ++-- .../defog_dealership_adv6_snowflake.sql | 30 ++--- .../defog_dealership_adv7_snowflake.sql | 28 ++-- .../defog_dealership_adv9_snowflake.sql | 2 +- .../defog_dealership_basic10_snowflake.sql | 24 ++-- .../defog_dealership_basic1_snowflake.sql | 14 +- .../defog_dealership_basic2_snowflake.sql | 8 +- .../defog_dealership_basic3_snowflake.sql | 16 +-- .../defog_dealership_basic4_snowflake.sql | 12 +- .../defog_dealership_basic5_snowflake.sql | 24 ++-- .../defog_dealership_basic6_snowflake.sql | 12 +- .../defog_dealership_basic7_snowflake.sql | 2 +- .../defog_dealership_basic8_snowflake.sql | 24 ++-- .../defog_dealership_basic9_snowflake.sql | 2 +- .../defog_dealership_gen1_snowflake.sql | 2 +- .../defog_dealership_gen2_snowflake.sql | 2 +- .../defog_dealership_gen3_snowflake.sql | 2 +- .../defog_dealership_gen4_snowflake.sql | 34 ++--- .../defog_dealership_gen5_snowflake.sql | 22 ++-- .../defog_ewallet_adv10_snowflake.sql | 18 +-- .../defog_ewallet_adv11_snowflake.sql | 18 +-- .../defog_ewallet_adv12_snowflake.sql | 20 +-- .../defog_ewallet_adv13_snowflake.sql | 2 +- .../defog_ewallet_adv14_snowflake.sql | 2 +- .../defog_ewallet_adv15_snowflake.sql | 26 ++-- .../defog_ewallet_adv16_snowflake.sql | 20 +-- .../defog_ewallet_adv1_snowflake.sql | 22 ++-- .../defog_ewallet_adv2_snowflake.sql | 16 +-- .../defog_ewallet_adv3_snowflake.sql | 20 +-- .../defog_ewallet_adv4_snowflake.sql | 10 +- .../defog_ewallet_adv5_snowflake.sql | 2 +- .../defog_ewallet_adv6_snowflake.sql | 17 ++- .../defog_ewallet_adv7_snowflake.sql | 18 +-- .../defog_ewallet_adv8_snowflake.sql | 24 ++-- .../defog_ewallet_adv9_snowflake.sql | 2 +- .../defog_ewallet_basic10_snowflake.sql | 22 ++-- .../defog_ewallet_basic1_snowflake.sql | 16 +-- .../defog_ewallet_basic2_snowflake.sql | 10 +- .../defog_ewallet_basic3_snowflake.sql | 8 +- .../defog_ewallet_basic4_snowflake.sql | 8 +- .../defog_ewallet_basic5_snowflake.sql | 10 +- .../defog_ewallet_basic6_snowflake.sql | 2 +- .../defog_ewallet_basic7_snowflake.sql | 2 +- .../defog_ewallet_basic8_snowflake.sql | 22 ++-- .../defog_ewallet_basic9_snowflake.sql | 22 ++-- .../defog_ewallet_gen1_snowflake.sql | 14 +- .../defog_ewallet_gen2_snowflake.sql | 26 ++-- .../defog_ewallet_gen3_snowflake.sql | 2 +- .../defog_ewallet_gen4_snowflake.sql | 50 +++---- .../defog_ewallet_gen5_snowflake.sql | 22 ++-- .../epoch_culture_events_info_mysql.sql | 40 +++--- .../epoch_culture_events_info_snowflake.sql | 52 ++++---- .../epoch_event_gap_per_era_mysql.sql | 20 +-- .../epoch_event_gap_per_era_snowflake.sql | 36 +++--- .../epoch_events_per_season_mysql.sql | 12 +- .../epoch_events_per_season_snowflake.sql | 12 +- .../epoch_first_event_per_era_mysql.sql | 16 +-- .../epoch_first_event_per_era_snowflake.sql | 26 ++-- .../epoch_intra_season_searches_mysql.sql | 36 +++--- .../epoch_intra_season_searches_snowflake.sql | 122 +++++++++--------- ...st_popular_search_engine_per_tod_mysql.sql | 12 +- ...opular_search_engine_per_tod_snowflake.sql | 26 ++-- ...ch_most_popular_topic_per_region_mysql.sql | 16 +-- ...ost_popular_topic_per_region_snowflake.sql | 28 ++-- .../epoch_num_predawn_cold_war_mysql.sql | 18 +-- .../epoch_num_predawn_cold_war_snowflake.sql | 32 ++--- ...vent_search_other_users_per_user_mysql.sql | 10 +- ..._search_other_users_per_user_snowflake.sql | 40 +++--- ...rlapping_event_searches_per_user_mysql.sql | 20 +-- ...ping_event_searches_per_user_snowflake.sql | 44 +++---- .../epoch_pct_searches_per_tod_mysql.sql | 12 +- .../epoch_pct_searches_per_tod_snowflake.sql | 26 ++-- .../epoch_search_results_by_tod_mysql.sql | 14 +- .../epoch_search_results_by_tod_snowflake.sql | 30 ++--- .../epoch_summer_events_per_type_mysql.sql | 14 +- ...epoch_summer_events_per_type_snowflake.sql | 14 +- .../epoch_unique_users_per_engine_mysql.sql | 16 +-- ...poch_unique_users_per_engine_snowflake.sql | 32 ++--- ...och_users_most_cold_war_searches_mysql.sql | 22 ++-- ...users_most_cold_war_searches_snowflake.sql | 38 +++--- .../test_sql_refsols/extract_colors_mysql.sql | 2 +- .../extract_colors_snowflake.sql | 2 +- .../floor_and_ceil_2_mysql.sql | 2 +- .../floor_and_ceil_2_snowflake.sql | 2 +- .../floor_and_ceil_snowflake.sql | 2 +- .../get_part_multiple_mysql.sql | 2 +- .../get_part_multiple_snowflake.sql | 2 +- .../get_part_single_mysql.sql | 2 +- .../get_part_single_snowflake.sql | 2 +- .../global_acctbal_breakdown_mysql.sql | 2 +- .../global_acctbal_breakdown_snowflake.sql | 2 +- .../hour_minute_day_mysql.sql | 16 +-- .../hour_minute_day_snowflake.sql | 16 +-- .../nation_acctbal_breakdown_mysql.sql | 12 +- .../nation_acctbal_breakdown_snowflake.sql | 38 +++--- .../numerical_functions_mysql.sql | 2 +- .../numerical_functions_snowflake.sql | 2 +- .../part_cross_part_a_mysql.sql | 30 ++--- .../part_cross_part_a_snowflake.sql | 44 +++---- .../part_cross_part_b_mysql.sql | 34 ++--- .../part_cross_part_b_snowflake.sql | 62 ++++----- .../part_cross_part_c_mysql.sql | 32 ++--- .../part_cross_part_c_snowflake.sql | 60 ++++----- .../quantile_test_1_mysql.sql | 12 +- .../quantile_test_1_snowflake.sql | 10 +- .../quantile_test_2_mysql.sql | 72 +++++------ .../quantile_test_2_snowflake.sql | 72 +++++------ tests/test_sql_refsols/rank_a_mysql.sql | 2 +- tests/test_sql_refsols/rank_a_snowflake.sql | 2 +- tests/test_sql_refsols/rank_b_mysql.sql | 2 +- tests/test_sql_refsols/rank_b_snowflake.sql | 2 +- tests/test_sql_refsols/rank_c_mysql.sql | 2 +- tests/test_sql_refsols/rank_c_snowflake.sql | 2 +- .../region_acctbal_breakdown_mysql.sql | 34 ++--- .../region_acctbal_breakdown_snowflake.sql | 38 +++--- .../test_sql_refsols/simple_filter_mysql.sql | 2 +- .../simple_filter_snowflake.sql | 2 +- tests/test_sql_refsols/simple_scan_mysql.sql | 2 +- .../simple_scan_snowflake.sql | 2 +- .../simple_smallest_or_largest_snowflake.sql | 2 +- .../test_sql_refsols/simple_var_std_mysql.sql | 10 +- .../simple_var_std_snowflake.sql | 36 +++--- .../simplification_1_mysql.sql | 2 +- .../simplification_1_snowflake.sql | 2 +- .../simplification_2_mysql.sql | 2 +- .../simplification_2_snowflake.sql | 2 +- .../simplification_3_mysql.sql | 2 +- .../simplification_3_snowflake.sql | 50 +++---- tests/test_sql_refsols/smoke_a_mysql.sql | 2 +- tests/test_sql_refsols/smoke_a_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_b_mysql.sql | 2 +- tests/test_sql_refsols/smoke_b_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_c_mysql.sql | 2 +- tests/test_sql_refsols/smoke_c_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_d_mysql.sql | 42 +++--- tests/test_sql_refsols/smoke_d_snowflake.sql | 42 +++--- ...nsaction_week_sampler_friday_one_mysql.sql | 2 +- ...tion_week_sampler_friday_one_snowflake.sql | 2 +- ...saction_week_sampler_friday_zero_mysql.sql | 2 +- ...ion_week_sampler_friday_zero_snowflake.sql | 2 +- ...nsaction_week_sampler_monday_one_mysql.sql | 2 +- ...tion_week_sampler_monday_one_snowflake.sql | 2 +- ...saction_week_sampler_monday_zero_mysql.sql | 2 +- ...ion_week_sampler_monday_zero_snowflake.sql | 2 +- ...action_week_sampler_saturday_one_mysql.sql | 2 +- ...on_week_sampler_saturday_one_snowflake.sql | 2 +- ...ction_week_sampler_saturday_zero_mysql.sql | 2 +- ...n_week_sampler_saturday_zero_snowflake.sql | 2 +- ...nsaction_week_sampler_sunday_one_mysql.sql | 2 +- ...tion_week_sampler_sunday_one_snowflake.sql | 2 +- ...saction_week_sampler_sunday_zero_mysql.sql | 2 +- ...ion_week_sampler_sunday_zero_snowflake.sql | 2 +- ...action_week_sampler_thursday_one_mysql.sql | 2 +- ...on_week_sampler_thursday_one_snowflake.sql | 2 +- ...ction_week_sampler_thursday_zero_mysql.sql | 2 +- ...n_week_sampler_thursday_zero_snowflake.sql | 2 +- ...saction_week_sampler_tuesday_one_mysql.sql | 2 +- ...ion_week_sampler_tuesday_one_snowflake.sql | 2 +- ...action_week_sampler_tuesday_zero_mysql.sql | 2 +- ...on_week_sampler_tuesday_zero_snowflake.sql | 2 +- ...ction_week_sampler_wednesday_one_mysql.sql | 2 +- ...n_week_sampler_wednesday_one_snowflake.sql | 2 +- ...tion_week_sampler_wednesday_zero_mysql.sql | 2 +- ..._week_sampler_wednesday_zero_snowflake.sql | 2 +- .../string_functions_mysql.sql | 42 +++--- .../string_functions_snowflake.sql | 38 +++--- ..._battery_failure_rates_anomalies_mysql.sql | 24 ++-- ...tery_failure_rates_anomalies_snowflake.sql | 32 ++--- ...ograph_country_cartesian_oddball_mysql.sql | 6 +- ...ph_country_cartesian_oddball_snowflake.sql | 14 +- ...aph_country_combination_analysis_mysql.sql | 14 +- ...country_combination_analysis_snowflake.sql | 62 ++++----- ...h_country_incident_rate_analysis_mysql.sql | 34 ++--- ...untry_incident_rate_analysis_snowflake.sql | 98 +++++++------- ...ror_percentages_sun_set_by_error_mysql.sql | 18 +-- ...percentages_sun_set_by_error_snowflake.sql | 28 ++-- ..._rate_sun_set_by_factory_country_mysql.sql | 18 +-- ...e_sun_set_by_factory_country_snowflake.sql | 36 +++--- ...technograph_global_incident_rate_mysql.sql | 4 +- ...nograph_global_incident_rate_snowflake.sql | 18 +-- .../technograph_hot_purchase_window_mysql.sql | 16 +-- ...hnograph_hot_purchase_window_snowflake.sql | 16 +-- ...ph_incident_rate_by_release_year_mysql.sql | 12 +- ...ncident_rate_by_release_year_snowflake.sql | 54 ++++---- ...hnograph_incident_rate_per_brand_mysql.sql | 12 +- ...raph_incident_rate_per_brand_snowflake.sql | 22 ++-- ...echnograph_monthly_incident_rate_mysql.sql | 24 ++-- ...ograph_monthly_incident_rate_snowflake.sql | 82 ++++++------ ...nograph_most_unreliable_products_mysql.sql | 18 +-- ...aph_most_unreliable_products_snowflake.sql | 36 +++--- ...ive_incident_rate_goldcopperstar_mysql.sql | 22 ++-- ...incident_rate_goldcopperstar_snowflake.sql | 96 +++++++------- ...cumulative_incident_rate_overall_mysql.sql | 10 +- ...lative_incident_rate_overall_snowflake.sql | 68 +++++----- .../time_threshold_reached_mysql.sql | 10 +- .../time_threshold_reached_snowflake.sql | 22 ++-- tests/test_sql_refsols/tpch_q10_mysql.sql | 38 +++--- tests/test_sql_refsols/tpch_q10_snowflake.sql | 46 +++---- tests/test_sql_refsols/tpch_q11_mysql.sql | 18 +-- tests/test_sql_refsols/tpch_q11_snowflake.sql | 58 ++++----- tests/test_sql_refsols/tpch_q12_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q12_snowflake.sql | 20 +-- tests/test_sql_refsols/tpch_q13_mysql.sql | 6 +- tests/test_sql_refsols/tpch_q13_snowflake.sql | 16 +-- tests/test_sql_refsols/tpch_q14_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q14_snowflake.sql | 20 +-- tests/test_sql_refsols/tpch_q15_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q15_snowflake.sql | 66 +++++----- tests/test_sql_refsols/tpch_q16_mysql.sql | 26 ++-- tests/test_sql_refsols/tpch_q16_snowflake.sql | 26 ++-- tests/test_sql_refsols/tpch_q17_mysql.sql | 14 +- tests/test_sql_refsols/tpch_q17_snowflake.sql | 20 +-- tests/test_sql_refsols/tpch_q18_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q18_snowflake.sql | 34 ++--- tests/test_sql_refsols/tpch_q19_mysql.sql | 50 +++---- tests/test_sql_refsols/tpch_q19_snowflake.sql | 50 +++---- tests/test_sql_refsols/tpch_q1_mysql.sql | 2 +- tests/test_sql_refsols/tpch_q1_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q20_mysql.sql | 30 ++--- tests/test_sql_refsols/tpch_q20_snowflake.sql | 50 +++---- tests/test_sql_refsols/tpch_q21_mysql.sql | 38 +++--- tests/test_sql_refsols/tpch_q21_snowflake.sql | 86 ++++++------ tests/test_sql_refsols/tpch_q22_mysql.sql | 20 +-- tests/test_sql_refsols/tpch_q22_snowflake.sql | 36 +++--- tests/test_sql_refsols/tpch_q2_mysql.sql | 38 +++--- tests/test_sql_refsols/tpch_q2_snowflake.sql | 58 ++++----- tests/test_sql_refsols/tpch_q3_mysql.sql | 24 ++-- tests/test_sql_refsols/tpch_q3_snowflake.sql | 24 ++-- tests/test_sql_refsols/tpch_q4_mysql.sql | 12 +- tests/test_sql_refsols/tpch_q4_snowflake.sql | 12 +- tests/test_sql_refsols/tpch_q5_mysql.sql | 42 +++--- tests/test_sql_refsols/tpch_q5_snowflake.sql | 46 +++---- tests/test_sql_refsols/tpch_q6_mysql.sql | 2 +- tests/test_sql_refsols/tpch_q6_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q7_mysql.sql | 46 +++---- tests/test_sql_refsols/tpch_q7_snowflake.sql | 52 ++++---- tests/test_sql_refsols/tpch_q8_mysql.sql | 44 +++---- tests/test_sql_refsols/tpch_q8_snowflake.sql | 44 +++---- tests/test_sql_refsols/tpch_q9_mysql.sql | 34 ++--- tests/test_sql_refsols/tpch_q9_snowflake.sql | 34 ++--- .../unary_and_slicing_operators_mysql.sql | 2 +- .../unary_and_slicing_operators_snowflake.sql | 2 +- tests/test_sql_refsols/week_offset_mysql.sql | 2 +- .../week_offset_snowflake.sql | 2 +- .../window_functions_mysql.sql | 28 ++-- .../window_functions_snowflake.sql | 28 ++-- .../window_sliding_frame_relsize_mysql.sql | 26 ++-- ...window_sliding_frame_relsize_snowflake.sql | 26 ++-- .../window_sliding_frame_relsum_mysql.sql | 26 ++-- .../window_sliding_frame_relsum_snowflake.sql | 26 ++-- 347 files changed, 3264 insertions(+), 3242 deletions(-) diff --git a/README.md b/README.md index be2e8d2d6..73c1fe4e3 100644 --- a/README.md +++ b/README.md @@ -97,13 +97,17 @@ script must be run so that the `defog.db` file is located in the `tests` directo ## Running CI Tests -To run our CI tests on your PR, you must include the flag `[run CI]` in latest -commit message. +When submitting a PR, you can control which CI tests run by adding special flags +to your **latest commit message**. + +- To run **PyDough CI tests**, add: `[run CI]` +- To run **PyDough and all dialect tests**, add: `[run all]` +- To run **specific dialect tests**, use the corresponding flag as described below. ### Running Snowflake Tests on CI -To run our Snowflake CI tests on your PR, you must include the flag `[run SF]` in your commit message. +To run **Snowflake CI tests**, add the flag `[run SF]` to your commit message. -**Note:** To run these tests locally, you need the following: +**Running Snowflake tests locally:** 1. Install the Snowflake Connector for Python with Pandas support ```bash @@ -117,6 +121,24 @@ To run our Snowflake CI tests on your PR, you must include the flag `[run SF]` i export SF_ACCOUNT="your_account" ``` +### Running MySQL Tests on CI +To run **MySQL CI tests**, add the flag `[run mysql]` to your commit message. + +**Running MySQL tests locally:** + +1. Make sure you have [**Docker Desktop**](https://www.docker.com/get-started/) + installed and running. + +2. Install the MySQL Connector for Python + ```bash + pip install mysql-connector-python + ``` + +3. Set your MySQL credentials as environment variables: + ```bash + export MYSQL_USERNAME="your_username" + export MYSQL_PASSWORD="your_password" + ## Runtime Dependencies PyDough requires having the following Python modules installed to use diff --git a/demos/README.md b/demos/README.md index 9e1d9095d..7a69e7f3b 100644 --- a/demos/README.md +++ b/demos/README.md @@ -24,4 +24,5 @@ Once the introduction notebook is complete, you can explore the other notebooks: - [4_tpch.ipynb](notebooks/4_tpch.ipynb) provides PyDough translations for most of the TPC-H benchmark queries. - [5_what_if.ipynb](notebooks/5_what_if.ipynb) demonstrates how to do WHAT-IF analysis with PyDough. - [MySQL_TPCH.ipynb](notebooks/MySQL_TPCH.ipynb) demonstrates how to connect a MySQL database with PyDough. +- [SF_TPCH_q1.ipynb](notebooks/SF_TPCH_q1.ipynb) demonstrates how to connect a Snowflake database with PyDough. diff --git a/demos/notebooks/MySQL_TPCH.ipynb b/demos/notebooks/MySQL_TPCH.ipynb index b4c416c60..6858813cf 100644 --- a/demos/notebooks/MySQL_TPCH.ipynb +++ b/demos/notebooks/MySQL_TPCH.ipynb @@ -28,7 +28,7 @@ "> You can also test with our **pre-built MySQL TPC-H database** available on **Docker Hub**.\n", ">\n", "> #### 📋 Requirements\n", - "> - Make sure you have **Docker** installed.\n", + "> - Make sure you have **Docker Desktop** installed and running.\n", ">\n", "> #### 📦 Pull and Run the Container\n", "> ```bash\n", diff --git a/tests/test_sql_refsols/agg_simplification_1_mysql.sql b/tests/test_sql_refsols/agg_simplification_1_mysql.sql index c9e195d5b..ca660a3c8 100644 --- a/tests/test_sql_refsols/agg_simplification_1_mysql.sql +++ b/tests/test_sql_refsols/agg_simplification_1_mysql.sql @@ -172,11 +172,11 @@ WITH _t1 AS ( THEN CHAR_LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) ELSE NULL END AS expr_87, - sbtickerexchange - FROM main.sbticker + sbtickerexchange AS sbTickerExchange + FROM main.sbTicker ), _t0 AS ( SELECT - CHAR_LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS aug_exchange, + CHAR_LENGTH(CASE WHEN sbTickerExchange <> 'NYSE Arca' THEN sbTickerExchange ELSE NULL END) AS aug_exchange, AVG(expr_72) AS avg_expr_72, AVG(expr_73) AS avg_expr_73, AVG(expr_74) AS avg_expr_74, diff --git a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql index 83fcdd09c..1a1c852a2 100644 --- a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql +++ b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql @@ -1,29 +1,29 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS aug_exchange, - COUNT(*) AS count_one - FROM main.sbticker + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS AUG_EXCHANGE, + COUNT(*) AS COUNT_ONE + FROM MAIN.SBTICKER GROUP BY 1 ) SELECT - aug_exchange, - count_one AS su1, - count_one * 2 AS su2, - count_one * -1 AS su3, - count_one * -3 AS su4, + AUG_EXCHANGE AS aug_exchange, + COUNT_ONE AS su1, + COUNT_ONE * 2 AS su2, + COUNT_ONE * -1 AS su3, + COUNT_ONE * -3 AS su4, 0 AS su5, - count_one * 0.5 AS su6, + COUNT_ONE * 0.5 AS su6, 0 AS su7, - COALESCE(aug_exchange, 0) AS su8, - count_one AS co1, - count_one AS co2, - count_one AS co3, - count_one AS co4, - count_one AS co5, - count_one AS co6, + COALESCE(AUG_EXCHANGE, 0) AS su8, + COUNT_ONE AS co1, + COUNT_ONE AS co2, + COUNT_ONE AS co3, + COUNT_ONE AS co4, + COUNT_ONE AS co5, + COUNT_ONE AS co6, 0 AS co7, - count_one * IFF(NOT aug_exchange IS NULL, 1, 0) AS co8, + COUNT_ONE * IFF(NOT AUG_EXCHANGE IS NULL, 1, 0) AS co8, 1 AS nd1, 1 AS nd2, 1 AS nd3, @@ -31,7 +31,7 @@ SELECT 1 AS nd5, 1 AS nd6, 0 AS nd7, - CAST(NOT aug_exchange IS NULL AS BIGINT) AS nd8, + CAST(NOT AUG_EXCHANGE IS NULL AS BIGINT) AS nd8, 1 AS av1, 2 AS av2, -1 AS av3, @@ -39,7 +39,7 @@ SELECT 0 AS av5, 0.5 AS av6, NULL AS av7, - aug_exchange AS av8, + AUG_EXCHANGE AS av8, 1 AS mi1, 2 AS mi2, -1 AS mi3, @@ -47,7 +47,7 @@ SELECT 0 AS mi5, 0.5 AS mi6, NULL AS mi7, - aug_exchange AS mi8, + AUG_EXCHANGE AS mi8, 1 AS ma1, 2 AS ma2, -1 AS ma3, @@ -55,7 +55,7 @@ SELECT 0 AS ma5, 0.5 AS ma6, NULL AS ma7, - aug_exchange AS ma8, + AUG_EXCHANGE AS ma8, 1 AS an1, 2 AS an2, -1 AS an3, @@ -63,7 +63,7 @@ SELECT 0 AS an5, 0.5 AS an6, NULL AS an7, - aug_exchange AS an8, + AUG_EXCHANGE AS an8, 1 AS me1, 2 AS me2, -1 AS me3, @@ -71,7 +71,7 @@ SELECT 0 AS me5, 0.5 AS me6, NULL AS me7, - aug_exchange AS me8, + AUG_EXCHANGE AS me8, 1 AS qu1, 2 AS qu2, -1 AS qu3, @@ -79,7 +79,7 @@ SELECT 0 AS qu5, 0.5 AS qu6, NULL AS qu7, - aug_exchange AS qu8 -FROM _t0 + AUG_EXCHANGE AS qu8 +FROM _T0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/agg_simplification_2_mysql.sql b/tests/test_sql_refsols/agg_simplification_2_mysql.sql index c6948799f..45f6fd045 100644 --- a/tests/test_sql_refsols/agg_simplification_2_mysql.sql +++ b/tests/test_sql_refsols/agg_simplification_2_mysql.sql @@ -9,7 +9,7 @@ SELECT ANY_VALUE(LOWER(sbcuststate)) AS a7, ANY_VALUE(LOWER(sbcuststate)) AS a8, ANY_VALUE(LOWER(sbcuststate)) AS a9 -FROM main.sbcustomer +FROM main.sbCustomer GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql index c6f20a0d2..adf33c620 100644 --- a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql +++ b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql @@ -9,7 +9,7 @@ SELECT ANY_VALUE(LOWER(sbcuststate)) AS a7, ANY_VALUE(LOWER(sbcuststate)) AS a8, ANY_VALUE(LOWER(sbcuststate)) AS a9 -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/aggregation_functions_mysql.sql b/tests/test_sql_refsols/aggregation_functions_mysql.sql index ab0f2d6b1..9e2e68cef 100644 --- a/tests/test_sql_refsols/aggregation_functions_mysql.sql +++ b/tests/test_sql_refsols/aggregation_functions_mysql.sql @@ -2,7 +2,7 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, o_custkey - FROM tpch.orders + FROM tpch.ORDERS GROUP BY 2 ), _t2 AS ( @@ -10,30 +10,30 @@ WITH _s1 AS ( CASE WHEN ABS( ( - ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal DESC) - 1.0 + ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal DESC) - 1.0 ) - ( ( - COUNT(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) - 1.0 + COUNT(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) - 1.0 ) / 2.0 ) ) < 1.0 - THEN customer.c_acctbal + THEN CUSTOMER.c_acctbal ELSE NULL END AS expr_15, CASE WHEN TRUNCATE( - CAST(0.19999999999999996 * COUNT(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.19999999999999996 * COUNT(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal DESC) - THEN customer.c_acctbal + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal DESC) + THEN CUSTOMER.c_acctbal ELSE NULL END AS expr_16, - customer.c_acctbal, - customer.c_nationkey, + CUSTOMER.c_acctbal, + CUSTOMER.c_nationkey, _s1.n_rows - FROM tpch.customer AS customer + FROM tpch.CUSTOMER AS CUSTOMER LEFT JOIN _s1 AS _s1 - ON _s1.o_custkey = customer.c_custkey + ON CUSTOMER.c_custkey = _s1.o_custkey ), _t1 AS ( SELECT ANY_VALUE(c_acctbal) AS anything_c_acctbal, @@ -90,9 +90,9 @@ SELECT _t1.ndistinct_c_acctbal AS count_distinct_value, _t1.sample_variance_c_acctbal AS variance_value, _t1.sample_std_c_acctbal AS stddev_value -FROM tpch.nation AS nation +FROM tpch.NATION AS NATION JOIN _t1 AS _t1 - ON _t1.c_nationkey = nation.n_nationkey + ON NATION.n_nationkey = _t1.c_nationkey AND ( _t1.sum_n_rows = 0 OR _t1.sum_n_rows IS NULL ) diff --git a/tests/test_sql_refsols/aggregation_functions_snowflake.sql b/tests/test_sql_refsols/aggregation_functions_snowflake.sql index 0477091f2..56ba5b89c 100644 --- a/tests/test_sql_refsols/aggregation_functions_snowflake.sql +++ b/tests/test_sql_refsols/aggregation_functions_snowflake.sql @@ -1,47 +1,47 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - o_custkey - FROM tpch.orders + COUNT(*) AS N_ROWS, + o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS GROUP BY 2 -), _t1 AS ( +), _T1 AS ( SELECT PERCENTILE_DISC(0.8) WITHIN GROUP (ORDER BY - customer.c_acctbal) AS agg_7, - ANY_VALUE(customer.c_acctbal) AS anything_c_acctbal, - AVG(customer.c_acctbal) AS avg_c_acctbal, - COUNT(customer.c_acctbal) AS count_c_acctbal, - MAX(customer.c_acctbal) AS max_c_acctbal, - MEDIAN(customer.c_acctbal) AS median_c_acctbal, - MIN(customer.c_acctbal) AS min_c_acctbal, - COUNT(DISTINCT customer.c_acctbal) AS ndistinct_c_acctbal, - STDDEV(customer.c_acctbal) AS sample_std_c_acctbal, - VARIANCE(customer.c_acctbal) AS sample_variance_c_acctbal, - SUM(customer.c_acctbal) AS sum_c_acctbal, - SUM(_s1.n_rows) AS sum_n_rows, - customer.c_nationkey - FROM tpch.customer AS customer - LEFT JOIN _s1 AS _s1 - ON _s1.o_custkey = customer.c_custkey + CUSTOMER.c_acctbal) AS AGG_7, + ANY_VALUE(CUSTOMER.c_acctbal) AS ANYTHING_C_ACCTBAL, + AVG(CUSTOMER.c_acctbal) AS AVG_C_ACCTBAL, + COUNT(CUSTOMER.c_acctbal) AS COUNT_C_ACCTBAL, + MAX(CUSTOMER.c_acctbal) AS MAX_C_ACCTBAL, + MEDIAN(CUSTOMER.c_acctbal) AS MEDIAN_C_ACCTBAL, + MIN(CUSTOMER.c_acctbal) AS MIN_C_ACCTBAL, + COUNT(DISTINCT CUSTOMER.c_acctbal) AS NDISTINCT_C_ACCTBAL, + STDDEV(CUSTOMER.c_acctbal) AS SAMPLE_STD_C_ACCTBAL, + VARIANCE(CUSTOMER.c_acctbal) AS SAMPLE_VARIANCE_C_ACCTBAL, + SUM(CUSTOMER.c_acctbal) AS SUM_C_ACCTBAL, + SUM(_S1.N_ROWS) AS SUM_N_ROWS, + CUSTOMER.c_nationkey AS C_NATIONKEY + FROM TPCH.CUSTOMER AS CUSTOMER + LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.O_CUSTKEY GROUP BY 13 ) SELECT - COALESCE(_t1.sum_c_acctbal, 0) AS sum_value, - _t1.avg_c_acctbal AS avg_value, - _t1.median_c_acctbal AS median_value, - _t1.min_c_acctbal AS min_value, - _t1.max_c_acctbal AS max_value, - _t1.agg_7 AS quantile_value, - _t1.anything_c_acctbal AS anything_value, - _t1.count_c_acctbal AS count_value, - _t1.ndistinct_c_acctbal AS count_distinct_value, - _t1.sample_variance_c_acctbal AS variance_value, - _t1.sample_std_c_acctbal AS stddev_value -FROM tpch.nation AS nation -JOIN _t1 AS _t1 - ON _t1.c_nationkey = nation.n_nationkey + COALESCE(_T1.SUM_C_ACCTBAL, 0) AS sum_value, + _T1.AVG_C_ACCTBAL AS avg_value, + _T1.MEDIAN_C_ACCTBAL AS median_value, + _T1.MIN_C_ACCTBAL AS min_value, + _T1.MAX_C_ACCTBAL AS max_value, + _T1.AGG_7 AS quantile_value, + _T1.ANYTHING_C_ACCTBAL AS anything_value, + _T1.COUNT_C_ACCTBAL AS count_value, + _T1.NDISTINCT_C_ACCTBAL AS count_distinct_value, + _T1.SAMPLE_VARIANCE_C_ACCTBAL AS variance_value, + _T1.SAMPLE_STD_C_ACCTBAL AS stddev_value +FROM TPCH.NATION AS NATION +JOIN _T1 AS _T1 + ON NATION.n_nationkey = _T1.C_NATIONKEY AND ( - _t1.sum_n_rows = 0 OR _t1.sum_n_rows IS NULL + _T1.SUM_N_ROWS = 0 OR _T1.SUM_N_ROWS IS NULL ) diff --git a/tests/test_sql_refsols/arithmetic_and_binary_operators_mysql.sql b/tests/test_sql_refsols/arithmetic_and_binary_operators_mysql.sql index 0a1276bc9..8a1800df2 100644 --- a/tests/test_sql_refsols/arithmetic_and_binary_operators_mysql.sql +++ b/tests/test_sql_refsols/arithmetic_and_binary_operators_mysql.sql @@ -1,16 +1,16 @@ SELECT ( - lineitem.l_extendedprice * ( + LINEITEM.l_extendedprice * ( 1 - ( - POWER(lineitem.l_discount, 2) + POWER(LINEITEM.l_discount, 2) ) ) + 1.0 - ) / part.p_retailprice AS computed_value, - lineitem.l_quantity + lineitem.l_extendedprice AS total, - lineitem.l_extendedprice - lineitem.l_quantity AS delta, - lineitem.l_quantity * lineitem.l_discount AS product, - lineitem.l_extendedprice / lineitem.l_quantity AS ratio, - POWER(lineitem.l_discount, 2) AS exponent -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part - ON lineitem.l_partkey = part.p_partkey + ) / PART.p_retailprice AS computed_value, + LINEITEM.l_quantity + LINEITEM.l_extendedprice AS total, + LINEITEM.l_extendedprice - LINEITEM.l_quantity AS delta, + LINEITEM.l_quantity * LINEITEM.l_discount AS product, + LINEITEM.l_extendedprice / LINEITEM.l_quantity AS ratio, + POWER(LINEITEM.l_discount, 2) AS exponent +FROM tpch.LINEITEM AS LINEITEM +JOIN tpch.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey diff --git a/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql b/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql index 0a1276bc9..21058a870 100644 --- a/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql +++ b/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql @@ -1,16 +1,16 @@ SELECT ( - lineitem.l_extendedprice * ( + LINEITEM.l_extendedprice * ( 1 - ( - POWER(lineitem.l_discount, 2) + POWER(LINEITEM.l_discount, 2) ) ) + 1.0 - ) / part.p_retailprice AS computed_value, - lineitem.l_quantity + lineitem.l_extendedprice AS total, - lineitem.l_extendedprice - lineitem.l_quantity AS delta, - lineitem.l_quantity * lineitem.l_discount AS product, - lineitem.l_extendedprice / lineitem.l_quantity AS ratio, - POWER(lineitem.l_discount, 2) AS exponent -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part - ON lineitem.l_partkey = part.p_partkey + ) / PART.p_retailprice AS computed_value, + LINEITEM.l_quantity + LINEITEM.l_extendedprice AS total, + LINEITEM.l_extendedprice - LINEITEM.l_quantity AS delta, + LINEITEM.l_quantity * LINEITEM.l_discount AS product, + LINEITEM.l_extendedprice / LINEITEM.l_quantity AS ratio, + POWER(LINEITEM.l_discount, 2) AS exponent +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey diff --git a/tests/test_sql_refsols/casting_functions_mysql.sql b/tests/test_sql_refsols/casting_functions_mysql.sql index f5dea591c..45fd9570b 100644 --- a/tests/test_sql_refsols/casting_functions_mysql.sql +++ b/tests/test_sql_refsols/casting_functions_mysql.sql @@ -3,4 +3,4 @@ SELECT CAST(o_totalprice AS CHAR) AS cast_to_string2, TRUNCATE(CAST(o_totalprice AS FLOAT), 0) AS cast_to_integer, CAST(o_shippriority AS DOUBLE) AS cast_to_float -FROM tpch.orders +FROM tpch.ORDERS diff --git a/tests/test_sql_refsols/casting_functions_snowflake.sql b/tests/test_sql_refsols/casting_functions_snowflake.sql index 6393eacfd..1ac6e57cc 100644 --- a/tests/test_sql_refsols/casting_functions_snowflake.sql +++ b/tests/test_sql_refsols/casting_functions_snowflake.sql @@ -3,4 +3,4 @@ SELECT CAST(o_totalprice AS TEXT) AS cast_to_string2, CAST(o_totalprice AS BIGINT) AS cast_to_integer, CAST(o_shippriority AS DOUBLE) AS cast_to_float -FROM tpch.orders +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/comparisons_and_logical_operators_mysql.sql b/tests/test_sql_refsols/comparisons_and_logical_operators_mysql.sql index b3569f559..6984b67ef 100644 --- a/tests/test_sql_refsols/comparisons_and_logical_operators_mysql.sql +++ b/tests/test_sql_refsols/comparisons_and_logical_operators_mysql.sql @@ -2,23 +2,23 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, o_custkey - FROM tpch.orders + FROM tpch.ORDERS GROUP BY 2 ) SELECT - customer.c_acctbal < 0 AS in_debt, + CUSTOMER.c_acctbal < 0 AS in_debt, _s1.n_rows <= 12 OR _s1.n_rows IS NULL AS at_most_12_orders, - region.r_name = 'EUROPE' AS is_european, - nation.n_name <> 'GERMANY' AS non_german, - customer.c_acctbal > 0 AS non_empty_acct, + REGION.r_name = 'EUROPE' AS is_european, + NATION.n_name <> 'GERMANY' AS non_german, + CUSTOMER.c_acctbal > 0 AS non_empty_acct, NOT _s1.n_rows IS NULL AND _s1.n_rows >= 5 AS at_least_5_orders, - region.r_name = 'ASIA' OR region.r_name = 'EUROPE' AS is_eurasian, - customer.c_acctbal < 0 AND region.r_name = 'EUROPE' AS is_european_in_debt -FROM tpch.customer AS customer + REGION.r_name = 'ASIA' OR REGION.r_name = 'EUROPE' AS is_eurasian, + CUSTOMER.c_acctbal < 0 AND REGION.r_name = 'EUROPE' AS is_european_in_debt +FROM tpch.CUSTOMER AS CUSTOMER LEFT JOIN _s1 AS _s1 - ON _s1.o_custkey = customer.c_custkey -JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey + ON CUSTOMER.c_custkey = _s1.o_custkey +JOIN tpch.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN tpch.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey diff --git a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql index b3569f559..2eef20cb9 100644 --- a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql +++ b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql @@ -1,24 +1,24 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - o_custkey - FROM tpch.orders + COUNT(*) AS N_ROWS, + o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS GROUP BY 2 ) SELECT - customer.c_acctbal < 0 AS in_debt, - _s1.n_rows <= 12 OR _s1.n_rows IS NULL AS at_most_12_orders, - region.r_name = 'EUROPE' AS is_european, - nation.n_name <> 'GERMANY' AS non_german, - customer.c_acctbal > 0 AS non_empty_acct, - NOT _s1.n_rows IS NULL AND _s1.n_rows >= 5 AS at_least_5_orders, - region.r_name = 'ASIA' OR region.r_name = 'EUROPE' AS is_eurasian, - customer.c_acctbal < 0 AND region.r_name = 'EUROPE' AS is_european_in_debt -FROM tpch.customer AS customer -LEFT JOIN _s1 AS _s1 - ON _s1.o_custkey = customer.c_custkey -JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey + CUSTOMER.c_acctbal < 0 AS in_debt, + _S1.N_ROWS <= 12 OR _S1.N_ROWS IS NULL AS at_most_12_orders, + REGION.r_name = 'EUROPE' AS is_european, + NATION.n_name <> 'GERMANY' AS non_german, + CUSTOMER.c_acctbal > 0 AS non_empty_acct, + NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS >= 5 AS at_least_5_orders, + REGION.r_name = 'ASIA' OR REGION.r_name = 'EUROPE' AS is_eurasian, + CUSTOMER.c_acctbal < 0 AND REGION.r_name = 'EUROPE' AS is_european_in_debt +FROM TPCH.CUSTOMER AS CUSTOMER +LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.O_CUSTKEY +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey diff --git a/tests/test_sql_refsols/conditional_functions_mysql.sql b/tests/test_sql_refsols/conditional_functions_mysql.sql index 5a744f134..b95af92ef 100644 --- a/tests/test_sql_refsols/conditional_functions_mysql.sql +++ b/tests/test_sql_refsols/conditional_functions_mysql.sql @@ -2,19 +2,19 @@ WITH _s1 AS ( SELECT MIN(o_totalprice) AS min_o_totalprice, o_custkey - FROM tpch.orders + FROM tpch.ORDERS GROUP BY 2 ) SELECT - CASE WHEN customer.c_acctbal > 1000 THEN 'High' ELSE 'Low' END AS iff_col, - customer.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, + CASE WHEN CUSTOMER.c_acctbal > 1000 THEN 'High' ELSE 'Low' END AS iff_col, + CUSTOMER.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, COALESCE(_s1.min_o_totalprice, 0.0) AS default_val, NOT _s1.min_o_totalprice IS NULL AS has_acct_bal, _s1.min_o_totalprice IS NULL AS no_acct_bal, - CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END AS no_debt_bal -FROM tpch.customer AS customer + CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS no_debt_bal +FROM tpch.CUSTOMER AS CUSTOMER LEFT JOIN _s1 AS _s1 - ON _s1.o_custkey = customer.c_custkey + ON CUSTOMER.c_custkey = _s1.o_custkey WHERE - customer.c_acctbal <= 1000 AND customer.c_acctbal >= 100 + CUSTOMER.c_acctbal <= 1000 AND CUSTOMER.c_acctbal >= 100 diff --git a/tests/test_sql_refsols/conditional_functions_snowflake.sql b/tests/test_sql_refsols/conditional_functions_snowflake.sql index e866f55e9..4c32b8762 100644 --- a/tests/test_sql_refsols/conditional_functions_snowflake.sql +++ b/tests/test_sql_refsols/conditional_functions_snowflake.sql @@ -1,20 +1,20 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - MIN(o_totalprice) AS min_o_totalprice, - o_custkey - FROM tpch.orders + MIN(o_totalprice) AS MIN_O_TOTALPRICE, + o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS GROUP BY 2 ) SELECT - IFF(customer.c_acctbal > 1000, 'High', 'Low') AS iff_col, - customer.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, - COALESCE(_s1.min_o_totalprice, 0.0) AS default_val, - NOT _s1.min_o_totalprice IS NULL AS has_acct_bal, - _s1.min_o_totalprice IS NULL AS no_acct_bal, - CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END AS no_debt_bal -FROM tpch.customer AS customer -LEFT JOIN _s1 AS _s1 - ON _s1.o_custkey = customer.c_custkey + IFF(CUSTOMER.c_acctbal > 1000, 'High', 'Low') AS iff_col, + CUSTOMER.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, + COALESCE(_S1.MIN_O_TOTALPRICE, 0.0) AS default_val, + NOT _S1.MIN_O_TOTALPRICE IS NULL AS has_acct_bal, + _S1.MIN_O_TOTALPRICE IS NULL AS no_acct_bal, + CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS no_debt_bal +FROM TPCH.CUSTOMER AS CUSTOMER +LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.O_CUSTKEY WHERE - customer.c_acctbal <= 1000 AND customer.c_acctbal >= 100 + CUSTOMER.c_acctbal <= 1000 AND CUSTOMER.c_acctbal >= 100 diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_mysql.sql b/tests/test_sql_refsols/cumulative_stock_analysis_mysql.sql index 0cb4e8169..38ea15e82 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_mysql.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_mysql.sql @@ -1,32 +1,32 @@ SELECT - sbtransaction.sbtxdatetime AS date_time, - COUNT(*) OVER (PARTITION BY CAST(CAST(sbtransaction.sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, + sbTransaction.sbtxdatetime AS date_time, + COUNT(*) OVER (PARTITION BY CAST(CAST(sbTransaction.sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, COUNT( - CASE WHEN sbtransaction.sbtxtype = 'buy' THEN sbtransaction.sbtxtype ELSE NULL END - ) OVER (PARTITION BY CAST(CAST(sbtransaction.sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, + CASE WHEN sbTransaction.sbtxtype = 'buy' THEN sbTransaction.sbtxtype ELSE NULL END + ) OVER (PARTITION BY CAST(CAST(sbTransaction.sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, ROUND( ( - 100.0 * SUM(sbticker.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 100.0 * SUM(sbTicker.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS pct_apple_txns, SUM( CASE - WHEN sbtransaction.sbtxtype = 'buy' - THEN sbtransaction.sbtxshares - ELSE 0 - sbtransaction.sbtxshares + WHEN sbTransaction.sbtxtype = 'buy' + THEN sbTransaction.sbtxshares + ELSE 0 - sbTransaction.sbtxshares END - ) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, + ) OVER (ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, ROUND( - AVG(sbtransaction.sbtxamount) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + AVG(sbTransaction.sbtxamount) OVER (ORDER BY sbTransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS rolling_avg_amount -FROM main.sbtransaction AS sbtransaction -JOIN main.sbticker AS sbticker - ON sbticker.sbtickerid = sbtransaction.sbtxtickerid +FROM main.sbTransaction AS sbTransaction +JOIN main.sbTicker AS sbTicker + ON sbTicker.sbtickerid = sbTransaction.sbtxtickerid WHERE - EXTRACT(MONTH FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) = 4 - AND EXTRACT(YEAR FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) = 2023 - AND sbtransaction.sbtxstatus = 'success' + EXTRACT(MONTH FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) = 4 + AND EXTRACT(YEAR FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) = 2023 + AND sbTransaction.sbtxstatus = 'success' ORDER BY 1 diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index 25d8b846f..e07b6545e 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -1,32 +1,32 @@ SELECT - sbtransaction.sbtxdatetime AS date_time, - COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, + SBTRANSACTION.sbtxdatetime AS date_time, + COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, COUNT( - CASE WHEN sbtransaction.sbtxtype = 'buy' THEN sbtransaction.sbtxtype ELSE NULL END - ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, + CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END + ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, ROUND( ( - 100.0 * COUNT_IF(sbticker.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 100.0 * COUNT_IF(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS pct_apple_txns, SUM( IFF( - sbtransaction.sbtxtype = 'buy', - sbtransaction.sbtxshares, - 0 - sbtransaction.sbtxshares + SBTRANSACTION.sbtxtype = 'buy', + SBTRANSACTION.sbtxshares, + 0 - SBTRANSACTION.sbtxshares ) - ) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, + ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, ROUND( - AVG(sbtransaction.sbtxamount) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS rolling_avg_amount -FROM main.sbtransaction AS sbtransaction -JOIN main.sbticker AS sbticker - ON sbticker.sbtickerid = sbtransaction.sbtxtickerid +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid WHERE - MONTH(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 4 - AND YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 - AND sbtransaction.sbtxstatus = 'success' + MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 4 + AND SBTRANSACTION.sbtxstatus = 'success' + AND YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_mysql.sql b/tests/test_sql_refsols/datediff_mysql.sql index 81660bdb8..e175d4ef5 100644 --- a/tests/test_sql_refsols/datediff_mysql.sql +++ b/tests/test_sql_refsols/datediff_mysql.sql @@ -20,7 +20,7 @@ SELECT DATE_FORMAT(CAST('2023-04-03 13:16:30' AS DATETIME), '%Y-%m-%d %H:%i:00') ) AS minutes_diff, TIMESTAMPDIFF(SECOND, sbtxdatetime, CAST('2023-04-03 13:16:30' AS DATETIME)) AS seconds_diff -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 ORDER BY diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql index 90148f8b4..615e2b218 100644 --- a/tests/test_sql_refsols/datediff_snowflake.sql +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -8,7 +8,7 @@ SELECT DATEDIFF(HOUR, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS hours_diff, DATEDIFF(MINUTE, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS minutes_diff, DATEDIFF(SECOND, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS seconds_diff -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 ORDER BY diff --git a/tests/test_sql_refsols/datetime_functions_mysql.sql b/tests/test_sql_refsols/datetime_functions_mysql.sql index 804b1a65d..11b470926 100644 --- a/tests/test_sql_refsols/datetime_functions_mysql.sql +++ b/tests/test_sql_refsols/datetime_functions_mysql.sql @@ -61,4 +61,4 @@ SELECT DAYNAME(o_orderdate) AS dayname_col, DAYNAME('1995-06-30') AS dayname_str, DAYNAME(CAST('1993-08-15 00:00:00' AS DATETIME)) AS dayname_dt -FROM tpch.orders +FROM tpch.ORDERS diff --git a/tests/test_sql_refsols/datetime_functions_snowflake.sql b/tests/test_sql_refsols/datetime_functions_snowflake.sql index 9efb94cfe..da530defe 100644 --- a/tests/test_sql_refsols/datetime_functions_snowflake.sql +++ b/tests/test_sql_refsols/datetime_functions_snowflake.sql @@ -85,4 +85,4 @@ SELECT WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 6 THEN 'Saturday' END AS dayname_dt -FROM tpch.orders +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/datetime_sampler_mysql.sql b/tests/test_sql_refsols/datetime_sampler_mysql.sql index 80cb85f3d..0075b3059 100644 --- a/tests/test_sql_refsols/datetime_sampler_mysql.sql +++ b/tests/test_sql_refsols/datetime_sampler_mysql.sql @@ -458,4 +458,4 @@ SELECT ) AS _expr98, TIMESTAMPDIFF(SECOND, CURRENT_TIMESTAMP(), CAST('1999-03-14' AS DATETIME)) AS _expr99, TIMESTAMPDIFF(SECOND, CAST('2022-11-24' AS DATE), CAST('2019-07-04 11:30:00' AS DATETIME)) AS _expr100 -FROM tpch.orders +FROM tpch.ORDERS diff --git a/tests/test_sql_refsols/datetime_sampler_snowflake.sql b/tests/test_sql_refsols/datetime_sampler_snowflake.sql index 5d6798a50..c8697dd70 100644 --- a/tests/test_sql_refsols/datetime_sampler_snowflake.sql +++ b/tests/test_sql_refsols/datetime_sampler_snowflake.sql @@ -167,4 +167,4 @@ SELECT DATEDIFF(MINUTE, CURRENT_TIMESTAMP(), CAST('2018-02-14 12:41:06' AS TIMESTAMP)) AS _expr98, DATEDIFF(SECOND, CURRENT_TIMESTAMP(), CAST('1999-03-14' AS TIMESTAMP)) AS _expr99, DATEDIFF(SECOND, CAST('2022-11-24' AS DATE), CAST('2019-07-04 11:30:00' AS TIMESTAMP)) AS _expr100 -FROM tpch.orders +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/defog_broker_adv10_mysql.sql b/tests/test_sql_refsols/defog_broker_adv10_mysql.sql index 9ce90757f..cbb89eb1e 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_mysql.sql @@ -3,22 +3,22 @@ WITH _s1 AS ( EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) AS expr_1, EXTRACT(MONTH FROM CAST(sbtxdatetime AS DATETIME)) AS expr_2, COUNT(*) AS n_rows, - sbtxcustid - FROM main.sbtransaction + sbtxcustid AS sbTxCustId + FROM main.sbTransaction GROUP BY 1, 2, 4 ) SELECT - sbcustomer.sbcustid AS _id, - sbcustomer.sbcustname AS name, + sbCustomer.sbcustid AS _id, + sbCustomer.sbcustname AS name, COALESCE(_s1.n_rows, 0) AS num_transactions -FROM main.sbcustomer AS sbcustomer +FROM main.sbCustomer AS sbCustomer LEFT JOIN _s1 AS _s1 - ON _s1.expr_1 = EXTRACT(YEAR FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)) - AND _s1.expr_2 = EXTRACT(MONTH FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)) - AND _s1.sbtxcustid = sbcustomer.sbcustid + ON _s1.expr_1 = EXTRACT(YEAR FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)) + AND _s1.expr_2 = EXTRACT(MONTH FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)) + AND _s1.sbTxCustId = sbCustomer.sbcustid ORDER BY 3 DESC LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql index b7b4c5729..d403616c5 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -1,24 +1,24 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - YEAR(CAST(sbtxdatetime AS TIMESTAMP)) AS expr_1, - MONTH(CAST(sbtxdatetime AS TIMESTAMP)) AS expr_2, - COUNT(*) AS n_rows, - sbtxcustid - FROM main.sbtransaction + YEAR(CAST(sbtxdatetime AS TIMESTAMP)) AS EXPR_1, + MONTH(CAST(sbtxdatetime AS TIMESTAMP)) AS EXPR_2, + COUNT(*) AS N_ROWS, + sbtxcustid AS SBTXCUSTID + FROM MAIN.SBTRANSACTION GROUP BY 1, 2, 4 ) SELECT - sbcustomer.sbcustid AS _id, - sbcustomer.sbcustname AS name, - COALESCE(_s1.n_rows, 0) AS num_transactions -FROM main.sbcustomer AS sbcustomer -LEFT JOIN _s1 AS _s1 - ON _s1.expr_1 = YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) - AND _s1.expr_2 = MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) - AND _s1.sbtxcustid = sbcustomer.sbcustid + SBCUSTOMER.sbcustid AS _id, + SBCUSTOMER.sbcustname AS name, + COALESCE(_S1.N_ROWS, 0) AS num_transactions +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + AND _S1.EXPR_1 = YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) + AND _S1.EXPR_2 = MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv11_mysql.sql b/tests/test_sql_refsols/defog_broker_adv11_mysql.sql index e1dc3aa43..3cbcf960f 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_mysql.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT - sbtransaction.sbtxcustid AS _u_1 - FROM main.sbtransaction AS sbtransaction - JOIN main.sbticker AS sbticker - ON sbticker.sbtickerid = sbtransaction.sbtxtickerid - AND sbticker.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') + sbTransaction.sbtxcustid AS _u_1 + FROM main.sbTransaction AS sbTransaction + JOIN main.sbTicker AS sbTicker + ON sbTicker.sbtickerid = sbTransaction.sbtxtickerid + AND sbTicker.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') GROUP BY 1 ) SELECT COUNT(*) AS n_customers -FROM main.sbcustomer AS sbcustomer +FROM main.sbCustomer AS sbCustomer LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbcustomer.sbcustid + ON _u_0._u_1 = sbCustomer.sbcustid WHERE - NOT _u_0._u_1 IS NULL AND sbcustomer.sbcustemail LIKE '%.com' + NOT _u_0._u_1 IS NULL AND sbCustomer.sbcustemail LIKE '%.com' diff --git a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql index f497c81e3..a7400d9fe 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT - sbtransaction.sbtxcustid AS _u_1 - FROM main.sbtransaction AS sbtransaction - JOIN main.sbticker AS sbticker - ON sbticker.sbtickerid = sbtransaction.sbtxtickerid - AND sbticker.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') + SBTRANSACTION.sbtxcustid AS _u_1 + FROM MAIN.SBTRANSACTION AS SBTRANSACTION + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + AND SBTICKER.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') GROUP BY 1 ) SELECT COUNT(*) AS n_customers -FROM main.sbcustomer AS sbcustomer +FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbcustomer.sbcustid + ON SBCUSTOMER.sbcustid = _u_0._u_1 WHERE - ENDSWITH(sbcustomer.sbcustemail, '.com') AND NOT _u_0._u_1 IS NULL + ENDSWITH(SBCUSTOMER.sbcustemail, '.com') AND NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_adv12_mysql.sql b/tests/test_sql_refsols/defog_broker_adv12_mysql.sql index f8cae8dd9..671ed92d8 100644 --- a/tests/test_sql_refsols/defog_broker_adv12_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv12_mysql.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS n_customers -FROM main.sbcustomer +FROM main.sbCustomer WHERE ( LOWER(sbcustname) LIKE '%ez' OR LOWER(sbcustname) LIKE 'j%' diff --git a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql index b2ee83029..4344097be 100644 --- a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS n_customers -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER WHERE ( ENDSWITH(LOWER(sbcustname), 'ez') OR STARTSWITH(LOWER(sbcustname), 'j') diff --git a/tests/test_sql_refsols/defog_broker_adv13_mysql.sql b/tests/test_sql_refsols/defog_broker_adv13_mysql.sql index 011c5ba86..6f05f4db7 100644 --- a/tests/test_sql_refsols/defog_broker_adv13_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv13_mysql.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS cust_country, COUNT(*) AS TAC -FROM main.sbcustomer +FROM main.sbCustomer WHERE sbcustjoindate >= CAST('2023-01-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql index 011c5ba86..1bebc416b 100644 --- a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS cust_country, COUNT(*) AS TAC -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER WHERE sbcustjoindate >= CAST('2023-01-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv14_mysql.sql b/tests/test_sql_refsols/defog_broker_adv14_mysql.sql index acabae18a..2e6957884 100644 --- a/tests/test_sql_refsols/defog_broker_adv14_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv14_mysql.sql @@ -1,9 +1,9 @@ SELECT - sbticker.sbtickertype AS ticker_type, - AVG(sbdailyprice.sbdpclose) AS ACP -FROM main.sbticker AS sbticker -JOIN main.sbdailyprice AS sbdailyprice - ON DATEDIFF(CURRENT_TIMESTAMP(), sbdailyprice.sbdpdate) <= 7 - AND sbdailyprice.sbdptickerid = sbticker.sbtickerid + sbTicker.sbtickertype AS ticker_type, + AVG(sbDailyPrice.sbdpclose) AS ACP +FROM main.sbTicker AS sbTicker +JOIN main.sbDailyPrice AS sbDailyPrice + ON DATEDIFF(CURRENT_TIMESTAMP(), sbDailyPrice.sbdpdate) <= 7 + AND sbDailyPrice.sbdptickerid = sbTicker.sbtickerid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql index 0d9f76898..a8d0ebe14 100644 --- a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql @@ -1,9 +1,9 @@ SELECT - sbticker.sbtickertype AS ticker_type, - AVG(sbdailyprice.sbdpclose) AS ACP -FROM main.sbticker AS sbticker -JOIN main.sbdailyprice AS sbdailyprice - ON DATEDIFF(DAY, CAST(sbdailyprice.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 - AND sbdailyprice.sbdptickerid = sbticker.sbtickerid + SBTICKER.sbtickertype AS ticker_type, + AVG(SBDAILYPRICE.sbdpclose) AS ACP +FROM MAIN.SBTICKER AS SBTICKER +JOIN MAIN.SBDAILYPRICE AS SBDAILYPRICE + ON DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + AND SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_adv15_mysql.sql b/tests/test_sql_refsols/defog_broker_adv15_mysql.sql index 45af26175..3de2ea42c 100644 --- a/tests/test_sql_refsols/defog_broker_adv15_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv15_mysql.sql @@ -3,7 +3,7 @@ SELECT 100 * ( COALESCE(SUM(sbcuststatus = 'active'), 0) / COUNT(*) ) AS ar -FROM main.sbcustomer +FROM main.sbCustomer WHERE sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql index e735bcfcd..e641bc601 100644 --- a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql @@ -3,7 +3,7 @@ SELECT 100 * ( COALESCE(COUNT_IF(sbcuststatus = 'active'), 0) / COUNT(*) ) AS ar -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER WHERE sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv16_mysql.sql b/tests/test_sql_refsols/defog_broker_adv16_mysql.sql index 7a3498e90..47b4d81c5 100644 --- a/tests/test_sql_refsols/defog_broker_adv16_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv16_mysql.sql @@ -1,9 +1,9 @@ WITH _s1 AS ( SELECT SUM(sbtxtax + sbtxcommission) AS sum_expr_2, - SUM(sbtxamount) AS sum_sbtxamount, - sbtxtickerid - FROM main.sbtransaction + SUM(sbtxamount) AS sum_sbTxAmount, + sbtxtickerid AS sbTxTickerId + FROM main.sbTransaction WHERE sbtxdatetime >= DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-1' MONTH) AND sbtxtype = 'sell' @@ -11,14 +11,14 @@ WITH _s1 AS ( 3 ) SELECT - sbticker.sbtickersymbol COLLATE utf8mb4_bin AS symbol, + sbTicker.sbtickersymbol COLLATE utf8mb4_bin AS symbol, ( 100.0 * ( - COALESCE(_s1.sum_sbtxamount, 0) - COALESCE(_s1.sum_expr_2, 0) + COALESCE(_s1.sum_sbTxAmount, 0) - COALESCE(_s1.sum_expr_2, 0) ) - ) / COALESCE(_s1.sum_sbtxamount, 0) AS SPM -FROM main.sbticker AS sbticker + ) / COALESCE(_s1.sum_sbTxAmount, 0) AS SPM +FROM main.sbTicker AS sbTicker JOIN _s1 AS _s1 - ON _s1.sbtxtickerid = sbticker.sbtickerid + ON _s1.sbTxTickerId = sbTicker.sbtickerid ORDER BY 1 diff --git a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql index 93d7cefd8..6ca9217ef 100644 --- a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql @@ -1,23 +1,23 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - SUM(sbtxtax + sbtxcommission) AS sum_expr_2, - SUM(sbtxamount) AS sum_sbtxamount, - sbtxtickerid - FROM main.sbtransaction + SUM(sbtxtax + sbtxcommission) AS SUM_EXPR_2, + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxtickerid AS SBTXTICKERID + FROM MAIN.SBTRANSACTION WHERE sbtxdatetime >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP()) AND sbtxtype = 'sell' GROUP BY 3 ) SELECT - sbticker.sbtickersymbol AS symbol, + SBTICKER.sbtickersymbol AS symbol, ( 100.0 * ( - COALESCE(_s1.sum_sbtxamount, 0) - COALESCE(_s1.sum_expr_2, 0) + COALESCE(_S1.SUM_SBTXAMOUNT, 0) - COALESCE(_S1.SUM_EXPR_2, 0) ) - ) / COALESCE(_s1.sum_sbtxamount, 0) AS SPM -FROM main.sbticker AS sbticker -JOIN _s1 AS _s1 - ON _s1.sbtxtickerid = sbticker.sbtickerid + ) / COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS SPM +FROM MAIN.SBTICKER AS SBTICKER +JOIN _S1 AS _S1 + ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv1_mysql.sql b/tests/test_sql_refsols/defog_broker_adv1_mysql.sql index 8307f4daa..73a9236e4 100644 --- a/tests/test_sql_refsols/defog_broker_adv1_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv1_mysql.sql @@ -1,17 +1,17 @@ WITH _s1 AS ( SELECT - SUM(sbtxamount) AS sum_sbtxamount, - sbtxcustid - FROM main.sbtransaction + SUM(sbtxamount) AS sum_sbTxAmount, + sbtxcustid AS sbTxCustId + FROM main.sbTransaction GROUP BY 2 ) SELECT - sbcustomer.sbcustname AS name, - COALESCE(_s1.sum_sbtxamount, 0) AS total_amount -FROM main.sbcustomer AS sbcustomer + sbCustomer.sbcustname AS name, + COALESCE(_s1.sum_sbTxAmount, 0) AS total_amount +FROM main.sbCustomer AS sbCustomer LEFT JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + ON _s1.sbTxCustId = sbCustomer.sbcustid ORDER BY 2 DESC LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql index b83dcb2ac..293aef3b2 100644 --- a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql @@ -1,17 +1,17 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - SUM(sbtxamount) AS sum_sbtxamount, - sbtxcustid - FROM main.sbtransaction + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxcustid AS SBTXCUSTID + FROM MAIN.SBTRANSACTION GROUP BY 2 ) SELECT - sbcustomer.sbcustname AS name, - COALESCE(_s1.sum_sbtxamount, 0) AS total_amount -FROM main.sbcustomer AS sbcustomer -LEFT JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + SBCUSTOMER.sbcustname AS name, + COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID ORDER BY 2 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv2_mysql.sql b/tests/test_sql_refsols/defog_broker_adv2_mysql.sql index b062e7491..5467c8bd2 100644 --- a/tests/test_sql_refsols/defog_broker_adv2_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv2_mysql.sql @@ -1,8 +1,8 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - sbtxtickerid - FROM main.sbtransaction + sbtxtickerid AS sbTxTickerId + FROM main.sbTransaction WHERE sbtxdatetime >= CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-10' DAY) AS DATE) AND sbtxtype = 'buy' @@ -10,11 +10,11 @@ WITH _s1 AS ( 2 ) SELECT - sbticker.sbtickersymbol AS symbol, + sbTicker.sbtickersymbol AS symbol, COALESCE(_s1.n_rows, 0) AS tx_count -FROM main.sbticker AS sbticker +FROM main.sbTicker AS sbTicker LEFT JOIN _s1 AS _s1 - ON _s1.sbtxtickerid = sbticker.sbtickerid + ON _s1.sbTxTickerId = sbTicker.sbtickerid ORDER BY 2 DESC LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql index b4dfab519..50990724f 100644 --- a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql @@ -1,8 +1,8 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - sbtxtickerid - FROM main.sbtransaction + COUNT(*) AS N_ROWS, + sbtxtickerid AS SBTXTICKERID + FROM MAIN.SBTRANSACTION WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -10, CURRENT_TIMESTAMP())) AND sbtxtype = 'buy' @@ -10,11 +10,11 @@ WITH _s1 AS ( 2 ) SELECT - sbticker.sbtickersymbol AS symbol, - COALESCE(_s1.n_rows, 0) AS tx_count -FROM main.sbticker AS sbticker -LEFT JOIN _s1 AS _s1 - ON _s1.sbtxtickerid = sbticker.sbtickerid + SBTICKER.sbtickersymbol AS symbol, + COALESCE(_S1.N_ROWS, 0) AS tx_count +FROM MAIN.SBTICKER AS SBTICKER +LEFT JOIN _S1 AS _S1 + ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY 2 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_mysql.sql b/tests/test_sql_refsols/defog_broker_adv3_mysql.sql index 3a0ab0c8f..6b4ec7960 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_mysql.sql @@ -2,18 +2,18 @@ WITH _t1 AS ( SELECT COUNT(*) AS n_rows, SUM(sbtxstatus = 'success') AS sum_expr_2, - sbtxcustid - FROM main.sbtransaction + sbtxcustid AS sbTxCustId + FROM main.sbTransaction GROUP BY 3 ) SELECT - sbcustomer.sbcustname AS name, + sbCustomer.sbcustname AS name, ( 100.0 * COALESCE(_t1.sum_expr_2, 0) ) / _t1.n_rows AS success_rate -FROM main.sbcustomer AS sbcustomer +FROM main.sbCustomer AS sbCustomer JOIN _t1 AS _t1 - ON _t1.n_rows >= 5 AND _t1.sbtxcustid = sbcustomer.sbcustid + ON _t1.n_rows >= 5 AND _t1.sbTxCustId = sbCustomer.sbcustid ORDER BY 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql index 542ba352c..d08f16b72 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql @@ -1,19 +1,19 @@ -WITH _t1 AS ( +WITH _T1 AS ( SELECT - COUNT(*) AS n_rows, - COUNT_IF(sbtxstatus = 'success') AS sum_expr_2, - sbtxcustid - FROM main.sbtransaction + COUNT(*) AS N_ROWS, + COUNT_IF(sbtxstatus = 'success') AS SUM_EXPR_2, + sbtxcustid AS SBTXCUSTID + FROM MAIN.SBTRANSACTION GROUP BY 3 ) SELECT - sbcustomer.sbcustname AS name, + SBCUSTOMER.sbcustname AS name, ( - 100.0 * COALESCE(_t1.sum_expr_2, 0) - ) / _t1.n_rows AS success_rate -FROM main.sbcustomer AS sbcustomer -JOIN _t1 AS _t1 - ON _t1.n_rows >= 5 AND _t1.sbtxcustid = sbcustomer.sbcustid + 100.0 * COALESCE(_T1.SUM_EXPR_2, 0) + ) / _T1.N_ROWS AS success_rate +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN _T1 AS _T1 + ON SBCUSTOMER.sbcustid = _T1.SBTXCUSTID AND _T1.N_ROWS >= 5 ORDER BY 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv4_mysql.sql b/tests/test_sql_refsols/defog_broker_adv4_mysql.sql index ecdf0e275..1b7e1cc1b 100644 --- a/tests/test_sql_refsols/defog_broker_adv4_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv4_mysql.sql @@ -1,20 +1,20 @@ WITH _s1 AS ( SELECT - MAX(sbdphigh) AS max_sbdphigh, - MIN(sbdplow) AS min_sbdplow, - sbdptickerid - FROM main.sbdailyprice + MAX(sbdphigh) AS max_sbDpHigh, + MIN(sbdplow) AS min_sbDpLow, + sbdptickerid AS sbDpTickerId + FROM main.sbDailyPrice WHERE sbdpdate <= CAST('2023-04-04' AS DATE) AND sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 3 ) SELECT - sbticker.sbtickersymbol AS symbol, - _s1.max_sbdphigh - _s1.min_sbdplow AS price_change -FROM main.sbticker AS sbticker + sbTicker.sbtickersymbol AS symbol, + _s1.max_sbDpHigh - _s1.min_sbDpLow AS price_change +FROM main.sbTicker AS sbTicker LEFT JOIN _s1 AS _s1 - ON _s1.sbdptickerid = sbticker.sbtickerid + ON _s1.sbDpTickerId = sbTicker.sbtickerid ORDER BY 2 DESC LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql index 37d5e5c4a..463f8ee2c 100644 --- a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql @@ -1,20 +1,20 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - MAX(sbdphigh) AS max_sbdphigh, - MIN(sbdplow) AS min_sbdplow, - sbdptickerid - FROM main.sbdailyprice + MAX(sbdphigh) AS MAX_SBDPHIGH, + MIN(sbdplow) AS MIN_SBDPLOW, + sbdptickerid AS SBDPTICKERID + FROM MAIN.SBDAILYPRICE WHERE sbdpdate <= CAST('2023-04-04' AS DATE) AND sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 3 ) SELECT - sbticker.sbtickersymbol AS symbol, - _s1.max_sbdphigh - _s1.min_sbdplow AS price_change -FROM main.sbticker AS sbticker -LEFT JOIN _s1 AS _s1 - ON _s1.sbdptickerid = sbticker.sbtickerid + SBTICKER.sbtickersymbol AS symbol, + _S1.MAX_SBDPHIGH - _S1.MIN_SBDPLOW AS price_change +FROM MAIN.SBTICKER AS SBTICKER +LEFT JOIN _S1 AS _S1 + ON SBTICKER.sbtickerid = _S1.SBDPTICKERID ORDER BY 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv5_mysql.sql b/tests/test_sql_refsols/defog_broker_adv5_mysql.sql index a4a0efd6a..36b410c1c 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_mysql.sql @@ -1,6 +1,6 @@ WITH _s0 AS ( SELECT - COUNT(sbdpclose) AS count_sbdpclose, + COUNT(sbdpclose) AS count_sbDpClose, MAX(sbdphigh) AS max_high, MIN(sbdplow) AS min_low, CONCAT_WS( @@ -8,9 +8,9 @@ WITH _s0 AS ( EXTRACT(YEAR FROM CAST(sbdpdate AS DATETIME)), LPAD(EXTRACT(MONTH FROM CAST(sbdpdate AS DATETIME)), 2, '0') ) AS month, - SUM(sbdpclose) AS sum_sbdpclose, - sbdptickerid - FROM main.sbdailyprice + SUM(sbdpclose) AS sum_sbDpClose, + sbdptickerid AS sbDpTickerId + FROM main.sbDailyPrice GROUP BY 4, 6 @@ -18,26 +18,26 @@ WITH _s0 AS ( SELECT MAX(_s0.max_high) AS max_high, MIN(_s0.min_low) AS min_low, - SUM(_s0.count_sbdpclose) AS sum_count_sbdpclose, - SUM(_s0.sum_sbdpclose) AS sum_sum_sbdpclose, + SUM(_s0.count_sbDpClose) AS sum_count_sbDpClose, + SUM(_s0.sum_sbDpClose) AS sum_sum_sbDpClose, _s0.month, - sbticker.sbtickersymbol + sbTicker.sbtickersymbol AS sbTickerSymbol FROM _s0 AS _s0 - JOIN main.sbticker AS sbticker - ON _s0.sbdptickerid = sbticker.sbtickerid + JOIN main.sbTicker AS sbTicker + ON _s0.sbDpTickerId = sbTicker.sbtickerid GROUP BY 5, 6 ) SELECT - sbtickersymbol AS symbol, + sbTickerSymbol AS symbol, month, - sum_sum_sbdpclose / sum_count_sbdpclose AS avg_close, + sum_sum_sbDpClose / sum_count_sbDpClose AS avg_close, max_high, min_low, ( ( - sum_sum_sbdpclose / sum_count_sbdpclose - ) - LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY CASE WHEN month COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, month COLLATE utf8mb4_bin) - ) / LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY CASE WHEN month COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, month COLLATE utf8mb4_bin) AS momc + sum_sum_sbDpClose / sum_count_sbDpClose + ) - LAG(sum_sum_sbDpClose / sum_count_sbDpClose, 1) OVER (PARTITION BY sbTickerSymbol ORDER BY CASE WHEN month COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, month COLLATE utf8mb4_bin) + ) / LAG(sum_sum_sbDpClose / sum_count_sbDpClose, 1) OVER (PARTITION BY sbTickerSymbol ORDER BY CASE WHEN month COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, month COLLATE utf8mb4_bin) AS momc FROM _t0 diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index 09b128632..a628e33fd 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -1,43 +1,43 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - COUNT(sbdpclose) AS count_sbdpclose, - MAX(sbdphigh) AS max_high, - MIN(sbdplow) AS min_low, + COUNT(sbdpclose) AS COUNT_SBDPCLOSE, + MAX(sbdphigh) AS MAX_HIGH, + MIN(sbdplow) AS MIN_LOW, CONCAT_WS( '-', YEAR(CAST(sbdpdate AS TIMESTAMP)), LPAD(MONTH(CAST(sbdpdate AS TIMESTAMP)), 2, '0') - ) AS month, - SUM(sbdpclose) AS sum_sbdpclose, - sbdptickerid - FROM main.sbdailyprice + ) AS MONTH, + SUM(sbdpclose) AS SUM_SBDPCLOSE, + sbdptickerid AS SBDPTICKERID + FROM MAIN.SBDAILYPRICE GROUP BY 4, 6 -), _t0 AS ( +), _T0 AS ( SELECT - MAX(_s0.max_high) AS max_high, - MIN(_s0.min_low) AS min_low, - SUM(_s0.count_sbdpclose) AS sum_count_sbdpclose, - SUM(_s0.sum_sbdpclose) AS sum_sum_sbdpclose, - _s0.month, - sbticker.sbtickersymbol - FROM _s0 AS _s0 - JOIN main.sbticker AS sbticker - ON _s0.sbdptickerid = sbticker.sbtickerid + MAX(_S0.MAX_HIGH) AS MAX_HIGH, + MIN(_S0.MIN_LOW) AS MIN_LOW, + SUM(_S0.COUNT_SBDPCLOSE) AS SUM_COUNT_SBDPCLOSE, + SUM(_S0.SUM_SBDPCLOSE) AS SUM_SUM_SBDPCLOSE, + _S0.MONTH, + SBTICKER.sbtickersymbol AS SBTICKERSYMBOL + FROM _S0 AS _S0 + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = _S0.SBDPTICKERID GROUP BY 5, 6 ) SELECT - sbtickersymbol AS symbol, - month, - sum_sum_sbdpclose / sum_count_sbdpclose AS avg_close, - max_high, - min_low, + SBTICKERSYMBOL AS symbol, + MONTH AS month, + SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE AS avg_close, + MAX_HIGH AS max_high, + MIN_LOW AS min_low, ( ( - sum_sum_sbdpclose / sum_count_sbdpclose - ) - LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY month) - ) / LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY month) AS momc -FROM _t0 + SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE + ) - LAG(SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) + ) / LAG(SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) AS momc +FROM _T0 diff --git a/tests/test_sql_refsols/defog_broker_adv6_mysql.sql b/tests/test_sql_refsols/defog_broker_adv6_mysql.sql index cbbff3f2a..67d545279 100644 --- a/tests/test_sql_refsols/defog_broker_adv6_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv6_mysql.sql @@ -1,17 +1,17 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbtxamount, - sbtxcustid - FROM main.sbtransaction + SUM(sbtxamount) AS sum_sbTxAmount, + sbtxcustid AS sbTxCustId + FROM main.sbTransaction GROUP BY 3 ) SELECT - sbcustomer.sbcustname AS name, + sbCustomer.sbcustname AS name, _s1.n_rows AS num_tx, - COALESCE(_s1.sum_sbtxamount, 0) AS total_amount, - RANK() OVER (ORDER BY COALESCE(_s1.sum_sbtxamount, 0) DESC) AS cust_rank -FROM main.sbcustomer AS sbcustomer + COALESCE(_s1.sum_sbTxAmount, 0) AS total_amount, + RANK() OVER (ORDER BY COALESCE(_s1.sum_sbTxAmount, 0) DESC) AS cust_rank +FROM main.sbCustomer AS sbCustomer JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + ON _s1.sbTxCustId = sbCustomer.sbcustid diff --git a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql index cbbff3f2a..e8dc4a0e7 100644 --- a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql @@ -1,17 +1,17 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbtxamount, - sbtxcustid - FROM main.sbtransaction + COUNT(*) AS N_ROWS, + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxcustid AS SBTXCUSTID + FROM MAIN.SBTRANSACTION GROUP BY 3 ) SELECT - sbcustomer.sbcustname AS name, - _s1.n_rows AS num_tx, - COALESCE(_s1.sum_sbtxamount, 0) AS total_amount, - RANK() OVER (ORDER BY COALESCE(_s1.sum_sbtxamount, 0) DESC) AS cust_rank -FROM main.sbcustomer AS sbcustomer -JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + SBCUSTOMER.sbcustname AS name, + _S1.N_ROWS AS num_tx, + COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount, + RANK() OVER (ORDER BY COALESCE(_S1.SUM_SBTXAMOUNT, 0) DESC) AS cust_rank +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID diff --git a/tests/test_sql_refsols/defog_broker_adv7_mysql.sql b/tests/test_sql_refsols/defog_broker_adv7_mysql.sql index ecae9708d..ed593aee6 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_mysql.sql @@ -6,7 +6,7 @@ WITH _s2 AS ( LPAD(EXTRACT(MONTH FROM CAST(sbcustjoindate AS DATETIME)), 2, '0') ) AS month, COUNT(*) AS n_rows - FROM main.sbcustomer + FROM main.sbCustomer WHERE sbcustjoindate < STR_TO_DATE( CONCAT(YEAR(CURRENT_TIMESTAMP()), ' ', MONTH(CURRENT_TIMESTAMP()), ' 1'), @@ -25,23 +25,23 @@ WITH _s2 AS ( 1 ), _s3 AS ( SELECT - AVG(sbtransaction.sbtxamount) AS avg_sbtxamount, + AVG(sbTransaction.sbtxamount) AS avg_sbTxAmount, CONCAT_WS( '-', - EXTRACT(YEAR FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)), - LPAD(EXTRACT(MONTH FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)), 2, '0') + EXTRACT(YEAR FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)), + LPAD(EXTRACT(MONTH FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)), 2, '0') ) AS month - FROM main.sbcustomer AS sbcustomer - JOIN main.sbtransaction AS sbtransaction - ON EXTRACT(MONTH FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)) = EXTRACT(MONTH FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) - AND EXTRACT(YEAR FROM CAST(sbcustomer.sbcustjoindate AS DATETIME)) = EXTRACT(YEAR FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) - AND sbcustomer.sbcustid = sbtransaction.sbtxcustid + FROM main.sbCustomer AS sbCustomer + JOIN main.sbTransaction AS sbTransaction + ON EXTRACT(MONTH FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)) = EXTRACT(MONTH FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) + AND EXTRACT(YEAR FROM CAST(sbCustomer.sbcustjoindate AS DATETIME)) = EXTRACT(YEAR FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) + AND sbCustomer.sbcustid = sbTransaction.sbtxcustid WHERE - sbcustomer.sbcustjoindate < STR_TO_DATE( + sbCustomer.sbcustjoindate < STR_TO_DATE( CONCAT(YEAR(CURRENT_TIMESTAMP()), ' ', MONTH(CURRENT_TIMESTAMP()), ' 1'), '%Y %c %e' ) - AND sbcustomer.sbcustjoindate >= STR_TO_DATE( + AND sbCustomer.sbcustjoindate >= STR_TO_DATE( CONCAT( YEAR(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-6' MONTH)), ' ', @@ -56,7 +56,7 @@ WITH _s2 AS ( SELECT _s2.month, _s2.n_rows AS customer_signups, - _s3.avg_sbtxamount AS avg_tx_amount + _s3.avg_sbTxAmount AS avg_tx_amount FROM _s2 AS _s2 LEFT JOIN _s3 AS _s3 ON _s2.month = _s3.month diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index c2416b560..1e67b2da7 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -1,40 +1,40 @@ -WITH _s2 AS ( +WITH _S2 AS ( SELECT CONCAT_WS( '-', YEAR(CAST(sbcustjoindate AS TIMESTAMP)), LPAD(MONTH(CAST(sbcustjoindate AS TIMESTAMP)), 2, '0') - ) AS month, - COUNT(*) AS n_rows - FROM main.sbcustomer + ) AS MONTH, + COUNT(*) AS N_ROWS + FROM MAIN.SBCUSTOMER WHERE sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY 1 -), _s3 AS ( +), _S3 AS ( SELECT - AVG(sbtransaction.sbtxamount) AS avg_sbtxamount, + AVG(SBTRANSACTION.sbtxamount) AS AVG_SBTXAMOUNT, CONCAT_WS( '-', - YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)), - LPAD(MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)), 2, '0') - ) AS month - FROM main.sbcustomer AS sbcustomer - JOIN main.sbtransaction AS sbtransaction - ON MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) - AND YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) - AND sbcustomer.sbcustid = sbtransaction.sbtxcustid + YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), + LPAD(MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), 2, '0') + ) AS MONTH + FROM MAIN.SBCUSTOMER AS SBCUSTOMER + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) WHERE - sbcustomer.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) - AND sbcustomer.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) + SBCUSTOMER.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) + AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY 2 ) SELECT - _s2.month, - _s2.n_rows AS customer_signups, - _s3.avg_sbtxamount AS avg_tx_amount -FROM _s2 AS _s2 -LEFT JOIN _s3 AS _s3 - ON _s2.month = _s3.month + _S2.MONTH AS month, + _S2.N_ROWS AS customer_signups, + _S3.AVG_SBTXAMOUNT AS avg_tx_amount +FROM _S2 AS _S2 +LEFT JOIN _S3 AS _S3 + ON _S2.MONTH = _S3.MONTH diff --git a/tests/test_sql_refsols/defog_broker_adv8_mysql.sql b/tests/test_sql_refsols/defog_broker_adv8_mysql.sql index 8d40b94a1..89faf1ae6 100644 --- a/tests/test_sql_refsols/defog_broker_adv8_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv8_mysql.sql @@ -1,7 +1,7 @@ WITH _u_0 AS ( SELECT sbcustid AS _u_1 - FROM main.sbcustomer + FROM main.sbCustomer WHERE LOWER(sbcustcountry) = 'usa' GROUP BY @@ -9,13 +9,13 @@ WITH _u_0 AS ( ) SELECT CASE WHEN COUNT(*) > 0 THEN COUNT(*) ELSE NULL END AS n_transactions, - COALESCE(SUM(sbtransaction.sbtxamount), 0) AS total_amount -FROM main.sbtransaction AS sbtransaction + COALESCE(SUM(sbTransaction.sbtxamount), 0) AS total_amount +FROM main.sbTransaction AS sbTransaction LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbtransaction.sbtxcustid + ON _u_0._u_1 = sbTransaction.sbtxcustid WHERE NOT _u_0._u_1 IS NULL - AND sbtransaction.sbtxdatetime < CAST(DATE_SUB( + AND sbTransaction.sbtxdatetime < CAST(DATE_SUB( CURRENT_TIMESTAMP(), INTERVAL ( ( @@ -23,7 +23,7 @@ WHERE ) % 7 ) DAY ) AS DATE) - AND sbtransaction.sbtxdatetime >= DATE_ADD( + AND sbTransaction.sbtxdatetime >= DATE_ADD( CAST(DATE_SUB( CURRENT_TIMESTAMP(), INTERVAL ( diff --git a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql index 50141aab4..5a061a0dc 100644 --- a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql @@ -1,7 +1,7 @@ WITH _u_0 AS ( SELECT sbcustid AS _u_1 - FROM main.sbcustomer + FROM MAIN.SBCUSTOMER WHERE LOWER(sbcustcountry) = 'usa' GROUP BY @@ -9,13 +9,13 @@ WITH _u_0 AS ( ) SELECT CASE WHEN COUNT(*) > 0 THEN COUNT(*) ELSE NULL END AS n_transactions, - COALESCE(SUM(sbtransaction.sbtxamount), 0) AS total_amount -FROM main.sbtransaction AS sbtransaction + COALESCE(SUM(SBTRANSACTION.sbtxamount), 0) AS total_amount +FROM MAIN.SBTRANSACTION AS SBTRANSACTION LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbtransaction.sbtxcustid + ON SBTRANSACTION.sbtxcustid = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL - AND sbtransaction.sbtxdatetime < DATE_TRUNC( + AND SBTRANSACTION.sbtxdatetime < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -27,7 +27,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND sbtransaction.sbtxdatetime >= DATEADD( + AND SBTRANSACTION.sbtxdatetime >= DATEADD( WEEK, -1, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_broker_adv9_mysql.sql b/tests/test_sql_refsols/defog_broker_adv9_mysql.sql index b80b0812e..0597a6a1d 100644 --- a/tests/test_sql_refsols/defog_broker_adv9_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_adv9_mysql.sql @@ -1,24 +1,24 @@ SELECT CAST(DATE_SUB( - CAST(sbtransaction.sbtxdatetime AS DATETIME), + CAST(sbTransaction.sbtxdatetime AS DATETIME), INTERVAL ( ( - DAYOFWEEK(CAST(sbtransaction.sbtxdatetime AS DATETIME)) + 5 + DAYOFWEEK(CAST(sbTransaction.sbtxdatetime AS DATETIME)) + 5 ) % 7 ) DAY ) AS DATE) AS week, COUNT(*) AS num_transactions, COALESCE(SUM(( ( - DAYOFWEEK(sbtransaction.sbtxdatetime) + 5 + DAYOFWEEK(sbTransaction.sbtxdatetime) + 5 ) % 7 ) IN (5, 6)), 0) AS weekend_transactions -FROM main.sbtransaction AS sbtransaction -JOIN main.sbticker AS sbticker - ON sbticker.sbtickerid = sbtransaction.sbtxtickerid - AND sbticker.sbtickertype = 'stock' +FROM main.sbTransaction AS sbTransaction +JOIN main.sbTicker AS sbTicker + ON sbTicker.sbtickerid = sbTransaction.sbtxtickerid + AND sbTicker.sbtickertype = 'stock' WHERE - sbtransaction.sbtxdatetime < CAST(DATE_SUB( + sbTransaction.sbtxdatetime < CAST(DATE_SUB( CURRENT_TIMESTAMP(), INTERVAL ( ( @@ -26,7 +26,7 @@ WHERE ) % 7 ) DAY ) AS DATE) - AND sbtransaction.sbtxdatetime >= DATE_ADD( + AND sbTransaction.sbtxdatetime >= DATE_ADD( CAST(DATE_SUB( CURRENT_TIMESTAMP(), INTERVAL ( diff --git a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql index e98831783..8cdd93e22 100644 --- a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql @@ -5,27 +5,27 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(sbtransaction.sbtxdatetime AS TIMESTAMP) + CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP) ) ) AS week, COUNT(*) AS num_transactions, COALESCE( COUNT_IF(( ( - DAYOFWEEK(sbtransaction.sbtxdatetime) + 6 + DAYOFWEEK(SBTRANSACTION.sbtxdatetime) + 6 ) % 7 ) IN (5, 6)), 0 ) AS weekend_transactions -FROM main.sbtransaction AS sbtransaction -JOIN main.sbticker AS sbticker - ON sbticker.sbtickerid = sbtransaction.sbtxtickerid - AND sbticker.sbtickertype = 'stock' +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + AND SBTICKER.sbtickertype = 'stock' WHERE - sbtransaction.sbtxdatetime < DATE_TRUNC( + SBTRANSACTION.sbtxdatetime < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -37,7 +37,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND sbtransaction.sbtxdatetime >= DATEADD( + AND SBTRANSACTION.sbtxdatetime >= DATEADD( WEEK, -8, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_broker_basic10_mysql.sql b/tests/test_sql_refsols/defog_broker_basic10_mysql.sql index 1b3a16cf5..8cffdf6da 100644 --- a/tests/test_sql_refsols/defog_broker_basic10_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic10_mysql.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM main.sbdailyprice + FROM main.sbDailyPrice GROUP BY 1 ) SELECT - sbticker.sbtickerid AS _id, - sbticker.sbtickersymbol AS symbol -FROM main.sbticker AS sbticker + sbTicker.sbtickerid AS _id, + sbTicker.sbtickersymbol AS symbol +FROM main.sbTicker AS sbTicker LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbticker.sbtickerid + ON _u_0._u_1 = sbTicker.sbtickerid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql index 1b3a16cf5..f926019f9 100644 --- a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM main.sbdailyprice + FROM MAIN.SBDAILYPRICE GROUP BY 1 ) SELECT - sbticker.sbtickerid AS _id, - sbticker.sbtickersymbol AS symbol -FROM main.sbticker AS sbticker + SBTICKER.sbtickerid AS _id, + SBTICKER.sbtickersymbol AS symbol +FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbticker.sbtickerid + ON SBTICKER.sbtickerid = _u_0._u_1 WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic1_mysql.sql b/tests/test_sql_refsols/defog_broker_basic1_mysql.sql index c825e2913..1175d6b8e 100644 --- a/tests/test_sql_refsols/defog_broker_basic1_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic1_mysql.sql @@ -1,20 +1,20 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbtxamount, - sbtxcustid - FROM main.sbtransaction + SUM(sbtxamount) AS sum_sbTxAmount, + sbtxcustid AS sbTxCustId + FROM main.sbTransaction WHERE sbtxdatetime >= CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-30' DAY) AS DATE) GROUP BY 3 ) SELECT - sbcustomer.sbcustcountry AS country, + sbCustomer.sbcustcountry AS country, COALESCE(SUM(_s1.n_rows), 0) AS num_transactions, - COALESCE(SUM(_s1.sum_sbtxamount), 0) AS total_amount -FROM main.sbcustomer AS sbcustomer + COALESCE(SUM(_s1.sum_sbTxAmount), 0) AS total_amount +FROM main.sbCustomer AS sbCustomer LEFT JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + ON _s1.sbTxCustId = sbCustomer.sbcustid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql index 121a66b86..f555d7941 100644 --- a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql @@ -1,20 +1,20 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbtxamount, - sbtxcustid - FROM main.sbtransaction + COUNT(*) AS N_ROWS, + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxcustid AS SBTXCUSTID + FROM MAIN.SBTRANSACTION WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -30, CURRENT_TIMESTAMP())) GROUP BY 3 ) SELECT - sbcustomer.sbcustcountry AS country, - COALESCE(SUM(_s1.n_rows), 0) AS num_transactions, - COALESCE(SUM(_s1.sum_sbtxamount), 0) AS total_amount -FROM main.sbcustomer AS sbcustomer -LEFT JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + SBCUSTOMER.sbcustcountry AS country, + COALESCE(SUM(_S1.N_ROWS), 0) AS num_transactions, + COALESCE(SUM(_S1.SUM_SBTXAMOUNT), 0) AS total_amount +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_basic2_mysql.sql b/tests/test_sql_refsols/defog_broker_basic2_mysql.sql index a8d5822df..71161206c 100644 --- a/tests/test_sql_refsols/defog_broker_basic2_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic2_mysql.sql @@ -2,7 +2,7 @@ SELECT sbtxtype COLLATE utf8mb4_bin AS transaction_type, COUNT(DISTINCT sbtxcustid) AS num_customers, AVG(sbtxshares) AS avg_shares -FROM main.sbtransaction +FROM main.sbTransaction WHERE sbtxdatetime <= CAST('2023-03-31' AS DATE) AND sbtxdatetime >= CAST('2023-01-01' AS DATE) diff --git a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql index 2c2ba028b..f5697ff7a 100644 --- a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql @@ -2,7 +2,7 @@ SELECT sbtxtype AS transaction_type, COUNT(DISTINCT sbtxcustid) AS num_customers, AVG(sbtxshares) AS avg_shares -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE sbtxdatetime <= CAST('2023-03-31' AS DATE) AND sbtxdatetime >= CAST('2023-01-01' AS DATE) diff --git a/tests/test_sql_refsols/defog_broker_basic3_mysql.sql b/tests/test_sql_refsols/defog_broker_basic3_mysql.sql index ce16e2df1..72c0e0d50 100644 --- a/tests/test_sql_refsols/defog_broker_basic3_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic3_mysql.sql @@ -1,19 +1,19 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbtxamount, - sbtxtickerid - FROM main.sbtransaction + SUM(sbtxamount) AS sum_sbTxAmount, + sbtxtickerid AS sbTxTickerId + FROM main.sbTransaction GROUP BY 3 ) SELECT - sbticker.sbtickersymbol AS symbol, + sbTicker.sbtickersymbol AS symbol, COALESCE(_s1.n_rows, 0) AS num_transactions, - COALESCE(_s1.sum_sbtxamount, 0) AS total_amount -FROM main.sbticker AS sbticker + COALESCE(_s1.sum_sbTxAmount, 0) AS total_amount +FROM main.sbTicker AS sbTicker LEFT JOIN _s1 AS _s1 - ON _s1.sbtxtickerid = sbticker.sbtickerid + ON _s1.sbTxTickerId = sbTicker.sbtickerid ORDER BY 3 DESC LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql index 14a43a168..d2103a902 100644 --- a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql @@ -1,19 +1,19 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - SUM(sbtxamount) AS sum_sbtxamount, - sbtxtickerid - FROM main.sbtransaction + COUNT(*) AS N_ROWS, + SUM(sbtxamount) AS SUM_SBTXAMOUNT, + sbtxtickerid AS SBTXTICKERID + FROM MAIN.SBTRANSACTION GROUP BY 3 ) SELECT - sbticker.sbtickersymbol AS symbol, - COALESCE(_s1.n_rows, 0) AS num_transactions, - COALESCE(_s1.sum_sbtxamount, 0) AS total_amount -FROM main.sbticker AS sbticker -LEFT JOIN _s1 AS _s1 - ON _s1.sbtxtickerid = sbticker.sbtickerid + SBTICKER.sbtickersymbol AS symbol, + COALESCE(_S1.N_ROWS, 0) AS num_transactions, + COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount +FROM MAIN.SBTICKER AS SBTICKER +LEFT JOIN _S1 AS _S1 + ON SBTICKER.sbtickerid = _S1.SBTXTICKERID ORDER BY 3 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_basic4_mysql.sql b/tests/test_sql_refsols/defog_broker_basic4_mysql.sql index d078e262b..1fcd150c0 100644 --- a/tests/test_sql_refsols/defog_broker_basic4_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic4_mysql.sql @@ -1,31 +1,31 @@ WITH _s0 AS ( SELECT COUNT(*) AS num_transactions, - sbtxcustid, - sbtxtickerid - FROM main.sbtransaction + sbtxcustid AS sbTxCustId, + sbtxtickerid AS sbTxTickerId + FROM main.sbTransaction GROUP BY 2, 3 ), _s2 AS ( SELECT SUM(_s0.num_transactions) AS num_transactions, - sbticker.sbtickertype, - _s0.sbtxcustid + sbTicker.sbtickertype AS sbTickerType, + _s0.sbTxCustId FROM _s0 AS _s0 - JOIN main.sbticker AS sbticker - ON _s0.sbtxtickerid = sbticker.sbtickerid + JOIN main.sbTicker AS sbTicker + ON _s0.sbTxTickerId = sbTicker.sbtickerid GROUP BY 2, 3 ) SELECT - sbcustomer.sbcuststate AS state, - _s2.sbtickertype AS ticker_type, + sbCustomer.sbcuststate AS state, + _s2.sbTickerType AS ticker_type, SUM(_s2.num_transactions) AS num_transactions FROM _s2 AS _s2 -JOIN main.sbcustomer AS sbcustomer - ON _s2.sbtxcustid = sbcustomer.sbcustid +JOIN main.sbCustomer AS sbCustomer + ON _s2.sbTxCustId = sbCustomer.sbcustid GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql index 726590352..fe28def67 100644 --- a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql @@ -1,31 +1,31 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - COUNT(*) AS num_transactions, - sbtxcustid, - sbtxtickerid - FROM main.sbtransaction + COUNT(*) AS NUM_TRANSACTIONS, + sbtxcustid AS SBTXCUSTID, + sbtxtickerid AS SBTXTICKERID + FROM MAIN.SBTRANSACTION GROUP BY 2, 3 -), _s2 AS ( +), _S2 AS ( SELECT - SUM(_s0.num_transactions) AS num_transactions, - sbticker.sbtickertype, - _s0.sbtxcustid - FROM _s0 AS _s0 - JOIN main.sbticker AS sbticker - ON _s0.sbtxtickerid = sbticker.sbtickerid + SUM(_S0.NUM_TRANSACTIONS) AS NUM_TRANSACTIONS, + SBTICKER.sbtickertype AS SBTICKERTYPE, + _S0.SBTXCUSTID + FROM _S0 AS _S0 + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = _S0.SBTXTICKERID GROUP BY 2, 3 ) SELECT - sbcustomer.sbcuststate AS state, - _s2.sbtickertype AS ticker_type, - SUM(_s2.num_transactions) AS num_transactions -FROM _s2 AS _s2 -JOIN main.sbcustomer AS sbcustomer - ON _s2.sbtxcustid = sbcustomer.sbcustid + SBCUSTOMER.sbcuststate AS state, + _S2.SBTICKERTYPE AS ticker_type, + SUM(_S2.NUM_TRANSACTIONS) AS num_transactions +FROM _S2 AS _S2 +JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = _S2.SBTXCUSTID GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/defog_broker_basic5_mysql.sql b/tests/test_sql_refsols/defog_broker_basic5_mysql.sql index 669d92e42..550aab5c2 100644 --- a/tests/test_sql_refsols/defog_broker_basic5_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic5_mysql.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM main.sbtransaction + FROM main.sbTransaction WHERE sbtxtype = 'buy' GROUP BY 1 ) SELECT - sbcustomer.sbcustid AS _id -FROM main.sbcustomer AS sbcustomer + sbCustomer.sbcustid AS _id +FROM main.sbCustomer AS sbCustomer LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbcustomer.sbcustid + ON _u_0._u_1 = sbCustomer.sbcustid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql index 669d92e42..7d9a16807 100644 --- a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM main.sbtransaction + FROM MAIN.SBTRANSACTION WHERE sbtxtype = 'buy' GROUP BY 1 ) SELECT - sbcustomer.sbcustid AS _id -FROM main.sbcustomer AS sbcustomer + SBCUSTOMER.sbcustid AS _id +FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbcustomer.sbcustid + ON SBCUSTOMER.sbcustid = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic6_mysql.sql b/tests/test_sql_refsols/defog_broker_basic6_mysql.sql index 170c215bd..803c5d5b5 100644 --- a/tests/test_sql_refsols/defog_broker_basic6_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic6_mysql.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM main.sbdailyprice + FROM main.sbDailyPrice WHERE sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 1 ) SELECT - sbticker.sbtickerid AS _id -FROM main.sbticker AS sbticker + sbTicker.sbtickerid AS _id +FROM main.sbTicker AS sbTicker LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbticker.sbtickerid + ON _u_0._u_1 = sbTicker.sbtickerid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql index 170c215bd..39ecccabf 100644 --- a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM main.sbdailyprice + FROM MAIN.SBDAILYPRICE WHERE sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 1 ) SELECT - sbticker.sbtickerid AS _id -FROM main.sbticker AS sbticker + SBTICKER.sbtickerid AS _id +FROM MAIN.SBTICKER AS SBTICKER LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbticker.sbtickerid + ON SBTICKER.sbtickerid = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic7_mysql.sql b/tests/test_sql_refsols/defog_broker_basic7_mysql.sql index d8f4a45fb..49dd01d9f 100644 --- a/tests/test_sql_refsols/defog_broker_basic7_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic7_mysql.sql @@ -1,7 +1,7 @@ SELECT sbtxstatus AS status, COUNT(*) AS num_transactions -FROM main.sbtransaction +FROM main.sbTransaction GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql index c1f3031b1..64b64904a 100644 --- a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbtxstatus AS status, COUNT(*) AS num_transactions -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic8_mysql.sql b/tests/test_sql_refsols/defog_broker_basic8_mysql.sql index 21c4e9f66..cca6560a7 100644 --- a/tests/test_sql_refsols/defog_broker_basic8_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic8_mysql.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS country, COUNT(*) AS num_customers -FROM main.sbcustomer +FROM main.sbCustomer GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql index fb20ad227..fab020c76 100644 --- a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS country, COUNT(*) AS num_customers -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic9_mysql.sql b/tests/test_sql_refsols/defog_broker_basic9_mysql.sql index f96baada7..9e6df0dec 100644 --- a/tests/test_sql_refsols/defog_broker_basic9_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_basic9_mysql.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM main.sbtransaction + FROM main.sbTransaction GROUP BY 1 ) SELECT - sbcustomer.sbcustid AS _id, - sbcustomer.sbcustname AS name -FROM main.sbcustomer AS sbcustomer + sbCustomer.sbcustid AS _id, + sbCustomer.sbcustname AS name +FROM main.sbCustomer AS sbCustomer LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbcustomer.sbcustid + ON _u_0._u_1 = sbCustomer.sbcustid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql index f96baada7..5ad788527 100644 --- a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM main.sbtransaction + FROM MAIN.SBTRANSACTION GROUP BY 1 ) SELECT - sbcustomer.sbcustid AS _id, - sbcustomer.sbcustname AS name -FROM main.sbcustomer AS sbcustomer + SBCUSTOMER.sbcustid AS _id, + SBCUSTOMER.sbcustname AS name +FROM MAIN.SBCUSTOMER AS SBCUSTOMER LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = sbcustomer.sbcustid + ON SBCUSTOMER.sbcustid = _u_0._u_1 WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_gen1_mysql.sql b/tests/test_sql_refsols/defog_broker_gen1_mysql.sql index a329967ed..125f71020 100644 --- a/tests/test_sql_refsols/defog_broker_gen1_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen1_mysql.sql @@ -1,8 +1,8 @@ SELECT - MIN(sbdailyprice.sbdpclose) AS lowest_price -FROM main.sbdailyprice AS sbdailyprice -JOIN main.sbticker AS sbticker - ON sbdailyprice.sbdptickerid = sbticker.sbtickerid - AND sbticker.sbtickersymbol = 'VTI' + MIN(sbDailyPrice.sbdpclose) AS lowest_price +FROM main.sbDailyPrice AS sbDailyPrice +JOIN main.sbTicker AS sbTicker + ON sbDailyPrice.sbdptickerid = sbTicker.sbtickerid + AND sbTicker.sbtickersymbol = 'VTI' WHERE - DATEDIFF(CURRENT_TIMESTAMP(), sbdailyprice.sbdpdate) <= 7 + DATEDIFF(CURRENT_TIMESTAMP(), sbDailyPrice.sbdpdate) <= 7 diff --git a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql index db65bbc3a..55d275bc0 100644 --- a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql @@ -1,8 +1,8 @@ SELECT - MIN(sbdailyprice.sbdpclose) AS lowest_price -FROM main.sbdailyprice AS sbdailyprice -JOIN main.sbticker AS sbticker - ON sbdailyprice.sbdptickerid = sbticker.sbtickerid - AND sbticker.sbtickersymbol = 'VTI' + MIN(SBDAILYPRICE.sbdpclose) AS lowest_price +FROM MAIN.SBDAILYPRICE AS SBDAILYPRICE +JOIN MAIN.SBTICKER AS SBTICKER + ON SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid + AND SBTICKER.sbtickersymbol = 'VTI' WHERE - DATEDIFF(DAY, CAST(sbdailyprice.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_broker_gen2_mysql.sql b/tests/test_sql_refsols/defog_broker_gen2_mysql.sql index c7213060d..b6de5b9f0 100644 --- a/tests/test_sql_refsols/defog_broker_gen2_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen2_mysql.sql @@ -1,6 +1,6 @@ SELECT - COUNT(sbtransaction.sbtxcustid) AS transaction_count -FROM main.sbtransaction AS sbtransaction -JOIN main.sbcustomer AS sbcustomer - ON sbcustomer.sbcustid = sbtransaction.sbtxcustid - AND sbcustomer.sbcustjoindate >= CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-70' DAY) AS DATE) + COUNT(sbTransaction.sbtxcustid) AS transaction_count +FROM main.sbTransaction AS sbTransaction +JOIN main.sbCustomer AS sbCustomer + ON sbCustomer.sbcustid = sbTransaction.sbtxcustid + AND sbCustomer.sbcustjoindate >= CAST(DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL '-70' DAY) AS DATE) diff --git a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql index e2117c631..f42cf1b23 100644 --- a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql @@ -1,6 +1,6 @@ SELECT - COUNT(sbtransaction.sbtxcustid) AS transaction_count -FROM main.sbtransaction AS sbtransaction -JOIN main.sbcustomer AS sbcustomer - ON sbcustomer.sbcustid = sbtransaction.sbtxcustid - AND sbcustomer.sbcustjoindate >= DATE_TRUNC('DAY', DATEADD(DAY, -70, CURRENT_TIMESTAMP())) + COUNT(SBTRANSACTION.sbtxcustid) AS transaction_count +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('DAY', DATEADD(DAY, -70, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_broker_gen3_mysql.sql b/tests/test_sql_refsols/defog_broker_gen3_mysql.sql index cd81bfe81..3711b91d6 100644 --- a/tests/test_sql_refsols/defog_broker_gen3_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen3_mysql.sql @@ -1,14 +1,14 @@ WITH _s1 AS ( SELECT - MIN(sbtxdatetime) AS min_sbtxdatetime, - sbtxcustid - FROM main.sbtransaction + MIN(sbtxdatetime) AS min_sbTxDateTime, + sbtxcustid AS sbTxCustId + FROM main.sbTransaction GROUP BY 2 ) SELECT - sbcustomer.sbcustid AS cust_id, - TIMESTAMPDIFF(SECOND, sbcustomer.sbcustjoindate, _s1.min_sbtxdatetime) / 86400.0 AS DaysFromJoinToFirstTransaction -FROM main.sbcustomer AS sbcustomer + sbCustomer.sbcustid AS cust_id, + TIMESTAMPDIFF(SECOND, sbCustomer.sbcustjoindate, _s1.min_sbTxDateTime) / 86400.0 AS DaysFromJoinToFirstTransaction +FROM main.sbCustomer AS sbCustomer JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + ON _s1.sbTxCustId = sbCustomer.sbcustid diff --git a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql index 9a3cc7626..7a344e4ec 100644 --- a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql @@ -1,18 +1,18 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - MIN(sbtxdatetime) AS min_sbtxdatetime, - sbtxcustid - FROM main.sbtransaction + MIN(sbtxdatetime) AS MIN_SBTXDATETIME, + sbtxcustid AS SBTXCUSTID + FROM MAIN.SBTRANSACTION GROUP BY 2 ) SELECT - sbcustomer.sbcustid AS cust_id, + SBCUSTOMER.sbcustid AS cust_id, DATEDIFF( SECOND, - CAST(sbcustomer.sbcustjoindate AS DATETIME), - CAST(_s1.min_sbtxdatetime AS DATETIME) + CAST(SBCUSTOMER.sbcustjoindate AS DATETIME), + CAST(_S1.MIN_SBTXDATETIME AS DATETIME) ) / 86400.0 AS DaysFromJoinToFirstTransaction -FROM main.sbcustomer AS sbcustomer -JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID diff --git a/tests/test_sql_refsols/defog_broker_gen4_mysql.sql b/tests/test_sql_refsols/defog_broker_gen4_mysql.sql index 035a650b1..7212a373c 100644 --- a/tests/test_sql_refsols/defog_broker_gen4_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen4_mysql.sql @@ -1,8 +1,8 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, - sbtxcustid - FROM main.sbtransaction + sbtxcustid AS sbTxCustId + FROM main.sbTransaction WHERE CAST(CAST(sbtxdatetime AS DATETIME) AS DATE) = CAST('2023-04-01' AS DATE) AND sbtxtype = 'sell' @@ -10,12 +10,12 @@ WITH _s1 AS ( 2 ) SELECT - sbcustomer.sbcustid AS _id, - sbcustomer.sbcustname AS name, + sbCustomer.sbcustid AS _id, + sbCustomer.sbcustname AS name, COALESCE(_s1.n_rows, 0) AS num_tx -FROM main.sbcustomer AS sbcustomer +FROM main.sbCustomer AS sbCustomer LEFT JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + ON _s1.sbTxCustId = sbCustomer.sbcustid ORDER BY 3 DESC LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql index c534bb045..dcb16e69c 100644 --- a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql @@ -1,8 +1,8 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - sbtxcustid - FROM main.sbtransaction + COUNT(*) AS N_ROWS, + sbtxcustid AS SBTXCUSTID + FROM MAIN.SBTRANSACTION WHERE CAST(sbtxdatetime AS TIMESTAMP) < CAST('2023-04-02' AS DATE) AND CAST(sbtxdatetime AS TIMESTAMP) >= CAST('2023-04-01' AS DATE) @@ -11,12 +11,12 @@ WITH _s1 AS ( 2 ) SELECT - sbcustomer.sbcustid AS _id, - sbcustomer.sbcustname AS name, - COALESCE(_s1.n_rows, 0) AS num_tx -FROM main.sbcustomer AS sbcustomer -LEFT JOIN _s1 AS _s1 - ON _s1.sbtxcustid = sbcustomer.sbcustid + SBCUSTOMER.sbcustid AS _id, + SBCUSTOMER.sbcustname AS name, + COALESCE(_S1.N_ROWS, 0) AS num_tx +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S1 AS _S1 + ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_gen5_mysql.sql b/tests/test_sql_refsols/defog_broker_gen5_mysql.sql index 411769387..6ea6f8d1a 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_mysql.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_mysql.sql @@ -4,7 +4,7 @@ SELECT '%Y %c %e' ) AS month, AVG(sbtxprice) AS avg_price -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(QUARTER FROM CAST(sbtxdatetime AS DATETIME)) = 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) = 2023 diff --git a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql index e0c8a99a3..18311845d 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql @@ -1,11 +1,11 @@ SELECT DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month, AVG(sbtxprice) AS avg_price -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE QUARTER(CAST(sbtxdatetime AS TIMESTAMP)) = 1 - AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 AND sbtxstatus = 'success' + AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql index 376248e57..a07ccf3df 100644 --- a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql @@ -1,18 +1,18 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - MAX(payment_date) AS max_payment_date, - sale_id - FROM main.payments_received + MAX(payment_date) AS MAX_PAYMENT_DATE, + sale_id AS SALE_ID + FROM MAIN.PAYMENTS_RECEIVED GROUP BY 2 ) SELECT ROUND( AVG( - DATEDIFF(DAY, CAST(sales.sale_date AS DATETIME), CAST(_s1.max_payment_date AS DATETIME)) + DATEDIFF(DAY, CAST(SALES.sale_date AS DATETIME), CAST(_S1.MAX_PAYMENT_DATE AS DATETIME)) ), 2 ) AS avg_days_to_payment -FROM main.sales AS sales -LEFT JOIN _s1 AS _s1 - ON _s1.sale_id = sales._id +FROM MAIN.SALES AS SALES +LEFT JOIN _S1 AS _S1 + ON SALES._id = _S1.SALE_ID diff --git a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql index 57a27617d..5d3582b3f 100644 --- a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql @@ -1,11 +1,11 @@ SELECT ( ( - COALESCE(SUM(sales.sale_price), 0) - COALESCE(SUM(cars.cost), 0) - ) / COALESCE(SUM(cars.cost), 0) + COALESCE(SUM(SALES.sale_price), 0) - COALESCE(SUM(CARS.cost), 0) + ) / COALESCE(SUM(CARS.cost), 0) ) * 100 AS GPM -FROM main.sales AS sales -JOIN main.cars AS cars - ON cars._id = sales.car_id +FROM MAIN.SALES AS SALES +JOIN MAIN.CARS AS CARS + ON CARS._id = SALES.car_id WHERE - YEAR(CAST(sales.sale_date AS TIMESTAMP)) = 2023 + YEAR(CAST(SALES.sale_date AS TIMESTAMP)) = 2023 diff --git a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql index 441231c8e..bd7f07392 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql @@ -1,28 +1,28 @@ -WITH _t1 AS ( +WITH _T1 AS ( SELECT - ANY_VALUE(sales.car_id) AS anything_car_id, - ANY_VALUE(cars.make) AS anything_make, - ANY_VALUE(cars.model) AS anything_model, - ANY_VALUE(sales.sale_price) AS anything_sale_price, - cars._id AS _id_1 - FROM main.sales AS sales - JOIN main.cars AS cars - ON cars._id = sales.car_id - JOIN main.inventory_snapshots AS inventory_snapshots - ON cars._id = inventory_snapshots.car_id - AND inventory_snapshots.is_in_inventory = 0 - AND inventory_snapshots.snapshot_date = sales.sale_date + ANY_VALUE(SALES.car_id) AS ANYTHING_CAR_ID, + ANY_VALUE(CARS.make) AS ANYTHING_MAKE, + ANY_VALUE(CARS.model) AS ANYTHING_MODEL, + ANY_VALUE(SALES.sale_price) AS ANYTHING_SALE_PRICE, + CARS._id AS _ID_1 + FROM MAIN.SALES AS SALES + JOIN MAIN.CARS AS CARS + ON CARS._id = SALES.car_id + JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS + ON CARS._id = INVENTORY_SNAPSHOTS.car_id + AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 + AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date GROUP BY - sales._id, + SALES._id, 5 ) SELECT - anything_make AS make, - anything_model AS model, - anything_sale_price AS sale_price -FROM _t1 + ANYTHING_MAKE AS make, + ANYTHING_MODEL AS model, + ANYTHING_SALE_PRICE AS sale_price +FROM _T1 WHERE - _id_1 = anything_car_id + ANYTHING_CAR_ID = _ID_1 ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql index aa0f7479e..a785f1d56 100644 --- a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql @@ -1,5 +1,5 @@ SELECT COUNT(*) AS TSC -FROM main.sales +FROM MAIN.SALES WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql index 33e8ec651..006deec16 100644 --- a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql @@ -1,18 +1,18 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - AVG(sale_price) AS avg_sale_price, - salesperson_id - FROM main.sales + AVG(sale_price) AS AVG_SALE_PRICE, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES GROUP BY 2 ) SELECT - salespersons.first_name, - salespersons.last_name, - _s1.avg_sale_price AS ASP -FROM main.salespersons AS salespersons -LEFT JOIN _s1 AS _s1 - ON _s1.salesperson_id = salespersons._id + SALESPERSONS.first_name, + SALESPERSONS.last_name, + _S1.AVG_SALE_PRICE AS ASP +FROM MAIN.SALESPERSONS AS SALESPERSONS +LEFT JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY 3 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql index f51f3467f..f9dfe34b2 100644 --- a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql @@ -1,19 +1,19 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - SUM(sale_price) AS sum_sale_price, - salesperson_id - FROM main.sales + SUM(sale_price) AS SUM_SALE_PRICE, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES GROUP BY 2 ) SELECT - salespersons._id, - salespersons.first_name, - salespersons.last_name, - COALESCE(_s1.sum_sale_price, 0) AS total -FROM main.salespersons AS salespersons -LEFT JOIN _s1 AS _s1 - ON _s1.salesperson_id = salespersons._id + SALESPERSONS._id, + SALESPERSONS.first_name, + SALESPERSONS.last_name, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total +FROM MAIN.SALESPERSONS AS SALESPERSONS +LEFT JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql index 28c10f073..3b1358f39 100644 --- a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql @@ -5,24 +5,24 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(payments_received.payment_date AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(payments_received.payment_date AS TIMESTAMP) + CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP) ) ) AS payment_week, COUNT(*) AS total_payments, COALESCE( COUNT_IF(( ( - DAYOFWEEK(payments_received.payment_date) + 6 + DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 ) % 7 ) IN (5, 6)), 0 ) AS weekend_payments -FROM main.payments_received AS payments_received -JOIN main.sales AS sales - ON payments_received.sale_id = sales._id AND sales.sale_price > 30000 +FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED +JOIN MAIN.SALES AS SALES + ON PAYMENTS_RECEIVED.sale_id = SALES._id AND SALES.sale_price > 30000 WHERE DATEDIFF( WEEK, @@ -30,10 +30,10 @@ WHERE DAY, ( ( - DAYOFWEEK(payments_received.payment_date) + 6 + DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 ) % 7 ) * -1, - payments_received.payment_date + PAYMENTS_RECEIVED.payment_date ) AS DATETIME), DATEADD( DAY, @@ -51,10 +51,10 @@ WHERE DAY, ( ( - DAYOFWEEK(payments_received.payment_date) + 6 + DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 ) % 7 ) * -1, - payments_received.payment_date + PAYMENTS_RECEIVED.payment_date ) AS DATETIME), DATEADD( DAY, diff --git a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql index 951d47afe..fccee1e5d 100644 --- a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql @@ -1,21 +1,21 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - salesperson_id - FROM main.sales + COUNT(*) AS N_ROWS, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY 2 ) SELECT - salespersons._id, - salespersons.first_name, - salespersons.last_name, - _s1.n_rows AS num_sales -FROM main.salespersons AS salespersons -JOIN _s1 AS _s1 - ON _s1.salesperson_id = salespersons._id + SALESPERSONS._id, + SALESPERSONS.first_name, + SALESPERSONS.last_name, + _S1.N_ROWS AS num_sales +FROM MAIN.SALESPERSONS AS SALESPERSONS +JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY 4 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql index 05258a65e..0f9f5ed4c 100644 --- a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql @@ -1,17 +1,17 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - car_id - FROM main.sales + COUNT(*) AS N_ROWS, + car_id AS CAR_ID + FROM MAIN.SALES GROUP BY 2 ) SELECT - cars.make, - cars.model, - COALESCE(_s1.n_rows, 0) AS num_sales -FROM main.cars AS cars -LEFT JOIN _s1 AS _s1 - ON _s1.car_id = cars._id + CARS.make, + CARS.model, + COALESCE(_S1.N_ROWS, 0) AS num_sales +FROM MAIN.CARS AS CARS +LEFT JOIN _S1 AS _S1 + ON CARS._id = _S1.CAR_ID WHERE - CONTAINS(LOWER(cars.vin_number), 'm5') + CONTAINS(LOWER(CARS.vin_number), 'm5') diff --git a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql index 2d82c7314..5aeeccbf3 100644 --- a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql @@ -1,25 +1,25 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - SUM(sale_price) AS sum_sale_price, - car_id - FROM main.sales + COUNT(*) AS N_ROWS, + SUM(sale_price) AS SUM_SALE_PRICE, + car_id AS CAR_ID + FROM MAIN.SALES WHERE sale_date >= DATEADD(DAY, -30, CURRENT_TIMESTAMP()) GROUP BY 3 ) SELECT - COALESCE(_s1.n_rows, 0) AS num_sales, + COALESCE(_S1.N_ROWS, 0) AS num_sales, CASE WHEN ( - NOT _s1.n_rows IS NULL AND _s1.n_rows > 0 + NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS > 0 ) - THEN COALESCE(_s1.sum_sale_price, 0) + THEN COALESCE(_S1.SUM_SALE_PRICE, 0) ELSE NULL END AS total_revenue -FROM main.cars AS cars -LEFT JOIN _s1 AS _s1 - ON _s1.car_id = cars._id +FROM MAIN.CARS AS CARS +LEFT JOIN _S1 AS _S1 + ON CARS._id = _S1.CAR_ID WHERE - CONTAINS(LOWER(cars.make), 'toyota') + CONTAINS(LOWER(CARS.make), 'toyota') diff --git a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql index c6080293e..f27054fd2 100644 --- a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql @@ -1,20 +1,20 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - SUM(sale_price) AS sum_sale_price, - salesperson_id - FROM main.sales + COUNT(*) AS N_ROWS, + SUM(sale_price) AS SUM_SALE_PRICE, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES GROUP BY 3 ) SELECT - salespersons.first_name, - salespersons.last_name, - COALESCE(_s1.sum_sale_price, 0) AS total_sales, - _s1.n_rows AS num_sales, - RANK() OVER (ORDER BY COALESCE(_s1.sum_sale_price, 0) DESC) AS sales_rank -FROM main.salespersons AS salespersons -JOIN _s1 AS _s1 - ON _s1.salesperson_id = salespersons._id + SALESPERSONS.first_name, + SALESPERSONS.last_name, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_sales, + _S1.N_ROWS AS num_sales, + RANK() OVER (ORDER BY COALESCE(_S1.SUM_SALE_PRICE, 0) DESC) AS sales_rank +FROM MAIN.SALESPERSONS AS SALESPERSONS +JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY 3 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql index e9166f5be..0d6b733bb 100644 --- a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql @@ -1,26 +1,26 @@ -WITH _t1 AS ( +WITH _T1 AS ( SELECT - car_id - FROM main.inventory_snapshots + car_id AS CAR_ID + FROM MAIN.INVENTORY_SNAPSHOTS QUALIFY NOT is_in_inventory AND ROW_NUMBER() OVER (PARTITION BY car_id ORDER BY snapshot_date DESC) = 1 -), _s3 AS ( +), _S3 AS ( SELECT - MAX(sale_price) AS max_sale_price, - car_id - FROM main.sales + MAX(sale_price) AS MAX_SALE_PRICE, + car_id AS CAR_ID + FROM MAIN.SALES GROUP BY 2 ) SELECT - cars.make, - cars.model, - _s3.max_sale_price AS highest_sale_price -FROM main.cars AS cars -JOIN _t1 AS _t1 - ON _t1.car_id = cars._id -LEFT JOIN _s3 AS _s3 - ON _s3.car_id = cars._id + CARS.make, + CARS.model, + _S3.MAX_SALE_PRICE AS highest_sale_price +FROM MAIN.CARS AS CARS +JOIN _T1 AS _T1 + ON CARS._id = _T1.CAR_ID +LEFT JOIN _S3 AS _S3 + ON CARS._id = _S3.CAR_ID ORDER BY 3 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql index 265fc93bd..075f4c2c9 100644 --- a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql @@ -1,20 +1,20 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - AVG(sale_price) AS avg_sale_price, - car_id - FROM main.sales + AVG(sale_price) AS AVG_SALE_PRICE, + car_id AS CAR_ID + FROM MAIN.SALES GROUP BY 2 ) SELECT - cars.make, - cars.model, - cars.year, - cars.color, - cars.vin_number, - _s1.avg_sale_price -FROM main.cars AS cars -LEFT JOIN _s1 AS _s1 - ON _s1.car_id = cars._id + CARS.make, + CARS.model, + CARS.year, + CARS.color, + CARS.vin_number, + _S1.AVG_SALE_PRICE AS avg_sale_price +FROM MAIN.CARS AS CARS +LEFT JOIN _S1 AS _S1 + ON CARS._id = _S1.CAR_ID WHERE - CONTAINS(LOWER(cars.make), 'fords') OR CONTAINS(LOWER(cars.model), 'mustang') + CONTAINS(LOWER(CARS.make), 'fords') OR CONTAINS(LOWER(CARS.model), 'mustang') diff --git a/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql index a581d84e5..ffee74ac5 100644 --- a/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql @@ -1,5 +1,5 @@ SELECT AVG(sale_price) AS ASP -FROM main.sales +FROM MAIN.SALES WHERE sale_date <= '2023-03-31' AND sale_date >= '2023-01-01' diff --git a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql index ad6e9ed12..8ef019134 100644 --- a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql @@ -1,22 +1,22 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - SUM(sale_price) AS sum_sale_price, - salesperson_id - FROM main.sales + COUNT(*) AS N_ROWS, + SUM(sale_price) AS SUM_SALE_PRICE, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES WHERE sale_date >= DATEADD(MONTH, -3, CURRENT_TIMESTAMP()) GROUP BY 3 ) SELECT - salespersons.first_name, - salespersons.last_name, - COALESCE(_s1.n_rows, 0) AS total_sales, - COALESCE(_s1.sum_sale_price, 0) AS total_revenue -FROM main.salespersons AS salespersons -LEFT JOIN _s1 AS _s1 - ON _s1.salesperson_id = salespersons._id + SALESPERSONS.first_name, + SALESPERSONS.last_name, + COALESCE(_S1.N_ROWS, 0) AS total_sales, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue +FROM MAIN.SALESPERSONS AS SALESPERSONS +LEFT JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY 4 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql index bbd756397..672f26b06 100644 --- a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT car_id AS _u_1 - FROM main.sales + FROM MAIN.SALES GROUP BY 1 ) SELECT - cars._id, - cars.make, - cars.model, - cars.year -FROM main.cars AS cars + CARS._id, + CARS.make, + CARS.model, + CARS.year +FROM MAIN.CARS AS CARS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = cars._id + ON CARS._id = _u_0._u_1 WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql index 16cb73183..8214ad5c0 100644 --- a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql @@ -1,14 +1,14 @@ WITH _u_0 AS ( SELECT customer_id AS _u_1 - FROM main.sales + FROM MAIN.SALES GROUP BY 1 ) SELECT - customers._id -FROM main.customers AS customers + CUSTOMERS._id +FROM MAIN.CUSTOMERS AS CUSTOMERS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = customers._id + ON CUSTOMERS._id = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql index 4310aba26..7341c1804 100644 --- a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT - sales.salesperson_id AS _u_1 - FROM main.sales AS sales - JOIN main.payments_received AS payments_received - ON payments_received.payment_method = 'cash' - AND payments_received.sale_id = sales._id + SALES.salesperson_id AS _u_1 + FROM MAIN.SALES AS SALES + JOIN MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED + ON PAYMENTS_RECEIVED.payment_method = 'cash' + AND PAYMENTS_RECEIVED.sale_id = SALES._id GROUP BY 1 ) SELECT - salespersons._id AS salesperson_id -FROM main.salespersons AS salespersons + SALESPERSONS._id AS salesperson_id +FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = salespersons._id + ON SALESPERSONS._id = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql index 8d94ed4be..acc3292db 100644 --- a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT salesperson_id AS _u_1 - FROM main.sales + FROM MAIN.SALES GROUP BY 1 ) SELECT - salespersons._id, - salespersons.first_name, - salespersons.last_name -FROM main.salespersons AS salespersons + SALESPERSONS._id, + SALESPERSONS.first_name, + SALESPERSONS.last_name +FROM MAIN.SALESPERSONS AS SALESPERSONS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = salespersons._id + ON SALESPERSONS._id = _u_0._u_1 WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql index 7e60facb1..e148d933a 100644 --- a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql @@ -1,22 +1,22 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows_1, - SUM(sale_price) AS sum_sale_price, - salesperson_id - FROM main.sales + COUNT(*) AS N_ROWS_1, + SUM(sale_price) AS SUM_SALE_PRICE, + salesperson_id AS SALESPERSON_ID + FROM MAIN.SALES WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY 3 ) SELECT - salespersons.first_name, - salespersons.last_name, - _s1.n_rows_1 AS total_sales, - COALESCE(_s1.sum_sale_price, 0) AS total_revenue -FROM main.salespersons AS salespersons -JOIN _s1 AS _s1 - ON _s1.salesperson_id = salespersons._id + SALESPERSONS.first_name, + SALESPERSONS.last_name, + _S1.N_ROWS_1 AS total_sales, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue +FROM MAIN.SALESPERSONS AS SALESPERSONS +JOIN _S1 AS _S1 + ON SALESPERSONS._id = _S1.SALESPERSON_ID ORDER BY 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql index e34a0bded..a32d0be09 100644 --- a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql @@ -1,10 +1,10 @@ SELECT - customers.state, - COUNT(DISTINCT sales.customer_id) AS unique_customers, - COALESCE(SUM(sales.sale_price), 0) AS total_revenue -FROM main.sales AS sales -JOIN main.customers AS customers - ON customers._id = sales.customer_id + CUSTOMERS.state, + COUNT(DISTINCT SALES.customer_id) AS unique_customers, + COALESCE(SUM(SALES.sale_price), 0) AS total_revenue +FROM MAIN.SALES AS SALES +JOIN MAIN.CUSTOMERS AS CUSTOMERS + ON CUSTOMERS._id = SALES.customer_id GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql index e906254e2..0462e8672 100644 --- a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql @@ -2,7 +2,7 @@ SELECT payment_method, COUNT(*) AS total_payments, COALESCE(SUM(payment_amount), 0) AS total_amount -FROM main.payments_received +FROM MAIN.PAYMENTS_RECEIVED GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql index df98deb1d..2dbf6c3ac 100644 --- a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql @@ -1,20 +1,20 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - SUM(sale_price) AS sum_sale_price, - car_id - FROM main.sales + COUNT(*) AS N_ROWS, + SUM(sale_price) AS SUM_SALE_PRICE, + car_id AS CAR_ID + FROM MAIN.SALES GROUP BY 3 ) SELECT - cars.make, - cars.model, - COALESCE(_s1.n_rows, 0) AS total_sales, - COALESCE(_s1.sum_sale_price, 0) AS total_revenue -FROM main.cars AS cars -LEFT JOIN _s1 AS _s1 - ON _s1.car_id = cars._id + CARS.make, + CARS.model, + COALESCE(_S1.N_ROWS, 0) AS total_sales, + COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue +FROM MAIN.CARS AS CARS +LEFT JOIN _S1 AS _S1 + ON CARS._id = _S1.CAR_ID ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql index 8b2f15206..0ad936b14 100644 --- a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql @@ -1,7 +1,7 @@ SELECT state, COUNT(*) AS total_signups -FROM main.customers +FROM MAIN.CUSTOMERS GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql index 0b56ff82e..064fa879d 100644 --- a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql @@ -3,7 +3,7 @@ SELECT last_name, phone, DATEDIFF(DAY, CAST(hire_date AS DATETIME), CAST(termination_date AS DATETIME)) * 1.0 AS days_employed -FROM main.salespersons +FROM MAIN.SALESPERSONS WHERE NOT termination_date IS NULL ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql index d7f5d6345..34244c823 100644 --- a/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS weekend_payments -FROM main.payments_made +FROM MAIN.PAYMENTS_MADE WHERE ( ( diff --git a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql index 84fb51a65..769b3c8a4 100644 --- a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql @@ -2,7 +2,7 @@ SELECT payment_date, payment_method, COALESCE(SUM(payment_amount), 0) AS total_amount -FROM main.payments_received +FROM MAIN.PAYMENTS_RECEIVED WHERE DATEDIFF( WEEK, diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql index 6825403cf..83ac1134c 100644 --- a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -1,33 +1,33 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS quarter, - SUM(sale_price) AS sum_sale_price, - customer_id - FROM main.sales + DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS QUARTER, + SUM(sale_price) AS SUM_SALE_PRICE, + customer_id AS CUSTOMER_ID + FROM MAIN.SALES WHERE YEAR(CAST(sale_date AS TIMESTAMP)) = 2023 GROUP BY 1, 3 -), _t1 AS ( +), _T1 AS ( SELECT - SUM(_s0.sum_sale_price) AS sum_sum_sale_price, - _s0.quarter, - customers.state - FROM _s0 AS _s0 - JOIN main.customers AS customers - ON _s0.customer_id = customers._id + SUM(_S0.SUM_SALE_PRICE) AS SUM_SUM_SALE_PRICE, + _S0.QUARTER, + CUSTOMERS.state AS STATE + FROM _S0 AS _S0 + JOIN MAIN.CUSTOMERS AS CUSTOMERS + ON CUSTOMERS._id = _S0.CUSTOMER_ID GROUP BY 2, 3 ) SELECT - quarter, - state AS customer_state, - COALESCE(sum_sum_sale_price, 0) AS total_sales -FROM _t1 + QUARTER AS quarter, + STATE AS customer_state, + COALESCE(SUM_SUM_SALE_PRICE, 0) AS total_sales +FROM _T1 WHERE - NOT sum_sum_sale_price IS NULL AND sum_sum_sale_price > 0 + NOT SUM_SUM_SALE_PRICE IS NULL AND SUM_SUM_SALE_PRICE > 0 ORDER BY 1 NULLS FIRST, 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql index 830b28cec..067021c1d 100644 --- a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql @@ -1,18 +1,18 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - car_id - FROM main.inventory_snapshots + car_id AS CAR_ID + FROM MAIN.INVENTORY_SNAPSHOTS WHERE MONTH(CAST(snapshot_date AS TIMESTAMP)) = 3 AND YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 QUALIFY - RANK() OVER (ORDER BY snapshot_date DESC) = 1 AND is_in_inventory + is_in_inventory AND RANK() OVER (ORDER BY snapshot_date DESC) = 1 ) SELECT - cars._id, - cars.make, - cars.model, - cars.year -FROM _t0 AS _t0 -JOIN main.cars AS cars - ON _t0.car_id = cars._id + CARS._id, + CARS.make, + CARS.model, + CARS.year +FROM _T0 AS _T0 +JOIN MAIN.CARS AS CARS + ON CARS._id = _T0.CAR_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql index 273fe3fb6..89d60f61b 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql @@ -1,16 +1,16 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - sender_id - FROM main.wallet_transactions_daily + COUNT(*) AS N_ROWS, + sender_id AS SENDER_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE sender_type = 0 GROUP BY 2 ) SELECT - users.uid AS user_id, - _s1.n_rows AS total_transactions -FROM main.users AS users -JOIN _s1 AS _s1 - ON _s1.sender_id = users.uid + USERS.uid AS user_id, + _S1.N_ROWS AS total_transactions +FROM MAIN.USERS AS USERS +JOIN _S1 AS _S1 + ON USERS.uid = _S1.SENDER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql index e8d3f43cd..34e032cdc 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql @@ -1,20 +1,20 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT SUM( DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) - ) AS sum_duration, - user_id - FROM main.user_sessions + ) AS SUM_DURATION, + user_id AS USER_ID + FROM MAIN.USER_SESSIONS WHERE session_end_ts < '2023-06-08' AND session_start_ts >= '2023-06-01' GROUP BY 2 ) SELECT - users.uid, - COALESCE(_s1.sum_duration, 0) AS total_duration -FROM main.users AS users -JOIN _s1 AS _s1 - ON _s1.user_id = users.uid + USERS.uid, + COALESCE(_S1.SUM_DURATION, 0) AS total_duration +FROM MAIN.USERS AS USERS +JOIN _S1 AS _S1 + ON USERS.uid = _S1.USER_ID ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql index a874f7588..93638d1ec 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql @@ -1,16 +1,16 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - SUM(amount) AS sum_amount, - coupon_id - FROM main.wallet_transactions_daily + SUM(amount) AS SUM_AMOUNT, + coupon_id AS COUPON_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY GROUP BY 2 ) SELECT - coupons.cid AS coupon_id, - COALESCE(_s1.sum_amount, 0) AS total_discount -FROM main.coupons AS coupons -LEFT JOIN _s1 AS _s1 - ON _s1.coupon_id = coupons.cid + COUPONS.cid AS coupon_id, + COALESCE(_S1.SUM_AMOUNT, 0) AS total_discount +FROM MAIN.COUPONS AS COUPONS +LEFT JOIN _S1 AS _S1 + ON COUPONS.cid = _S1.COUPON_ID WHERE - coupons.merchant_id = '1' + COUPONS.merchant_id = '1' diff --git a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql index 0ebf11a50..bf5f205c2 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS TUC -FROM main.user_sessions +FROM MAIN.USER_SESSIONS WHERE session_end_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) OR session_start_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql index 3cfa5fa6f..c90bef4e0 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql @@ -1,5 +1,5 @@ SELECT COALESCE(COUNT_IF(status = 'success'), 0) / COUNT(*) AS _expr0 -FROM main.wallet_transactions_daily +FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE DATEDIFF(MONTH, CAST(created_at AS DATETIME), CURRENT_TIMESTAMP()) = 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql index d60f519f9..b0e8d3341 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql @@ -1,21 +1,21 @@ -WITH _s3 AS ( +WITH _S3 AS ( SELECT - COUNT(*) AS n_rows, - coupons.merchant_id - FROM main.coupons AS coupons - JOIN main.merchants AS merchants - ON DATEDIFF(MONTH, CAST(merchants.created_at AS DATETIME), CAST(coupons.created_at AS DATETIME)) = 0 - AND coupons.merchant_id = merchants.mid + COUNT(*) AS N_ROWS, + COUPONS.merchant_id AS MERCHANT_ID + FROM MAIN.COUPONS AS COUPONS + JOIN MAIN.MERCHANTS AS MERCHANTS + ON COUPONS.merchant_id = MERCHANTS.mid + AND DATEDIFF(MONTH, CAST(MERCHANTS.created_at AS DATETIME), CAST(COUPONS.created_at AS DATETIME)) = 0 GROUP BY 2 ) SELECT - merchants.mid AS merchant_id, - merchants.name AS merchant_name, - COALESCE(_s3.n_rows, 0) AS coupons_per_merchant -FROM main.merchants AS merchants -LEFT JOIN _s3 AS _s3 - ON _s3.merchant_id = merchants.mid + MERCHANTS.mid AS merchant_id, + MERCHANTS.name AS merchant_name, + COALESCE(_S3.N_ROWS, 0) AS coupons_per_merchant +FROM MAIN.MERCHANTS AS MERCHANTS +LEFT JOIN _S3 AS _S3 + ON MERCHANTS.mid = _S3.MERCHANT_ID ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql index 635f567ce..923769829 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql @@ -1,18 +1,18 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - user_id - FROM main.notifications + COUNT(*) AS N_ROWS, + user_id AS USER_ID + FROM MAIN.NOTIFICATIONS WHERE status = 'unread' AND type = 'promotion' GROUP BY 2 ) SELECT - users.username, - _s1.n_rows AS total_unread_notifs -FROM main.users AS users -JOIN _s1 AS _s1 - ON _s1.user_id = users.uid + USERS.username, + _S1.N_ROWS AS total_unread_notifs +FROM MAIN.USERS AS USERS +JOIN _S1 AS _S1 + ON USERS.uid = _S1.USER_ID WHERE - LOWER(users.country) = 'us' + LOWER(USERS.country) = 'us' diff --git a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql index 4466e1c8c..a73f40ff2 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql @@ -1,19 +1,19 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(DISTINCT coupon_id) AS ndistinct_coupon_id, - COUNT(DISTINCT txid) AS ndistinct_txid, - receiver_id - FROM main.wallet_transactions_daily + COUNT(DISTINCT coupon_id) AS NDISTINCT_COUPON_ID, + COUNT(DISTINCT txid) AS NDISTINCT_TXID, + receiver_id AS RECEIVER_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE status = 'success' GROUP BY 3 ) SELECT - merchants.name, + MERCHANTS.name, ( - _s1.ndistinct_coupon_id * 1.0 - ) / _s1.ndistinct_txid AS CPUR -FROM main.merchants AS merchants -JOIN _s1 AS _s1 - ON _s1.receiver_id = merchants.mid + _S1.NDISTINCT_COUPON_ID * 1.0 + ) / _S1.NDISTINCT_TXID AS CPUR +FROM MAIN.MERCHANTS AS MERCHANTS +JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.RECEIVER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql index bd7a73fe3..8bff2a903 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql @@ -5,23 +5,23 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(notifications.created_at AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(notifications.created_at AS TIMESTAMP) + CAST(NOTIFICATIONS.created_at AS TIMESTAMP) ) ) AS week, COUNT(*) AS num_notifs, COALESCE(COUNT_IF(( ( - DAYOFWEEK(notifications.created_at) + 6 + DAYOFWEEK(NOTIFICATIONS.created_at) + 6 ) % 7 ) IN (5, 6)), 0) AS weekend_notifs -FROM main.notifications AS notifications -JOIN main.users AS users - ON notifications.user_id = users.uid AND users.country IN ('US', 'CA') +FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS +JOIN MAIN.USERS AS USERS + ON NOTIFICATIONS.user_id = USERS.uid AND USERS.country IN ('US', 'CA') WHERE - notifications.created_at < DATE_TRUNC( + NOTIFICATIONS.created_at < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -33,7 +33,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND notifications.created_at >= DATEADD( + AND NOTIFICATIONS.created_at >= DATEADD( WEEK, -3, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql index ca5865599..84e9f51cd 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql @@ -1,16 +1,16 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - merchant_id - FROM main.coupons + COUNT(*) AS N_ROWS, + merchant_id AS MERCHANT_ID + FROM MAIN.COUPONS GROUP BY 2 ) SELECT - merchants.name AS merchant_name, - _s1.n_rows AS total_coupons -FROM main.merchants AS merchants -JOIN _s1 AS _s1 - ON _s1.merchant_id = merchants.mid + MERCHANTS.name AS merchant_name, + _S1.N_ROWS AS total_coupons +FROM MAIN.MERCHANTS AS MERCHANTS +JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.MERCHANT_ID WHERE - CONTAINS(LOWER(merchants.category), 'retail') AND merchants.status = 'active' + CONTAINS(LOWER(MERCHANTS.category), 'retail') AND MERCHANTS.status = 'active' diff --git a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql index b6ab12c52..dc63e9c66 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql @@ -2,11 +2,11 @@ SELECT COUNT(*) AS num_transactions, CASE WHEN COUNT(*) > 0 - THEN COALESCE(SUM(wallet_transactions_daily.amount), 0) + THEN COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) ELSE NULL END AS total_amount -FROM main.wallet_transactions_daily AS wallet_transactions_daily -JOIN main.users AS users - ON users.country = 'US' AND users.uid = wallet_transactions_daily.sender_id +FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY +JOIN MAIN.USERS AS USERS + ON USERS.country = 'US' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id WHERE - DATEDIFF(DAY, CAST(wallet_transactions_daily.created_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(WALLET_TRANSACTIONS_DAILY.created_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql index 679a19eab..9a4fb1eaa 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql @@ -1,5 +1,5 @@ SELECT AVG(balance) AS AMB -FROM main.wallet_user_balance_daily +FROM MAIN.WALLET_USER_BALANCE_DAILY WHERE DATEDIFF(DAY, CAST(updated_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql index facbf73f3..a1b7d10d1 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql @@ -1,14 +1,13 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - balance, - user_id - FROM main.wallet_user_balance_daily + balance AS BALANCE + FROM MAIN.WALLET_USER_BALANCE_DAILY QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY updated_at DESC) = 1 ) SELECT - users.uid AS user_id, - _t0.balance AS latest_balance -FROM main.users AS users -JOIN _t0 AS _t0 - ON _t0.user_id = users.uid + USERS.uid AS user_id, + _T0.BALANCE AS latest_balance +FROM MAIN.USERS AS USERS +JOIN _T0 AS _T0 + ON USERS.uid = USERS.uid diff --git a/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql index 3a44a5777..5c8ab9215 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql @@ -1,14 +1,14 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - marketing_opt_in, - user_id - FROM main.user_setting_snapshot + marketing_opt_in AS MARKETING_OPT_IN, + user_id AS USER_ID + FROM MAIN.USER_SETTING_SNAPSHOT QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) = 1 ) SELECT - users.uid, - _t0.marketing_opt_in -FROM main.users AS users -JOIN _t0 AS _t0 - ON _t0.user_id = users.uid + USERS.uid, + _T0.MARKETING_OPT_IN AS marketing_opt_in +FROM MAIN.USERS AS USERS +JOIN _T0 AS _T0 + ON USERS.uid = _T0.USER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql index d8a15f120..041eb0000 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql @@ -1,19 +1,19 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - SUM(amount) AS sum_amount, - receiver_id - FROM main.wallet_transactions_daily + SUM(amount) AS SUM_AMOUNT, + receiver_id AS RECEIVER_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE receiver_type = 1 AND status = 'success' GROUP BY 2 ) SELECT - merchants.mid AS merchants_id, - merchants.name AS merchants_name, - merchants.category, - COALESCE(_s1.sum_amount, 0) AS total_revenue, - ROW_NUMBER() OVER (ORDER BY COALESCE(_s1.sum_amount, 0) DESC) AS mrr -FROM main.merchants AS merchants -JOIN _s1 AS _s1 - ON _s1.receiver_id = merchants.mid + MERCHANTS.mid AS merchants_id, + MERCHANTS.name AS merchants_name, + MERCHANTS.category, + COALESCE(_S1.SUM_AMOUNT, 0) AS total_revenue, + ROW_NUMBER() OVER (ORDER BY COALESCE(_S1.SUM_AMOUNT, 0) DESC) AS mrr +FROM MAIN.MERCHANTS AS MERCHANTS +JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.RECEIVER_ID diff --git a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql index fc9507f0f..f2607877b 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql @@ -1,7 +1,7 @@ SELECT DATE_TRUNC('MONTH', CAST(created_at AS TIMESTAMP)) AS year_month, COUNT(DISTINCT sender_id) AS active_users -FROM main.wallet_transactions_daily +FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE created_at < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND created_at >= DATEADD(MONTH, -2, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql index 75fa0c7cb..eec471299 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql @@ -1,9 +1,9 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - SUM(amount) AS sum_amount, - receiver_id - FROM main.wallet_transactions_daily + COUNT(*) AS N_ROWS, + SUM(amount) AS SUM_AMOUNT, + receiver_id AS RECEIVER_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE created_at >= DATE_TRUNC('DAY', DATEADD(DAY, -150, CURRENT_TIMESTAMP())) AND receiver_type = 1 @@ -11,12 +11,12 @@ WITH _s1 AS ( 3 ) SELECT - merchants.name AS merchant_name, - COALESCE(_s1.n_rows, 0) AS total_transactions, - COALESCE(_s1.sum_amount, 0) AS total_amount -FROM main.merchants AS merchants -LEFT JOIN _s1 AS _s1 - ON _s1.receiver_id = merchants.mid + MERCHANTS.name AS merchant_name, + COALESCE(_S1.N_ROWS, 0) AS total_transactions, + COALESCE(_S1.SUM_AMOUNT, 0) AS total_amount +FROM MAIN.MERCHANTS AS MERCHANTS +LEFT JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.RECEIVER_ID ORDER BY 3 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql index 5ea6919b3..f9fb46604 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql @@ -1,12 +1,12 @@ SELECT - DATE_TRUNC('MONTH', CAST(wallet_transactions_daily.created_at AS TIMESTAMP)) AS month, - COUNT(DISTINCT wallet_transactions_daily.sender_id) AS active_users -FROM main.wallet_transactions_daily AS wallet_transactions_daily -JOIN main.users AS users - ON users.status = 'active' AND users.uid = wallet_transactions_daily.sender_id + DATE_TRUNC('MONTH', CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) AS month, + COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS active_users +FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY +JOIN MAIN.USERS AS USERS + ON USERS.status = 'active' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id WHERE - YEAR(CAST(wallet_transactions_daily.created_at AS TIMESTAMP)) = 2023 - AND wallet_transactions_daily.sender_type = 0 - AND wallet_transactions_daily.status = 'success' + WALLET_TRANSACTIONS_DAILY.sender_type = 0 + AND WALLET_TRANSACTIONS_DAILY.status = 'success' + AND YEAR(CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) = 2023 GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql index 9ca419d96..998fa51ee 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT merchant_id AS _u_1 - FROM main.coupons + FROM MAIN.COUPONS GROUP BY 1 ) SELECT - merchants.mid AS merchant_id, - merchants.name AS merchant_name -FROM main.merchants AS merchants + MERCHANTS.mid AS merchant_id, + MERCHANTS.name AS merchant_name +FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = merchants.mid + ON MERCHANTS.mid = _u_0._u_1 WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql index 80b4b414d..7fe4d0718 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT receiver_id AS _u_1 - FROM main.wallet_transactions_daily + FROM MAIN.WALLET_TRANSACTIONS_DAILY WHERE receiver_type = 1 GROUP BY 1 ) SELECT - merchants.mid AS merchant -FROM main.merchants AS merchants + MERCHANTS.mid AS merchant +FROM MAIN.MERCHANTS AS MERCHANTS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = merchants.mid + ON MERCHANTS.mid = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql index b831e9388..432e6a920 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT user_id AS _u_1 - FROM main.notifications + FROM MAIN.NOTIFICATIONS WHERE type = 'transaction' GROUP BY 1 ) SELECT - users.uid AS user_id -FROM main.users AS users + USERS.uid AS user_id +FROM MAIN.USERS AS USERS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = users.uid + ON USERS.uid = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql index b1a33dd01..294d9c309 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT user_id AS _u_1 - FROM main.notifications + FROM MAIN.NOTIFICATIONS GROUP BY 1 ) SELECT - users.uid, - users.username -FROM main.users AS users + USERS.uid, + USERS.username +FROM MAIN.USERS AS USERS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = users.uid + ON USERS.uid = _u_0._u_1 WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql index bd8925e79..36d041330 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql @@ -1,7 +1,7 @@ SELECT device_type, COUNT(*) AS count -FROM main.user_sessions +FROM MAIN.USER_SESSIONS GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql index 2575506fa..b9b49f533 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql @@ -1,7 +1,7 @@ SELECT status, COUNT(*) AS count -FROM main.wallet_transactions_daily +FROM MAIN.WALLET_TRANSACTIONS_DAILY GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql index 035c4d087..4132cad40 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql @@ -1,19 +1,19 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(txid) AS count_txid, - SUM(amount) AS sum_amount, - coupon_id - FROM main.wallet_transactions_daily + COUNT(txid) AS COUNT_TXID, + SUM(amount) AS SUM_AMOUNT, + coupon_id AS COUPON_ID + FROM MAIN.WALLET_TRANSACTIONS_DAILY GROUP BY 3 ) SELECT - coupons.code AS coupon_code, - COALESCE(_s1.count_txid, 0) AS redemption_count, - COALESCE(_s1.sum_amount, 0) AS total_discount -FROM main.coupons AS coupons -LEFT JOIN _s1 AS _s1 - ON _s1.coupon_id = coupons.cid + COUPONS.code AS coupon_code, + COALESCE(_S1.COUNT_TXID, 0) AS redemption_count, + COALESCE(_S1.SUM_AMOUNT, 0) AS total_discount +FROM MAIN.COUPONS AS COUPONS +LEFT JOIN _S1 AS _S1 + ON COUPONS.cid = _S1.COUPON_ID ORDER BY 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql index 114ba10b7..559681b4e 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql @@ -1,18 +1,18 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - country, - uid - FROM main.users + country AS COUNTRY, + uid AS UID + FROM MAIN.USERS ) SELECT - _s1.country, - COUNT(DISTINCT wallet_transactions_daily.sender_id) AS user_count, - COALESCE(SUM(wallet_transactions_daily.amount), 0) AS total_amount -FROM main.wallet_transactions_daily AS wallet_transactions_daily -LEFT JOIN _s1 AS _s1 - ON _s1.uid = wallet_transactions_daily.sender_id + _S1.COUNTRY AS country, + COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS user_count, + COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) AS total_amount +FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY +LEFT JOIN _S1 AS _S1 + ON WALLET_TRANSACTIONS_DAILY.sender_id = _S1.UID WHERE - wallet_transactions_daily.sender_type = 0 + WALLET_TRANSACTIONS_DAILY.sender_type = 0 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql index fb87bcce3..047f6ad99 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql @@ -1,9 +1,9 @@ SELECT - MEDIAN(wallet_merchant_balance_daily.balance) AS _expr0 -FROM main.wallet_merchant_balance_daily AS wallet_merchant_balance_daily -JOIN main.merchants AS merchants - ON CONTAINS(LOWER(merchants.category), 'retail') - AND merchants.mid = wallet_merchant_balance_daily.merchant_id - AND merchants.status = 'active' + MEDIAN(WALLET_MERCHANT_BALANCE_DAILY.balance) AS _expr0 +FROM MAIN.WALLET_MERCHANT_BALANCE_DAILY AS WALLET_MERCHANT_BALANCE_DAILY +JOIN MAIN.MERCHANTS AS MERCHANTS + ON CONTAINS(LOWER(MERCHANTS.category), 'retail') + AND MERCHANTS.mid = WALLET_MERCHANT_BALANCE_DAILY.merchant_id + AND MERCHANTS.status = 'active' WHERE - DATE_TRUNC('DAY', CAST(wallet_merchant_balance_daily.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) + DATE_TRUNC('DAY', CAST(WALLET_MERCHANT_BALANCE_DAILY.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) diff --git a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql index 958b2afa2..efe787625 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql @@ -1,23 +1,23 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - MIN(snapshot_date) AS min_date - FROM main.user_setting_snapshot + MIN(snapshot_date) AS MIN_DATE + FROM MAIN.USER_SETTING_SNAPSHOT WHERE YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 -), _s1 AS ( +), _S1 AS ( SELECT - AVG(tx_limit_daily) AS avg_tx_limit_daily, - AVG(tx_limit_monthly) AS avg_tx_limit_monthly, - snapshot_date - FROM main.user_setting_snapshot + AVG(tx_limit_daily) AS AVG_TX_LIMIT_DAILY, + AVG(tx_limit_monthly) AS AVG_TX_LIMIT_MONTHLY, + snapshot_date AS SNAPSHOT_DATE + FROM MAIN.USER_SETTING_SNAPSHOT WHERE YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 GROUP BY 3 ) SELECT - _s1.avg_tx_limit_daily AS avg_daily_limit, - _s1.avg_tx_limit_monthly AS avg_monthly_limit -FROM _s0 AS _s0 -LEFT JOIN _s1 AS _s1 - ON _s0.min_date = _s1.snapshot_date + _S1.AVG_TX_LIMIT_DAILY AS avg_daily_limit, + _S1.AVG_TX_LIMIT_MONTHLY AS avg_monthly_limit +FROM _S0 AS _S0 +LEFT JOIN _S1 AS _S1 + ON _S0.MIN_DATE = _S1.SNAPSHOT_DATE diff --git a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql index 7432d05ac..627792b9f 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql @@ -3,6 +3,6 @@ SELECT AVG( DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) ) AS avg_session_duration_seconds -FROM main.user_sessions +FROM MAIN.USER_SESSIONS GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql index ad361d520..dd68d2e5c 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql @@ -1,35 +1,35 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - merchant_id, - start_date - FROM main.coupons -), _s1 AS ( + merchant_id AS MERCHANT_ID, + start_date AS START_DATE + FROM MAIN.COUPONS +), _S1 AS ( SELECT - MIN(start_date) AS min_start_date, - merchant_id - FROM _t0 + MIN(START_DATE) AS MIN_START_DATE, + MERCHANT_ID + FROM _T0 GROUP BY 2 -), _s3 AS ( +), _S3 AS ( SELECT - MAX(cid) AS max_cid, - merchant_id, - start_date - FROM main.coupons + MAX(cid) AS MAX_CID, + merchant_id AS MERCHANT_ID, + start_date AS START_DATE + FROM MAIN.COUPONS GROUP BY 2, 3 ) SELECT - merchants.mid AS merchants_id, - merchants.created_at AS merchant_registration_date, - _s1.min_start_date AS earliest_coupon_start_date, - _s3.max_cid AS earliest_coupon_id -FROM main.merchants AS merchants -LEFT JOIN _s1 AS _s1 - ON _s1.merchant_id = merchants.mid -LEFT JOIN _s3 AS _s3 - ON _s1.min_start_date = _s3.start_date AND _s3.merchant_id = merchants.mid -JOIN _t0 AS _s5 - ON _s5.merchant_id = merchants.mid - AND _s5.start_date <= DATEADD(YEAR, 1, CAST(merchants.created_at AS TIMESTAMP)) + MERCHANTS.mid AS merchants_id, + MERCHANTS.created_at AS merchant_registration_date, + _S1.MIN_START_DATE AS earliest_coupon_start_date, + _S3.MAX_CID AS earliest_coupon_id +FROM MAIN.MERCHANTS AS MERCHANTS +LEFT JOIN _S1 AS _S1 + ON MERCHANTS.mid = _S1.MERCHANT_ID +LEFT JOIN _S3 AS _S3 + ON MERCHANTS.mid = _S3.MERCHANT_ID AND _S1.MIN_START_DATE = _S3.START_DATE +JOIN _T0 AS _S5 + ON MERCHANTS.mid = _S5.MERCHANT_ID + AND _S5.START_DATE <= DATEADD(YEAR, 1, CAST(MERCHANTS.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql index dbace8406..d36e88502 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql @@ -1,20 +1,20 @@ WITH _u_0 AS ( SELECT - notifications.user_id AS _u_1 - FROM main.notifications AS notifications - JOIN main.users AS users - ON notifications.created_at <= DATEADD(YEAR, 1, CAST(users.created_at AS TIMESTAMP)) - AND notifications.created_at >= users.created_at - AND notifications.user_id = users.uid + NOTIFICATIONS.user_id AS _u_1 + FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS + JOIN MAIN.USERS AS USERS + ON NOTIFICATIONS.created_at <= DATEADD(YEAR, 1, CAST(USERS.created_at AS TIMESTAMP)) + AND NOTIFICATIONS.created_at >= USERS.created_at + AND NOTIFICATIONS.user_id = USERS.uid GROUP BY 1 ) SELECT - users.username, - users.email, - users.created_at -FROM main.users AS users + USERS.username, + USERS.email, + USERS.created_at +FROM MAIN.USERS AS USERS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = users.uid + ON USERS.uid = _u_0._u_1 WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/epoch_culture_events_info_mysql.sql b/tests/test_sql_refsols/epoch_culture_events_info_mysql.sql index fab15cb85..06ba1fed6 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_mysql.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_mysql.sql @@ -2,30 +2,30 @@ WITH _s2 AS ( SELECT ev_dt, ev_key - FROM events + FROM EVENTS ) SELECT - events.ev_name AS event_name, - eras.er_name AS era_name, - EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) AS event_year, - seasons.s_name AS season_name, - times.t_name AS tod -FROM events AS events -JOIN eras AS eras - ON eras.er_end_year > EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) - AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) + EVENTS.ev_name AS event_name, + ERAS.er_name AS era_name, + EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) AS event_year, + SEASONS.s_name AS season_name, + TIMES.t_name AS tod +FROM EVENTS AS EVENTS +JOIN ERAS AS ERAS + ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) + AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) JOIN _s2 AS _s2 - ON _s2.ev_key = events.ev_key -JOIN seasons AS seasons - ON seasons.s_month1 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) - OR seasons.s_month2 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) - OR seasons.s_month3 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) + ON EVENTS.ev_key = _s2.ev_key +JOIN SEASONS AS SEASONS + ON SEASONS.s_month1 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) + OR SEASONS.s_month2 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) + OR SEASONS.s_month3 = EXTRACT(MONTH FROM CAST(_s2.ev_dt AS DATETIME)) JOIN _s2 AS _s6 - ON _s6.ev_key = events.ev_key -JOIN times AS times - ON times.t_end_hour > HOUR(_s6.ev_dt) AND times.t_start_hour <= HOUR(_s6.ev_dt) + ON EVENTS.ev_key = _s6.ev_key +JOIN TIMES AS TIMES + ON TIMES.t_end_hour > HOUR(_s6.ev_dt) AND TIMES.t_start_hour <= HOUR(_s6.ev_dt) WHERE - events.ev_typ = 'culture' + EVENTS.ev_typ = 'culture' ORDER BY - events.ev_dt + EVENTS.ev_dt LIMIT 6 diff --git a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql index 7db29730d..37b479c66 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql @@ -1,32 +1,32 @@ -WITH _s2 AS ( +WITH _S2 AS ( SELECT - ev_dt, - ev_key - FROM events + ev_dt AS EV_DT, + ev_key AS EV_KEY + FROM EVENTS ) SELECT - events.ev_name AS event_name, - eras.er_name AS era_name, - YEAR(CAST(events.ev_dt AS TIMESTAMP)) AS event_year, - seasons.s_name AS season_name, - times.t_name AS tod -FROM events AS events -JOIN eras AS eras - ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) - AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) -JOIN _s2 AS _s2 - ON _s2.ev_key = events.ev_key -JOIN seasons AS seasons - ON seasons.s_month1 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) - OR seasons.s_month2 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) - OR seasons.s_month3 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) -JOIN _s2 AS _s6 - ON _s6.ev_key = events.ev_key -JOIN times AS times - ON times.t_end_hour > HOUR(CAST(_s6.ev_dt AS TIMESTAMP)) - AND times.t_start_hour <= HOUR(CAST(_s6.ev_dt AS TIMESTAMP)) + EVENTS.ev_name AS event_name, + ERAS.er_name AS era_name, + YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) AS event_year, + SEASONS.s_name AS season_name, + TIMES.t_name AS tod +FROM EVENTS AS EVENTS +JOIN ERAS AS ERAS + ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) +JOIN _S2 AS _S2 + ON EVENTS.ev_key = _S2.EV_KEY +JOIN SEASONS AS SEASONS + ON SEASONS.s_month1 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) + OR SEASONS.s_month2 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) + OR SEASONS.s_month3 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) +JOIN _S2 AS _S6 + ON EVENTS.ev_key = _S6.EV_KEY +JOIN TIMES AS TIMES + ON TIMES.t_end_hour > HOUR(CAST(_S6.EV_DT AS TIMESTAMP)) + AND TIMES.t_start_hour <= HOUR(CAST(_S6.EV_DT AS TIMESTAMP)) WHERE - events.ev_typ = 'culture' + EVENTS.ev_typ = 'culture' ORDER BY - events.ev_dt NULLS FIRST + EVENTS.ev_dt NULLS FIRST LIMIT 6 diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_mysql.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_mysql.sql index 2ace28546..ccf668e33 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_mysql.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_mysql.sql @@ -1,17 +1,17 @@ WITH _t2 AS ( SELECT DATEDIFF( - events.ev_dt, - LAG(events.ev_dt, 1) OVER (PARTITION BY eras.er_name, eras.er_name ORDER BY CASE WHEN events.ev_dt IS NULL THEN 1 ELSE 0 END, events.ev_dt) + EVENTS.ev_dt, + LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name, ERAS.er_name ORDER BY CASE WHEN EVENTS.ev_dt IS NULL THEN 1 ELSE 0 END, EVENTS.ev_dt) ) AS day_gap, - eras.er_end_year, - eras.er_name, - eras.er_start_year, - events.ev_dt - FROM eras AS eras - JOIN events AS events - ON eras.er_end_year > EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) - AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) + ERAS.er_end_year, + ERAS.er_name, + ERAS.er_start_year, + EVENTS.ev_dt + FROM ERAS AS ERAS + JOIN EVENTS AS EVENTS + ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) + AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) ) SELECT er_name AS era_name, diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index e4de3b246..da1449442 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -1,27 +1,27 @@ -WITH _t2 AS ( +WITH _T2 AS ( SELECT DATEDIFF( DAY, - CAST(LAG(events.ev_dt, 1) OVER (PARTITION BY eras.er_name, eras.er_name ORDER BY events.ev_dt) AS DATETIME), - CAST(events.ev_dt AS DATETIME) - ) AS day_gap, - eras.er_end_year, - eras.er_name, - eras.er_start_year, - events.ev_dt - FROM eras AS eras - JOIN events AS events - ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) - AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) + CAST(LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name, ERAS.er_name ORDER BY EVENTS.ev_dt) AS DATETIME), + CAST(EVENTS.ev_dt AS DATETIME) + ) AS DAY_GAP, + ERAS.er_end_year AS ER_END_YEAR, + ERAS.er_name AS ER_NAME, + ERAS.er_start_year AS ER_START_YEAR, + EVENTS.ev_dt AS EV_DT + FROM ERAS AS ERAS + JOIN EVENTS AS EVENTS + ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) ) SELECT - er_name AS era_name, - AVG(day_gap) AS avg_event_gap -FROM _t2 + ER_NAME AS era_name, + AVG(DAY_GAP) AS avg_event_gap +FROM _T2 WHERE - er_end_year > YEAR(CAST(ev_dt AS TIMESTAMP)) - AND er_start_year <= YEAR(CAST(ev_dt AS TIMESTAMP)) + ER_END_YEAR > YEAR(CAST(EV_DT AS TIMESTAMP)) + AND ER_START_YEAR <= YEAR(CAST(EV_DT AS TIMESTAMP)) GROUP BY 1 ORDER BY - ANY_VALUE(er_start_year) NULLS FIRST + ANY_VALUE(ER_START_YEAR) NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_events_per_season_mysql.sql b/tests/test_sql_refsols/epoch_events_per_season_mysql.sql index a2aaab7c9..fb6587435 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_mysql.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_mysql.sql @@ -1,11 +1,11 @@ SELECT - seasons.s_name COLLATE utf8mb4_bin AS season_name, + SEASONS.s_name COLLATE utf8mb4_bin AS season_name, COUNT(*) AS n_events -FROM seasons AS seasons -JOIN events AS events - ON seasons.s_month1 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) - OR seasons.s_month2 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) - OR seasons.s_month3 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) +FROM SEASONS AS SEASONS +JOIN EVENTS AS EVENTS + ON SEASONS.s_month1 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) + OR SEASONS.s_month2 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) + OR SEASONS.s_month3 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql index f3744ccc7..65ed9d6f2 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -1,11 +1,11 @@ SELECT - seasons.s_name AS season_name, + SEASONS.s_name AS season_name, COUNT(*) AS n_events -FROM seasons AS seasons -JOIN events AS events - ON seasons.s_month1 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) - OR seasons.s_month2 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) - OR seasons.s_month3 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) +FROM SEASONS AS SEASONS +JOIN EVENTS AS EVENTS + ON SEASONS.s_month1 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_mysql.sql b/tests/test_sql_refsols/epoch_first_event_per_era_mysql.sql index a9bce845d..b9ab2bbb5 100644 --- a/tests/test_sql_refsols/epoch_first_event_per_era_mysql.sql +++ b/tests/test_sql_refsols/epoch_first_event_per_era_mysql.sql @@ -1,13 +1,13 @@ WITH _t AS ( SELECT - eras.er_name, - eras.er_start_year, - events.ev_name, - ROW_NUMBER() OVER (PARTITION BY eras.er_name ORDER BY CASE WHEN events.ev_dt IS NULL THEN 1 ELSE 0 END, events.ev_dt) AS _w - FROM eras AS eras - JOIN events AS events - ON eras.er_end_year > EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) - AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) + ERAS.er_name, + ERAS.er_start_year, + EVENTS.ev_name, + ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY CASE WHEN EVENTS.ev_dt IS NULL THEN 1 ELSE 0 END, EVENTS.ev_dt) AS _w + FROM ERAS AS ERAS + JOIN EVENTS AS EVENTS + ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) + AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) ) SELECT er_name AS era_name, diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql index c313bfd21..155d48459 100644 --- a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql @@ -1,18 +1,18 @@ -WITH _t1 AS ( +WITH _T1 AS ( SELECT - eras.er_name, - eras.er_start_year, - events.ev_name - FROM eras AS eras - JOIN events AS events - ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) - AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) + ERAS.er_name AS ER_NAME, + ERAS.er_start_year AS ER_START_YEAR, + EVENTS.ev_name AS EV_NAME + FROM ERAS AS ERAS + JOIN EVENTS AS EVENTS + ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) QUALIFY - ROW_NUMBER() OVER (PARTITION BY eras.er_name ORDER BY events.ev_dt) = 1 + ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) = 1 ) SELECT - er_name AS era_name, - ev_name AS event_name -FROM _t1 + ER_NAME AS era_name, + EV_NAME AS event_name +FROM _T1 ORDER BY - er_start_year NULLS FIRST + ER_START_YEAR NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_mysql.sql b/tests/test_sql_refsols/epoch_intra_season_searches_mysql.sql index 9901748b1..e8a88149c 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_mysql.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_mysql.sql @@ -4,24 +4,24 @@ WITH _s0 AS ( s_month2, s_month3, s_name - FROM seasons + FROM SEASONS ), _s5 AS ( SELECT ev_dt, ev_name - FROM events + FROM EVENTS ), _s9 AS ( SELECT COUNT(*) AS n_rows, _s2.s_name, - searches.search_id + SEARCHES.search_id FROM _s0 AS _s2 - JOIN searches AS searches - ON _s2.s_month1 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) - OR _s2.s_month2 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) - OR _s2.s_month3 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + JOIN SEARCHES AS SEARCHES + ON _s2.s_month1 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + OR _s2.s_month2 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + OR _s2.s_month3 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) JOIN _s5 AS _s5 - ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(_s5.ev_name), '%') + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(_s5.ev_name), '%') JOIN _s0 AS _s7 ON _s2.s_name = _s7.s_name AND ( @@ -40,12 +40,12 @@ WITH _s0 AS ( )) AS sum_is_intra_season, _s0.s_name FROM _s0 AS _s0 - JOIN searches AS searches - ON _s0.s_month1 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) - OR _s0.s_month2 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) - OR _s0.s_month3 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + JOIN SEARCHES AS SEARCHES + ON _s0.s_month1 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + OR _s0.s_month2 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + OR _s0.s_month3 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) LEFT JOIN _s9 AS _s9 - ON _s0.s_name = _s9.s_name AND _s9.search_id = searches.search_id + ON SEARCHES.search_id = _s9.search_id AND _s0.s_name = _s9.s_name GROUP BY 3 ), _s17 AS ( @@ -58,12 +58,12 @@ WITH _s0 AS ( ON _s10.s_month1 = EXTRACT(MONTH FROM CAST(_s11.ev_dt AS DATETIME)) OR _s10.s_month2 = EXTRACT(MONTH FROM CAST(_s11.ev_dt AS DATETIME)) OR _s10.s_month3 = EXTRACT(MONTH FROM CAST(_s11.ev_dt AS DATETIME)) - JOIN searches AS searches - ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(_s11.ev_name), '%') + JOIN SEARCHES AS SEARCHES + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(_s11.ev_name), '%') JOIN _s0 AS _s15 - ON _s15.s_month1 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) - OR _s15.s_month2 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) - OR _s15.s_month3 = EXTRACT(MONTH FROM CAST(searches.search_ts AS DATETIME)) + ON _s15.s_month1 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + OR _s15.s_month2 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) + OR _s15.s_month3 = EXTRACT(MONTH FROM CAST(SEARCHES.search_ts AS DATETIME)) GROUP BY 3 ) diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index 1ddb4623b..e6ae52b96 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -1,82 +1,82 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - s_month1, - s_month2, - s_month3, - s_name - FROM seasons -), _s5 AS ( + s_month1 AS S_MONTH1, + s_month2 AS S_MONTH2, + s_month3 AS S_MONTH3, + s_name AS S_NAME + FROM SEASONS +), _S5 AS ( SELECT - ev_dt, - ev_name - FROM events -), _s9 AS ( + ev_dt AS EV_DT, + ev_name AS EV_NAME + FROM EVENTS +), _S9 AS ( SELECT - COUNT(*) AS n_rows, - _s2.s_name, - searches.search_id - FROM _s0 AS _s2 - JOIN searches AS searches - ON _s2.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) - OR _s2.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) - OR _s2.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) - JOIN _s5 AS _s5 - ON CONTAINS(LOWER(searches.search_string), LOWER(_s5.ev_name)) - JOIN _s0 AS _s7 - ON _s2.s_name = _s7.s_name + COUNT(*) AS N_ROWS, + _S2.S_NAME, + SEARCHES.search_id AS SEARCH_ID + FROM _S0 AS _S2 + JOIN SEARCHES AS SEARCHES + ON _S2.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S2.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S2.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + JOIN _S5 AS _S5 + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S5.EV_NAME)) + JOIN _S0 AS _S7 + ON _S2.S_NAME = _S7.S_NAME AND ( - _s7.s_month1 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) - OR _s7.s_month2 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) - OR _s7.s_month3 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) + _S7.S_MONTH1 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) + OR _S7.S_MONTH2 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) + OR _S7.S_MONTH3 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) ) GROUP BY 2, 3 -), _s16 AS ( +), _S16 AS ( SELECT - COUNT(*) AS n_rows, + COUNT(*) AS N_ROWS, COUNT_IF(( - NOT _s9.n_rows IS NULL AND _s9.n_rows > 0 - )) AS sum_is_intra_season, - _s0.s_name - FROM _s0 AS _s0 - JOIN searches AS searches - ON _s0.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) - OR _s0.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) - OR _s0.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) - LEFT JOIN _s9 AS _s9 - ON _s0.s_name = _s9.s_name AND _s9.search_id = searches.search_id + NOT _S9.N_ROWS IS NULL AND _S9.N_ROWS > 0 + )) AS SUM_IS_INTRA_SEASON, + _S0.S_NAME + FROM _S0 AS _S0 + JOIN SEARCHES AS SEARCHES + ON _S0.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S0.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S0.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + LEFT JOIN _S9 AS _S9 + ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.S_NAME = _S9.S_NAME GROUP BY 3 -), _s17 AS ( +), _S17 AS ( SELECT - COUNT(*) AS n_rows, - COUNT_IF(_s15.s_name = _s10.s_name) AS sum_is_intra_season, - _s10.s_name - FROM _s0 AS _s10 - JOIN _s5 AS _s11 - ON _s10.s_month1 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) - OR _s10.s_month2 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) - OR _s10.s_month3 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) - JOIN searches AS searches - ON CONTAINS(LOWER(searches.search_string), LOWER(_s11.ev_name)) - JOIN _s0 AS _s15 - ON _s15.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) - OR _s15.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) - OR _s15.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + COUNT(*) AS N_ROWS, + COUNT_IF(_S15.S_NAME = _S10.S_NAME) AS SUM_IS_INTRA_SEASON, + _S10.S_NAME + FROM _S0 AS _S10 + JOIN _S5 AS _S11 + ON _S10.S_MONTH1 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) + OR _S10.S_MONTH2 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) + OR _S10.S_MONTH3 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) + JOIN SEARCHES AS SEARCHES + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S11.EV_NAME)) + JOIN _S0 AS _S15 + ON _S15.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S15.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + OR _S15.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY 3 ) SELECT - _s16.s_name AS season_name, + _S16.S_NAME AS season_name, ROUND(( - 100.0 * COALESCE(_s16.sum_is_intra_season, 0) - ) / _s16.n_rows, 2) AS pct_season_searches, + 100.0 * COALESCE(_S16.SUM_IS_INTRA_SEASON, 0) + ) / _S16.N_ROWS, 2) AS pct_season_searches, ROUND(( - 100.0 * COALESCE(_s17.sum_is_intra_season, 0) - ) / COALESCE(_s17.n_rows, 0), 2) AS pct_event_searches -FROM _s16 AS _s16 -LEFT JOIN _s17 AS _s17 - ON _s16.s_name = _s17.s_name + 100.0 * COALESCE(_S17.SUM_IS_INTRA_SEASON, 0) + ) / COALESCE(_S17.N_ROWS, 0), 2) AS pct_event_searches +FROM _S16 AS _S16 +LEFT JOIN _S17 AS _S17 + ON _S16.S_NAME = _S17.S_NAME ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_mysql.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_mysql.sql index 283696a20..6b682dc33 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_mysql.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_mysql.sql @@ -1,12 +1,12 @@ WITH _t2 AS ( SELECT COUNT(*) AS n_searches, - searches.search_engine, - times.t_name - FROM times AS times - JOIN searches AS searches - ON times.t_end_hour > HOUR(searches.search_ts) - AND times.t_start_hour <= HOUR(searches.search_ts) + SEARCHES.search_engine, + TIMES.t_name + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) + AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) GROUP BY 2, 3 diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql index cabbb3e36..7e70f42ff 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql @@ -1,22 +1,22 @@ -WITH _t1 AS ( +WITH _T1 AS ( SELECT - COUNT(*) AS n_searches, - searches.search_engine, - times.t_name - FROM times AS times - JOIN searches AS searches - ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) - AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) + COUNT(*) AS N_SEARCHES, + SEARCHES.search_engine AS SEARCH_ENGINE, + TIMES.t_name AS T_NAME + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY 2, 3 QUALIFY - ROW_NUMBER() OVER (PARTITION BY times.t_name ORDER BY COUNT(*) DESC, searches.search_engine) = 1 + ROW_NUMBER() OVER (PARTITION BY TIMES.t_name ORDER BY COUNT(*) DESC, SEARCHES.search_engine) = 1 ) SELECT - t_name AS tod, - search_engine, - n_searches -FROM _t1 + T_NAME AS tod, + SEARCH_ENGINE AS search_engine, + N_SEARCHES AS n_searches +FROM _T1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_mysql.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_mysql.sql index 97631c55a..857c90fe3 100644 --- a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_mysql.sql +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_mysql.sql @@ -1,13 +1,13 @@ WITH _t1 AS ( SELECT - COUNT(DISTINCT searches.search_id) AS n_searches, - events.ev_typ, - users.user_region - FROM events AS events - JOIN searches AS searches - ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') - JOIN users AS users - ON searches.search_user_id = users.user_id + COUNT(DISTINCT SEARCHES.search_id) AS n_searches, + EVENTS.ev_typ, + USERS.user_region + FROM EVENTS AS EVENTS + JOIN SEARCHES AS SEARCHES + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN USERS AS USERS + ON SEARCHES.search_user_id = USERS.user_id GROUP BY 2, 3 diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql index 1f7517326..803dccc7f 100644 --- a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql @@ -1,21 +1,21 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - COUNT(DISTINCT searches.search_id) AS n_searches, - events.ev_typ, - users.user_region - FROM events AS events - JOIN searches AS searches - ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) - JOIN users AS users - ON searches.search_user_id = users.user_id + COUNT(DISTINCT SEARCHES.search_id) AS N_SEARCHES, + EVENTS.ev_typ AS EV_TYP, + USERS.user_region AS USER_REGION + FROM EVENTS AS EVENTS + JOIN SEARCHES AS SEARCHES + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) + JOIN USERS AS USERS + ON SEARCHES.search_user_id = USERS.user_id GROUP BY 2, 3 QUALIFY - ROW_NUMBER() OVER (PARTITION BY users.user_region ORDER BY COUNT(DISTINCT searches.search_id) DESC) = 1 + ROW_NUMBER() OVER (PARTITION BY USERS.user_region ORDER BY COUNT(DISTINCT SEARCHES.search_id) DESC) = 1 ) SELECT - user_region AS region, - ev_typ AS event_type, - n_searches -FROM _t0 + USER_REGION AS region, + EV_TYP AS event_type, + N_SEARCHES AS n_searches +FROM _T0 diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_mysql.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_mysql.sql index 96e96ea50..efc1d7023 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_mysql.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_mysql.sql @@ -2,25 +2,25 @@ WITH _s0 AS ( SELECT ev_dt, ev_key - FROM events + FROM EVENTS ), _u_0 AS ( SELECT _s2.ev_key AS _u_1 FROM _s0 AS _s2 - JOIN eras AS eras - ON eras.er_end_year > EXTRACT(YEAR FROM CAST(_s2.ev_dt AS DATETIME)) - AND eras.er_name = 'Cold War' - AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(_s2.ev_dt AS DATETIME)) + JOIN ERAS AS ERAS + ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(_s2.ev_dt AS DATETIME)) + AND ERAS.er_name = 'Cold War' + AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(_s2.ev_dt AS DATETIME)) GROUP BY 1 ) SELECT COUNT(*) AS n_events FROM _s0 AS _s0 -JOIN times AS times - ON times.t_end_hour > HOUR(_s0.ev_dt) - AND times.t_name = 'Pre-Dawn' - AND times.t_start_hour <= HOUR(_s0.ev_dt) +JOIN TIMES AS TIMES + ON TIMES.t_end_hour > HOUR(_s0.ev_dt) + AND TIMES.t_name = 'Pre-Dawn' + AND TIMES.t_start_hour <= HOUR(_s0.ev_dt) LEFT JOIN _u_0 AS _u_0 ON _s0.ev_key = _u_0._u_1 WHERE diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql index 5e8914950..22cd7db4f 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -1,27 +1,27 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - ev_dt, - ev_key - FROM events + ev_dt AS EV_DT, + ev_key AS EV_KEY + FROM EVENTS ), _u_0 AS ( SELECT - _s2.ev_key AS _u_1 - FROM _s0 AS _s2 - JOIN eras AS eras - ON eras.er_end_year > YEAR(CAST(_s2.ev_dt AS TIMESTAMP)) - AND eras.er_name = 'Cold War' - AND eras.er_start_year <= YEAR(CAST(_s2.ev_dt AS TIMESTAMP)) + _S2.EV_KEY AS _u_1 + FROM _S0 AS _S2 + JOIN ERAS AS ERAS + ON ERAS.er_end_year > YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) + AND ERAS.er_name = 'Cold War' + AND ERAS.er_start_year <= YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) GROUP BY 1 ) SELECT COUNT(*) AS n_events -FROM _s0 AS _s0 -JOIN times AS times - ON times.t_end_hour > HOUR(CAST(_s0.ev_dt AS TIMESTAMP)) - AND times.t_name = 'Pre-Dawn' - AND times.t_start_hour <= HOUR(CAST(_s0.ev_dt AS TIMESTAMP)) +FROM _S0 AS _S0 +JOIN TIMES AS TIMES + ON TIMES.t_end_hour > HOUR(CAST(_S0.EV_DT AS TIMESTAMP)) + AND TIMES.t_name = 'Pre-Dawn' + AND TIMES.t_start_hour <= HOUR(CAST(_S0.EV_DT AS TIMESTAMP)) LEFT JOIN _u_0 AS _u_0 - ON _s0.ev_key = _u_0._u_1 + ON _S0.EV_KEY = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_mysql.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_mysql.sql index b4c3e9a5c..2174a9706 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_mysql.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_mysql.sql @@ -2,12 +2,12 @@ WITH _s0 AS ( SELECT user_id, user_name - FROM users + FROM USERS ), _s1 AS ( SELECT search_string, search_user_id - FROM searches + FROM SEARCHES ) SELECT ANY_VALUE(_s0.user_name) COLLATE utf8mb4_bin AS user_name, @@ -15,10 +15,10 @@ SELECT FROM _s0 AS _s0 JOIN _s1 AS _s1 ON _s0.user_id = _s1.search_user_id -JOIN events AS events - ON LOWER(_s1.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') +JOIN EVENTS AS EVENTS + ON LOWER(_s1.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') JOIN _s1 AS _s5 - ON LOWER(_s5.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') + ON LOWER(_s5.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') JOIN _s0 AS _s7 ON _s0.user_name <> _s7.user_name AND _s5.search_user_id = _s7.user_id GROUP BY diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql index 760a8ee7a..5acfed6ba 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql @@ -1,28 +1,28 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - user_id, - user_name - FROM users -), _s1 AS ( + user_id AS USER_ID, + user_name AS USER_NAME + FROM USERS +), _S1 AS ( SELECT - search_string, - search_user_id - FROM searches + search_string AS SEARCH_STRING, + search_user_id AS SEARCH_USER_ID + FROM SEARCHES ) SELECT - ANY_VALUE(_s0.user_name) AS user_name, - COUNT(DISTINCT _s7.user_id) AS n_other_users -FROM _s0 AS _s0 -JOIN _s1 AS _s1 - ON _s0.user_id = _s1.search_user_id -JOIN events AS events - ON CONTAINS(LOWER(_s1.search_string), LOWER(events.ev_name)) -JOIN _s1 AS _s5 - ON CONTAINS(LOWER(_s5.search_string), LOWER(events.ev_name)) -JOIN _s0 AS _s7 - ON _s0.user_name <> _s7.user_name AND _s5.search_user_id = _s7.user_id + ANY_VALUE(_S0.USER_NAME) AS user_name, + COUNT(DISTINCT _S7.USER_ID) AS n_other_users +FROM _S0 AS _S0 +JOIN _S1 AS _S1 + ON _S0.USER_ID = _S1.SEARCH_USER_ID +JOIN EVENTS AS EVENTS + ON CONTAINS(LOWER(_S1.SEARCH_STRING), LOWER(EVENTS.ev_name)) +JOIN _S1 AS _S5 + ON CONTAINS(LOWER(_S5.SEARCH_STRING), LOWER(EVENTS.ev_name)) +JOIN _S0 AS _S7 + ON _S0.USER_NAME <> _S7.USER_NAME AND _S5.SEARCH_USER_ID = _S7.USER_ID GROUP BY - _s0.user_id + _S0.USER_ID ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_mysql.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_mysql.sql index 45172b767..474801186 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_mysql.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_mysql.sql @@ -2,23 +2,23 @@ WITH _s0 AS ( SELECT user_id, user_name - FROM users + FROM USERS ), _t2 AS ( SELECT - ANY_VALUE(searches.search_user_id) AS anything_search_user_id, + ANY_VALUE(SEARCHES.search_user_id) AS anything_search_user_id, ANY_VALUE(_s0.user_name) AS anything_user_name, _s0.user_id FROM _s0 AS _s0 - JOIN searches AS searches - ON _s0.user_id = searches.search_user_id - JOIN events AS events - ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') - JOIN searches AS searches_2 - ON LOWER(searches_2.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') + JOIN SEARCHES AS SEARCHES + ON SEARCHES.search_user_id = _s0.user_id + JOIN EVENTS AS EVENTS + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN SEARCHES AS SEARCHES_2 + ON LOWER(SEARCHES_2.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') JOIN _s0 AS _s7 - ON _s0.user_name <> _s7.user_name AND _s7.user_id = searches_2.search_user_id + ON SEARCHES_2.search_user_id = _s7.user_id AND _s0.user_name <> _s7.user_name GROUP BY - searches.search_id, + SEARCHES.search_id, 3 ) SELECT diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql index e6b9376d7..eeaeb8d4e 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -1,34 +1,34 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - user_id, - user_name - FROM users -), _t2 AS ( + user_id AS USER_ID, + user_name AS USER_NAME + FROM USERS +), _T2 AS ( SELECT - ANY_VALUE(searches.search_user_id) AS anything_search_user_id, - ANY_VALUE(_s0.user_name) AS anything_user_name, - _s0.user_id - FROM _s0 AS _s0 - JOIN searches AS searches - ON _s0.user_id = searches.search_user_id - JOIN events AS events - ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) - JOIN searches AS searches_2 - ON CONTAINS(LOWER(searches_2.search_string), LOWER(events.ev_name)) - JOIN _s0 AS _s7 - ON _s0.user_name <> _s7.user_name AND _s7.user_id = searches_2.search_user_id + ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID, + ANY_VALUE(_S0.USER_NAME) AS ANYTHING_USER_NAME, + _S0.USER_ID + FROM _S0 AS _S0 + JOIN SEARCHES AS SEARCHES + ON SEARCHES.search_user_id = _S0.USER_ID + JOIN EVENTS AS EVENTS + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) + JOIN SEARCHES AS SEARCHES_2 + ON CONTAINS(LOWER(SEARCHES_2.search_string), LOWER(EVENTS.ev_name)) + JOIN _S0 AS _S7 + ON SEARCHES_2.search_user_id = _S7.USER_ID AND _S0.USER_NAME <> _S7.USER_NAME GROUP BY - searches.search_id, + SEARCHES.search_id, 3 ) SELECT - ANY_VALUE(anything_user_name) AS user_name, + ANY_VALUE(ANYTHING_USER_NAME) AS user_name, COUNT(*) AS n_searches -FROM _t2 +FROM _T2 WHERE - anything_search_user_id = user_id + ANYTHING_SEARCH_USER_ID = USER_ID GROUP BY - user_id + USER_ID ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_mysql.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_mysql.sql index ff0084360..ae3ac5c3a 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_mysql.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_mysql.sql @@ -1,12 +1,12 @@ WITH _t0 AS ( SELECT - ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, + ANY_VALUE(TIMES.t_start_hour) AS anything_t_start_hour, COUNT(*) AS n_rows, - times.t_name - FROM times AS times - JOIN searches AS searches - ON times.t_end_hour > HOUR(searches.search_ts) - AND times.t_start_hour <= HOUR(searches.search_ts) + TIMES.t_name + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) + AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) GROUP BY 3 ) diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql index aa17edcc7..0d4297b4d 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -1,20 +1,20 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, - COUNT(*) AS n_rows, - times.t_name - FROM times AS times - JOIN searches AS searches - ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) - AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) + ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, + COUNT(*) AS N_ROWS, + TIMES.t_name AS T_NAME + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY 3 ) SELECT - t_name AS tod, + T_NAME AS tod, ROUND(( - 100.0 * n_rows - ) / SUM(n_rows) OVER (), 2) AS pct_searches -FROM _t0 + 100.0 * N_ROWS + ) / SUM(N_ROWS) OVER (), 2) AS pct_searches +FROM _T0 ORDER BY - anything_t_start_hour NULLS FIRST + ANYTHING_T_START_HOUR NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_mysql.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_mysql.sql index e11dc7c82..3ec0c5e41 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_mysql.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_mysql.sql @@ -1,13 +1,13 @@ WITH _t0 AS ( SELECT - ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, - AVG(searches.search_num_results) AS avg_search_num_results, + ANY_VALUE(TIMES.t_start_hour) AS anything_t_start_hour, + AVG(SEARCHES.search_num_results) AS avg_search_num_results, COUNT(*) AS n_rows, - times.t_name - FROM times AS times - JOIN searches AS searches - ON times.t_end_hour > HOUR(searches.search_ts) - AND times.t_start_hour <= HOUR(searches.search_ts) + TIMES.t_name + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > HOUR(SEARCHES.search_ts) + AND TIMES.t_start_hour <= HOUR(SEARCHES.search_ts) GROUP BY 4 ) diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql index 089aac377..ba9737406 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -1,22 +1,22 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, - AVG(searches.search_num_results) AS avg_search_num_results, - COUNT(*) AS n_rows, - times.t_name - FROM times AS times - JOIN searches AS searches - ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) - AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) + ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, + AVG(SEARCHES.search_num_results) AS AVG_SEARCH_NUM_RESULTS, + COUNT(*) AS N_ROWS, + TIMES.t_name AS T_NAME + FROM TIMES AS TIMES + JOIN SEARCHES AS SEARCHES + ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) GROUP BY 4 ) SELECT - t_name AS tod, + T_NAME AS tod, ROUND(( - 100.0 * n_rows - ) / SUM(n_rows) OVER (), 2) AS pct_searches, - ROUND(avg_search_num_results, 2) AS avg_results -FROM _t0 + 100.0 * N_ROWS + ) / SUM(N_ROWS) OVER (), 2) AS pct_searches, + ROUND(AVG_SEARCH_NUM_RESULTS, 2) AS avg_results +FROM _T0 ORDER BY - anything_t_start_hour NULLS FIRST + ANYTHING_T_START_HOUR NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_mysql.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_mysql.sql index 8bf1f2ac7..efe7ff8dc 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_mysql.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_mysql.sql @@ -1,14 +1,14 @@ SELECT - events.ev_typ COLLATE utf8mb4_bin AS event_type, + EVENTS.ev_typ COLLATE utf8mb4_bin AS event_type, COUNT(*) AS n_events -FROM events AS events -JOIN seasons AS seasons +FROM EVENTS AS EVENTS +JOIN SEASONS AS SEASONS ON ( - seasons.s_month1 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) - OR seasons.s_month2 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) - OR seasons.s_month3 = EXTRACT(MONTH FROM CAST(events.ev_dt AS DATETIME)) + SEASONS.s_month1 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) + OR SEASONS.s_month2 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) + OR SEASONS.s_month3 = EXTRACT(MONTH FROM CAST(EVENTS.ev_dt AS DATETIME)) ) - AND seasons.s_name = 'Summer' + AND SEASONS.s_name = 'Summer' GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql index b7091de07..eb48862b3 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql @@ -1,14 +1,14 @@ SELECT - events.ev_typ AS event_type, + EVENTS.ev_typ AS event_type, COUNT(*) AS n_events -FROM events AS events -JOIN seasons AS seasons +FROM EVENTS AS EVENTS +JOIN SEASONS AS SEASONS ON ( - seasons.s_month1 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) - OR seasons.s_month2 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) - OR seasons.s_month3 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + SEASONS.s_month1 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) ) - AND seasons.s_name = 'Summer' + AND SEASONS.s_name = 'Summer' GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_mysql.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_mysql.sql index 189201c3b..cb4ad0509 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_mysql.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_mysql.sql @@ -1,17 +1,17 @@ WITH _s2 AS ( SELECT DISTINCT search_engine - FROM searches + FROM SEARCHES ), _s3 AS ( SELECT - COUNT(DISTINCT users.user_id) AS ndistinct_user_id, - searches.search_engine - FROM searches AS searches - JOIN users AS users - ON searches.search_user_id = users.user_id + COUNT(DISTINCT USERS.user_id) AS ndistinct_user_id, + SEARCHES.search_engine + FROM SEARCHES AS SEARCHES + JOIN USERS AS USERS + ON SEARCHES.search_user_id = USERS.user_id WHERE - EXTRACT(YEAR FROM CAST(searches.search_ts AS DATETIME)) <= 2019 - AND EXTRACT(YEAR FROM CAST(searches.search_ts AS DATETIME)) >= 2010 + EXTRACT(YEAR FROM CAST(SEARCHES.search_ts AS DATETIME)) <= 2019 + AND EXTRACT(YEAR FROM CAST(SEARCHES.search_ts AS DATETIME)) >= 2010 GROUP BY 2 ) diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql index 030770bb5..924c69027 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql @@ -1,25 +1,25 @@ -WITH _s2 AS ( +WITH _S2 AS ( SELECT DISTINCT - search_engine - FROM searches -), _s3 AS ( + search_engine AS SEARCH_ENGINE + FROM SEARCHES +), _S3 AS ( SELECT - COUNT(DISTINCT users.user_id) AS ndistinct_user_id, - searches.search_engine - FROM searches AS searches - JOIN users AS users - ON searches.search_user_id = users.user_id + COUNT(DISTINCT USERS.user_id) AS NDISTINCT_USER_ID, + SEARCHES.search_engine AS SEARCH_ENGINE + FROM SEARCHES AS SEARCHES + JOIN USERS AS USERS + ON SEARCHES.search_user_id = USERS.user_id WHERE - YEAR(CAST(searches.search_ts AS TIMESTAMP)) <= 2019 - AND YEAR(CAST(searches.search_ts AS TIMESTAMP)) >= 2010 + YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) <= 2019 + AND YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) >= 2010 GROUP BY 2 ) SELECT - _s2.search_engine AS engine, - COALESCE(_s3.ndistinct_user_id, 0) AS n_users -FROM _s2 AS _s2 -LEFT JOIN _s3 AS _s3 - ON _s2.search_engine = _s3.search_engine + _S2.SEARCH_ENGINE AS engine, + COALESCE(_S3.NDISTINCT_USER_ID, 0) AS n_users +FROM _S2 AS _S2 +LEFT JOIN _S3 AS _S3 + ON _S2.SEARCH_ENGINE = _S3.SEARCH_ENGINE ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_mysql.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_mysql.sql index f282ee41b..da4046422 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_mysql.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_mysql.sql @@ -1,15 +1,15 @@ WITH _t1 AS ( SELECT - ANY_VALUE(searches.search_user_id) AS anything_search_user_id - FROM searches AS searches - JOIN events AS events - ON LOWER(searches.search_string) LIKE CONCAT('%', LOWER(events.ev_name), '%') - JOIN eras AS eras - ON eras.er_end_year > EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) - AND eras.er_name = 'Cold War' - AND eras.er_start_year <= EXTRACT(YEAR FROM CAST(events.ev_dt AS DATETIME)) + ANY_VALUE(SEARCHES.search_user_id) AS anything_search_user_id + FROM SEARCHES AS SEARCHES + JOIN EVENTS AS EVENTS + ON LOWER(SEARCHES.search_string) LIKE CONCAT('%', LOWER(EVENTS.ev_name), '%') + JOIN ERAS AS ERAS + ON ERAS.er_end_year > EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) + AND ERAS.er_name = 'Cold War' + AND ERAS.er_start_year <= EXTRACT(YEAR FROM CAST(EVENTS.ev_dt AS DATETIME)) GROUP BY - searches.search_id + SEARCHES.search_id ), _s5 AS ( SELECT COUNT(*) AS n_cold_war_searches, @@ -21,9 +21,9 @@ WITH _t1 AS ( SELECT user_name COLLATE utf8mb4_bin AS user_name, _s5.n_cold_war_searches -FROM users AS users +FROM USERS AS USERS JOIN _s5 AS _s5 - ON _s5.anything_search_user_id = users.user_id + ON USERS.user_id = _s5.anything_search_user_id ORDER BY 2 DESC, 1 diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql index 244b30369..6c9e77849 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -1,29 +1,29 @@ -WITH _t0 AS ( +WITH _T0 AS ( SELECT - ANY_VALUE(searches.search_user_id) AS anything_search_user_id - FROM searches AS searches - JOIN events AS events - ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) - JOIN eras AS eras - ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) - AND eras.er_name = 'Cold War' - AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) + ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID + FROM SEARCHES AS SEARCHES + JOIN EVENTS AS EVENTS + ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) + JOIN ERAS AS ERAS + ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + AND ERAS.er_name = 'Cold War' + AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) GROUP BY - searches.search_id -), _s5 AS ( + SEARCHES.search_id +), _S5 AS ( SELECT - COUNT(*) AS n_cold_war_searches, - anything_search_user_id - FROM _t0 + COUNT(*) AS N_COLD_WAR_SEARCHES, + ANYTHING_SEARCH_USER_ID + FROM _T0 GROUP BY 2 ) SELECT - users.user_name, - _s5.n_cold_war_searches -FROM users AS users -JOIN _s5 AS _s5 - ON _s5.anything_search_user_id = users.user_id + USERS.user_name, + _S5.N_COLD_WAR_SEARCHES AS n_cold_war_searches +FROM USERS AS USERS +JOIN _S5 AS _S5 + ON USERS.user_id = _S5.ANYTHING_SEARCH_USER_ID ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/extract_colors_mysql.sql b/tests/test_sql_refsols/extract_colors_mysql.sql index 21077d450..cdf697d7d 100644 --- a/tests/test_sql_refsols/extract_colors_mysql.sql +++ b/tests/test_sql_refsols/extract_colors_mysql.sql @@ -78,7 +78,7 @@ SELECT ELSE NULL END ) AS c6 -FROM tpch.part +FROM tpch.PART ORDER BY 1 LIMIT 5 diff --git a/tests/test_sql_refsols/extract_colors_snowflake.sql b/tests/test_sql_refsols/extract_colors_snowflake.sql index 07a4abd25..a78c12923 100644 --- a/tests/test_sql_refsols/extract_colors_snowflake.sql +++ b/tests/test_sql_refsols/extract_colors_snowflake.sql @@ -6,7 +6,7 @@ SELECT UPPER(SPLIT_PART(p_name, ' ', 4)) AS c4, UPPER(SPLIT_PART(p_name, ' ', 5)) AS c5, UPPER(SPLIT_PART(p_name, ' ', 6)) AS c6 -FROM tpch.part +FROM TPCH.PART ORDER BY 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/floor_and_ceil_2_mysql.sql b/tests/test_sql_refsols/floor_and_ceil_2_mysql.sql index 2d60308c2..ef20f8825 100644 --- a/tests/test_sql_refsols/floor_and_ceil_2_mysql.sql +++ b/tests/test_sql_refsols/floor_and_ceil_2_mysql.sql @@ -3,7 +3,7 @@ SELECT ps_partkey AS part_key, FLOOR(ps_availqty) AS complete_parts, CEIL(ps_supplycost * FLOOR(ps_availqty)) AS total_cost -FROM tpch.partsupp +FROM tpch.PARTSUPP ORDER BY 4 DESC LIMIT 10 diff --git a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql index 9c0b4527b..cc39b84ab 100644 --- a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql +++ b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql @@ -3,7 +3,7 @@ SELECT ps_partkey AS part_key, FLOOR(ps_availqty) AS complete_parts, CEIL(ps_supplycost * FLOOR(ps_availqty)) AS total_cost -FROM tpch.partsupp +FROM TPCH.PARTSUPP ORDER BY 4 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/floor_and_ceil_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_snowflake.sql index 38b321fcd..fbccc9e04 100644 --- a/tests/test_sql_refsols/floor_and_ceil_snowflake.sql +++ b/tests/test_sql_refsols/floor_and_ceil_snowflake.sql @@ -8,4 +8,4 @@ SELECT FLOOR(-6) AS floor_int_neg, CEIL(-6) AS ceil_int_neg FROM (VALUES - (NULL)) AS _q_0(_col_0) + (NULL)) AS _Q_0(_COL_0) diff --git a/tests/test_sql_refsols/get_part_multiple_mysql.sql b/tests/test_sql_refsols/get_part_multiple_mysql.sql index 5496d5543..42b197207 100644 --- a/tests/test_sql_refsols/get_part_multiple_mysql.sql +++ b/tests/test_sql_refsols/get_part_multiple_mysql.sql @@ -744,7 +744,7 @@ SELECT THEN SUBSTRING_INDEX(SUBSTRING_INDEX(sbcustpostalcode, '0', 1), '0', -1) ELSE NULL END AS p18 -FROM main.sbcustomer +FROM main.sbCustomer WHERE TRUNCATE(CAST(SUBSTRING(sbcustid, 2) AS FLOAT), 0) <= 4 ORDER BY diff --git a/tests/test_sql_refsols/get_part_multiple_snowflake.sql b/tests/test_sql_refsols/get_part_multiple_snowflake.sql index e52d4abc3..b1b83fa0d 100644 --- a/tests/test_sql_refsols/get_part_multiple_snowflake.sql +++ b/tests/test_sql_refsols/get_part_multiple_snowflake.sql @@ -18,7 +18,7 @@ SELECT SPLIT_PART(sbcuststate, sbcuststate, CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p16, SPLIT_PART(SPLIT_PART(sbcustphone, '-', 1), '5', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p17, SPLIT_PART(sbcustpostalcode, '0', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p18 -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER WHERE CAST(SUBSTRING(sbcustid, 2) AS BIGINT) <= 4 ORDER BY diff --git a/tests/test_sql_refsols/get_part_single_mysql.sql b/tests/test_sql_refsols/get_part_single_mysql.sql index 754673da0..89d134dae 100644 --- a/tests/test_sql_refsols/get_part_single_mysql.sql +++ b/tests/test_sql_refsols/get_part_single_mysql.sql @@ -10,6 +10,6 @@ SELECT THEN SUBSTRING_INDEX(SUBSTRING_INDEX(sbcustname, ' ', -1), ' ', 1) ELSE NULL END AS last_name -FROM main.sbcustomer +FROM main.sbCustomer WHERE sbcustname = 'Alex Rodriguez' diff --git a/tests/test_sql_refsols/get_part_single_snowflake.sql b/tests/test_sql_refsols/get_part_single_snowflake.sql index a9694cfb1..4a85cbc15 100644 --- a/tests/test_sql_refsols/get_part_single_snowflake.sql +++ b/tests/test_sql_refsols/get_part_single_snowflake.sql @@ -1,5 +1,5 @@ SELECT SPLIT_PART(sbcustname, ' ', -1) AS last_name -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER WHERE sbcustname = 'Alex Rodriguez' diff --git a/tests/test_sql_refsols/global_acctbal_breakdown_mysql.sql b/tests/test_sql_refsols/global_acctbal_breakdown_mysql.sql index bebd765c0..28964d1f2 100644 --- a/tests/test_sql_refsols/global_acctbal_breakdown_mysql.sql +++ b/tests/test_sql_refsols/global_acctbal_breakdown_mysql.sql @@ -40,7 +40,7 @@ WITH _t0 AS ( ELSE NULL END AS expr_7, c_acctbal - FROM tpch.customer + FROM tpch.CUSTOMER ) SELECT COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS n_red_acctbal, diff --git a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql index 973d5975d..9ff814a80 100644 --- a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql @@ -4,4 +4,4 @@ SELECT MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS median_red_acctbal, MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS median_black_acctbal, MEDIAN(c_acctbal) AS median_overall_acctbal -FROM tpch.customer +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/hour_minute_day_mysql.sql b/tests/test_sql_refsols/hour_minute_day_mysql.sql index e6b900ec3..071de60fe 100644 --- a/tests/test_sql_refsols/hour_minute_day_mysql.sql +++ b/tests/test_sql_refsols/hour_minute_day_mysql.sql @@ -1,11 +1,11 @@ SELECT - sbtransaction.sbtxid COLLATE utf8mb4_bin AS transaction_id, - HOUR(sbtransaction.sbtxdatetime) AS _expr0, - MINUTE(sbtransaction.sbtxdatetime) AS _expr1, - SECOND(sbtransaction.sbtxdatetime) AS _expr2 -FROM main.sbtransaction AS sbtransaction -JOIN main.sbticker AS sbticker - ON sbticker.sbtickerid = sbtransaction.sbtxtickerid - AND sbticker.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') + sbTransaction.sbtxid COLLATE utf8mb4_bin AS transaction_id, + HOUR(sbTransaction.sbtxdatetime) AS _expr0, + MINUTE(sbTransaction.sbtxdatetime) AS _expr1, + SECOND(sbTransaction.sbtxdatetime) AS _expr2 +FROM main.sbTransaction AS sbTransaction +JOIN main.sbTicker AS sbTicker + ON sbTicker.sbtickerid = sbTransaction.sbtxtickerid + AND sbTicker.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') ORDER BY 1 diff --git a/tests/test_sql_refsols/hour_minute_day_snowflake.sql b/tests/test_sql_refsols/hour_minute_day_snowflake.sql index 571c2b0be..278a2c7c3 100644 --- a/tests/test_sql_refsols/hour_minute_day_snowflake.sql +++ b/tests/test_sql_refsols/hour_minute_day_snowflake.sql @@ -1,11 +1,11 @@ SELECT - sbtransaction.sbtxid AS transaction_id, - HOUR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr0, - MINUTE(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr1, - SECOND(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr2 -FROM main.sbtransaction AS sbtransaction -JOIN main.sbticker AS sbticker - ON sbticker.sbtickerid = sbtransaction.sbtxtickerid - AND sbticker.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') + SBTRANSACTION.sbtxid AS transaction_id, + HOUR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr0, + MINUTE(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr1, + SECOND(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr2 +FROM MAIN.SBTRANSACTION AS SBTRANSACTION +JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + AND SBTICKER.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_mysql.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_mysql.sql index 5b394aff4..ab30332cc 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_mysql.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_mysql.sql @@ -41,7 +41,7 @@ WITH _t2 AS ( END AS expr_7, c_acctbal, c_nationkey - FROM tpch.customer + FROM tpch.CUSTOMER ), _s3 AS ( SELECT AVG(expr_5) AS median_black_acctbal, @@ -55,16 +55,16 @@ WITH _t2 AS ( 6 ) SELECT - nation.n_name COLLATE utf8mb4_bin AS nation_name, + NATION.n_name COLLATE utf8mb4_bin AS nation_name, _s3.n_red_acctbal, _s3.n_black_acctbal, _s3.median_red_acctbal, _s3.median_black_acctbal, _s3.median_overall_acctbal -FROM tpch.nation AS nation -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' +FROM tpch.NATION AS NATION +JOIN tpch.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' JOIN _s3 AS _s3 - ON _s3.c_nationkey = nation.n_nationkey + ON NATION.n_nationkey = _s3.c_nationkey ORDER BY 1 diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql index 5a3587e17..696a66e0a 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql @@ -1,26 +1,26 @@ -WITH _s3 AS ( +WITH _S3 AS ( SELECT - MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS median_black_acctbal, - MEDIAN(c_acctbal) AS median_overall_acctbal, - MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS median_red_acctbal, - COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS n_black_acctbal, - COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS n_red_acctbal, - c_nationkey - FROM tpch.customer + MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_BLACK_ACCTBAL, + MEDIAN(c_acctbal) AS MEDIAN_OVERALL_ACCTBAL, + MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, + COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, + COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, + c_nationkey AS C_NATIONKEY + FROM TPCH.CUSTOMER GROUP BY 6 ) SELECT - nation.n_name AS nation_name, - _s3.n_red_acctbal, - _s3.n_black_acctbal, - _s3.median_red_acctbal, - _s3.median_black_acctbal, - _s3.median_overall_acctbal -FROM tpch.nation AS nation -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' -JOIN _s3 AS _s3 - ON _s3.c_nationkey = nation.n_nationkey + NATION.n_name AS nation_name, + _S3.N_RED_ACCTBAL AS n_red_acctbal, + _S3.N_BLACK_ACCTBAL AS n_black_acctbal, + _S3.MEDIAN_RED_ACCTBAL AS median_red_acctbal, + _S3.MEDIAN_BLACK_ACCTBAL AS median_black_acctbal, + _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal +FROM TPCH.NATION AS NATION +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' +JOIN _S3 AS _S3 + ON NATION.n_nationkey = _S3.C_NATIONKEY ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/numerical_functions_mysql.sql b/tests/test_sql_refsols/numerical_functions_mysql.sql index d71e930de..5c032c866 100644 --- a/tests/test_sql_refsols/numerical_functions_mysql.sql +++ b/tests/test_sql_refsols/numerical_functions_mysql.sql @@ -8,4 +8,4 @@ SELECT CASE WHEN c_acctbal = 0 THEN 0 ELSE CASE WHEN c_acctbal < 0 THEN -1 ELSE 1 END END AS sign_value, LEAST(c_acctbal, 0) AS smallest_value, GREATEST(c_acctbal, 0) AS largest_value -FROM tpch.customer +FROM tpch.CUSTOMER diff --git a/tests/test_sql_refsols/numerical_functions_snowflake.sql b/tests/test_sql_refsols/numerical_functions_snowflake.sql index d02e9691a..b138f575b 100644 --- a/tests/test_sql_refsols/numerical_functions_snowflake.sql +++ b/tests/test_sql_refsols/numerical_functions_snowflake.sql @@ -8,4 +8,4 @@ SELECT SIGN(c_acctbal) AS sign_value, LEAST(c_acctbal, 0) AS smallest_value, GREATEST(c_acctbal, 0) AS largest_value -FROM tpch.customer +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/part_cross_part_a_mysql.sql b/tests/test_sql_refsols/part_cross_part_a_mysql.sql index 3d1d98aa3..e9c18cf97 100644 --- a/tests/test_sql_refsols/part_cross_part_a_mysql.sql +++ b/tests/test_sql_refsols/part_cross_part_a_mysql.sql @@ -1,32 +1,32 @@ WITH _s0 AS ( SELECT DISTINCT - sbtickerexchange - FROM main.sbticker + sbtickerexchange AS sbTickerExchange + FROM main.sbTicker ), _s9 AS ( SELECT COUNT(*) AS n_rows, - sbcustomer.sbcustid, - _s2.sbtickerexchange + sbCustomer.sbcustid AS sbCustId, + _s2.sbTickerExchange FROM _s0 AS _s2 - CROSS JOIN main.sbcustomer AS sbcustomer - JOIN main.sbtransaction AS sbtransaction - ON sbcustomer.sbcustid = sbtransaction.sbtxcustid - JOIN main.sbticker AS sbticker - ON _s2.sbtickerexchange = sbticker.sbtickerexchange - AND sbticker.sbtickerid = sbtransaction.sbtxtickerid + CROSS JOIN main.sbCustomer AS sbCustomer + JOIN main.sbTransaction AS sbTransaction + ON sbCustomer.sbcustid = sbTransaction.sbtxcustid + JOIN main.sbTicker AS sbTicker + ON _s2.sbTickerExchange = sbTicker.sbtickerexchange + AND sbTicker.sbtickerid = sbTransaction.sbtxtickerid GROUP BY 2, 3 ) SELECT - sbcustomer.sbcuststate COLLATE utf8mb4_bin AS state, - _s0.sbtickerexchange COLLATE utf8mb4_bin AS exchange, + sbCustomer.sbcuststate COLLATE utf8mb4_bin AS state, + _s0.sbTickerExchange COLLATE utf8mb4_bin AS exchange, COALESCE(SUM(_s9.n_rows), 0) AS n FROM _s0 AS _s0 -CROSS JOIN main.sbcustomer AS sbcustomer +CROSS JOIN main.sbCustomer AS sbCustomer LEFT JOIN _s9 AS _s9 - ON _s0.sbtickerexchange = _s9.sbtickerexchange - AND _s9.sbcustid = sbcustomer.sbcustid + ON _s0.sbTickerExchange = _s9.sbTickerExchange + AND _s9.sbCustId = sbCustomer.sbcustid GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/part_cross_part_a_snowflake.sql b/tests/test_sql_refsols/part_cross_part_a_snowflake.sql index 5d7c38cea..0505c200f 100644 --- a/tests/test_sql_refsols/part_cross_part_a_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_a_snowflake.sql @@ -1,32 +1,32 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT DISTINCT - sbtickerexchange - FROM main.sbticker -), _s9 AS ( + sbtickerexchange AS SBTICKEREXCHANGE + FROM MAIN.SBTICKER +), _S9 AS ( SELECT - COUNT(*) AS n_rows, - sbcustomer.sbcustid, - _s2.sbtickerexchange - FROM _s0 AS _s2 - CROSS JOIN main.sbcustomer AS sbcustomer - JOIN main.sbtransaction AS sbtransaction - ON sbcustomer.sbcustid = sbtransaction.sbtxcustid - JOIN main.sbticker AS sbticker - ON _s2.sbtickerexchange = sbticker.sbtickerexchange - AND sbticker.sbtickerid = sbtransaction.sbtxtickerid + COUNT(*) AS N_ROWS, + SBCUSTOMER.sbcustid AS SBCUSTID, + _S2.SBTICKEREXCHANGE + FROM _S0 AS _S2 + CROSS JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + JOIN MAIN.SBTICKER AS SBTICKER + ON SBTICKER.sbtickerexchange = _S2.SBTICKEREXCHANGE + AND SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid GROUP BY 2, 3 ) SELECT - sbcustomer.sbcuststate AS state, - _s0.sbtickerexchange AS exchange, - COALESCE(SUM(_s9.n_rows), 0) AS n -FROM _s0 AS _s0 -CROSS JOIN main.sbcustomer AS sbcustomer -LEFT JOIN _s9 AS _s9 - ON _s0.sbtickerexchange = _s9.sbtickerexchange - AND _s9.sbcustid = sbcustomer.sbcustid + SBCUSTOMER.sbcuststate AS state, + _S0.SBTICKEREXCHANGE AS exchange, + COALESCE(SUM(_S9.N_ROWS), 0) AS n +FROM _S0 AS _S0 +CROSS JOIN MAIN.SBCUSTOMER AS SBCUSTOMER +LEFT JOIN _S9 AS _S9 + ON SBCUSTOMER.sbcustid = _S9.SBCUSTID + AND _S0.SBTICKEREXCHANGE = _S9.SBTICKEREXCHANGE GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/part_cross_part_b_mysql.sql b/tests/test_sql_refsols/part_cross_part_b_mysql.sql index 1160bd99b..9200e7434 100644 --- a/tests/test_sql_refsols/part_cross_part_b_mysql.sql +++ b/tests/test_sql_refsols/part_cross_part_b_mysql.sql @@ -1,24 +1,24 @@ WITH _s0 AS ( SELECT DISTINCT - sbcuststate - FROM main.sbcustomer + sbcuststate AS sbCustState + FROM main.sbCustomer ), _t2 AS ( SELECT - sbtxdatetime - FROM main.sbtransaction + sbtxdatetime AS sbTxDateTime + FROM main.sbTransaction WHERE EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) = 2023 ), _s1 AS ( SELECT DISTINCT STR_TO_DATE( - CONCAT(YEAR(CAST(sbtxdatetime AS DATETIME)), ' ', MONTH(CAST(sbtxdatetime AS DATETIME)), ' 1'), + CONCAT(YEAR(CAST(sbTxDateTime AS DATETIME)), ' ', MONTH(CAST(sbTxDateTime AS DATETIME)), ' 1'), '%Y %c %e' ) AS month FROM _t2 ), _s3 AS ( SELECT DISTINCT STR_TO_DATE( - CONCAT(YEAR(CAST(sbtxdatetime AS DATETIME)), ' ', MONTH(CAST(sbtxdatetime AS DATETIME)), ' 1'), + CONCAT(YEAR(CAST(sbTxDateTime AS DATETIME)), ' ', MONTH(CAST(sbTxDateTime AS DATETIME)), ' 1'), '%Y %c %e' ) AS month FROM _t2 @@ -26,35 +26,35 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows, _s3.month, - _s2.sbcuststate + _s2.sbCustState FROM _s0 AS _s2 CROSS JOIN _s3 AS _s3 - JOIN main.sbtransaction AS sbtransaction - ON EXTRACT(YEAR FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) = 2023 + JOIN main.sbTransaction AS sbTransaction + ON EXTRACT(YEAR FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) = 2023 AND _s3.month = STR_TO_DATE( CONCAT( - YEAR(CAST(sbtransaction.sbtxdatetime AS DATETIME)), + YEAR(CAST(sbTransaction.sbtxdatetime AS DATETIME)), ' ', - MONTH(CAST(sbtransaction.sbtxdatetime AS DATETIME)), + MONTH(CAST(sbTransaction.sbtxdatetime AS DATETIME)), ' 1' ), '%Y %c %e' ) - JOIN main.sbcustomer AS sbcustomer - ON _s2.sbcuststate = sbcustomer.sbcuststate - AND sbcustomer.sbcustid = sbtransaction.sbtxcustid + JOIN main.sbCustomer AS sbCustomer + ON _s2.sbCustState = sbCustomer.sbcuststate + AND sbCustomer.sbcustid = sbTransaction.sbtxcustid GROUP BY 2, 3 ) SELECT - _s0.sbcuststate COLLATE utf8mb4_bin AS state, + _s0.sbCustState COLLATE utf8mb4_bin AS state, _s1.month AS month_of_year, - SUM(COALESCE(_s9.n_rows, 0)) OVER (PARTITION BY _s0.sbcuststate ORDER BY _s1.month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n + SUM(COALESCE(_s9.n_rows, 0)) OVER (PARTITION BY _s0.sbCustState ORDER BY _s1.month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n FROM _s0 AS _s0 CROSS JOIN _s1 AS _s1 LEFT JOIN _s9 AS _s9 - ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month + ON _s0.sbCustState = _s9.sbCustState AND _s1.month = _s9.month ORDER BY 1, 2 diff --git a/tests/test_sql_refsols/part_cross_part_b_snowflake.sql b/tests/test_sql_refsols/part_cross_part_b_snowflake.sql index 695035c21..e96e0332c 100644 --- a/tests/test_sql_refsols/part_cross_part_b_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_b_snowflake.sql @@ -1,46 +1,46 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT DISTINCT - sbcuststate - FROM main.sbcustomer -), _t2 AS ( + sbcuststate AS SBCUSTSTATE + FROM MAIN.SBCUSTOMER +), _T2 AS ( SELECT - sbtxdatetime - FROM main.sbtransaction + sbtxdatetime AS SBTXDATETIME + FROM MAIN.SBTRANSACTION WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _s1 AS ( +), _S1 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month - FROM _t2 -), _s3 AS ( + DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH + FROM _T2 +), _S3 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month - FROM _t2 -), _s9 AS ( + DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH + FROM _T2 +), _S9 AS ( SELECT - COUNT(*) AS n_rows, - _s3.month, - _s2.sbcuststate - FROM _s0 AS _s2 - CROSS JOIN _s3 AS _s3 - JOIN main.sbtransaction AS sbtransaction - ON YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 - AND _s3.month = DATE_TRUNC('MONTH', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) - JOIN main.sbcustomer AS sbcustomer - ON _s2.sbcuststate = sbcustomer.sbcuststate - AND sbcustomer.sbcustid = sbtransaction.sbtxcustid + COUNT(*) AS N_ROWS, + _S3.MONTH, + _S2.SBCUSTSTATE + FROM _S0 AS _S2 + CROSS JOIN _S3 AS _S3 + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 + AND _S3.MONTH = DATE_TRUNC('MONTH', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND SBCUSTOMER.sbcuststate = _S2.SBCUSTSTATE GROUP BY 2, 3 ) SELECT - _s0.sbcuststate AS state, - _s1.month AS month_of_year, - SUM(COALESCE(_s9.n_rows, 0)) OVER (PARTITION BY _s0.sbcuststate ORDER BY _s1.month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n -FROM _s0 AS _s0 -CROSS JOIN _s1 AS _s1 -LEFT JOIN _s9 AS _s9 - ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month + _S0.SBCUSTSTATE AS state, + _S1.MONTH AS month_of_year, + SUM(COALESCE(_S9.N_ROWS, 0)) OVER (PARTITION BY _S0.SBCUSTSTATE ORDER BY _S1.MONTH ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n +FROM _S0 AS _S0 +CROSS JOIN _S1 AS _S1 +LEFT JOIN _S9 AS _S9 + ON _S0.SBCUSTSTATE = _S9.SBCUSTSTATE AND _S1.MONTH = _S9.MONTH ORDER BY 1 NULLS FIRST, 2 NULLS FIRST diff --git a/tests/test_sql_refsols/part_cross_part_c_mysql.sql b/tests/test_sql_refsols/part_cross_part_c_mysql.sql index 0f876d168..f8b06a49d 100644 --- a/tests/test_sql_refsols/part_cross_part_c_mysql.sql +++ b/tests/test_sql_refsols/part_cross_part_c_mysql.sql @@ -1,24 +1,24 @@ WITH _s0 AS ( SELECT DISTINCT - sbcuststate - FROM main.sbcustomer + sbcuststate AS sbCustState + FROM main.sbCustomer ), _t2 AS ( SELECT - sbtxdatetime - FROM main.sbtransaction + sbtxdatetime AS sbTxDateTime + FROM main.sbTransaction WHERE EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) = 2023 ), _s1 AS ( SELECT DISTINCT STR_TO_DATE( - CONCAT(YEAR(CAST(sbtxdatetime AS DATETIME)), ' ', MONTH(CAST(sbtxdatetime AS DATETIME)), ' 1'), + CONCAT(YEAR(CAST(sbTxDateTime AS DATETIME)), ' ', MONTH(CAST(sbTxDateTime AS DATETIME)), ' 1'), '%Y %c %e' ) AS month FROM _t2 ), _s3 AS ( SELECT DISTINCT STR_TO_DATE( - CONCAT(YEAR(CAST(sbtxdatetime AS DATETIME)), ' ', MONTH(CAST(sbtxdatetime AS DATETIME)), ' 1'), + CONCAT(YEAR(CAST(sbTxDateTime AS DATETIME)), ' ', MONTH(CAST(sbTxDateTime AS DATETIME)), ' 1'), '%Y %c %e' ) AS month FROM _t2 @@ -26,33 +26,33 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows, _s3.month, - _s2.sbcuststate + _s2.sbCustState FROM _s0 AS _s2 CROSS JOIN _s3 AS _s3 - JOIN main.sbtransaction AS sbtransaction - ON EXTRACT(YEAR FROM CAST(sbtransaction.sbtxdatetime AS DATETIME)) = 2023 + JOIN main.sbTransaction AS sbTransaction + ON EXTRACT(YEAR FROM CAST(sbTransaction.sbtxdatetime AS DATETIME)) = 2023 AND _s3.month = STR_TO_DATE( CONCAT( - YEAR(CAST(sbtransaction.sbtxdatetime AS DATETIME)), + YEAR(CAST(sbTransaction.sbtxdatetime AS DATETIME)), ' ', - MONTH(CAST(sbtransaction.sbtxdatetime AS DATETIME)), + MONTH(CAST(sbTransaction.sbtxdatetime AS DATETIME)), ' 1' ), '%Y %c %e' ) - JOIN main.sbcustomer AS sbcustomer - ON _s2.sbcuststate = sbcustomer.sbcuststate - AND sbcustomer.sbcustid = sbtransaction.sbtxcustid + JOIN main.sbCustomer AS sbCustomer + ON _s2.sbCustState = sbCustomer.sbcuststate + AND sbCustomer.sbcustid = sbTransaction.sbtxcustid GROUP BY 2, 3 ) SELECT - _s0.sbcuststate AS state, + _s0.sbCustState AS state, MAX(COALESCE(_s9.n_rows, 0)) AS max_n FROM _s0 AS _s0 CROSS JOIN _s1 AS _s1 LEFT JOIN _s9 AS _s9 - ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month + ON _s0.sbCustState = _s9.sbCustState AND _s1.month = _s9.month GROUP BY 1 diff --git a/tests/test_sql_refsols/part_cross_part_c_snowflake.sql b/tests/test_sql_refsols/part_cross_part_c_snowflake.sql index 82c088a76..8df574e96 100644 --- a/tests/test_sql_refsols/part_cross_part_c_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_c_snowflake.sql @@ -1,44 +1,44 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT DISTINCT - sbcuststate - FROM main.sbcustomer -), _t2 AS ( + sbcuststate AS SBCUSTSTATE + FROM MAIN.SBCUSTOMER +), _T2 AS ( SELECT - sbtxdatetime - FROM main.sbtransaction + sbtxdatetime AS SBTXDATETIME + FROM MAIN.SBTRANSACTION WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _s1 AS ( +), _S1 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month - FROM _t2 -), _s3 AS ( + DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH + FROM _T2 +), _S3 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month - FROM _t2 -), _s9 AS ( + DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH + FROM _T2 +), _S9 AS ( SELECT - COUNT(*) AS n_rows, - _s3.month, - _s2.sbcuststate - FROM _s0 AS _s2 - CROSS JOIN _s3 AS _s3 - JOIN main.sbtransaction AS sbtransaction - ON YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 - AND _s3.month = DATE_TRUNC('MONTH', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) - JOIN main.sbcustomer AS sbcustomer - ON _s2.sbcuststate = sbcustomer.sbcuststate - AND sbcustomer.sbcustid = sbtransaction.sbtxcustid + COUNT(*) AS N_ROWS, + _S3.MONTH, + _S2.SBCUSTSTATE + FROM _S0 AS _S2 + CROSS JOIN _S3 AS _S3 + JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 + AND _S3.MONTH = DATE_TRUNC('MONTH', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + JOIN MAIN.SBCUSTOMER AS SBCUSTOMER + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + AND SBCUSTOMER.sbcuststate = _S2.SBCUSTSTATE GROUP BY 2, 3 ) SELECT - _s0.sbcuststate AS state, - MAX(COALESCE(_s9.n_rows, 0)) AS max_n -FROM _s0 AS _s0 -CROSS JOIN _s1 AS _s1 -LEFT JOIN _s9 AS _s9 - ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month + _S0.SBCUSTSTATE AS state, + MAX(COALESCE(_S9.N_ROWS, 0)) AS max_n +FROM _S0 AS _S0 +CROSS JOIN _S1 AS _S1 +LEFT JOIN _S9 AS _S9 + ON _S0.SBCUSTSTATE = _S9.SBCUSTSTATE AND _S1.MONTH = _S9.MONTH GROUP BY 1 diff --git a/tests/test_sql_refsols/quantile_test_1_mysql.sql b/tests/test_sql_refsols/quantile_test_1_mysql.sql index a296b9612..015388656 100644 --- a/tests/test_sql_refsols/quantile_test_1_mysql.sql +++ b/tests/test_sql_refsols/quantile_test_1_mysql.sql @@ -1,14 +1,14 @@ WITH _t0 AS ( SELECT CASE - WHEN TRUNCATE(CAST(0.30000000000000004 * COUNT(orders.o_totalprice) OVER () AS FLOAT), 0) < ROW_NUMBER() OVER (ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + WHEN TRUNCATE(CAST(0.30000000000000004 * COUNT(ORDERS.o_totalprice) OVER () AS FLOAT), 0) < ROW_NUMBER() OVER (ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_1 - FROM tpch.customer AS customer - JOIN tpch.orders AS orders - ON EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) = 1998 - AND customer.c_custkey = orders.o_custkey + FROM tpch.CUSTOMER AS CUSTOMER + JOIN tpch.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 1998 ) SELECT MAX(expr_1) AS seventieth_order_price diff --git a/tests/test_sql_refsols/quantile_test_1_snowflake.sql b/tests/test_sql_refsols/quantile_test_1_snowflake.sql index 00345f528..f1352353d 100644 --- a/tests/test_sql_refsols/quantile_test_1_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_1_snowflake.sql @@ -1,7 +1,7 @@ SELECT PERCENTILE_DISC(0.7) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS seventieth_order_price -FROM tpch.customer AS customer -JOIN tpch.orders AS orders - ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1998 - AND customer.c_custkey = orders.o_custkey + ORDERS.o_totalprice) AS seventieth_order_price +FROM TPCH.CUSTOMER AS CUSTOMER +JOIN TPCH.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 diff --git a/tests/test_sql_refsols/quantile_test_2_mysql.sql b/tests/test_sql_refsols/quantile_test_2_mysql.sql index 5f10e0086..f60fdde4c 100644 --- a/tests/test_sql_refsols/quantile_test_2_mysql.sql +++ b/tests/test_sql_refsols/quantile_test_2_mysql.sql @@ -3,7 +3,7 @@ WITH _s0 AS ( n_name COLLATE utf8mb4_bin AS n_name, n_nationkey, n_regionkey - FROM tpch.nation + FROM tpch.NATION ORDER BY 1 LIMIT 5 @@ -11,81 +11,81 @@ WITH _s0 AS ( SELECT CASE WHEN TRUNCATE( - CAST(0.99 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.99 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_10, CASE WHEN TRUNCATE( - CAST(0.75 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.75 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_11, CASE WHEN TRUNCATE( - CAST(0.25 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.25 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_12, CASE WHEN TRUNCATE( - CAST(0.09999999999999998 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.09999999999999998 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_13, CASE WHEN TRUNCATE( - CAST(0.010000000000000009 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.010000000000000009 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_14, CASE WHEN TRUNCATE( - CAST(0.0 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.0 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_15, CASE WHEN TRUNCATE( - CAST(0.5 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.5 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_16, CASE WHEN TRUNCATE( - CAST(1.0 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(1.0 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_17, CASE WHEN TRUNCATE( - CAST(0.9 * COUNT(orders.o_totalprice) OVER (PARTITION BY customer.c_nationkey) AS FLOAT), + CAST(0.9 * COUNT(ORDERS.o_totalprice) OVER (PARTITION BY CUSTOMER.c_nationkey) AS FLOAT), 0 - ) < ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY orders.o_totalprice DESC) - THEN orders.o_totalprice + ) < ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY ORDERS.o_totalprice DESC) + THEN ORDERS.o_totalprice ELSE NULL END AS expr_9, - customer.c_nationkey - FROM tpch.customer AS customer - JOIN tpch.orders AS orders - ON EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) = 1998 - AND customer.c_custkey = orders.o_custkey + CUSTOMER.c_nationkey + FROM tpch.CUSTOMER AS CUSTOMER + JOIN tpch.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 1998 ), _s5 AS ( SELECT MAX(expr_10) AS max_expr_10, @@ -103,7 +103,7 @@ WITH _s0 AS ( 10 ) SELECT - region.r_name AS region_name, + REGION.r_name AS region_name, _s0.n_name COLLATE utf8mb4_bin AS nation_name, _s5.max_expr_17 AS orders_min, _s5.max_expr_10 AS orders_1_percent, @@ -115,8 +115,8 @@ SELECT _s5.max_expr_14 AS orders_99_percent, _s5.max_expr_15 AS orders_max FROM _s0 AS _s0 -JOIN tpch.region AS region - ON _s0.n_regionkey = region.r_regionkey +JOIN tpch.REGION AS REGION + ON REGION.r_regionkey = _s0.n_regionkey LEFT JOIN _s5 AS _s5 ON _s0.n_nationkey = _s5.c_nationkey ORDER BY diff --git a/tests/test_sql_refsols/quantile_test_2_snowflake.sql b/tests/test_sql_refsols/quantile_test_2_snowflake.sql index d0703b387..1054e1756 100644 --- a/tests/test_sql_refsols/quantile_test_2_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_2_snowflake.sql @@ -1,56 +1,56 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - n_name, - n_nationkey, - n_regionkey - FROM tpch.nation + n_name AS N_NAME, + n_nationkey AS N_NATIONKEY, + n_regionkey AS N_REGIONKEY + FROM TPCH.NATION ORDER BY 1 NULLS FIRST LIMIT 5 -), _s5 AS ( +), _S5 AS ( SELECT PERCENTILE_DISC(0.1) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_0, + ORDERS.o_totalprice) AS AGG_0, PERCENTILE_DISC(0.01) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_1, + ORDERS.o_totalprice) AS AGG_1, PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_2, + ORDERS.o_totalprice) AS AGG_2, PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_3, + ORDERS.o_totalprice) AS AGG_3, PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_4, + ORDERS.o_totalprice) AS AGG_4, PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_5, + ORDERS.o_totalprice) AS AGG_5, PERCENTILE_DISC(1.0) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_6, + ORDERS.o_totalprice) AS AGG_6, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_7, + ORDERS.o_totalprice) AS AGG_7, PERCENTILE_DISC(0.0) WITHIN GROUP (ORDER BY - orders.o_totalprice) AS agg_8, - customer.c_nationkey - FROM tpch.customer AS customer - JOIN tpch.orders AS orders - ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1998 - AND customer.c_custkey = orders.o_custkey + ORDERS.o_totalprice) AS AGG_8, + CUSTOMER.c_nationkey AS C_NATIONKEY + FROM TPCH.CUSTOMER AS CUSTOMER + JOIN TPCH.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 GROUP BY 10 ) SELECT - region.r_name AS region_name, - _s0.n_name AS nation_name, - _s5.agg_8 AS orders_min, - _s5.agg_1 AS orders_1_percent, - _s5.agg_0 AS orders_10_percent, - _s5.agg_2 AS orders_25_percent, - _s5.agg_7 AS orders_median, - _s5.agg_3 AS orders_75_percent, - _s5.agg_4 AS orders_90_percent, - _s5.agg_5 AS orders_99_percent, - _s5.agg_6 AS orders_max -FROM _s0 AS _s0 -JOIN tpch.region AS region - ON _s0.n_regionkey = region.r_regionkey -LEFT JOIN _s5 AS _s5 - ON _s0.n_nationkey = _s5.c_nationkey + REGION.r_name AS region_name, + _S0.N_NAME AS nation_name, + _S5.AGG_8 AS orders_min, + _S5.AGG_1 AS orders_1_percent, + _S5.AGG_0 AS orders_10_percent, + _S5.AGG_2 AS orders_25_percent, + _S5.AGG_7 AS orders_median, + _S5.AGG_3 AS orders_75_percent, + _S5.AGG_4 AS orders_90_percent, + _S5.AGG_5 AS orders_99_percent, + _S5.AGG_6 AS orders_max +FROM _S0 AS _S0 +JOIN TPCH.REGION AS REGION + ON REGION.r_regionkey = _S0.N_REGIONKEY +LEFT JOIN _S5 AS _S5 + ON _S0.N_NATIONKEY = _S5.C_NATIONKEY ORDER BY 2 NULLS FIRST diff --git a/tests/test_sql_refsols/rank_a_mysql.sql b/tests/test_sql_refsols/rank_a_mysql.sql index d9f8e3d1d..9f38c9016 100644 --- a/tests/test_sql_refsols/rank_a_mysql.sql +++ b/tests/test_sql_refsols/rank_a_mysql.sql @@ -1,4 +1,4 @@ SELECT c_custkey AS id, ROW_NUMBER() OVER (ORDER BY CASE WHEN c_acctbal IS NULL THEN 1 ELSE 0 END DESC, c_acctbal DESC) AS rk -FROM tpch.customer +FROM tpch.CUSTOMER diff --git a/tests/test_sql_refsols/rank_a_snowflake.sql b/tests/test_sql_refsols/rank_a_snowflake.sql index 483dd35e1..9a7f14d7c 100644 --- a/tests/test_sql_refsols/rank_a_snowflake.sql +++ b/tests/test_sql_refsols/rank_a_snowflake.sql @@ -1,4 +1,4 @@ SELECT c_custkey AS id, ROW_NUMBER() OVER (ORDER BY c_acctbal DESC) AS rk -FROM tpch.customer +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/rank_b_mysql.sql b/tests/test_sql_refsols/rank_b_mysql.sql index acbb95e8f..33fad6085 100644 --- a/tests/test_sql_refsols/rank_b_mysql.sql +++ b/tests/test_sql_refsols/rank_b_mysql.sql @@ -1,4 +1,4 @@ SELECT o_orderkey AS order_key, RANK() OVER (ORDER BY CASE WHEN o_orderpriority COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, o_orderpriority COLLATE utf8mb4_bin) AS `rank` -FROM tpch.orders +FROM tpch.ORDERS diff --git a/tests/test_sql_refsols/rank_b_snowflake.sql b/tests/test_sql_refsols/rank_b_snowflake.sql index 14229140a..b323162a0 100644 --- a/tests/test_sql_refsols/rank_b_snowflake.sql +++ b/tests/test_sql_refsols/rank_b_snowflake.sql @@ -1,4 +1,4 @@ SELECT o_orderkey AS order_key, RANK() OVER (ORDER BY o_orderpriority) AS rank -FROM tpch.orders +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/rank_c_mysql.sql b/tests/test_sql_refsols/rank_c_mysql.sql index c4366d33c..267ba4985 100644 --- a/tests/test_sql_refsols/rank_c_mysql.sql +++ b/tests/test_sql_refsols/rank_c_mysql.sql @@ -1,4 +1,4 @@ SELECT o_orderdate AS order_date, DENSE_RANK() OVER (ORDER BY CASE WHEN o_orderdate IS NULL THEN 1 ELSE 0 END, o_orderdate) AS `rank` -FROM tpch.orders +FROM tpch.ORDERS diff --git a/tests/test_sql_refsols/rank_c_snowflake.sql b/tests/test_sql_refsols/rank_c_snowflake.sql index 159e7b9ba..8b019c54b 100644 --- a/tests/test_sql_refsols/rank_c_snowflake.sql +++ b/tests/test_sql_refsols/rank_c_snowflake.sql @@ -1,4 +1,4 @@ SELECT o_orderdate AS order_date, DENSE_RANK() OVER (ORDER BY o_orderdate) AS rank -FROM tpch.orders +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_mysql.sql b/tests/test_sql_refsols/region_acctbal_breakdown_mysql.sql index 6fd2dcd6a..d07881959 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_mysql.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_mysql.sql @@ -3,47 +3,47 @@ WITH _t1 AS ( CASE WHEN ABS( ( - ROW_NUMBER() OVER (PARTITION BY nation.n_regionkey ORDER BY CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END DESC) - 1.0 + ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END DESC) - 1.0 ) - ( ( - COUNT(CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END) OVER (PARTITION BY nation.n_regionkey) - 1.0 + COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER (PARTITION BY NATION.n_regionkey) - 1.0 ) / 2.0 ) ) < 1.0 - THEN CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END + THEN CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END ELSE NULL END AS expr_5, CASE WHEN ABS( ( - ROW_NUMBER() OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal DESC) - 1.0 + ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal DESC) - 1.0 ) - ( ( - COUNT(customer.c_acctbal) OVER (PARTITION BY nation.n_regionkey) - 1.0 + COUNT(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey) - 1.0 ) / 2.0 ) ) < 1.0 - THEN customer.c_acctbal + THEN CUSTOMER.c_acctbal ELSE NULL END AS expr_6, CASE WHEN ABS( ( - ROW_NUMBER() OVER (PARTITION BY nation.n_regionkey ORDER BY CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END DESC) - 1.0 + ROW_NUMBER() OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END DESC) - 1.0 ) - ( ( - COUNT(CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END) OVER (PARTITION BY nation.n_regionkey) - 1.0 + COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER (PARTITION BY NATION.n_regionkey) - 1.0 ) / 2.0 ) ) < 1.0 - THEN CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END + THEN CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END ELSE NULL END AS expr_7, - customer.c_acctbal, - nation.n_regionkey - FROM tpch.nation AS nation - JOIN tpch.customer AS customer - ON customer.c_nationkey = nation.n_nationkey + CUSTOMER.c_acctbal, + NATION.n_regionkey + FROM tpch.NATION AS NATION + JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey ), _s3 AS ( SELECT AVG(expr_5) AS median_black_acctbal, @@ -57,14 +57,14 @@ WITH _t1 AS ( 6 ) SELECT - region.r_name COLLATE utf8mb4_bin AS region_name, + REGION.r_name COLLATE utf8mb4_bin AS region_name, _s3.n_red_acctbal, _s3.n_black_acctbal, _s3.median_red_acctbal, _s3.median_black_acctbal, _s3.median_overall_acctbal -FROM tpch.region AS region +FROM tpch.REGION AS REGION JOIN _s3 AS _s3 - ON _s3.n_regionkey = region.r_regionkey + ON REGION.r_regionkey = _s3.n_regionkey ORDER BY 1 diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql index b4ab449d5..a3d6f89f5 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql @@ -1,26 +1,26 @@ -WITH _s3 AS ( +WITH _S3 AS ( SELECT - MEDIAN(CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END) AS median_black_acctbal, - MEDIAN(customer.c_acctbal) AS median_overall_acctbal, - MEDIAN(CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END) AS median_red_acctbal, - COUNT(CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END) AS n_black_acctbal, - COUNT(CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END) AS n_red_acctbal, - nation.n_regionkey - FROM tpch.nation AS nation - JOIN tpch.customer AS customer - ON customer.c_nationkey = nation.n_nationkey + MEDIAN(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_BLACK_ACCTBAL, + MEDIAN(CUSTOMER.c_acctbal) AS MEDIAN_OVERALL_ACCTBAL, + MEDIAN(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, + COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, + COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, + NATION.n_regionkey AS N_REGIONKEY + FROM TPCH.NATION AS NATION + JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey GROUP BY 6 ) SELECT - region.r_name AS region_name, - _s3.n_red_acctbal, - _s3.n_black_acctbal, - _s3.median_red_acctbal, - _s3.median_black_acctbal, - _s3.median_overall_acctbal -FROM tpch.region AS region -JOIN _s3 AS _s3 - ON _s3.n_regionkey = region.r_regionkey + REGION.r_name AS region_name, + _S3.N_RED_ACCTBAL AS n_red_acctbal, + _S3.N_BLACK_ACCTBAL AS n_black_acctbal, + _S3.MEDIAN_RED_ACCTBAL AS median_red_acctbal, + _S3.MEDIAN_BLACK_ACCTBAL AS median_black_acctbal, + _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal +FROM TPCH.REGION AS REGION +JOIN _S3 AS _S3 + ON REGION.r_regionkey = _S3.N_REGIONKEY ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/simple_filter_mysql.sql b/tests/test_sql_refsols/simple_filter_mysql.sql index b3caa6ec4..ade2244dd 100644 --- a/tests/test_sql_refsols/simple_filter_mysql.sql +++ b/tests/test_sql_refsols/simple_filter_mysql.sql @@ -2,6 +2,6 @@ SELECT o_orderdate AS order_date, o_orderkey, o_totalprice -FROM tpch.orders +FROM tpch.ORDERS WHERE o_totalprice < 1000.0 diff --git a/tests/test_sql_refsols/simple_filter_snowflake.sql b/tests/test_sql_refsols/simple_filter_snowflake.sql index b3caa6ec4..dfa0ed0dd 100644 --- a/tests/test_sql_refsols/simple_filter_snowflake.sql +++ b/tests/test_sql_refsols/simple_filter_snowflake.sql @@ -2,6 +2,6 @@ SELECT o_orderdate AS order_date, o_orderkey, o_totalprice -FROM tpch.orders +FROM TPCH.ORDERS WHERE o_totalprice < 1000.0 diff --git a/tests/test_sql_refsols/simple_scan_mysql.sql b/tests/test_sql_refsols/simple_scan_mysql.sql index bf57acc21..0ba15bd3d 100644 --- a/tests/test_sql_refsols/simple_scan_mysql.sql +++ b/tests/test_sql_refsols/simple_scan_mysql.sql @@ -1,3 +1,3 @@ SELECT o_orderkey AS `key` -FROM tpch.orders +FROM tpch.ORDERS diff --git a/tests/test_sql_refsols/simple_scan_snowflake.sql b/tests/test_sql_refsols/simple_scan_snowflake.sql index 4a2aac94f..e0125c3c4 100644 --- a/tests/test_sql_refsols/simple_scan_snowflake.sql +++ b/tests/test_sql_refsols/simple_scan_snowflake.sql @@ -1,3 +1,3 @@ SELECT o_orderkey AS key -FROM tpch.orders +FROM TPCH.ORDERS diff --git a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql index 9a77bc82b..2235cea26 100644 --- a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql +++ b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql @@ -26,4 +26,4 @@ SELECT GREATEST('', 'alphabet soup', 'Hello World') AS l8, GREATEST(NULL, 'alphabet soup', 'Hello World') AS l9 FROM (VALUES - (NULL)) AS _q_0(_col_0) + (NULL)) AS _Q_0(_COL_0) diff --git a/tests/test_sql_refsols/simple_var_std_mysql.sql b/tests/test_sql_refsols/simple_var_std_mysql.sql index e35c1f144..4e0ce2829 100644 --- a/tests/test_sql_refsols/simple_var_std_mysql.sql +++ b/tests/test_sql_refsols/simple_var_std_mysql.sql @@ -51,20 +51,20 @@ WITH _s1 AS ( COUNT(s_acctbal) - 1 ) AS sample_var, s_nationkey - FROM tpch.supplier + FROM tpch.SUPPLIER GROUP BY 5 ) SELECT - nation.n_name AS name, + NATION.n_name AS name, _s1.pop_var AS var, _s1.pop_std AS std, _s1.sample_var, _s1.sample_std, _s1.pop_var, _s1.pop_std -FROM tpch.nation AS nation +FROM tpch.NATION AS NATION JOIN _s1 AS _s1 - ON _s1.s_nationkey = nation.n_nationkey + ON NATION.n_nationkey = _s1.s_nationkey WHERE - nation.n_name IN ('ALGERIA', 'ARGENTINA') + NATION.n_name IN ('ALGERIA', 'ARGENTINA') diff --git a/tests/test_sql_refsols/simple_var_std_snowflake.sql b/tests/test_sql_refsols/simple_var_std_snowflake.sql index 6e8b2ccfc..d864bf2b5 100644 --- a/tests/test_sql_refsols/simple_var_std_snowflake.sql +++ b/tests/test_sql_refsols/simple_var_std_snowflake.sql @@ -1,24 +1,24 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - STDDEV_POP(s_acctbal) AS pop_std, - VARIANCE_POP(s_acctbal) AS pop_var, - STDDEV(s_acctbal) AS sample_std, - VARIANCE(s_acctbal) AS sample_var, - s_nationkey - FROM tpch.supplier + STDDEV_POP(s_acctbal) AS POP_STD, + VARIANCE_POP(s_acctbal) AS POP_VAR, + STDDEV(s_acctbal) AS SAMPLE_STD, + VARIANCE(s_acctbal) AS SAMPLE_VAR, + s_nationkey AS S_NATIONKEY + FROM TPCH.SUPPLIER GROUP BY 5 ) SELECT - nation.n_name AS name, - _s1.pop_var AS var, - _s1.pop_std AS std, - _s1.sample_var, - _s1.sample_std, - _s1.pop_var, - _s1.pop_std -FROM tpch.nation AS nation -JOIN _s1 AS _s1 - ON _s1.s_nationkey = nation.n_nationkey + NATION.n_name AS name, + _S1.POP_VAR AS var, + _S1.POP_STD AS std, + _S1.SAMPLE_VAR AS sample_var, + _S1.SAMPLE_STD AS sample_std, + _S1.POP_VAR AS pop_var, + _S1.POP_STD AS pop_std +FROM TPCH.NATION AS NATION +JOIN _S1 AS _S1 + ON NATION.n_nationkey = _S1.S_NATIONKEY WHERE - nation.n_name IN ('ALGERIA', 'ARGENTINA') + NATION.n_name IN ('ALGERIA', 'ARGENTINA') diff --git a/tests/test_sql_refsols/simplification_1_mysql.sql b/tests/test_sql_refsols/simplification_1_mysql.sql index dc516015d..c76b9f254 100644 --- a/tests/test_sql_refsols/simplification_1_mysql.sql +++ b/tests/test_sql_refsols/simplification_1_mysql.sql @@ -23,4 +23,4 @@ SELECT TRUE AS s21, TRUE AS s22, TRUE AS s23 -FROM main.sbcustomer +FROM main.sbCustomer diff --git a/tests/test_sql_refsols/simplification_1_snowflake.sql b/tests/test_sql_refsols/simplification_1_snowflake.sql index 9e7a4ecbe..295d976e7 100644 --- a/tests/test_sql_refsols/simplification_1_snowflake.sql +++ b/tests/test_sql_refsols/simplification_1_snowflake.sql @@ -23,4 +23,4 @@ SELECT TRUE AS s21, TRUE AS s22, TRUE AS s23 -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER diff --git a/tests/test_sql_refsols/simplification_2_mysql.sql b/tests/test_sql_refsols/simplification_2_mysql.sql index 963c3a426..ae0fe6c24 100644 --- a/tests/test_sql_refsols/simplification_2_mysql.sql +++ b/tests/test_sql_refsols/simplification_2_mysql.sql @@ -47,4 +47,4 @@ SELECT NULL AS s45, NULL AS s46, COALESCE(MAX(sbcustname), '') LIKE '%r%' AS s47 -FROM main.sbcustomer +FROM main.sbCustomer diff --git a/tests/test_sql_refsols/simplification_2_snowflake.sql b/tests/test_sql_refsols/simplification_2_snowflake.sql index 963c3a426..b4df6c451 100644 --- a/tests/test_sql_refsols/simplification_2_snowflake.sql +++ b/tests/test_sql_refsols/simplification_2_snowflake.sql @@ -47,4 +47,4 @@ SELECT NULL AS s45, NULL AS s46, COALESCE(MAX(sbcustname), '') LIKE '%r%' AS s47 -FROM main.sbcustomer +FROM MAIN.SBCUSTOMER diff --git a/tests/test_sql_refsols/simplification_3_mysql.sql b/tests/test_sql_refsols/simplification_3_mysql.sql index 6313ba227..6b7bf9f07 100644 --- a/tests/test_sql_refsols/simplification_3_mysql.sql +++ b/tests/test_sql_refsols/simplification_3_mysql.sql @@ -22,7 +22,7 @@ WITH _t2 AS ( SUM(ABS(COALESCE(TRUNCATE(CAST(sbcustpostalcode AS FLOAT), 0), 0))) OVER (ORDER BY sbcustname COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0.1 ) AS rsum2 - FROM main.sbcustomer + FROM main.sbCustomer ), _t1 AS ( SELECT CASE diff --git a/tests/test_sql_refsols/simplification_3_snowflake.sql b/tests/test_sql_refsols/simplification_3_snowflake.sql index a1b6b5a76..422f38d7e 100644 --- a/tests/test_sql_refsols/simplification_3_snowflake.sql +++ b/tests/test_sql_refsols/simplification_3_snowflake.sql @@ -1,28 +1,28 @@ -WITH _t1 AS ( +WITH _T1 AS ( SELECT - ROW_NUMBER() OVER (ORDER BY sbcustname) AS rank, - AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS ravg1, + ROW_NUMBER() OVER (ORDER BY sbcustname) AS RANK, + AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS RAVG1, COALESCE( AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 0.1 - ) AS ravg2, - COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER () AS rcnt1, + ) AS RAVG2, + COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER () AS RCNT1, COALESCE( COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0.1 - ) AS rcnt2, - COUNT(*) OVER () AS rsiz1, + ) AS RCNT2, + COUNT(*) OVER () AS RSIZ1, COALESCE( COUNT(*) OVER (ORDER BY sbcustname ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING), 0.1 - ) AS rsiz2, - SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS rsum1, + ) AS RSIZ2, + SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS RSUM1, COALESCE( SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0.1 - ) AS rsum2, - sbcustpostalcode - FROM main.sbcustomer + ) AS RSUM2, + sbcustpostalcode AS SBCUSTPOSTALCODE + FROM MAIN.SBCUSTOMER ) SELECT TRUE AS s00, @@ -51,16 +51,16 @@ SELECT FALSE AS s23, TRUE AS s24, PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY - ABS(CAST(sbcustpostalcode AS BIGINT))) AS s25, - MEDIAN(ABS(CAST(sbcustpostalcode AS BIGINT))) AS s26, - MIN(rank) AS s27, - MAX(rank) AS s28, - ANY_VALUE(rsum1) AS s29, - ROUND(SUM(rsum2), 2) AS s30, - ANY_VALUE(ravg1) AS s31, - ROUND(SUM(ravg2), 2) AS s32, - ANY_VALUE(rcnt1) AS s33, - ROUND(SUM(rcnt2), 2) AS s34, - ANY_VALUE(rsiz1) AS s35, - ROUND(SUM(rsiz2), 2) AS s36 -FROM _t1 + ABS(CAST(SBCUSTPOSTALCODE AS BIGINT))) AS s25, + MEDIAN(ABS(CAST(SBCUSTPOSTALCODE AS BIGINT))) AS s26, + MIN(RANK) AS s27, + MAX(RANK) AS s28, + ANY_VALUE(RSUM1) AS s29, + ROUND(SUM(RSUM2), 2) AS s30, + ANY_VALUE(RAVG1) AS s31, + ROUND(SUM(RAVG2), 2) AS s32, + ANY_VALUE(RCNT1) AS s33, + ROUND(SUM(RCNT2), 2) AS s34, + ANY_VALUE(RSIZ1) AS s35, + ROUND(SUM(RSIZ2), 2) AS s36 +FROM _T1 diff --git a/tests/test_sql_refsols/smoke_a_mysql.sql b/tests/test_sql_refsols/smoke_a_mysql.sql index da1137e3f..85723adcf 100644 --- a/tests/test_sql_refsols/smoke_a_mysql.sql +++ b/tests/test_sql_refsols/smoke_a_mysql.sql @@ -74,7 +74,7 @@ SELECT ) / 100.0 ) AS h, ROUND(POWER(GREATEST(p_size, 10), 0.5), 3) AS i -FROM tpch.part +FROM tpch.PART ORDER BY 1 LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_a_snowflake.sql b/tests/test_sql_refsols/smoke_a_snowflake.sql index 9a0ae9ce2..ce24ce0b9 100644 --- a/tests/test_sql_refsols/smoke_a_snowflake.sql +++ b/tests/test_sql_refsols/smoke_a_snowflake.sql @@ -51,7 +51,7 @@ SELECT ) / 100.0 ) AS h, ROUND(POWER(GREATEST(p_size, 10), 0.5), 3) AS i -FROM tpch.part +FROM TPCH.PART ORDER BY 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_b_mysql.sql b/tests/test_sql_refsols/smoke_b_mysql.sql index 3156d546a..5b4b461a1 100644 --- a/tests/test_sql_refsols/smoke_b_mysql.sql +++ b/tests/test_sql_refsols/smoke_b_mysql.sql @@ -97,7 +97,7 @@ SELECT ) % 7 ) DAY ) AS DATE) AS q -FROM tpch.orders +FROM tpch.ORDERS WHERE o_clerk LIKE '%5' AND o_comment LIKE '%fo%' AND o_orderpriority LIKE '3%' ORDER BY diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql index 0e8b04f07..33ca38803 100644 --- a/tests/test_sql_refsols/smoke_b_snowflake.sql +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -62,7 +62,7 @@ SELECT 'DAY', DATEADD(DAY, DAYOFWEEK(CAST(o_orderdate AS TIMESTAMP)) * -1, CAST(o_orderdate AS TIMESTAMP)) ) AS q -FROM tpch.orders +FROM TPCH.ORDERS WHERE CONTAINS(o_comment, 'fo') AND ENDSWITH(o_clerk, '5') diff --git a/tests/test_sql_refsols/smoke_c_mysql.sql b/tests/test_sql_refsols/smoke_c_mysql.sql index 0a4e5d4b4..3a9921c68 100644 --- a/tests/test_sql_refsols/smoke_c_mysql.sql +++ b/tests/test_sql_refsols/smoke_c_mysql.sql @@ -21,7 +21,7 @@ WITH _t1 AS ( c_acctbal, c_mktsegment, c_name - FROM tpch.customer + FROM tpch.CUSTOMER ) SELECT COUNT(*) AS a, diff --git a/tests/test_sql_refsols/smoke_c_snowflake.sql b/tests/test_sql_refsols/smoke_c_snowflake.sql index 4bcbbcc4d..c80e86cfe 100644 --- a/tests/test_sql_refsols/smoke_c_snowflake.sql +++ b/tests/test_sql_refsols/smoke_c_snowflake.sql @@ -18,4 +18,4 @@ SELECT PERCENTILE_DISC(0.2) WITHIN GROUP (ORDER BY c_acctbal) AS q, MEDIAN(c_acctbal) AS r -FROM tpch.customer +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/smoke_d_mysql.sql b/tests/test_sql_refsols/smoke_d_mysql.sql index a5c6638ff..9d87a783e 100644 --- a/tests/test_sql_refsols/smoke_d_mysql.sql +++ b/tests/test_sql_refsols/smoke_d_mysql.sql @@ -1,29 +1,29 @@ SELECT - customer.c_custkey AS `key`, - ROW_NUMBER() OVER (ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal, CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS a, - ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal, CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS b, - RANK() OVER (ORDER BY CASE WHEN customer.c_mktsegment COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, customer.c_mktsegment COLLATE utf8mb4_bin) AS c, - DENSE_RANK() OVER (ORDER BY CASE WHEN customer.c_mktsegment COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, customer.c_mktsegment COLLATE utf8mb4_bin) AS d, - NTILE(100) OVER (ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal, CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS e, - NTILE(12) OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal, CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS f, - LAG(customer.c_custkey, 1) OVER (ORDER BY CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS g, - LAG(customer.c_custkey, 2, -1) OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS h, - LEAD(customer.c_custkey, 1) OVER (ORDER BY CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS i, - LEAD(customer.c_custkey, 6000) OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_custkey IS NULL THEN 1 ELSE 0 END, customer.c_custkey) AS j, - SUM(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) AS k, - SUM(customer.c_acctbal) OVER (ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, - ROUND(AVG(customer.c_acctbal) OVER (), 2) AS m, + CUSTOMER.c_custkey AS `key`, + ROW_NUMBER() OVER (ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal, CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS a, + ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal, CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS b, + RANK() OVER (ORDER BY CASE WHEN CUSTOMER.c_mktsegment COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_mktsegment COLLATE utf8mb4_bin) AS c, + DENSE_RANK() OVER (ORDER BY CASE WHEN CUSTOMER.c_mktsegment COLLATE utf8mb4_bin IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_mktsegment COLLATE utf8mb4_bin) AS d, + NTILE(100) OVER (ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal, CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS e, + NTILE(12) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal, CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS f, + LAG(CUSTOMER.c_custkey, 1) OVER (ORDER BY CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS g, + LAG(CUSTOMER.c_custkey, 2, -1) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS h, + LEAD(CUSTOMER.c_custkey, 1) OVER (ORDER BY CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS i, + LEAD(CUSTOMER.c_custkey, 6000) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_custkey IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_custkey) AS j, + SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) AS k, + SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, + ROUND(AVG(CUSTOMER.c_acctbal) OVER (), 2) AS m, ROUND( - AVG(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), + AVG(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 2 ) AS n, - COUNT(CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END) OVER () AS o, + COUNT(CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS o, COUNT(*) OVER () AS p -FROM tpch.nation AS nation -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' -JOIN tpch.customer AS customer - ON customer.c_nationkey = nation.n_nationkey +FROM tpch.NATION AS NATION +JOIN tpch.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' +JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey ORDER BY 1 LIMIT 10 diff --git a/tests/test_sql_refsols/smoke_d_snowflake.sql b/tests/test_sql_refsols/smoke_d_snowflake.sql index fe9dfe411..3c14fdd8e 100644 --- a/tests/test_sql_refsols/smoke_d_snowflake.sql +++ b/tests/test_sql_refsols/smoke_d_snowflake.sql @@ -1,29 +1,29 @@ SELECT - customer.c_custkey AS key, - ROW_NUMBER() OVER (ORDER BY customer.c_acctbal, customer.c_custkey) AS a, - ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal, customer.c_custkey) AS b, - RANK() OVER (ORDER BY customer.c_mktsegment) AS c, - DENSE_RANK() OVER (ORDER BY customer.c_mktsegment) AS d, - NTILE(100) OVER (ORDER BY customer.c_acctbal, customer.c_custkey) AS e, - NTILE(12) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal, customer.c_custkey) AS f, - LAG(customer.c_custkey, 1) OVER (ORDER BY customer.c_custkey) AS g, - LAG(customer.c_custkey, 2, -1) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey) AS h, - LEAD(customer.c_custkey, 1) OVER (ORDER BY customer.c_custkey) AS i, - LEAD(customer.c_custkey, 6000) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey) AS j, - SUM(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) AS k, - SUM(customer.c_acctbal) OVER (ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, - ROUND(AVG(customer.c_acctbal) OVER (), 2) AS m, + CUSTOMER.c_custkey AS key, + ROW_NUMBER() OVER (ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS a, + ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS b, + RANK() OVER (ORDER BY CUSTOMER.c_mktsegment) AS c, + DENSE_RANK() OVER (ORDER BY CUSTOMER.c_mktsegment) AS d, + NTILE(100) OVER (ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS e, + NTILE(12) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS f, + LAG(CUSTOMER.c_custkey, 1) OVER (ORDER BY CUSTOMER.c_custkey) AS g, + LAG(CUSTOMER.c_custkey, 2, -1) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey) AS h, + LEAD(CUSTOMER.c_custkey, 1) OVER (ORDER BY CUSTOMER.c_custkey) AS i, + LEAD(CUSTOMER.c_custkey, 6000) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey) AS j, + SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) AS k, + SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, + ROUND(AVG(CUSTOMER.c_acctbal) OVER (), 2) AS m, ROUND( - AVG(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), + AVG(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 2 ) AS n, - COUNT(CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END) OVER () AS o, + COUNT(CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS o, COUNT(*) OVER () AS p -FROM tpch.nation AS nation -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' -JOIN tpch.customer AS customer - ON customer.c_nationkey = nation.n_nationkey +FROM TPCH.NATION AS NATION +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey ORDER BY 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_mysql.sql index ea67de38f..64a3df88c 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 1 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql index b7abadaab..7c055025b 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 2 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_mysql.sql index 559605368..9a8fca38f 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 1 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql index 18d65f3ec..c3878ac5d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 2 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_mysql.sql index 2302545b0..b97773516 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 5 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql index 2507f64b0..ed2d77fe4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 6 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_mysql.sql index b510ab219..a0dfce5e1 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 5 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql index 9cc943050..087eca477 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 6 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_mysql.sql index 51397046f..cba89f20c 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 0 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql index cb89fecc5..75693c067 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 1 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_mysql.sql index bba17aad8..0856e6eec 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 0 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql index e05df5b6c..096676be4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 1 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_mysql.sql index bc77c9052..9296b026b 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + -1 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql index 3cf42e00b..301b5bde4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql @@ -25,7 +25,7 @@ SELECT THEN 'Saturday' END AS dayname, DAYOFWEEK(sbtxdatetime) + 1 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_mysql.sql index 6720885bd..d343e744d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + -1 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql index cfd9286a4..70a72d914 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql @@ -25,7 +25,7 @@ SELECT THEN 'Saturday' END AS dayname, DAYOFWEEK(sbtxdatetime) AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_mysql.sql index 30f47d1f4..8555255b9 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 2 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql index f90847533..b85cc65a2 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 3 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_mysql.sql index ac2595b65..d01d4d91d 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 2 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql index 49bcc08ed..9481d96f6 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 3 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_mysql.sql index a320b4e20..21fabdc49 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 4 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql index c38c8adfe..81db985e0 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 5 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_mysql.sql index 5c6829778..6740e5155 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 4 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql index 288348ef7..f37c1cef8 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 5 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_mysql.sql index ff91cde12..ba262aef8 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_mysql.sql @@ -14,7 +14,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 3 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql index 1739fbb7c..2dac3db47 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 4 ) % 7 ) + 1 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_mysql.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_mysql.sql index a65245878..7d854af73 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_mysql.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_mysql.sql @@ -12,7 +12,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 3 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql index 7359370e5..113a907a3 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 4 ) % 7 AS dayofweek -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/string_functions_mysql.sql b/tests/test_sql_refsols/string_functions_mysql.sql index 0d4c60c2a..6a3b70cd3 100644 --- a/tests/test_sql_refsols/string_functions_mysql.sql +++ b/tests/test_sql_refsols/string_functions_mysql.sql @@ -1,19 +1,19 @@ SELECT - LOWER(customer.c_name) AS lowercase_name, - UPPER(customer.c_name) AS uppercase_name, - CHAR_LENGTH(customer.c_name) AS name_length, - customer.c_name LIKE 'A%' AS starts_with_A, - customer.c_name LIKE '%z' AS ends_with_z, - customer.c_name LIKE '%sub%' AS contains_sub, - customer.c_name LIKE '%test%' AS matches_like, - CONCAT_WS('::', customer.c_name, nation.n_name) AS joined_string, - LPAD(customer.c_name, 20, '*') AS lpad_name, - RPAD(customer.c_name, 20, '-') AS rpad_name, + LOWER(CUSTOMER.c_name) AS lowercase_name, + UPPER(CUSTOMER.c_name) AS uppercase_name, + CHAR_LENGTH(CUSTOMER.c_name) AS name_length, + CUSTOMER.c_name LIKE 'A%' AS starts_with_A, + CUSTOMER.c_name LIKE '%z' AS ends_with_z, + CUSTOMER.c_name LIKE '%sub%' AS contains_sub, + CUSTOMER.c_name LIKE '%test%' AS matches_like, + CONCAT_WS('::', CUSTOMER.c_name, NATION.n_name) AS joined_string, + LPAD(CUSTOMER.c_name, 20, '*') AS lpad_name, + RPAD(CUSTOMER.c_name, 20, '-') AS rpad_name, CASE - WHEN customer.c_name = '\\s' + WHEN CUSTOMER.c_name = '\\s' THEN '' ELSE REGEXP_REPLACE( - CAST(customer.c_name AS CHAR) COLLATE utf8mb4_bin, + CAST(CUSTOMER.c_name AS CHAR) COLLATE utf8mb4_bin, CONCAT( '^[', REGEXP_REPLACE('\\s', '([]\\[\\^\\-])', '\\\\\\1'), @@ -25,10 +25,10 @@ SELECT ) END AS stripped, CASE - WHEN customer.c_name = 'aeiou' + WHEN CUSTOMER.c_name = 'aeiou' THEN '' ELSE REGEXP_REPLACE( - CAST(customer.c_name AS CHAR) COLLATE utf8mb4_bin, + CAST(CUSTOMER.c_name AS CHAR) COLLATE utf8mb4_bin, CONCAT( '^[', REGEXP_REPLACE('aeiou', '([]\\[\\^\\-])', '\\\\\\1'), @@ -39,16 +39,16 @@ SELECT '' ) END AS stripped_vowels, - REPLACE(customer.c_name, 'Corp', 'Inc') AS replaced_name, - REPLACE(customer.c_name, 'Ltd', '') AS removed_substr, + REPLACE(CUSTOMER.c_name, 'Corp', 'Inc') AS replaced_name, + REPLACE(CUSTOMER.c_name, 'Ltd', '') AS removed_substr, CASE WHEN CHAR_LENGTH('e') = 0 THEN 0 ELSE CAST(( - CHAR_LENGTH(customer.c_name) - CHAR_LENGTH(REPLACE(customer.c_name, 'e', '')) + CHAR_LENGTH(CUSTOMER.c_name) - CHAR_LENGTH(REPLACE(CUSTOMER.c_name, 'e', '')) ) / CHAR_LENGTH('e') AS SIGNED) END AS count_e, - LOCATE('Alex', customer.c_name) - 1 AS idx_Alex -FROM tpch.customer AS customer -JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey + LOCATE('Alex', CUSTOMER.c_name) - 1 AS idx_Alex +FROM tpch.CUSTOMER AS CUSTOMER +JOIN tpch.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey diff --git a/tests/test_sql_refsols/string_functions_snowflake.sql b/tests/test_sql_refsols/string_functions_snowflake.sql index 613e229a7..8614acb85 100644 --- a/tests/test_sql_refsols/string_functions_snowflake.sql +++ b/tests/test_sql_refsols/string_functions_snowflake.sql @@ -1,26 +1,26 @@ SELECT - LOWER(customer.c_name) AS lowercase_name, - UPPER(customer.c_name) AS uppercase_name, - LENGTH(customer.c_name) AS name_length, - STARTSWITH(customer.c_name, 'A') AS starts_with_A, - ENDSWITH(customer.c_name, 'z') AS ends_with_z, - CONTAINS(customer.c_name, 'sub') AS contains_sub, - customer.c_name LIKE '%test%' AS matches_like, - CONCAT_WS('::', customer.c_name, nation.n_name) AS joined_string, - LPAD(customer.c_name, 20, '*') AS lpad_name, - RPAD(customer.c_name, 20, '-') AS rpad_name, - TRIM(customer.c_name, '\n\t ') AS stripped, - TRIM(customer.c_name, 'aeiou') AS stripped_vowels, - REPLACE(customer.c_name, 'Corp', 'Inc') AS replaced_name, - REPLACE(customer.c_name, 'Ltd', '') AS removed_substr, + LOWER(CUSTOMER.c_name) AS lowercase_name, + UPPER(CUSTOMER.c_name) AS uppercase_name, + LENGTH(CUSTOMER.c_name) AS name_length, + STARTSWITH(CUSTOMER.c_name, 'A') AS starts_with_A, + ENDSWITH(CUSTOMER.c_name, 'z') AS ends_with_z, + CONTAINS(CUSTOMER.c_name, 'sub') AS contains_sub, + CUSTOMER.c_name LIKE '%test%' AS matches_like, + CONCAT_WS('::', CUSTOMER.c_name, NATION.n_name) AS joined_string, + LPAD(CUSTOMER.c_name, 20, '*') AS lpad_name, + RPAD(CUSTOMER.c_name, 20, '-') AS rpad_name, + TRIM(CUSTOMER.c_name, '\n\t ') AS stripped, + TRIM(CUSTOMER.c_name, 'aeiou') AS stripped_vowels, + REPLACE(CUSTOMER.c_name, 'Corp', 'Inc') AS replaced_name, + REPLACE(CUSTOMER.c_name, 'Ltd', '') AS removed_substr, CASE WHEN LENGTH('e') = 0 THEN 0 ELSE CAST(( - LENGTH(customer.c_name) - LENGTH(REPLACE(customer.c_name, 'e', '')) + LENGTH(CUSTOMER.c_name) - LENGTH(REPLACE(CUSTOMER.c_name, 'e', '')) ) / LENGTH('e') AS BIGINT) END AS count_e, - CHARINDEX('Alex', customer.c_name) - 1 AS idx_Alex -FROM tpch.customer AS customer -JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey + CHARINDEX('Alex', CUSTOMER.c_name) - 1 AS idx_Alex +FROM TPCH.CUSTOMER AS CUSTOMER +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_mysql.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_mysql.sql index 9d62895e0..6c2b00f56 100644 --- a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_mysql.sql +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_mysql.sql @@ -1,24 +1,24 @@ WITH _s7 AS ( SELECT COUNT(*) AS n_rows, - incidents.in_device_id - FROM main.incidents AS incidents - JOIN main.errors AS errors - ON errors.er_id = incidents.in_error_id AND errors.er_name = 'Battery Failure' + INCIDENTS.in_device_id + FROM main.INCIDENTS AS INCIDENTS + JOIN main.ERRORS AS ERRORS + ON ERRORS.er_id = INCIDENTS.in_error_id AND ERRORS.er_name = 'Battery Failure' GROUP BY 2 ) SELECT - countries.co_name COLLATE utf8mb4_bin AS country_name, - products.pr_name COLLATE utf8mb4_bin AS product_name, + COUNTRIES.co_name COLLATE utf8mb4_bin AS country_name, + PRODUCTS.pr_name COLLATE utf8mb4_bin AS product_name, ROUND(COALESCE(SUM(_s7.n_rows), 0) / COUNT(*), 2) AS ir -FROM main.countries AS countries -JOIN main.devices AS devices - ON countries.co_id = devices.de_production_country_id -JOIN main.products AS products - ON devices.de_product_id = products.pr_id +FROM main.COUNTRIES AS COUNTRIES +JOIN main.DEVICES AS DEVICES + ON COUNTRIES.co_id = DEVICES.de_production_country_id +JOIN main.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id LEFT JOIN _s7 AS _s7 - ON _s7.in_device_id = devices.de_id + ON DEVICES.de_id = _s7.in_device_id GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql index 0b97ba986..6f5f383d2 100644 --- a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql @@ -1,24 +1,24 @@ -WITH _s7 AS ( +WITH _S7 AS ( SELECT - COUNT(*) AS n_rows, - incidents.in_device_id - FROM main.incidents AS incidents - JOIN main.errors AS errors - ON errors.er_id = incidents.in_error_id AND errors.er_name = 'Battery Failure' + COUNT(*) AS N_ROWS, + INCIDENTS.in_device_id AS IN_DEVICE_ID + FROM MAIN.INCIDENTS AS INCIDENTS + JOIN MAIN.ERRORS AS ERRORS + ON ERRORS.er_id = INCIDENTS.in_error_id AND ERRORS.er_name = 'Battery Failure' GROUP BY 2 ) SELECT - countries.co_name AS country_name, - products.pr_name AS product_name, - ROUND(COALESCE(SUM(_s7.n_rows), 0) / COUNT(*), 2) AS ir -FROM main.countries AS countries -JOIN main.devices AS devices - ON countries.co_id = devices.de_production_country_id -JOIN main.products AS products - ON devices.de_product_id = products.pr_id -LEFT JOIN _s7 AS _s7 - ON _s7.in_device_id = devices.de_id + COUNTRIES.co_name AS country_name, + PRODUCTS.pr_name AS product_name, + ROUND(COALESCE(SUM(_S7.N_ROWS), 0) / COUNT(*), 2) AS ir +FROM MAIN.COUNTRIES AS COUNTRIES +JOIN MAIN.DEVICES AS DEVICES + ON COUNTRIES.co_id = DEVICES.de_production_country_id +JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id +LEFT JOIN _S7 AS _S7 + ON DEVICES.de_id = _S7.IN_DEVICE_ID GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/technograph_country_cartesian_oddball_mysql.sql b/tests/test_sql_refsols/technograph_country_cartesian_oddball_mysql.sql index 76333f571..a512e83a5 100644 --- a/tests/test_sql_refsols/technograph_country_cartesian_oddball_mysql.sql +++ b/tests/test_sql_refsols/technograph_country_cartesian_oddball_mysql.sql @@ -1,12 +1,12 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_other_countries - FROM main.countries + FROM main.COUNTRIES ) SELECT - countries.co_name COLLATE utf8mb4_bin AS name, + COUNTRIES.co_name COLLATE utf8mb4_bin AS name, _s1.n_other_countries -FROM main.countries AS countries +FROM main.COUNTRIES AS COUNTRIES CROSS JOIN _s1 AS _s1 ORDER BY 1 diff --git a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql index 6f371134e..cc0735ab8 100644 --- a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql @@ -1,12 +1,12 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_other_countries - FROM main.countries + COUNT(*) AS N_OTHER_COUNTRIES + FROM MAIN.COUNTRIES ) SELECT - countries.co_name AS name, - _s1.n_other_countries -FROM main.countries AS countries -CROSS JOIN _s1 AS _s1 + COUNTRIES.co_name AS name, + _S1.N_OTHER_COUNTRIES AS n_other_countries +FROM MAIN.COUNTRIES AS COUNTRIES +CROSS JOIN _S1 AS _S1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_mysql.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_mysql.sql index b617a2ed8..a6525c93e 100644 --- a/tests/test_sql_refsols/technograph_country_combination_analysis_mysql.sql +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_mysql.sql @@ -2,16 +2,16 @@ WITH _s0 AS ( SELECT co_id, co_name - FROM main.countries + FROM main.COUNTRIES ), _s2 AS ( SELECT co_id - FROM main.countries + FROM main.COUNTRIES ), _s7 AS ( SELECT COUNT(*) AS n_rows, in_device_id - FROM main.incidents + FROM main.INCIDENTS GROUP BY 2 ), _s9 AS ( @@ -22,11 +22,11 @@ WITH _s0 AS ( _s2.co_id FROM _s2 AS _s2 CROSS JOIN _s2 AS _s3 - JOIN main.devices AS devices - ON _s2.co_id = devices.de_production_country_id - AND _s3.co_id = devices.de_purchase_country_id + JOIN main.DEVICES AS DEVICES + ON DEVICES.de_production_country_id = _s2.co_id + AND DEVICES.de_purchase_country_id = _s3.co_id LEFT JOIN _s7 AS _s7 - ON _s7.in_device_id = devices.de_id + ON DEVICES.de_id = _s7.in_device_id GROUP BY 3, 4 diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql index 5835cd8c9..a51c012c6 100644 --- a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql @@ -1,46 +1,46 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - co_id, - co_name - FROM main.countries -), _s2 AS ( + co_id AS CO_ID, + co_name AS CO_NAME + FROM MAIN.COUNTRIES +), _S2 AS ( SELECT - co_id - FROM main.countries -), _s7 AS ( + co_id AS CO_ID + FROM MAIN.COUNTRIES +), _S7 AS ( SELECT - COUNT(*) AS n_rows, - in_device_id - FROM main.incidents + COUNT(*) AS N_ROWS, + in_device_id AS IN_DEVICE_ID + FROM MAIN.INCIDENTS GROUP BY 2 -), _s9 AS ( +), _S9 AS ( SELECT - COUNT(*) AS n_rows, - SUM(_s7.n_rows) AS sum_n_rows, - _s3.co_id AS _id_3, - _s2.co_id - FROM _s2 AS _s2 - CROSS JOIN _s2 AS _s3 - JOIN main.devices AS devices - ON _s2.co_id = devices.de_production_country_id - AND _s3.co_id = devices.de_purchase_country_id - LEFT JOIN _s7 AS _s7 - ON _s7.in_device_id = devices.de_id + COUNT(*) AS N_ROWS, + SUM(_S7.N_ROWS) AS SUM_N_ROWS, + _S3.CO_ID AS _ID_3, + _S2.CO_ID + FROM _S2 AS _S2 + CROSS JOIN _S2 AS _S3 + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_production_country_id = _S2.CO_ID + AND DEVICES.de_purchase_country_id = _S3.CO_ID + LEFT JOIN _S7 AS _S7 + ON DEVICES.de_id = _S7.IN_DEVICE_ID GROUP BY 3, 4 ) SELECT - _s0.co_name AS factory_country, - _s1.co_name AS purchase_country, + _S0.CO_NAME AS factory_country, + _S1.CO_NAME AS purchase_country, ROUND(( - 1.0 * COALESCE(_s9.sum_n_rows, 0) - ) / COALESCE(_s9.n_rows, 0), 2) AS ir -FROM _s0 AS _s0 -CROSS JOIN _s0 AS _s1 -LEFT JOIN _s9 AS _s9 - ON _s0.co_id = _s9.co_id AND _s1.co_id = _s9._id_3 + 1.0 * COALESCE(_S9.SUM_N_ROWS, 0) + ) / COALESCE(_S9.N_ROWS, 0), 2) AS ir +FROM _S0 AS _S0 +CROSS JOIN _S0 AS _S1 +LEFT JOIN _S9 AS _S9 + ON _S0.CO_ID = _S9.CO_ID AND _S1.CO_ID = _S9._ID_3 ORDER BY 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_mysql.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_mysql.sql index de2a1c6b9..3d69560dd 100644 --- a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_mysql.sql +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_mysql.sql @@ -1,7 +1,7 @@ WITH _t2 AS ( SELECT in_device_id - FROM main.incidents + FROM main.INCIDENTS ), _s1 AS ( SELECT COUNT(*) AS n_rows, @@ -13,10 +13,10 @@ WITH _t2 AS ( SELECT COUNT(*) AS n_rows, SUM(_s1.n_rows) AS sum_n_rows, - devices.de_production_country_id - FROM main.devices AS devices + DEVICES.de_production_country_id + FROM main.DEVICES AS DEVICES LEFT JOIN _s1 AS _s1 - ON _s1.in_device_id = devices.de_id + ON DEVICES.de_id = _s1.in_device_id GROUP BY 3 ), _s5 AS ( @@ -30,10 +30,10 @@ WITH _t2 AS ( SELECT COUNT(*) AS n_rows, SUM(_s5.n_rows) AS sum_n_rows, - devices.de_purchase_country_id - FROM main.devices AS devices + DEVICES.de_purchase_country_id + FROM main.DEVICES AS DEVICES LEFT JOIN _s5 AS _s5 - ON _s5.in_device_id = devices.de_id + ON DEVICES.de_id = _s5.in_device_id GROUP BY 3 ), _s11 AS ( @@ -47,26 +47,26 @@ WITH _t2 AS ( SELECT COUNT(*) AS n_rows, SUM(_s11.n_rows) AS sum_n_rows, - users.us_country_id - FROM main.users AS users - JOIN main.devices AS devices - ON devices.de_owner_id = users.us_id + USERS.us_country_id + FROM main.USERS AS USERS + JOIN main.DEVICES AS DEVICES + ON DEVICES.de_owner_id = USERS.us_id LEFT JOIN _s11 AS _s11 - ON _s11.in_device_id = devices.de_id + ON DEVICES.de_id = _s11.in_device_id GROUP BY 3 ) SELECT - countries.co_name COLLATE utf8mb4_bin AS country_name, + COUNTRIES.co_name COLLATE utf8mb4_bin AS country_name, ROUND(COALESCE(_s3.sum_n_rows, 0) / _s3.n_rows, 2) AS made_ir, ROUND(COALESCE(_s7.sum_n_rows, 0) / _s7.n_rows, 2) AS sold_ir, ROUND(COALESCE(_s13.sum_n_rows, 0) / COALESCE(_s13.n_rows, 0), 2) AS user_ir -FROM main.countries AS countries +FROM main.COUNTRIES AS COUNTRIES JOIN _s3 AS _s3 - ON _s3.de_production_country_id = countries.co_id + ON COUNTRIES.co_id = _s3.de_production_country_id JOIN _s7 AS _s7 - ON _s7.de_purchase_country_id = countries.co_id + ON COUNTRIES.co_id = _s7.de_purchase_country_id LEFT JOIN _s13 AS _s13 - ON _s13.us_country_id = countries.co_id + ON COUNTRIES.co_id = _s13.us_country_id ORDER BY 1 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql index 13f73b452..80d74eed0 100644 --- a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql @@ -1,72 +1,72 @@ -WITH _t2 AS ( +WITH _T2 AS ( SELECT - in_device_id - FROM main.incidents -), _s1 AS ( + in_device_id AS IN_DEVICE_ID + FROM MAIN.INCIDENTS +), _S1 AS ( SELECT - COUNT(*) AS n_rows, - in_device_id - FROM _t2 + COUNT(*) AS N_ROWS, + IN_DEVICE_ID + FROM _T2 GROUP BY 2 -), _s3 AS ( +), _S3 AS ( SELECT - COUNT(*) AS n_rows, - SUM(_s1.n_rows) AS sum_n_rows, - devices.de_production_country_id - FROM main.devices AS devices - LEFT JOIN _s1 AS _s1 - ON _s1.in_device_id = devices.de_id + COUNT(*) AS N_ROWS, + SUM(_S1.N_ROWS) AS SUM_N_ROWS, + DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID + FROM MAIN.DEVICES AS DEVICES + LEFT JOIN _S1 AS _S1 + ON DEVICES.de_id = _S1.IN_DEVICE_ID GROUP BY 3 -), _s5 AS ( +), _S5 AS ( SELECT - COUNT(*) AS n_rows, - in_device_id - FROM _t2 + COUNT(*) AS N_ROWS, + IN_DEVICE_ID + FROM _T2 GROUP BY 2 -), _s7 AS ( +), _S7 AS ( SELECT - COUNT(*) AS n_rows, - SUM(_s5.n_rows) AS sum_n_rows, - devices.de_purchase_country_id - FROM main.devices AS devices - LEFT JOIN _s5 AS _s5 - ON _s5.in_device_id = devices.de_id + COUNT(*) AS N_ROWS, + SUM(_S5.N_ROWS) AS SUM_N_ROWS, + DEVICES.de_purchase_country_id AS DE_PURCHASE_COUNTRY_ID + FROM MAIN.DEVICES AS DEVICES + LEFT JOIN _S5 AS _S5 + ON DEVICES.de_id = _S5.IN_DEVICE_ID GROUP BY 3 -), _s11 AS ( +), _S11 AS ( SELECT - COUNT(*) AS n_rows, - in_device_id - FROM _t2 + COUNT(*) AS N_ROWS, + IN_DEVICE_ID + FROM _T2 GROUP BY 2 -), _s13 AS ( +), _S13 AS ( SELECT - COUNT(*) AS n_rows, - SUM(_s11.n_rows) AS sum_n_rows, - users.us_country_id - FROM main.users AS users - JOIN main.devices AS devices - ON devices.de_owner_id = users.us_id - LEFT JOIN _s11 AS _s11 - ON _s11.in_device_id = devices.de_id + COUNT(*) AS N_ROWS, + SUM(_S11.N_ROWS) AS SUM_N_ROWS, + USERS.us_country_id AS US_COUNTRY_ID + FROM MAIN.USERS AS USERS + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_owner_id = USERS.us_id + LEFT JOIN _S11 AS _S11 + ON DEVICES.de_id = _S11.IN_DEVICE_ID GROUP BY 3 ) SELECT - countries.co_name AS country_name, - ROUND(COALESCE(_s3.sum_n_rows, 0) / _s3.n_rows, 2) AS made_ir, - ROUND(COALESCE(_s7.sum_n_rows, 0) / _s7.n_rows, 2) AS sold_ir, - ROUND(COALESCE(_s13.sum_n_rows, 0) / COALESCE(_s13.n_rows, 0), 2) AS user_ir -FROM main.countries AS countries -JOIN _s3 AS _s3 - ON _s3.de_production_country_id = countries.co_id -JOIN _s7 AS _s7 - ON _s7.de_purchase_country_id = countries.co_id -LEFT JOIN _s13 AS _s13 - ON _s13.us_country_id = countries.co_id + COUNTRIES.co_name AS country_name, + ROUND(COALESCE(_S3.SUM_N_ROWS, 0) / _S3.N_ROWS, 2) AS made_ir, + ROUND(COALESCE(_S7.SUM_N_ROWS, 0) / _S7.N_ROWS, 2) AS sold_ir, + ROUND(COALESCE(_S13.SUM_N_ROWS, 0) / COALESCE(_S13.N_ROWS, 0), 2) AS user_ir +FROM MAIN.COUNTRIES AS COUNTRIES +JOIN _S3 AS _S3 + ON COUNTRIES.co_id = _S3.DE_PRODUCTION_COUNTRY_ID +JOIN _S7 AS _S7 + ON COUNTRIES.co_id = _S7.DE_PURCHASE_COUNTRY_ID +LEFT JOIN _S13 AS _S13 + ON COUNTRIES.co_id = _S13.US_COUNTRY_ID ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_mysql.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_mysql.sql index 3bf9d5ca0..77459a2ed 100644 --- a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_mysql.sql +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_mysql.sql @@ -1,22 +1,22 @@ WITH _s5 AS ( SELECT COUNT(*) AS n_rows, - incidents.in_error_id - FROM main.incidents AS incidents - JOIN main.devices AS devices - ON devices.de_id = incidents.in_device_id - JOIN main.products AS products - ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' + INCIDENTS.in_error_id + FROM main.INCIDENTS AS INCIDENTS + JOIN main.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN main.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' GROUP BY 2 ) SELECT - errors.er_name AS error, + ERRORS.er_name AS error, ROUND(( 100.0 * COALESCE(_s5.n_rows, 0) ) / SUM(COALESCE(_s5.n_rows, 0)) OVER (), 2) AS pct -FROM main.errors AS errors +FROM main.ERRORS AS ERRORS LEFT JOIN _s5 AS _s5 - ON _s5.in_error_id = errors.er_id + ON ERRORS.er_id = _s5.in_error_id ORDER BY 2 DESC diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql index 3de27b18a..3fbc93593 100644 --- a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql @@ -1,22 +1,22 @@ -WITH _s5 AS ( +WITH _S5 AS ( SELECT - COUNT(*) AS n_rows, - incidents.in_error_id - FROM main.incidents AS incidents - JOIN main.devices AS devices - ON devices.de_id = incidents.in_device_id - JOIN main.products AS products - ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' + COUNT(*) AS N_ROWS, + INCIDENTS.in_error_id AS IN_ERROR_ID + FROM MAIN.INCIDENTS AS INCIDENTS + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' GROUP BY 2 ) SELECT - errors.er_name AS error, + ERRORS.er_name AS error, ROUND(( - 100.0 * COALESCE(_s5.n_rows, 0) - ) / SUM(COALESCE(_s5.n_rows, 0)) OVER (), 2) AS pct -FROM main.errors AS errors -LEFT JOIN _s5 AS _s5 - ON _s5.in_error_id = errors.er_id + 100.0 * COALESCE(_S5.N_ROWS, 0) + ) / SUM(COALESCE(_S5.N_ROWS, 0)) OVER (), 2) AS pct +FROM MAIN.ERRORS AS ERRORS +LEFT JOIN _S5 AS _S5 + ON ERRORS.er_id = _S5.IN_ERROR_ID ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_mysql.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_mysql.sql index b84181987..a5401cd12 100644 --- a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_mysql.sql +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_mysql.sql @@ -2,27 +2,27 @@ WITH _s3 AS ( SELECT COUNT(*) AS n_rows, in_device_id - FROM main.incidents + FROM main.INCIDENTS GROUP BY 2 ), _s5 AS ( SELECT COALESCE(SUM(_s3.n_rows), 0) AS sum_n_incidents, - devices.de_production_country_id, + DEVICES.de_production_country_id, COUNT(*) AS n_rows - FROM main.devices AS devices - JOIN main.products AS products - ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' + FROM main.DEVICES AS DEVICES + JOIN main.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' LEFT JOIN _s3 AS _s3 - ON _s3.in_device_id = devices.de_id + ON DEVICES.de_id = _s3.in_device_id GROUP BY 2 ) SELECT - countries.co_name COLLATE utf8mb4_bin AS country, + COUNTRIES.co_name COLLATE utf8mb4_bin AS country, ROUND(COALESCE(_s5.sum_n_incidents, 0) / COALESCE(_s5.n_rows, 0), 2) AS ir -FROM main.countries AS countries +FROM main.COUNTRIES AS COUNTRIES LEFT JOIN _s5 AS _s5 - ON _s5.de_production_country_id = countries.co_id + ON COUNTRIES.co_id = _s5.de_production_country_id ORDER BY 1 diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql index 9b395aef9..130589712 100644 --- a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql @@ -1,28 +1,28 @@ -WITH _s3 AS ( +WITH _S3 AS ( SELECT - COUNT(*) AS n_rows, - in_device_id - FROM main.incidents + COUNT(*) AS N_ROWS, + in_device_id AS IN_DEVICE_ID + FROM MAIN.INCIDENTS GROUP BY 2 -), _s5 AS ( +), _S5 AS ( SELECT - COALESCE(SUM(_s3.n_rows), 0) AS sum_n_incidents, - devices.de_production_country_id, - COUNT(*) AS n_rows - FROM main.devices AS devices - JOIN main.products AS products - ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' - LEFT JOIN _s3 AS _s3 - ON _s3.in_device_id = devices.de_id + COALESCE(SUM(_S3.N_ROWS), 0) AS SUM_N_INCIDENTS, + DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID, + COUNT(*) AS N_ROWS + FROM MAIN.DEVICES AS DEVICES + JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' + LEFT JOIN _S3 AS _S3 + ON DEVICES.de_id = _S3.IN_DEVICE_ID GROUP BY 2 ) SELECT - countries.co_name AS country, - ROUND(COALESCE(_s5.sum_n_incidents, 0) / COALESCE(_s5.n_rows, 0), 2) AS ir -FROM main.countries AS countries -LEFT JOIN _s5 AS _s5 - ON _s5.de_production_country_id = countries.co_id + COUNTRIES.co_name AS country, + ROUND(COALESCE(_S5.SUM_N_INCIDENTS, 0) / COALESCE(_S5.N_ROWS, 0), 2) AS ir +FROM MAIN.COUNTRIES AS COUNTRIES +LEFT JOIN _S5 AS _S5 + ON COUNTRIES.co_id = _S5.DE_PRODUCTION_COUNTRY_ID ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_global_incident_rate_mysql.sql b/tests/test_sql_refsols/technograph_global_incident_rate_mysql.sql index 2d5a8ae63..1a3dcd542 100644 --- a/tests/test_sql_refsols/technograph_global_incident_rate_mysql.sql +++ b/tests/test_sql_refsols/technograph_global_incident_rate_mysql.sql @@ -1,11 +1,11 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows - FROM main.incidents + FROM main.INCIDENTS ), _s1 AS ( SELECT COUNT(*) AS n_rows - FROM main.devices + FROM main.DEVICES ) SELECT ROUND(_s0.n_rows / _s1.n_rows, 2) AS ir diff --git a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql index 2d5a8ae63..2ca72ecd8 100644 --- a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql @@ -1,13 +1,13 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - COUNT(*) AS n_rows - FROM main.incidents -), _s1 AS ( + COUNT(*) AS N_ROWS + FROM MAIN.INCIDENTS +), _S1 AS ( SELECT - COUNT(*) AS n_rows - FROM main.devices + COUNT(*) AS N_ROWS + FROM MAIN.DEVICES ) SELECT - ROUND(_s0.n_rows / _s1.n_rows, 2) AS ir -FROM _s0 AS _s0 -CROSS JOIN _s1 AS _s1 + ROUND(_S0.N_ROWS / _S1.N_ROWS, 2) AS ir +FROM _S0 AS _S0 +CROSS JOIN _S1 AS _S1 diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_mysql.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_mysql.sql index 4d022b716..2f6b90af4 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_mysql.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_mysql.sql @@ -1,14 +1,14 @@ SELECT - calendar.ca_dt AS start_of_period, + CALENDAR.ca_dt AS start_of_period, COUNT(*) AS n_purchases -FROM main.calendar AS calendar -JOIN main.calendar AS calendar_2 - ON calendar.ca_dt <= calendar_2.ca_dt - AND calendar_2.ca_dt < DATE_ADD(CAST(calendar.ca_dt AS DATETIME), INTERVAL '5' DAY) -JOIN main.devices AS devices - ON calendar_2.ca_dt = CAST(CAST(devices.de_purchase_ts AS DATETIME) AS DATE) +FROM main.CALENDAR AS CALENDAR +JOIN main.CALENDAR AS CALENDAR_2 + ON CALENDAR.ca_dt <= CALENDAR_2.ca_dt + AND CALENDAR_2.ca_dt < DATE_ADD(CAST(CALENDAR.ca_dt AS DATETIME), INTERVAL '5' DAY) +JOIN main.DEVICES AS DEVICES + ON CALENDAR_2.ca_dt = CAST(CAST(DEVICES.de_purchase_ts AS DATETIME) AS DATE) WHERE - EXTRACT(YEAR FROM CAST(calendar.ca_dt AS DATETIME)) = 2024 + EXTRACT(YEAR FROM CAST(CALENDAR.ca_dt AS DATETIME)) = 2024 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql index d7cbf77f4..9b7d3a13f 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -1,14 +1,14 @@ SELECT - calendar.ca_dt AS start_of_period, + CALENDAR.ca_dt AS start_of_period, COUNT(*) AS n_purchases -FROM main.calendar AS calendar -JOIN main.calendar AS calendar_2 - ON calendar.ca_dt <= calendar_2.ca_dt - AND calendar_2.ca_dt < DATEADD(DAY, 5, CAST(calendar.ca_dt AS TIMESTAMP)) -JOIN main.devices AS devices - ON calendar_2.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) +FROM MAIN.CALENDAR AS CALENDAR +JOIN MAIN.CALENDAR AS CALENDAR_2 + ON CALENDAR.ca_dt <= CALENDAR_2.ca_dt + AND CALENDAR_2.ca_dt < DATEADD(DAY, 5, CAST(CALENDAR.ca_dt AS TIMESTAMP)) +JOIN MAIN.DEVICES AS DEVICES + ON CALENDAR_2.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) WHERE - YEAR(CAST(calendar.ca_dt AS TIMESTAMP)) = 2024 + YEAR(CAST(CALENDAR.ca_dt AS TIMESTAMP)) = 2024 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_mysql.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_mysql.sql index 45f491c62..0af58b20e 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_mysql.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_mysql.sql @@ -2,14 +2,14 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows, de_product_id - FROM main.devices + FROM main.DEVICES GROUP BY 2 ), _s1 AS ( SELECT pr_id, pr_release - FROM main.products + FROM main.PRODUCTS ), _s6 AS ( SELECT EXTRACT(YEAR FROM CAST(_s1.pr_release AS DATETIME)) AS release_year, @@ -23,11 +23,11 @@ WITH _s0 AS ( SELECT COUNT(*) AS n_rows, EXTRACT(YEAR FROM CAST(_s3.pr_release AS DATETIME)) AS release_year - FROM main.devices AS devices + FROM main.DEVICES AS DEVICES JOIN _s1 AS _s3 - ON _s3.pr_id = devices.de_product_id - JOIN main.incidents AS incidents - ON devices.de_id = incidents.in_device_id + ON DEVICES.de_product_id = _s3.pr_id + JOIN main.INCIDENTS AS INCIDENTS + ON DEVICES.de_id = INCIDENTS.in_device_id GROUP BY 2 ) diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index 316a5e3b1..0d7c08ce3 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -1,41 +1,41 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - COUNT(*) AS n_rows, - de_product_id - FROM main.devices + COUNT(*) AS N_ROWS, + de_product_id AS DE_PRODUCT_ID + FROM MAIN.DEVICES GROUP BY 2 -), _s1 AS ( +), _S1 AS ( SELECT - pr_id, - pr_release - FROM main.products -), _s6 AS ( + pr_id AS PR_ID, + pr_release AS PR_RELEASE + FROM MAIN.PRODUCTS +), _S6 AS ( SELECT - YEAR(CAST(_s1.pr_release AS TIMESTAMP)) AS release_year, - SUM(_s0.n_rows) AS sum_n_rows - FROM _s0 AS _s0 - JOIN _s1 AS _s1 - ON _s0.de_product_id = _s1.pr_id + YEAR(CAST(_S1.PR_RELEASE AS TIMESTAMP)) AS RELEASE_YEAR, + SUM(_S0.N_ROWS) AS SUM_N_ROWS + FROM _S0 AS _S0 + JOIN _S1 AS _S1 + ON _S0.DE_PRODUCT_ID = _S1.PR_ID GROUP BY 1 -), _s7 AS ( +), _S7 AS ( SELECT - COUNT(*) AS n_rows, - YEAR(CAST(_s3.pr_release AS TIMESTAMP)) AS release_year - FROM main.devices AS devices - JOIN _s1 AS _s3 - ON _s3.pr_id = devices.de_product_id - JOIN main.incidents AS incidents - ON devices.de_id = incidents.in_device_id + COUNT(*) AS N_ROWS, + YEAR(CAST(_S3.PR_RELEASE AS TIMESTAMP)) AS RELEASE_YEAR + FROM MAIN.DEVICES AS DEVICES + JOIN _S1 AS _S3 + ON DEVICES.de_product_id = _S3.PR_ID + JOIN MAIN.INCIDENTS AS INCIDENTS + ON DEVICES.de_id = INCIDENTS.in_device_id GROUP BY 2 ) SELECT - _s6.release_year AS year, - ROUND(COALESCE(_s7.n_rows, 0) / _s6.sum_n_rows, 2) AS ir -FROM _s6 AS _s6 -LEFT JOIN _s7 AS _s7 - ON _s6.release_year = _s7.release_year + _S6.RELEASE_YEAR AS year, + ROUND(COALESCE(_S7.N_ROWS, 0) / _S6.SUM_N_ROWS, 2) AS ir +FROM _S6 AS _S6 +LEFT JOIN _S7 AS _S7 + ON _S6.RELEASE_YEAR = _S7.RELEASE_YEAR ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_mysql.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_mysql.sql index c88b87172..a44317597 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_per_brand_mysql.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_mysql.sql @@ -2,18 +2,18 @@ WITH _s3 AS ( SELECT COUNT(*) AS n_rows, in_device_id - FROM main.incidents + FROM main.INCIDENTS GROUP BY 2 ) SELECT - products.pr_brand COLLATE utf8mb4_bin AS brand, + PRODUCTS.pr_brand COLLATE utf8mb4_bin AS brand, ROUND(COALESCE(SUM(_s3.n_rows), 0) / COUNT(*), 2) AS ir -FROM main.devices AS devices -JOIN main.products AS products - ON devices.de_product_id = products.pr_id +FROM main.DEVICES AS DEVICES +JOIN main.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id LEFT JOIN _s3 AS _s3 - ON _s3.in_device_id = devices.de_id + ON DEVICES.de_id = _s3.in_device_id GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql index 075b007a3..bad452e73 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql @@ -1,19 +1,19 @@ -WITH _s3 AS ( +WITH _S3 AS ( SELECT - COUNT(*) AS n_rows, - in_device_id - FROM main.incidents + COUNT(*) AS N_ROWS, + in_device_id AS IN_DEVICE_ID + FROM MAIN.INCIDENTS GROUP BY 2 ) SELECT - products.pr_brand AS brand, - ROUND(COALESCE(SUM(_s3.n_rows), 0) / COUNT(*), 2) AS ir -FROM main.devices AS devices -JOIN main.products AS products - ON devices.de_product_id = products.pr_id -LEFT JOIN _s3 AS _s3 - ON _s3.in_device_id = devices.de_id + PRODUCTS.pr_brand AS brand, + ROUND(COALESCE(SUM(_S3.N_ROWS), 0) / COUNT(*), 2) AS ir +FROM MAIN.DEVICES AS DEVICES +JOIN MAIN.PRODUCTS AS PRODUCTS + ON DEVICES.de_product_id = PRODUCTS.pr_id +LEFT JOIN _S3 AS _S3 + ON DEVICES.de_id = _S3.IN_DEVICE_ID GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_mysql.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_mysql.sql index 7498c4f5b..2ed8c9a13 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_mysql.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_mysql.sql @@ -1,14 +1,14 @@ WITH _t2 AS ( SELECT ca_dt - FROM main.calendar + FROM main.CALENDAR WHERE EXTRACT(YEAR FROM CAST(ca_dt AS DATETIME)) IN (2020, 2021) ), _t5 AS ( SELECT co_id, co_name - FROM main.countries + FROM main.COUNTRIES WHERE co_name = 'CN' ), _s7 AS ( @@ -16,12 +16,12 @@ WITH _t2 AS ( COUNT(*) AS n_rows, _t4.ca_dt FROM _t2 AS _t4 - JOIN main.calendar AS calendar - ON calendar.ca_dt >= DATE_ADD(CAST(_t4.ca_dt AS DATETIME), INTERVAL '-6' MONTH) - JOIN main.devices AS devices - ON calendar.ca_dt = CAST(CAST(devices.de_purchase_ts AS DATETIME) AS DATE) + JOIN main.CALENDAR AS CALENDAR + ON CALENDAR.ca_dt >= DATE_ADD(CAST(_t4.ca_dt AS DATETIME), INTERVAL '-6' MONTH) + JOIN main.DEVICES AS DEVICES + ON CALENDAR.ca_dt = CAST(CAST(DEVICES.de_purchase_ts AS DATETIME) AS DATE) JOIN _t5 AS _t5 - ON _t5.co_id = devices.de_production_country_id + ON DEVICES.de_production_country_id = _t5.co_id GROUP BY 2 ), _s15 AS ( @@ -29,12 +29,12 @@ WITH _t2 AS ( COUNT(*) AS n_rows, _t7.ca_dt FROM _t2 AS _t7 - JOIN main.incidents AS incidents - ON _t7.ca_dt = CAST(CAST(incidents.in_error_report_ts AS DATETIME) AS DATE) - JOIN main.devices AS devices - ON devices.de_id = incidents.in_device_id + JOIN main.INCIDENTS AS INCIDENTS + ON _t7.ca_dt = CAST(CAST(INCIDENTS.in_error_report_ts AS DATETIME) AS DATE) + JOIN main.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id JOIN _t5 AS _t8 - ON _t8.co_id = devices.de_production_country_id + ON DEVICES.de_production_country_id = _t8.co_id GROUP BY 2 ), _t0 AS ( diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index 846bb0250..dfae7b184 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -1,62 +1,62 @@ -WITH _t2 AS ( +WITH _T2 AS ( SELECT - ca_dt - FROM main.calendar + ca_dt AS CA_DT + FROM MAIN.CALENDAR WHERE YEAR(CAST(ca_dt AS TIMESTAMP)) IN (2020, 2021) -), _t5 AS ( +), _T5 AS ( SELECT - co_id, - co_name - FROM main.countries + co_id AS CO_ID, + co_name AS CO_NAME + FROM MAIN.COUNTRIES WHERE co_name = 'CN' -), _s7 AS ( +), _S7 AS ( SELECT - COUNT(*) AS n_rows, - _t4.ca_dt - FROM _t2 AS _t4 - JOIN main.calendar AS calendar - ON calendar.ca_dt >= DATEADD(MONTH, -6, CAST(_t4.ca_dt AS TIMESTAMP)) - JOIN main.devices AS devices - ON calendar.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) - JOIN _t5 AS _t5 - ON _t5.co_id = devices.de_production_country_id + COUNT(*) AS N_ROWS, + _T4.CA_DT + FROM _T2 AS _T4 + JOIN MAIN.CALENDAR AS CALENDAR + ON CALENDAR.ca_dt >= DATEADD(MONTH, -6, CAST(_T4.CA_DT AS TIMESTAMP)) + JOIN MAIN.DEVICES AS DEVICES + ON CALENDAR.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + JOIN _T5 AS _T5 + ON DEVICES.de_production_country_id = _T5.CO_ID GROUP BY 2 -), _s15 AS ( +), _S15 AS ( SELECT - COUNT(*) AS n_rows, - _t7.ca_dt - FROM _t2 AS _t7 - JOIN main.incidents AS incidents - ON _t7.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) - JOIN main.devices AS devices - ON devices.de_id = incidents.in_device_id - JOIN _t5 AS _t8 - ON _t8.co_id = devices.de_production_country_id + COUNT(*) AS N_ROWS, + _T7.CA_DT + FROM _T2 AS _T7 + JOIN MAIN.INCIDENTS AS INCIDENTS + ON _T7.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN _T5 AS _T8 + ON DEVICES.de_production_country_id = _T8.CO_ID GROUP BY 2 -), _t0 AS ( +), _T0 AS ( SELECT - MONTH(CAST(_t2.ca_dt AS TIMESTAMP)) AS month, - SUM(_s7.n_rows) AS sum_expr_3, - SUM(_s15.n_rows) AS sum_n_rows, - YEAR(CAST(_t2.ca_dt AS TIMESTAMP)) AS year - FROM _t2 AS _t2 - LEFT JOIN _s7 AS _s7 - ON _s7.ca_dt = _t2.ca_dt - LEFT JOIN _s15 AS _s15 - ON _s15.ca_dt = _t2.ca_dt + MONTH(CAST(_T2.CA_DT AS TIMESTAMP)) AS MONTH, + SUM(_S7.N_ROWS) AS SUM_EXPR_3, + SUM(_S15.N_ROWS) AS SUM_N_ROWS, + YEAR(CAST(_T2.CA_DT AS TIMESTAMP)) AS YEAR + FROM _T2 AS _T2 + LEFT JOIN _S7 AS _S7 + ON _S7.CA_DT = _T2.CA_DT + LEFT JOIN _S15 AS _S15 + ON _S15.CA_DT = _T2.CA_DT GROUP BY 1, 4 ) SELECT - CONCAT_WS('-', year, LPAD(month, 2, '0')) AS month, + CONCAT_WS('-', YEAR, LPAD(MONTH, 2, '0')) AS month, ROUND(( - 1000000.0 * COALESCE(sum_n_rows, 0) - ) / COALESCE(sum_expr_3, 0), 2) AS ir -FROM _t0 + 1000000.0 * COALESCE(SUM_N_ROWS, 0) + ) / COALESCE(SUM_EXPR_3, 0), 2) AS ir +FROM _T0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_mysql.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_mysql.sql index 27d8d523d..f672fe961 100644 --- a/tests/test_sql_refsols/technograph_most_unreliable_products_mysql.sql +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_mysql.sql @@ -2,28 +2,28 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, in_device_id - FROM main.incidents + FROM main.INCIDENTS GROUP BY 2 ), _s3 AS ( SELECT COUNT(*) AS n_rows, SUM(_s1.n_rows) AS sum_n_incidents, - devices.de_product_id - FROM main.devices AS devices + DEVICES.de_product_id + FROM main.DEVICES AS DEVICES LEFT JOIN _s1 AS _s1 - ON _s1.in_device_id = devices.de_id + ON DEVICES.de_id = _s1.in_device_id GROUP BY 3 ) SELECT - products.pr_name AS product, - products.pr_brand AS product_brand, - products.pr_type AS product_type, + PRODUCTS.pr_name AS product, + PRODUCTS.pr_brand AS product_brand, + PRODUCTS.pr_type AS product_type, ROUND(COALESCE(_s3.sum_n_incidents, 0) / _s3.n_rows, 2) AS ir -FROM main.products AS products +FROM main.PRODUCTS AS PRODUCTS JOIN _s3 AS _s3 - ON _s3.de_product_id = products.pr_id + ON PRODUCTS.pr_id = _s3.de_product_id ORDER BY 4 DESC LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql index 38be32ec0..a5931737f 100644 --- a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql @@ -1,29 +1,29 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - in_device_id - FROM main.incidents + COUNT(*) AS N_ROWS, + in_device_id AS IN_DEVICE_ID + FROM MAIN.INCIDENTS GROUP BY 2 -), _s3 AS ( +), _S3 AS ( SELECT - COUNT(*) AS n_rows, - SUM(_s1.n_rows) AS sum_n_incidents, - devices.de_product_id - FROM main.devices AS devices - LEFT JOIN _s1 AS _s1 - ON _s1.in_device_id = devices.de_id + COUNT(*) AS N_ROWS, + SUM(_S1.N_ROWS) AS SUM_N_INCIDENTS, + DEVICES.de_product_id AS DE_PRODUCT_ID + FROM MAIN.DEVICES AS DEVICES + LEFT JOIN _S1 AS _S1 + ON DEVICES.de_id = _S1.IN_DEVICE_ID GROUP BY 3 ) SELECT - products.pr_name AS product, - products.pr_brand AS product_brand, - products.pr_type AS product_type, - ROUND(COALESCE(_s3.sum_n_incidents, 0) / _s3.n_rows, 2) AS ir -FROM main.products AS products -JOIN _s3 AS _s3 - ON _s3.de_product_id = products.pr_id + PRODUCTS.pr_name AS product, + PRODUCTS.pr_brand AS product_brand, + PRODUCTS.pr_type AS product_type, + ROUND(COALESCE(_S3.SUM_N_INCIDENTS, 0) / _S3.N_ROWS, 2) AS ir +FROM MAIN.PRODUCTS AS PRODUCTS +JOIN _S3 AS _S3 + ON PRODUCTS.pr_id = _S3.DE_PRODUCT_ID ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_mysql.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_mysql.sql index 38b80fbed..f494528cf 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_mysql.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_mysql.sql @@ -1,18 +1,18 @@ WITH _s14 AS ( SELECT ANY_VALUE(pr_release) AS release_date - FROM main.products + FROM main.PRODUCTS WHERE pr_name = 'GoldCopper-Star' ), _s6 AS ( SELECT ca_dt - FROM main.calendar + FROM main.CALENDAR ), _t5 AS ( SELECT pr_id, pr_name - FROM main.products + FROM main.PRODUCTS WHERE pr_name = 'GoldCopper-Star' ), _s7 AS ( @@ -20,12 +20,12 @@ WITH _s14 AS ( COUNT(*) AS n_rows, _s0.ca_dt FROM _s6 AS _s0 - JOIN main.incidents AS incidents - ON _s0.ca_dt = CAST(CAST(incidents.in_error_report_ts AS DATETIME) AS DATE) - JOIN main.devices AS devices - ON devices.de_id = incidents.in_device_id + JOIN main.INCIDENTS AS INCIDENTS + ON _s0.ca_dt = CAST(CAST(INCIDENTS.in_error_report_ts AS DATETIME) AS DATE) + JOIN main.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id JOIN _t5 AS _t5 - ON _t5.pr_id = devices.de_product_id + ON DEVICES.de_product_id = _t5.pr_id GROUP BY 2 ), _s13 AS ( @@ -33,10 +33,10 @@ WITH _s14 AS ( COUNT(*) AS n_rows, _s8.ca_dt FROM _s6 AS _s8 - JOIN main.devices AS devices - ON _s8.ca_dt = CAST(CAST(devices.de_purchase_ts AS DATETIME) AS DATE) + JOIN main.DEVICES AS DEVICES + ON _s8.ca_dt = CAST(CAST(DEVICES.de_purchase_ts AS DATETIME) AS DATE) JOIN _t5 AS _t7 - ON _t7.pr_id = devices.de_product_id + ON DEVICES.de_product_id = _t7.pr_id GROUP BY 2 ), _s15 AS ( diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index 1a33ae4a2..48bdb69eb 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -1,83 +1,83 @@ -WITH _s14 AS ( +WITH _S14 AS ( SELECT - ANY_VALUE(pr_release) AS release_date - FROM main.products + ANY_VALUE(pr_release) AS RELEASE_DATE + FROM MAIN.PRODUCTS WHERE pr_name = 'GoldCopper-Star' -), _s6 AS ( +), _S6 AS ( SELECT - ca_dt - FROM main.calendar -), _t5 AS ( + ca_dt AS CA_DT + FROM MAIN.CALENDAR +), _T5 AS ( SELECT - pr_id, - pr_name - FROM main.products + pr_id AS PR_ID, + pr_name AS PR_NAME + FROM MAIN.PRODUCTS WHERE pr_name = 'GoldCopper-Star' -), _s7 AS ( +), _S7 AS ( SELECT - COUNT(*) AS n_rows, - _s0.ca_dt - FROM _s6 AS _s0 - JOIN main.incidents AS incidents - ON _s0.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) - JOIN main.devices AS devices - ON devices.de_id = incidents.in_device_id - JOIN _t5 AS _t5 - ON _t5.pr_id = devices.de_product_id + COUNT(*) AS N_ROWS, + _S0.CA_DT + FROM _S6 AS _S0 + JOIN MAIN.INCIDENTS AS INCIDENTS + ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + JOIN MAIN.DEVICES AS DEVICES + ON DEVICES.de_id = INCIDENTS.in_device_id + JOIN _T5 AS _T5 + ON DEVICES.de_product_id = _T5.PR_ID GROUP BY 2 -), _s13 AS ( +), _S13 AS ( SELECT - COUNT(*) AS n_rows, - _s8.ca_dt - FROM _s6 AS _s8 - JOIN main.devices AS devices - ON _s8.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) - JOIN _t5 AS _t7 - ON _t7.pr_id = devices.de_product_id + COUNT(*) AS N_ROWS, + _S8.CA_DT + FROM _S6 AS _S8 + JOIN MAIN.DEVICES AS DEVICES + ON _S8.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + JOIN _T5 AS _T7 + ON DEVICES.de_product_id = _T7.PR_ID GROUP BY 2 -), _s15 AS ( +), _S15 AS ( SELECT - SUM(_s7.n_rows) AS sum_expr_4, - SUM(_s13.n_rows) AS sum_n_rows, - YEAR(CAST(_s6.ca_dt AS TIMESTAMP)) AS year_1 - FROM _s6 AS _s6 - LEFT JOIN _s7 AS _s7 - ON _s6.ca_dt = _s7.ca_dt - LEFT JOIN _s13 AS _s13 - ON _s13.ca_dt = _s6.ca_dt + SUM(_S7.N_ROWS) AS SUM_EXPR_4, + SUM(_S13.N_ROWS) AS SUM_N_ROWS, + YEAR(CAST(_S6.CA_DT AS TIMESTAMP)) AS YEAR_1 + FROM _S6 AS _S6 + LEFT JOIN _S7 AS _S7 + ON _S6.CA_DT = _S7.CA_DT + LEFT JOIN _S13 AS _S13 + ON _S13.CA_DT = _S6.CA_DT GROUP BY 3 ) SELECT - _s15.year_1 - YEAR(CAST(_s14.release_date AS TIMESTAMP)) AS years_since_release, + _S15.YEAR_1 - YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) AS years_since_release, ROUND( - SUM(COALESCE(_s15.sum_expr_4, 0)) OVER (ORDER BY _s15.year_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_s15.sum_n_rows, 0)) OVER (ORDER BY _s15.year_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS cum_ir, ROUND( ( 100.0 * ( - COALESCE(_s15.sum_n_rows, 0) - LAG(COALESCE(_s15.sum_n_rows, 0), 1) OVER (ORDER BY _s15.year_1) + COALESCE(_S15.SUM_N_ROWS, 0) - LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR_1) ) - ) / LAG(COALESCE(_s15.sum_n_rows, 0), 1) OVER (ORDER BY _s15.year_1), + ) / LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR_1), 2 ) AS pct_bought_change, ROUND( ( 100.0 * ( - COALESCE(_s15.sum_expr_4, 0) - LAG(COALESCE(_s15.sum_expr_4, 0), 1) OVER (ORDER BY _s15.year_1) + COALESCE(_S15.SUM_EXPR_4, 0) - LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR_1) ) - ) / LAG(COALESCE(_s15.sum_expr_4, 0), 1) OVER (ORDER BY _s15.year_1), + ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR_1), 2 ) AS pct_incident_change, - COALESCE(_s15.sum_n_rows, 0) AS bought, - COALESCE(_s15.sum_expr_4, 0) AS incidents -FROM _s14 AS _s14 -JOIN _s15 AS _s15 - ON _s15.year_1 >= YEAR(CAST(_s14.release_date AS TIMESTAMP)) + COALESCE(_S15.SUM_N_ROWS, 0) AS bought, + COALESCE(_S15.SUM_EXPR_4, 0) AS incidents +FROM _S14 AS _S14 +JOIN _S15 AS _S15 + ON _S15.YEAR_1 >= YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_mysql.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_mysql.sql index 1f804fb99..c5f4658bb 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_mysql.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_mysql.sql @@ -1,14 +1,14 @@ WITH _s2 AS ( SELECT ca_dt - FROM main.calendar + FROM main.CALENDAR ), _s3 AS ( SELECT COUNT(*) AS n_rows, _s0.ca_dt FROM _s2 AS _s0 - JOIN main.devices AS devices - ON _s0.ca_dt = CAST(CAST(devices.de_purchase_ts AS DATETIME) AS DATE) + JOIN main.DEVICES AS DEVICES + ON _s0.ca_dt = CAST(CAST(DEVICES.de_purchase_ts AS DATETIME) AS DATE) GROUP BY 2 ), _s7 AS ( @@ -16,8 +16,8 @@ WITH _s2 AS ( COUNT(*) AS n_rows, _s4.ca_dt FROM _s2 AS _s4 - JOIN main.incidents AS incidents - ON _s4.ca_dt = CAST(CAST(incidents.in_error_report_ts AS DATETIME) AS DATE) + JOIN main.INCIDENTS AS INCIDENTS + ON _s4.ca_dt = CAST(CAST(INCIDENTS.in_error_report_ts AS DATETIME) AS DATE) GROUP BY 2 ), _t1 AS ( diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index fc1622d96..21b47479a 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -1,64 +1,64 @@ -WITH _s2 AS ( +WITH _S2 AS ( SELECT - ca_dt - FROM main.calendar -), _s3 AS ( + ca_dt AS CA_DT + FROM MAIN.CALENDAR +), _S3 AS ( SELECT - COUNT(*) AS n_rows, - _s0.ca_dt - FROM _s2 AS _s0 - JOIN main.devices AS devices - ON _s0.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) + COUNT(*) AS N_ROWS, + _S0.CA_DT + FROM _S2 AS _S0 + JOIN MAIN.DEVICES AS DEVICES + ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) GROUP BY 2 -), _s7 AS ( +), _S7 AS ( SELECT - COUNT(*) AS n_rows, - _s4.ca_dt - FROM _s2 AS _s4 - JOIN main.incidents AS incidents - ON _s4.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) + COUNT(*) AS N_ROWS, + _S4.CA_DT + FROM _S2 AS _S4 + JOIN MAIN.INCIDENTS AS INCIDENTS + ON _S4.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) GROUP BY 2 -), _t1 AS ( +), _T1 AS ( SELECT - SUM(_s3.n_rows) AS sum_expr_3, - SUM(_s7.n_rows) AS sum_n_rows, - YEAR(CAST(_s2.ca_dt AS TIMESTAMP)) AS year - FROM _s2 AS _s2 - LEFT JOIN _s3 AS _s3 - ON _s2.ca_dt = _s3.ca_dt - LEFT JOIN _s7 AS _s7 - ON _s2.ca_dt = _s7.ca_dt + SUM(_S3.N_ROWS) AS SUM_EXPR_3, + SUM(_S7.N_ROWS) AS SUM_N_ROWS, + YEAR(CAST(_S2.CA_DT AS TIMESTAMP)) AS YEAR + FROM _S2 AS _S2 + LEFT JOIN _S3 AS _S3 + ON _S2.CA_DT = _S3.CA_DT + LEFT JOIN _S7 AS _S7 + ON _S2.CA_DT = _S7.CA_DT GROUP BY 3 ) SELECT - year AS yr, + YEAR AS yr, ROUND( - SUM(COALESCE(sum_n_rows, 0)) OVER (ORDER BY year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(sum_expr_3, 0)) OVER (ORDER BY year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(SUM_N_ROWS, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(SUM_EXPR_3, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS cum_ir, ROUND( ( 100.0 * ( - COALESCE(sum_expr_3, 0) - LAG(COALESCE(sum_expr_3, 0), 1) OVER (ORDER BY year) + COALESCE(SUM_EXPR_3, 0) - LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR) ) - ) / LAG(COALESCE(sum_expr_3, 0), 1) OVER (ORDER BY year), + ) / LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR), 2 ) AS pct_bought_change, ROUND( ( 100.0 * ( - COALESCE(sum_n_rows, 0) - LAG(COALESCE(sum_n_rows, 0), 1) OVER (ORDER BY year) + COALESCE(SUM_N_ROWS, 0) - LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR) ) - ) / LAG(COALESCE(sum_n_rows, 0), 1) OVER (ORDER BY year), + ) / LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR), 2 ) AS pct_incident_change, - COALESCE(sum_expr_3, 0) AS bought, - COALESCE(sum_n_rows, 0) AS incidents -FROM _t1 + COALESCE(SUM_EXPR_3, 0) AS bought, + COALESCE(SUM_N_ROWS, 0) AS incidents +FROM _T1 WHERE - NOT sum_expr_3 IS NULL AND sum_expr_3 > 0 + NOT SUM_EXPR_3 IS NULL AND SUM_EXPR_3 > 0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/time_threshold_reached_mysql.sql b/tests/test_sql_refsols/time_threshold_reached_mysql.sql index f4fe0eeba..6fc578fe4 100644 --- a/tests/test_sql_refsols/time_threshold_reached_mysql.sql +++ b/tests/test_sql_refsols/time_threshold_reached_mysql.sql @@ -3,20 +3,20 @@ WITH _t3 AS ( ( 100.0 * SUM(sbtxshares) OVER (PARTITION BY CAST(CAST(sbtxdatetime AS DATETIME) AS DATE) ORDER BY sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ) / SUM(sbtxshares) OVER (PARTITION BY CAST(CAST(sbtxdatetime AS DATETIME) AS DATE)) AS pct_of_day, - sbtxdatetime - FROM main.sbtransaction + sbtxdatetime AS sbTxDateTime + FROM main.sbTransaction WHERE EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) = 2023 ), _t AS ( SELECT - sbtxdatetime, - ROW_NUMBER() OVER (PARTITION BY CAST(CAST(sbtxdatetime AS DATETIME) AS DATE) ORDER BY CASE WHEN pct_of_day IS NULL THEN 1 ELSE 0 END, pct_of_day) AS _w + sbTxDateTime, + ROW_NUMBER() OVER (PARTITION BY CAST(CAST(sbTxDateTime AS DATETIME) AS DATE) ORDER BY CASE WHEN pct_of_day IS NULL THEN 1 ELSE 0 END, pct_of_day) AS _w FROM _t3 WHERE pct_of_day >= 50.0 ) SELECT - sbtxdatetime AS date_time + sbTxDateTime AS date_time FROM _t WHERE _w = 1 diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index 4902f2306..a37249290 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -1,23 +1,23 @@ -WITH _t3 AS ( +WITH _T3 AS ( SELECT ( 100.0 * SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS pct_of_day, - sbtxdatetime - FROM main.sbtransaction + ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS PCT_OF_DAY, + sbtxdatetime AS SBTXDATETIME + FROM MAIN.SBTRANSACTION WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _t1 AS ( +), _T1 AS ( SELECT - sbtxdatetime - FROM _t3 + SBTXDATETIME + FROM _T3 WHERE - pct_of_day >= 50.0 + PCT_OF_DAY >= 50.0 QUALIFY - ROW_NUMBER() OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY pct_of_day) = 1 + ROW_NUMBER() OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTXDATETIME AS TIMESTAMP)) ORDER BY PCT_OF_DAY) = 1 ) SELECT - sbtxdatetime AS date_time -FROM _t1 + SBTXDATETIME AS date_time +FROM _T1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q10_mysql.sql b/tests/test_sql_refsols/tpch_q10_mysql.sql index e80a7a87a..35550c939 100644 --- a/tests/test_sql_refsols/tpch_q10_mysql.sql +++ b/tests/test_sql_refsols/tpch_q10_mysql.sql @@ -1,32 +1,32 @@ WITH _s3 AS ( SELECT - SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )) AS sum_expr_1, - orders.o_custkey - FROM tpch.orders AS orders - JOIN tpch.lineitem AS lineitem - ON lineitem.l_orderkey = orders.o_orderkey AND lineitem.l_returnflag = 'R' + ORDERS.o_custkey + FROM tpch.ORDERS AS ORDERS + JOIN tpch.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' WHERE - EXTRACT(QUARTER FROM CAST(orders.o_orderdate AS DATETIME)) = 4 - AND EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) = 1993 + EXTRACT(QUARTER FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 4 + AND EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 1993 GROUP BY 2 ) SELECT - customer.c_custkey AS C_CUSTKEY, - customer.c_name AS C_NAME, + CUSTOMER.c_custkey AS C_CUSTKEY, + CUSTOMER.c_name AS C_NAME, COALESCE(_s3.sum_expr_1, 0) AS REVENUE, - customer.c_acctbal AS C_ACCTBAL, - nation.n_name AS N_NAME, - customer.c_address AS C_ADDRESS, - customer.c_phone AS C_PHONE, - customer.c_comment AS C_COMMENT -FROM tpch.customer AS customer + CUSTOMER.c_acctbal AS C_ACCTBAL, + NATION.n_name AS N_NAME, + CUSTOMER.c_address AS C_ADDRESS, + CUSTOMER.c_phone AS C_PHONE, + CUSTOMER.c_comment AS C_COMMENT +FROM tpch.CUSTOMER AS CUSTOMER LEFT JOIN _s3 AS _s3 - ON _s3.o_custkey = customer.c_custkey -JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey + ON CUSTOMER.c_custkey = _s3.o_custkey +JOIN tpch.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey ORDER BY 3 DESC, 1 diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql index 1ae176529..c455acda0 100644 --- a/tests/test_sql_refsols/tpch_q10_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -1,32 +1,32 @@ -WITH _s3 AS ( +WITH _S3 AS ( SELECT - SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount - )) AS sum_expr_1, - orders.o_custkey - FROM tpch.orders AS orders - JOIN tpch.lineitem AS lineitem - ON lineitem.l_orderkey = orders.o_orderkey AND lineitem.l_returnflag = 'R' + SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + )) AS SUM_EXPR_1, + ORDERS.o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS AS ORDERS + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' WHERE - QUARTER(CAST(orders.o_orderdate AS TIMESTAMP)) = 4 - AND YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1993 + QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 4 + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY 2 ) SELECT - customer.c_custkey AS C_CUSTKEY, - customer.c_name AS C_NAME, - COALESCE(_s3.sum_expr_1, 0) AS REVENUE, - customer.c_acctbal AS C_ACCTBAL, - nation.n_name AS N_NAME, - customer.c_address AS C_ADDRESS, - customer.c_phone AS C_PHONE, - customer.c_comment AS C_COMMENT -FROM tpch.customer AS customer -LEFT JOIN _s3 AS _s3 - ON _s3.o_custkey = customer.c_custkey -JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey + CUSTOMER.c_custkey AS C_CUSTKEY, + CUSTOMER.c_name AS C_NAME, + COALESCE(_S3.SUM_EXPR_1, 0) AS REVENUE, + CUSTOMER.c_acctbal AS C_ACCTBAL, + NATION.n_name AS N_NAME, + CUSTOMER.c_address AS C_ADDRESS, + CUSTOMER.c_phone AS C_PHONE, + CUSTOMER.c_comment AS C_COMMENT +FROM TPCH.CUSTOMER AS CUSTOMER +LEFT JOIN _S3 AS _S3 + ON CUSTOMER.c_custkey = _S3.O_CUSTKEY +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey ORDER BY 3 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q11_mysql.sql b/tests/test_sql_refsols/tpch_q11_mysql.sql index 1f3db8af4..812291b94 100644 --- a/tests/test_sql_refsols/tpch_q11_mysql.sql +++ b/tests/test_sql_refsols/tpch_q11_mysql.sql @@ -2,29 +2,29 @@ WITH _s0 AS ( SELECT s_nationkey, s_suppkey - FROM tpch.supplier + FROM tpch.SUPPLIER ), _t2 AS ( SELECT n_name, n_nationkey - FROM tpch.nation + FROM tpch.NATION WHERE n_name = 'GERMANY' ), _s8 AS ( SELECT - SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_metric - FROM tpch.partsupp AS partsupp + SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS sum_metric + FROM tpch.PARTSUPP AS PARTSUPP JOIN _s0 AS _s0 - ON _s0.s_suppkey = partsupp.ps_suppkey + ON PARTSUPP.ps_suppkey = _s0.s_suppkey JOIN _t2 AS _t2 ON _s0.s_nationkey = _t2.n_nationkey ), _s9 AS ( SELECT - SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_expr_2, - partsupp.ps_partkey - FROM tpch.partsupp AS partsupp + SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS sum_expr_2, + PARTSUPP.ps_partkey + FROM tpch.PARTSUPP AS PARTSUPP JOIN _s0 AS _s4 - ON _s4.s_suppkey = partsupp.ps_suppkey + ON PARTSUPP.ps_suppkey = _s4.s_suppkey JOIN _t2 AS _t4 ON _s4.s_nationkey = _t4.n_nationkey GROUP BY diff --git a/tests/test_sql_refsols/tpch_q11_snowflake.sql b/tests/test_sql_refsols/tpch_q11_snowflake.sql index 677c62d95..74543ab46 100644 --- a/tests/test_sql_refsols/tpch_q11_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q11_snowflake.sql @@ -1,43 +1,43 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - s_nationkey, - s_suppkey - FROM tpch.supplier -), _t2 AS ( + s_nationkey AS S_NATIONKEY, + s_suppkey AS S_SUPPKEY + FROM TPCH.SUPPLIER +), _T2 AS ( SELECT - n_name, - n_nationkey - FROM tpch.nation + n_name AS N_NAME, + n_nationkey AS N_NATIONKEY + FROM TPCH.NATION WHERE n_name = 'GERMANY' -), _s8 AS ( +), _S8 AS ( SELECT - SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_metric - FROM tpch.partsupp AS partsupp - JOIN _s0 AS _s0 - ON _s0.s_suppkey = partsupp.ps_suppkey - JOIN _t2 AS _t2 - ON _s0.s_nationkey = _t2.n_nationkey -), _s9 AS ( + SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_METRIC + FROM TPCH.PARTSUPP AS PARTSUPP + JOIN _S0 AS _S0 + ON PARTSUPP.ps_suppkey = _S0.S_SUPPKEY + JOIN _T2 AS _T2 + ON _S0.S_NATIONKEY = _T2.N_NATIONKEY +), _S9 AS ( SELECT - SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_expr_2, - partsupp.ps_partkey - FROM tpch.partsupp AS partsupp - JOIN _s0 AS _s4 - ON _s4.s_suppkey = partsupp.ps_suppkey - JOIN _t2 AS _t4 - ON _s4.s_nationkey = _t4.n_nationkey + SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_EXPR_2, + PARTSUPP.ps_partkey AS PS_PARTKEY + FROM TPCH.PARTSUPP AS PARTSUPP + JOIN _S0 AS _S4 + ON PARTSUPP.ps_suppkey = _S4.S_SUPPKEY + JOIN _T2 AS _T4 + ON _S4.S_NATIONKEY = _T4.N_NATIONKEY GROUP BY 2 ) SELECT - _s9.ps_partkey AS PS_PARTKEY, - COALESCE(_s9.sum_expr_2, 0) AS VALUE -FROM _s8 AS _s8 -JOIN _s9 AS _s9 + _S9.PS_PARTKEY, + COALESCE(_S9.SUM_EXPR_2, 0) AS VALUE +FROM _S8 AS _S8 +JOIN _S9 AS _S9 ON ( - COALESCE(_s8.sum_metric, 0) * 0.0001 - ) < COALESCE(_s9.sum_expr_2, 0) + COALESCE(_S8.SUM_METRIC, 0) * 0.0001 + ) < COALESCE(_S9.SUM_EXPR_2, 0) ORDER BY 2 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q12_mysql.sql b/tests/test_sql_refsols/tpch_q12_mysql.sql index 8c2f23053..0ec228b35 100644 --- a/tests/test_sql_refsols/tpch_q12_mysql.sql +++ b/tests/test_sql_refsols/tpch_q12_mysql.sql @@ -1,16 +1,16 @@ SELECT - l_shipmode COLLATE utf8mb4_bin AS L_SHIPMODE, - COALESCE(SUM(orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, - COALESCE(SUM(NOT orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT -FROM tpch.lineitem AS lineitem -JOIN tpch.orders AS orders - ON lineitem.l_orderkey = orders.o_orderkey + LINEITEM.l_shipmode COLLATE utf8mb4_bin AS L_SHIPMODE, + COALESCE(SUM(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, + COALESCE(SUM(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT +FROM tpch.LINEITEM AS LINEITEM +JOIN tpch.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey WHERE - EXTRACT(YEAR FROM CAST(lineitem.l_receiptdate AS DATETIME)) = 1994 - AND lineitem.l_commitdate < lineitem.l_receiptdate - AND lineitem.l_commitdate > lineitem.l_shipdate + EXTRACT(YEAR FROM CAST(LINEITEM.l_receiptdate AS DATETIME)) = 1994 + AND LINEITEM.l_commitdate < LINEITEM.l_receiptdate + AND LINEITEM.l_commitdate > LINEITEM.l_shipdate AND ( - lineitem.l_shipmode = 'MAIL' OR lineitem.l_shipmode = 'SHIP' + LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' ) GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql index b02a4f3ff..5e26c4382 100644 --- a/tests/test_sql_refsols/tpch_q12_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -1,17 +1,17 @@ SELECT - lineitem.l_shipmode AS L_SHIPMODE, - COALESCE(COUNT_IF(orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, - COALESCE(COUNT_IF(NOT orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT -FROM tpch.lineitem AS lineitem -JOIN tpch.orders AS orders - ON lineitem.l_orderkey = orders.o_orderkey + LINEITEM.l_shipmode AS L_SHIPMODE, + COALESCE(COUNT_IF(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, + COALESCE(COUNT_IF(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey WHERE - YEAR(CAST(lineitem.l_receiptdate AS TIMESTAMP)) = 1994 - AND lineitem.l_commitdate < lineitem.l_receiptdate - AND lineitem.l_commitdate > lineitem.l_shipdate + LINEITEM.l_commitdate < LINEITEM.l_receiptdate + AND LINEITEM.l_commitdate > LINEITEM.l_shipdate AND ( - lineitem.l_shipmode = 'MAIL' OR lineitem.l_shipmode = 'SHIP' + LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' ) + AND YEAR(CAST(LINEITEM.l_receiptdate AS TIMESTAMP)) = 1994 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q13_mysql.sql b/tests/test_sql_refsols/tpch_q13_mysql.sql index cbe9e22ac..a8eae8a73 100644 --- a/tests/test_sql_refsols/tpch_q13_mysql.sql +++ b/tests/test_sql_refsols/tpch_q13_mysql.sql @@ -2,7 +2,7 @@ WITH _s1 AS ( SELECT COUNT(*) AS n_rows, o_custkey - FROM tpch.orders + FROM tpch.ORDERS WHERE NOT o_comment LIKE '%special%requests%' GROUP BY @@ -11,9 +11,9 @@ WITH _s1 AS ( SELECT COALESCE(_s1.n_rows, 0) AS C_COUNT, COUNT(*) AS CUSTDIST -FROM tpch.customer AS customer +FROM tpch.CUSTOMER AS CUSTOMER LEFT JOIN _s1 AS _s1 - ON _s1.o_custkey = customer.c_custkey + ON CUSTOMER.c_custkey = _s1.o_custkey GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q13_snowflake.sql b/tests/test_sql_refsols/tpch_q13_snowflake.sql index d3d53c838..17df0163e 100644 --- a/tests/test_sql_refsols/tpch_q13_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q13_snowflake.sql @@ -1,19 +1,19 @@ -WITH _s1 AS ( +WITH _S1 AS ( SELECT - COUNT(*) AS n_rows, - o_custkey - FROM tpch.orders + COUNT(*) AS N_ROWS, + o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS WHERE NOT o_comment LIKE '%special%requests%' GROUP BY 2 ) SELECT - COALESCE(_s1.n_rows, 0) AS C_COUNT, + COALESCE(_S1.N_ROWS, 0) AS C_COUNT, COUNT(*) AS CUSTDIST -FROM tpch.customer AS customer -LEFT JOIN _s1 AS _s1 - ON _s1.o_custkey = customer.c_custkey +FROM TPCH.CUSTOMER AS CUSTOMER +LEFT JOIN _S1 AS _S1 + ON CUSTOMER.c_custkey = _S1.O_CUSTKEY GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q14_mysql.sql b/tests/test_sql_refsols/tpch_q14_mysql.sql index 5202aaaa7..dd59248dd 100644 --- a/tests/test_sql_refsols/tpch_q14_mysql.sql +++ b/tests/test_sql_refsols/tpch_q14_mysql.sql @@ -3,21 +3,21 @@ SELECT 100.0 * COALESCE( SUM( CASE - WHEN part.p_type LIKE 'PROMO%' - THEN lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + WHEN PART.p_type LIKE 'PROMO%' + THEN LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount ) ELSE 0 END ), 0 ) - ) / COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS PROMO_REVENUE -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part - ON lineitem.l_partkey = part.p_partkey +FROM tpch.LINEITEM AS LINEITEM +JOIN tpch.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey WHERE - EXTRACT(MONTH FROM CAST(lineitem.l_shipdate AS DATETIME)) = 9 - AND EXTRACT(YEAR FROM CAST(lineitem.l_shipdate AS DATETIME)) = 1995 + EXTRACT(MONTH FROM CAST(LINEITEM.l_shipdate AS DATETIME)) = 9 + AND EXTRACT(YEAR FROM CAST(LINEITEM.l_shipdate AS DATETIME)) = 1995 diff --git a/tests/test_sql_refsols/tpch_q14_snowflake.sql b/tests/test_sql_refsols/tpch_q14_snowflake.sql index 7c04495f8..cf4f6d086 100644 --- a/tests/test_sql_refsols/tpch_q14_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q14_snowflake.sql @@ -3,21 +3,21 @@ SELECT 100.0 * COALESCE( SUM( IFF( - STARTSWITH(part.p_type, 'PROMO'), - lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + STARTSWITH(PART.p_type, 'PROMO'), + LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount ), 0 ) ), 0 ) - ) / COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS PROMO_REVENUE -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part - ON lineitem.l_partkey = part.p_partkey +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey WHERE - MONTH(CAST(lineitem.l_shipdate AS TIMESTAMP)) = 9 - AND YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) = 1995 + MONTH(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) = 9 + AND YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) = 1995 diff --git a/tests/test_sql_refsols/tpch_q15_mysql.sql b/tests/test_sql_refsols/tpch_q15_mysql.sql index b5beaf375..8a0971a95 100644 --- a/tests/test_sql_refsols/tpch_q15_mysql.sql +++ b/tests/test_sql_refsols/tpch_q15_mysql.sql @@ -4,7 +4,7 @@ WITH _t3 AS ( l_extendedprice, l_shipdate, l_suppkey - FROM tpch.lineitem + FROM tpch.LINEITEM WHERE l_shipdate < CAST('1996-04-01' AS DATE) AND l_shipdate >= CAST('1996-01-01' AS DATE) @@ -20,9 +20,9 @@ WITH _t3 AS ( ), _s2 AS ( SELECT MAX(COALESCE(_s1.sum_expr_2, 0)) AS max_revenue - FROM tpch.supplier AS supplier + FROM tpch.SUPPLIER AS SUPPLIER JOIN _s1 AS _s1 - ON _s1.l_suppkey = supplier.s_suppkey + ON SUPPLIER.s_suppkey = _s1.l_suppkey ), _s5 AS ( SELECT SUM(l_extendedprice * ( @@ -34,15 +34,15 @@ WITH _t3 AS ( 2 ) SELECT - supplier.s_suppkey AS S_SUPPKEY, - supplier.s_name AS S_NAME, - supplier.s_address AS S_ADDRESS, - supplier.s_phone AS S_PHONE, + SUPPLIER.s_suppkey AS S_SUPPKEY, + SUPPLIER.s_name AS S_NAME, + SUPPLIER.s_address AS S_ADDRESS, + SUPPLIER.s_phone AS S_PHONE, COALESCE(_s5.sum_expr_3, 0) AS TOTAL_REVENUE FROM _s2 AS _s2 -CROSS JOIN tpch.supplier AS supplier +CROSS JOIN tpch.SUPPLIER AS SUPPLIER JOIN _s5 AS _s5 - ON _s2.max_revenue = COALESCE(_s5.sum_expr_3, 0) - AND _s5.l_suppkey = supplier.s_suppkey + ON SUPPLIER.s_suppkey = _s5.l_suppkey + AND _s2.max_revenue = COALESCE(_s5.sum_expr_3, 0) ORDER BY 1 diff --git a/tests/test_sql_refsols/tpch_q15_snowflake.sql b/tests/test_sql_refsols/tpch_q15_snowflake.sql index 545e6f34c..41ffbc19b 100644 --- a/tests/test_sql_refsols/tpch_q15_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q15_snowflake.sql @@ -1,48 +1,48 @@ -WITH _t3 AS ( +WITH _T3 AS ( SELECT - l_discount, - l_extendedprice, - l_shipdate, - l_suppkey - FROM tpch.lineitem + l_discount AS L_DISCOUNT, + l_extendedprice AS L_EXTENDEDPRICE, + l_shipdate AS L_SHIPDATE, + l_suppkey AS L_SUPPKEY + FROM TPCH.LINEITEM WHERE l_shipdate < CAST('1996-04-01' AS DATE) AND l_shipdate >= CAST('1996-01-01' AS DATE) -), _s1 AS ( +), _S1 AS ( SELECT - SUM(l_extendedprice * ( - 1 - l_discount - )) AS sum_expr_2, - l_suppkey - FROM _t3 + SUM(L_EXTENDEDPRICE * ( + 1 - L_DISCOUNT + )) AS SUM_EXPR_2, + L_SUPPKEY + FROM _T3 GROUP BY 2 -), _s2 AS ( +), _S2 AS ( SELECT - MAX(COALESCE(_s1.sum_expr_2, 0)) AS max_revenue - FROM tpch.supplier AS supplier - JOIN _s1 AS _s1 - ON _s1.l_suppkey = supplier.s_suppkey -), _s5 AS ( + MAX(COALESCE(_S1.SUM_EXPR_2, 0)) AS MAX_REVENUE + FROM TPCH.SUPPLIER AS SUPPLIER + JOIN _S1 AS _S1 + ON SUPPLIER.s_suppkey = _S1.L_SUPPKEY +), _S5 AS ( SELECT - SUM(l_extendedprice * ( - 1 - l_discount - )) AS sum_expr_3, - l_suppkey - FROM _t3 + SUM(L_EXTENDEDPRICE * ( + 1 - L_DISCOUNT + )) AS SUM_EXPR_3, + L_SUPPKEY + FROM _T3 GROUP BY 2 ) SELECT - supplier.s_suppkey AS S_SUPPKEY, - supplier.s_name AS S_NAME, - supplier.s_address AS S_ADDRESS, - supplier.s_phone AS S_PHONE, - COALESCE(_s5.sum_expr_3, 0) AS TOTAL_REVENUE -FROM _s2 AS _s2 -CROSS JOIN tpch.supplier AS supplier -JOIN _s5 AS _s5 - ON _s2.max_revenue = COALESCE(_s5.sum_expr_3, 0) - AND _s5.l_suppkey = supplier.s_suppkey + SUPPLIER.s_suppkey AS S_SUPPKEY, + SUPPLIER.s_name AS S_NAME, + SUPPLIER.s_address AS S_ADDRESS, + SUPPLIER.s_phone AS S_PHONE, + COALESCE(_S5.SUM_EXPR_3, 0) AS TOTAL_REVENUE +FROM _S2 AS _S2 +CROSS JOIN TPCH.SUPPLIER AS SUPPLIER +JOIN _S5 AS _S5 + ON SUPPLIER.s_suppkey = _S5.L_SUPPKEY + AND _S2.MAX_REVENUE = COALESCE(_S5.SUM_EXPR_3, 0) ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q16_mysql.sql b/tests/test_sql_refsols/tpch_q16_mysql.sql index dfd0d169a..257a9a323 100644 --- a/tests/test_sql_refsols/tpch_q16_mysql.sql +++ b/tests/test_sql_refsols/tpch_q16_mysql.sql @@ -1,17 +1,17 @@ SELECT - p_brand COLLATE utf8mb4_bin AS P_BRAND, - p_type COLLATE utf8mb4_bin AS P_TYPE, - part.p_size AS P_SIZE, - COUNT(DISTINCT partsupp.ps_suppkey) AS SUPPLIER_COUNT -FROM tpch.partsupp AS partsupp -JOIN tpch.supplier AS supplier - ON NOT supplier.s_comment LIKE '%Customer%Complaints%' - AND partsupp.ps_suppkey = supplier.s_suppkey -JOIN tpch.part AS part - ON NOT part.p_type LIKE 'MEDIUM POLISHED%%' - AND part.p_brand <> 'BRAND#45' - AND part.p_partkey = partsupp.ps_partkey - AND part.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) + PART.p_brand COLLATE utf8mb4_bin AS P_BRAND, + PART.p_type COLLATE utf8mb4_bin AS P_TYPE, + PART.p_size AS P_SIZE, + COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT +FROM tpch.PARTSUPP AS PARTSUPP +JOIN tpch.SUPPLIER AS SUPPLIER + ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' + AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey +JOIN tpch.PART AS PART + ON NOT PART.p_type LIKE 'MEDIUM POLISHED%%' + AND PART.p_brand <> 'BRAND#45' + AND PART.p_partkey = PARTSUPP.ps_partkey + AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q16_snowflake.sql b/tests/test_sql_refsols/tpch_q16_snowflake.sql index 142fca36a..afe61e7fe 100644 --- a/tests/test_sql_refsols/tpch_q16_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q16_snowflake.sql @@ -1,17 +1,17 @@ SELECT - part.p_brand AS P_BRAND, - part.p_type AS P_TYPE, - part.p_size AS P_SIZE, - COUNT(DISTINCT partsupp.ps_suppkey) AS SUPPLIER_COUNT -FROM tpch.partsupp AS partsupp -JOIN tpch.supplier AS supplier - ON NOT supplier.s_comment LIKE '%Customer%Complaints%' - AND partsupp.ps_suppkey = supplier.s_suppkey -JOIN tpch.part AS part - ON NOT STARTSWITH(part.p_type, 'MEDIUM POLISHED%') - AND part.p_brand <> 'BRAND#45' - AND part.p_partkey = partsupp.ps_partkey - AND part.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) + PART.p_brand AS P_BRAND, + PART.p_type AS P_TYPE, + PART.p_size AS P_SIZE, + COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT +FROM TPCH.PARTSUPP AS PARTSUPP +JOIN TPCH.SUPPLIER AS SUPPLIER + ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' + AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.PART AS PART + ON NOT STARTSWITH(PART.p_type, 'MEDIUM POLISHED%') + AND PART.p_brand <> 'BRAND#45' + AND PART.p_partkey = PARTSUPP.ps_partkey + AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q17_mysql.sql b/tests/test_sql_refsols/tpch_q17_mysql.sql index eb92a8278..013d5a68a 100644 --- a/tests/test_sql_refsols/tpch_q17_mysql.sql +++ b/tests/test_sql_refsols/tpch_q17_mysql.sql @@ -1,13 +1,13 @@ WITH _t AS ( SELECT - lineitem.l_extendedprice, - lineitem.l_quantity, - AVG(lineitem.l_quantity) OVER (PARTITION BY lineitem.l_partkey) AS _w - FROM tpch.part AS part - JOIN tpch.lineitem AS lineitem - ON lineitem.l_partkey = part.p_partkey + LINEITEM.l_extendedprice, + LINEITEM.l_quantity, + AVG(LINEITEM.l_quantity) OVER (PARTITION BY LINEITEM.l_partkey) AS _w + FROM tpch.PART AS PART + JOIN tpch.LINEITEM AS LINEITEM + ON LINEITEM.l_partkey = PART.p_partkey WHERE - part.p_brand = 'Brand#23' AND part.p_container = 'MED BOX' + PART.p_brand = 'Brand#23' AND PART.p_container = 'MED BOX' ) SELECT COALESCE(SUM(l_extendedprice), 0) / 7.0 AS AVG_YEARLY diff --git a/tests/test_sql_refsols/tpch_q17_snowflake.sql b/tests/test_sql_refsols/tpch_q17_snowflake.sql index 5338e7f5c..ea50aeedf 100644 --- a/tests/test_sql_refsols/tpch_q17_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q17_snowflake.sql @@ -1,16 +1,16 @@ -WITH _t2 AS ( +WITH _T2 AS ( SELECT - lineitem.l_extendedprice - FROM tpch.part AS part - JOIN tpch.lineitem AS lineitem - ON lineitem.l_partkey = part.p_partkey + LINEITEM.l_extendedprice AS L_EXTENDEDPRICE + FROM TPCH.PART AS PART + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_partkey = PART.p_partkey WHERE - part.p_brand = 'Brand#23' AND part.p_container = 'MED BOX' + PART.p_brand = 'Brand#23' AND PART.p_container = 'MED BOX' QUALIFY - lineitem.l_quantity < ( - 0.2 * AVG(lineitem.l_quantity) OVER (PARTITION BY lineitem.l_partkey) + LINEITEM.l_quantity < ( + 0.2 * AVG(LINEITEM.l_quantity) OVER (PARTITION BY LINEITEM.l_partkey) ) ) SELECT - COALESCE(SUM(l_extendedprice), 0) / 7.0 AS AVG_YEARLY -FROM _t2 + COALESCE(SUM(L_EXTENDEDPRICE), 0) / 7.0 AS AVG_YEARLY +FROM _T2 diff --git a/tests/test_sql_refsols/tpch_q18_mysql.sql b/tests/test_sql_refsols/tpch_q18_mysql.sql index 669914bd1..dea9c5fec 100644 --- a/tests/test_sql_refsols/tpch_q18_mysql.sql +++ b/tests/test_sql_refsols/tpch_q18_mysql.sql @@ -2,23 +2,23 @@ WITH _t1 AS ( SELECT SUM(l_quantity) AS sum_l_quantity, l_orderkey - FROM tpch.lineitem + FROM tpch.LINEITEM GROUP BY 2 ) SELECT - customer.c_name AS C_NAME, - customer.c_custkey AS C_CUSTKEY, - orders.o_orderkey AS O_ORDERKEY, - orders.o_orderdate AS O_ORDERDATE, - orders.o_totalprice AS O_TOTALPRICE, + CUSTOMER.c_name AS C_NAME, + CUSTOMER.c_custkey AS C_CUSTKEY, + ORDERS.o_orderkey AS O_ORDERKEY, + ORDERS.o_orderdate AS O_ORDERDATE, + ORDERS.o_totalprice AS O_TOTALPRICE, COALESCE(_t1.sum_l_quantity, 0) AS TOTAL_QUANTITY -FROM tpch.orders AS orders -JOIN tpch.customer AS customer - ON customer.c_custkey = orders.o_custkey +FROM tpch.ORDERS AS ORDERS +JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey JOIN _t1 AS _t1 ON NOT _t1.sum_l_quantity IS NULL - AND _t1.l_orderkey = orders.o_orderkey + AND ORDERS.o_orderkey = _t1.l_orderkey AND _t1.sum_l_quantity > 300 ORDER BY 5 DESC, diff --git a/tests/test_sql_refsols/tpch_q18_snowflake.sql b/tests/test_sql_refsols/tpch_q18_snowflake.sql index 917d29d0b..eedd7e04e 100644 --- a/tests/test_sql_refsols/tpch_q18_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q18_snowflake.sql @@ -1,25 +1,25 @@ -WITH _t1 AS ( +WITH _T1 AS ( SELECT - SUM(l_quantity) AS sum_l_quantity, - l_orderkey - FROM tpch.lineitem + SUM(l_quantity) AS SUM_L_QUANTITY, + l_orderkey AS L_ORDERKEY + FROM TPCH.LINEITEM GROUP BY 2 ) SELECT - customer.c_name AS C_NAME, - customer.c_custkey AS C_CUSTKEY, - orders.o_orderkey AS O_ORDERKEY, - orders.o_orderdate AS O_ORDERDATE, - orders.o_totalprice AS O_TOTALPRICE, - COALESCE(_t1.sum_l_quantity, 0) AS TOTAL_QUANTITY -FROM tpch.orders AS orders -JOIN tpch.customer AS customer - ON customer.c_custkey = orders.o_custkey -JOIN _t1 AS _t1 - ON NOT _t1.sum_l_quantity IS NULL - AND _t1.l_orderkey = orders.o_orderkey - AND _t1.sum_l_quantity > 300 + CUSTOMER.c_name AS C_NAME, + CUSTOMER.c_custkey AS C_CUSTKEY, + ORDERS.o_orderkey AS O_ORDERKEY, + ORDERS.o_orderdate AS O_ORDERDATE, + ORDERS.o_totalprice AS O_TOTALPRICE, + COALESCE(_T1.SUM_L_QUANTITY, 0) AS TOTAL_QUANTITY +FROM TPCH.ORDERS AS ORDERS +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey +JOIN _T1 AS _T1 + ON NOT _T1.SUM_L_QUANTITY IS NULL + AND ORDERS.o_orderkey = _T1.L_ORDERKEY + AND _T1.SUM_L_QUANTITY > 300 ORDER BY 5 DESC NULLS LAST, 4 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q19_mysql.sql b/tests/test_sql_refsols/tpch_q19_mysql.sql index 3ea806f1f..105a94597 100644 --- a/tests/test_sql_refsols/tpch_q19_mysql.sql +++ b/tests/test_sql_refsols/tpch_q19_mysql.sql @@ -1,36 +1,36 @@ SELECT - COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS REVENUE -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part +FROM tpch.LINEITEM AS LINEITEM +JOIN tpch.PART AS PART ON ( ( - lineitem.l_quantity <= 11 - AND lineitem.l_quantity >= 1 - AND part.p_brand = 'Brand#12' - AND part.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') - AND part.p_size <= 5 - AND part.p_size >= 1 + LINEITEM.l_quantity <= 11 + AND LINEITEM.l_quantity >= 1 + AND PART.p_brand = 'Brand#12' + AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + AND PART.p_size <= 5 + AND PART.p_size >= 1 ) OR ( - lineitem.l_quantity <= 20 - AND lineitem.l_quantity >= 10 - AND part.p_brand = 'Brand#23' - AND part.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') - AND part.p_size <= 10 - AND part.p_size >= 1 + LINEITEM.l_quantity <= 20 + AND LINEITEM.l_quantity >= 10 + AND PART.p_brand = 'Brand#23' + AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') + AND PART.p_size <= 10 + AND PART.p_size >= 1 ) OR ( - lineitem.l_quantity <= 30 - AND lineitem.l_quantity >= 20 - AND part.p_brand = 'Brand#34' - AND part.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') - AND part.p_size <= 15 - AND part.p_size >= 1 + LINEITEM.l_quantity <= 30 + AND LINEITEM.l_quantity >= 20 + AND PART.p_brand = 'Brand#34' + AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + AND PART.p_size <= 15 + AND PART.p_size >= 1 ) ) - AND lineitem.l_partkey = part.p_partkey + AND LINEITEM.l_partkey = PART.p_partkey WHERE - lineitem.l_shipinstruct = 'DELIVER IN PERSON' - AND lineitem.l_shipmode IN ('AIR', 'AIR REG') + LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' + AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') diff --git a/tests/test_sql_refsols/tpch_q19_snowflake.sql b/tests/test_sql_refsols/tpch_q19_snowflake.sql index 3ea806f1f..3e7099562 100644 --- a/tests/test_sql_refsols/tpch_q19_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q19_snowflake.sql @@ -1,36 +1,36 @@ SELECT - COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS REVENUE -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART ON ( ( - lineitem.l_quantity <= 11 - AND lineitem.l_quantity >= 1 - AND part.p_brand = 'Brand#12' - AND part.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') - AND part.p_size <= 5 - AND part.p_size >= 1 + LINEITEM.l_quantity <= 11 + AND LINEITEM.l_quantity >= 1 + AND PART.p_brand = 'Brand#12' + AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + AND PART.p_size <= 5 + AND PART.p_size >= 1 ) OR ( - lineitem.l_quantity <= 20 - AND lineitem.l_quantity >= 10 - AND part.p_brand = 'Brand#23' - AND part.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') - AND part.p_size <= 10 - AND part.p_size >= 1 + LINEITEM.l_quantity <= 20 + AND LINEITEM.l_quantity >= 10 + AND PART.p_brand = 'Brand#23' + AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') + AND PART.p_size <= 10 + AND PART.p_size >= 1 ) OR ( - lineitem.l_quantity <= 30 - AND lineitem.l_quantity >= 20 - AND part.p_brand = 'Brand#34' - AND part.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') - AND part.p_size <= 15 - AND part.p_size >= 1 + LINEITEM.l_quantity <= 30 + AND LINEITEM.l_quantity >= 20 + AND PART.p_brand = 'Brand#34' + AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + AND PART.p_size <= 15 + AND PART.p_size >= 1 ) ) - AND lineitem.l_partkey = part.p_partkey + AND LINEITEM.l_partkey = PART.p_partkey WHERE - lineitem.l_shipinstruct = 'DELIVER IN PERSON' - AND lineitem.l_shipmode IN ('AIR', 'AIR REG') + LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' + AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') diff --git a/tests/test_sql_refsols/tpch_q1_mysql.sql b/tests/test_sql_refsols/tpch_q1_mysql.sql index fbd2fbf6c..094fca1f5 100644 --- a/tests/test_sql_refsols/tpch_q1_mysql.sql +++ b/tests/test_sql_refsols/tpch_q1_mysql.sql @@ -15,7 +15,7 @@ SELECT AVG(l_extendedprice) AS AVG_PRICE, AVG(l_discount) AS AVG_DISC, COUNT(*) AS COUNT_ORDER -FROM tpch.lineitem +FROM tpch.LINEITEM WHERE l_shipdate <= CAST('1998-12-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/tpch_q1_snowflake.sql b/tests/test_sql_refsols/tpch_q1_snowflake.sql index a060e085e..34e204133 100644 --- a/tests/test_sql_refsols/tpch_q1_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q1_snowflake.sql @@ -15,7 +15,7 @@ SELECT AVG(l_extendedprice) AS AVG_PRICE, AVG(l_discount) AS AVG_DISC, COUNT(*) AS COUNT_ORDER -FROM tpch.lineitem +FROM TPCH.LINEITEM WHERE l_shipdate <= CAST('1998-12-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/tpch_q20_mysql.sql b/tests/test_sql_refsols/tpch_q20_mysql.sql index 14e7600c7..dd97c28d6 100644 --- a/tests/test_sql_refsols/tpch_q20_mysql.sql +++ b/tests/test_sql_refsols/tpch_q20_mysql.sql @@ -2,38 +2,38 @@ WITH _s3 AS ( SELECT SUM(l_quantity) AS sum_l_quantity, l_partkey - FROM tpch.lineitem + FROM tpch.LINEITEM WHERE EXTRACT(YEAR FROM CAST(l_shipdate AS DATETIME)) = 1994 GROUP BY 2 ), _s5 AS ( SELECT - part.p_partkey, + PART.p_partkey, _s3.sum_l_quantity - FROM tpch.part AS part + FROM tpch.PART AS PART JOIN _s3 AS _s3 - ON _s3.l_partkey = part.p_partkey + ON PART.p_partkey = _s3.l_partkey WHERE - part.p_name LIKE 'forest%' + PART.p_name LIKE 'forest%' ), _s7 AS ( SELECT DISTINCT - partsupp.ps_suppkey - FROM tpch.partsupp AS partsupp + PARTSUPP.ps_suppkey + FROM tpch.PARTSUPP AS PARTSUPP JOIN _s5 AS _s5 - ON _s5.p_partkey = partsupp.ps_partkey - AND partsupp.ps_availqty > ( + ON PARTSUPP.ps_availqty > ( 0.5 * COALESCE(_s5.sum_l_quantity, 0) ) + AND PARTSUPP.ps_partkey = _s5.p_partkey ) SELECT - s_name COLLATE utf8mb4_bin AS S_NAME, - supplier.s_address AS S_ADDRESS -FROM tpch.supplier AS supplier -JOIN tpch.nation AS nation - ON nation.n_name = 'CANADA' AND nation.n_nationkey = supplier.s_nationkey + SUPPLIER.s_name COLLATE utf8mb4_bin AS S_NAME, + SUPPLIER.s_address AS S_ADDRESS +FROM tpch.SUPPLIER AS SUPPLIER +JOIN tpch.NATION AS NATION + ON NATION.n_name = 'CANADA' AND NATION.n_nationkey = SUPPLIER.s_nationkey JOIN _s7 AS _s7 - ON _s7.ps_suppkey = supplier.s_suppkey + ON SUPPLIER.s_suppkey = _s7.ps_suppkey ORDER BY 1 LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index 175c86131..afd1a3c47 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -1,39 +1,39 @@ -WITH _s3 AS ( +WITH _S3 AS ( SELECT - SUM(l_quantity) AS sum_l_quantity, - l_partkey - FROM tpch.lineitem + SUM(l_quantity) AS SUM_L_QUANTITY, + l_partkey AS L_PARTKEY + FROM TPCH.LINEITEM WHERE YEAR(CAST(l_shipdate AS TIMESTAMP)) = 1994 GROUP BY 2 -), _s5 AS ( +), _S5 AS ( SELECT - part.p_partkey, - _s3.sum_l_quantity - FROM tpch.part AS part - JOIN _s3 AS _s3 - ON _s3.l_partkey = part.p_partkey + PART.p_partkey AS P_PARTKEY, + _S3.SUM_L_QUANTITY + FROM TPCH.PART AS PART + JOIN _S3 AS _S3 + ON PART.p_partkey = _S3.L_PARTKEY WHERE - STARTSWITH(part.p_name, 'forest') -), _s7 AS ( + STARTSWITH(PART.p_name, 'forest') +), _S7 AS ( SELECT DISTINCT - partsupp.ps_suppkey - FROM tpch.partsupp AS partsupp - JOIN _s5 AS _s5 - ON _s5.p_partkey = partsupp.ps_partkey - AND partsupp.ps_availqty > ( - 0.5 * COALESCE(_s5.sum_l_quantity, 0) + PARTSUPP.ps_suppkey AS PS_SUPPKEY + FROM TPCH.PARTSUPP AS PARTSUPP + JOIN _S5 AS _S5 + ON PARTSUPP.ps_availqty > ( + 0.5 * COALESCE(_S5.SUM_L_QUANTITY, 0) ) + AND PARTSUPP.ps_partkey = _S5.P_PARTKEY ) SELECT - supplier.s_name AS S_NAME, - supplier.s_address AS S_ADDRESS -FROM tpch.supplier AS supplier -JOIN tpch.nation AS nation - ON nation.n_name = 'CANADA' AND nation.n_nationkey = supplier.s_nationkey -JOIN _s7 AS _s7 - ON _s7.ps_suppkey = supplier.s_suppkey + SUPPLIER.s_name AS S_NAME, + SUPPLIER.s_address AS S_ADDRESS +FROM TPCH.SUPPLIER AS SUPPLIER +JOIN TPCH.NATION AS NATION + ON NATION.n_name = 'CANADA' AND NATION.n_nationkey = SUPPLIER.s_nationkey +JOIN _S7 AS _S7 + ON SUPPLIER.s_suppkey = _S7.PS_SUPPKEY ORDER BY 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q21_mysql.sql b/tests/test_sql_refsols/tpch_q21_mysql.sql index 5288eb685..a8995442a 100644 --- a/tests/test_sql_refsols/tpch_q21_mysql.sql +++ b/tests/test_sql_refsols/tpch_q21_mysql.sql @@ -5,21 +5,21 @@ WITH _t5 AS ( l_orderkey, l_receiptdate, l_suppkey - FROM tpch.lineitem + FROM tpch.LINEITEM WHERE l_commitdate < l_receiptdate ), _t3 AS ( SELECT ANY_VALUE(_t5.l_suppkey) AS anything_l_suppkey, - ANY_VALUE(orders.o_orderstatus) AS anything_o_orderstatus, + ANY_VALUE(ORDERS.o_orderstatus) AS anything_o_orderstatus, _t5.l_linenumber, _t5.l_orderkey, - orders.o_orderkey + ORDERS.o_orderkey FROM _t5 AS _t5 - JOIN tpch.orders AS orders - ON _t5.l_orderkey = orders.o_orderkey - JOIN tpch.lineitem AS lineitem - ON _t5.l_suppkey <> lineitem.l_suppkey AND lineitem.l_orderkey = orders.o_orderkey + JOIN tpch.ORDERS AS ORDERS + ON ORDERS.o_orderkey = _t5.l_orderkey + JOIN tpch.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _t5.l_suppkey GROUP BY 3, 4, @@ -28,14 +28,14 @@ WITH _t5 AS ( SELECT _t6.l_linenumber AS _u_1, _t6.l_orderkey AS _u_2, - orders.o_orderkey AS _u_3 + ORDERS.o_orderkey AS _u_3 FROM _t5 AS _t6 - JOIN tpch.orders AS orders - ON _t6.l_orderkey = orders.o_orderkey - JOIN tpch.lineitem AS lineitem - ON _t6.l_suppkey <> lineitem.l_suppkey - AND lineitem.l_commitdate < lineitem.l_receiptdate - AND lineitem.l_orderkey = orders.o_orderkey + JOIN tpch.ORDERS AS ORDERS + ON ORDERS.o_orderkey = _t6.l_orderkey + JOIN tpch.LINEITEM AS LINEITEM + ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate + AND LINEITEM.l_orderkey = ORDERS.o_orderkey + AND LINEITEM.l_suppkey <> _t6.l_suppkey GROUP BY 1, 2, @@ -55,13 +55,13 @@ WITH _t5 AS ( 2 ) SELECT - s_name COLLATE utf8mb4_bin AS S_NAME, + SUPPLIER.s_name COLLATE utf8mb4_bin AS S_NAME, COALESCE(_s13.n_rows, 0) AS NUMWAIT -FROM tpch.supplier AS supplier -JOIN tpch.nation AS nation - ON nation.n_name = 'SAUDI ARABIA' AND nation.n_nationkey = supplier.s_nationkey +FROM tpch.SUPPLIER AS SUPPLIER +JOIN tpch.NATION AS NATION + ON NATION.n_name = 'SAUDI ARABIA' AND NATION.n_nationkey = SUPPLIER.s_nationkey LEFT JOIN _s13 AS _s13 - ON _s13.anything_l_suppkey = supplier.s_suppkey + ON SUPPLIER.s_suppkey = _s13.anything_l_suppkey ORDER BY 2 DESC, 1 diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql index d2b7c0da2..1a48842f6 100644 --- a/tests/test_sql_refsols/tpch_q21_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -1,67 +1,67 @@ -WITH _t5 AS ( +WITH _T5 AS ( SELECT - l_commitdate, - l_linenumber, - l_orderkey, - l_receiptdate, - l_suppkey - FROM tpch.lineitem + l_commitdate AS L_COMMITDATE, + l_linenumber AS L_LINENUMBER, + l_orderkey AS L_ORDERKEY, + l_receiptdate AS L_RECEIPTDATE, + l_suppkey AS L_SUPPKEY + FROM TPCH.LINEITEM WHERE l_commitdate < l_receiptdate -), _t3 AS ( +), _T3 AS ( SELECT - ANY_VALUE(_t5.l_suppkey) AS anything_l_suppkey, - ANY_VALUE(orders.o_orderstatus) AS anything_o_orderstatus, - _t5.l_linenumber, - _t5.l_orderkey, - orders.o_orderkey - FROM _t5 AS _t5 - JOIN tpch.orders AS orders - ON _t5.l_orderkey = orders.o_orderkey - JOIN tpch.lineitem AS lineitem - ON _t5.l_suppkey <> lineitem.l_suppkey AND lineitem.l_orderkey = orders.o_orderkey + ANY_VALUE(_T5.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, + ANY_VALUE(ORDERS.o_orderstatus) AS ANYTHING_O_ORDERSTATUS, + _T5.L_LINENUMBER, + _T5.L_ORDERKEY, + ORDERS.o_orderkey AS O_ORDERKEY + FROM _T5 AS _T5 + JOIN TPCH.ORDERS AS ORDERS + ON ORDERS.o_orderkey = _T5.L_ORDERKEY + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T5.L_SUPPKEY GROUP BY 3, 4, 5 ), _u_0 AS ( SELECT - _t6.l_linenumber AS _u_1, - _t6.l_orderkey AS _u_2, - orders.o_orderkey AS _u_3 - FROM _t5 AS _t6 - JOIN tpch.orders AS orders - ON _t6.l_orderkey = orders.o_orderkey - JOIN tpch.lineitem AS lineitem - ON _t6.l_suppkey <> lineitem.l_suppkey - AND lineitem.l_commitdate < lineitem.l_receiptdate - AND lineitem.l_orderkey = orders.o_orderkey + _T6.L_LINENUMBER AS _u_1, + _T6.L_ORDERKEY AS _u_2, + ORDERS.o_orderkey AS _u_3 + FROM _T5 AS _T6 + JOIN TPCH.ORDERS AS ORDERS + ON ORDERS.o_orderkey = _T6.L_ORDERKEY + JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate + AND LINEITEM.l_orderkey = ORDERS.o_orderkey + AND LINEITEM.l_suppkey <> _T6.L_SUPPKEY GROUP BY 1, 2, 3 -), _s13 AS ( +), _S13 AS ( SELECT - COUNT(*) AS n_rows, - _t3.anything_l_suppkey - FROM _t3 AS _t3 + COUNT(*) AS N_ROWS, + _T3.ANYTHING_L_SUPPKEY + FROM _T3 AS _T3 LEFT JOIN _u_0 AS _u_0 - ON _t3.l_linenumber = _u_0._u_1 - AND _t3.l_orderkey = _u_0._u_2 - AND _t3.o_orderkey = _u_0._u_3 + ON _T3.L_LINENUMBER = _u_0._u_1 + AND _T3.L_ORDERKEY = _u_0._u_2 + AND _T3.O_ORDERKEY = _u_0._u_3 WHERE - _t3.anything_o_orderstatus = 'F' AND _u_0._u_1 IS NULL + _T3.ANYTHING_O_ORDERSTATUS = 'F' AND _u_0._u_1 IS NULL GROUP BY 2 ) SELECT - supplier.s_name AS S_NAME, - COALESCE(_s13.n_rows, 0) AS NUMWAIT -FROM tpch.supplier AS supplier -JOIN tpch.nation AS nation - ON nation.n_name = 'SAUDI ARABIA' AND nation.n_nationkey = supplier.s_nationkey -LEFT JOIN _s13 AS _s13 - ON _s13.anything_l_suppkey = supplier.s_suppkey + SUPPLIER.s_name AS S_NAME, + COALESCE(_S13.N_ROWS, 0) AS NUMWAIT +FROM TPCH.SUPPLIER AS SUPPLIER +JOIN TPCH.NATION AS NATION + ON NATION.n_name = 'SAUDI ARABIA' AND NATION.n_nationkey = SUPPLIER.s_nationkey +LEFT JOIN _S13 AS _S13 + ON SUPPLIER.s_suppkey = _S13.ANYTHING_L_SUPPKEY ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q22_mysql.sql b/tests/test_sql_refsols/tpch_q22_mysql.sql index f7a191ff6..bd20251f5 100644 --- a/tests/test_sql_refsols/tpch_q22_mysql.sql +++ b/tests/test_sql_refsols/tpch_q22_mysql.sql @@ -1,28 +1,28 @@ WITH _s0 AS ( SELECT AVG(c_acctbal) AS global_avg_balance - FROM tpch.customer + FROM tpch.CUSTOMER WHERE - SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') - AND c_acctbal > 0.0 + c_acctbal > 0.0 + AND SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') ), _s3 AS ( SELECT COUNT(*) AS n_rows, o_custkey - FROM tpch.orders + FROM tpch.ORDERS GROUP BY 2 ) SELECT - cntry_code COLLATE utf8mb4_bin AS CNTRY_CODE, + SUBSTRING(CUSTOMER.c_phone, 1, 2) COLLATE utf8mb4_bin AS CNTRY_CODE, COUNT(*) AS NUM_CUSTS, - COALESCE(SUM(customer.c_acctbal), 0) AS TOTACCTBAL + COALESCE(SUM(CUSTOMER.c_acctbal), 0) AS TOTACCTBAL FROM _s0 AS _s0 -JOIN tpch.customer AS customer - ON SUBSTRING(customer.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') - AND _s0.global_avg_balance < customer.c_acctbal +JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_acctbal > _s0.global_avg_balance + AND SUBSTRING(CUSTOMER.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') LEFT JOIN _s3 AS _s3 - ON _s3.o_custkey = customer.c_custkey + ON CUSTOMER.c_custkey = _s3.o_custkey WHERE _s3.n_rows = 0 OR _s3.n_rows IS NULL GROUP BY diff --git a/tests/test_sql_refsols/tpch_q22_snowflake.sql b/tests/test_sql_refsols/tpch_q22_snowflake.sql index 6b975db02..c95df37aa 100644 --- a/tests/test_sql_refsols/tpch_q22_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q22_snowflake.sql @@ -1,30 +1,30 @@ -WITH _s0 AS ( +WITH _S0 AS ( SELECT - AVG(c_acctbal) AS global_avg_balance - FROM tpch.customer + AVG(c_acctbal) AS GLOBAL_AVG_BALANCE + FROM TPCH.CUSTOMER WHERE - SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') - AND c_acctbal > 0.0 -), _s3 AS ( + c_acctbal > 0.0 + AND SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') +), _S3 AS ( SELECT - COUNT(*) AS n_rows, - o_custkey - FROM tpch.orders + COUNT(*) AS N_ROWS, + o_custkey AS O_CUSTKEY + FROM TPCH.ORDERS GROUP BY 2 ) SELECT - SUBSTRING(customer.c_phone, 1, 2) AS CNTRY_CODE, + SUBSTRING(CUSTOMER.c_phone, 1, 2) AS CNTRY_CODE, COUNT(*) AS NUM_CUSTS, - COALESCE(SUM(customer.c_acctbal), 0) AS TOTACCTBAL -FROM _s0 AS _s0 -JOIN tpch.customer AS customer - ON SUBSTRING(customer.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') - AND _s0.global_avg_balance < customer.c_acctbal -LEFT JOIN _s3 AS _s3 - ON _s3.o_custkey = customer.c_custkey + COALESCE(SUM(CUSTOMER.c_acctbal), 0) AS TOTACCTBAL +FROM _S0 AS _S0 +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_acctbal > _S0.GLOBAL_AVG_BALANCE + AND SUBSTRING(CUSTOMER.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') +LEFT JOIN _S3 AS _S3 + ON CUSTOMER.c_custkey = _S3.O_CUSTKEY WHERE - _s3.n_rows = 0 OR _s3.n_rows IS NULL + _S3.N_ROWS = 0 OR _S3.N_ROWS IS NULL GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q2_mysql.sql b/tests/test_sql_refsols/tpch_q2_mysql.sql index 9a85be29b..8dbffd175 100644 --- a/tests/test_sql_refsols/tpch_q2_mysql.sql +++ b/tests/test_sql_refsols/tpch_q2_mysql.sql @@ -1,25 +1,25 @@ WITH _t AS ( SELECT - nation.n_name, - part.p_mfgr, - part.p_partkey, - supplier.s_acctbal, - supplier.s_address, - supplier.s_comment, - supplier.s_name, - supplier.s_phone, - RANK() OVER (PARTITION BY partsupp.ps_partkey ORDER BY CASE WHEN partsupp.ps_supplycost IS NULL THEN 1 ELSE 0 END, partsupp.ps_supplycost) AS _w - FROM tpch.part AS part - JOIN tpch.partsupp AS partsupp - ON part.p_partkey = partsupp.ps_partkey - JOIN tpch.supplier AS supplier - ON partsupp.ps_suppkey = supplier.s_suppkey - JOIN tpch.nation AS nation - ON nation.n_nationkey = supplier.s_nationkey - JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'EUROPE' + NATION.n_name, + PART.p_mfgr, + PART.p_partkey, + SUPPLIER.s_acctbal, + SUPPLIER.s_address, + SUPPLIER.s_comment, + SUPPLIER.s_name, + SUPPLIER.s_phone, + RANK() OVER (PARTITION BY PARTSUPP.ps_partkey ORDER BY CASE WHEN PARTSUPP.ps_supplycost IS NULL THEN 1 ELSE 0 END, PARTSUPP.ps_supplycost) AS _w + FROM tpch.PART AS PART + JOIN tpch.PARTSUPP AS PARTSUPP + ON PART.p_partkey = PARTSUPP.ps_partkey + JOIN tpch.SUPPLIER AS SUPPLIER + ON PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey + JOIN tpch.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey + JOIN tpch.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'EUROPE' WHERE - part.p_size = 15 AND part.p_type LIKE '%BRASS' + PART.p_size = 15 AND PART.p_type LIKE '%BRASS' ) SELECT s_acctbal AS S_ACCTBAL, diff --git a/tests/test_sql_refsols/tpch_q2_snowflake.sql b/tests/test_sql_refsols/tpch_q2_snowflake.sql index b256ac78c..346be1649 100644 --- a/tests/test_sql_refsols/tpch_q2_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q2_snowflake.sql @@ -1,37 +1,37 @@ -WITH _t1 AS ( +WITH _T1 AS ( SELECT - nation.n_name, - part.p_mfgr, - part.p_partkey, - supplier.s_acctbal, - supplier.s_address, - supplier.s_comment, - supplier.s_name, - supplier.s_phone - FROM tpch.part AS part - JOIN tpch.partsupp AS partsupp - ON part.p_partkey = partsupp.ps_partkey - JOIN tpch.supplier AS supplier - ON partsupp.ps_suppkey = supplier.s_suppkey - JOIN tpch.nation AS nation - ON nation.n_nationkey = supplier.s_nationkey - JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'EUROPE' + NATION.n_name AS N_NAME, + PART.p_mfgr AS P_MFGR, + PART.p_partkey AS P_PARTKEY, + SUPPLIER.s_acctbal AS S_ACCTBAL, + SUPPLIER.s_address AS S_ADDRESS, + SUPPLIER.s_comment AS S_COMMENT, + SUPPLIER.s_name AS S_NAME, + SUPPLIER.s_phone AS S_PHONE + FROM TPCH.PART AS PART + JOIN TPCH.PARTSUPP AS PARTSUPP + ON PART.p_partkey = PARTSUPP.ps_partkey + JOIN TPCH.SUPPLIER AS SUPPLIER + ON PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey + JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey + JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'EUROPE' WHERE - ENDSWITH(part.p_type, 'BRASS') AND part.p_size = 15 + ENDSWITH(PART.p_type, 'BRASS') AND PART.p_size = 15 QUALIFY - RANK() OVER (PARTITION BY partsupp.ps_partkey ORDER BY partsupp.ps_supplycost) = 1 + RANK() OVER (PARTITION BY PARTSUPP.ps_partkey ORDER BY PARTSUPP.ps_supplycost) = 1 ) SELECT - s_acctbal AS S_ACCTBAL, - s_name AS S_NAME, - n_name AS N_NAME, - p_partkey AS P_PARTKEY, - p_mfgr AS P_MFGR, - s_address AS S_ADDRESS, - s_phone AS S_PHONE, - s_comment AS S_COMMENT -FROM _t1 + S_ACCTBAL, + S_NAME, + N_NAME, + P_PARTKEY, + P_MFGR, + S_ADDRESS, + S_PHONE, + S_COMMENT +FROM _T1 ORDER BY 1 DESC NULLS LAST, 3 NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q3_mysql.sql b/tests/test_sql_refsols/tpch_q3_mysql.sql index 9be0110e7..e8aedea94 100644 --- a/tests/test_sql_refsols/tpch_q3_mysql.sql +++ b/tests/test_sql_refsols/tpch_q3_mysql.sql @@ -1,18 +1,18 @@ SELECT - lineitem.l_orderkey AS L_ORDERKEY, - COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + LINEITEM.l_orderkey AS L_ORDERKEY, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS REVENUE, - orders.o_orderdate AS O_ORDERDATE, - orders.o_shippriority AS O_SHIPPRIORITY -FROM tpch.orders AS orders -JOIN tpch.customer AS customer - ON customer.c_custkey = orders.o_custkey AND customer.c_mktsegment = 'BUILDING' -JOIN tpch.lineitem AS lineitem - ON lineitem.l_orderkey = orders.o_orderkey - AND lineitem.l_shipdate > CAST('1995-03-15' AS DATE) + ORDERS.o_orderdate AS O_ORDERDATE, + ORDERS.o_shippriority AS O_SHIPPRIORITY +FROM tpch.ORDERS AS ORDERS +JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey AND CUSTOMER.c_mktsegment = 'BUILDING' +JOIN tpch.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + AND LINEITEM.l_shipdate > CAST('1995-03-15' AS DATE) WHERE - orders.o_orderdate < CAST('1995-03-15' AS DATE) + ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) GROUP BY 1, 3, diff --git a/tests/test_sql_refsols/tpch_q3_snowflake.sql b/tests/test_sql_refsols/tpch_q3_snowflake.sql index 6804cc526..8c0db572f 100644 --- a/tests/test_sql_refsols/tpch_q3_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q3_snowflake.sql @@ -1,18 +1,18 @@ SELECT - lineitem.l_orderkey AS L_ORDERKEY, - COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + LINEITEM.l_orderkey AS L_ORDERKEY, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS REVENUE, - orders.o_orderdate AS O_ORDERDATE, - orders.o_shippriority AS O_SHIPPRIORITY -FROM tpch.orders AS orders -JOIN tpch.customer AS customer - ON customer.c_custkey = orders.o_custkey AND customer.c_mktsegment = 'BUILDING' -JOIN tpch.lineitem AS lineitem - ON lineitem.l_orderkey = orders.o_orderkey - AND lineitem.l_shipdate > CAST('1995-03-15' AS DATE) + ORDERS.o_orderdate AS O_ORDERDATE, + ORDERS.o_shippriority AS O_SHIPPRIORITY +FROM TPCH.ORDERS AS ORDERS +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey AND CUSTOMER.c_mktsegment = 'BUILDING' +JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + AND LINEITEM.l_shipdate > CAST('1995-03-15' AS DATE) WHERE - orders.o_orderdate < CAST('1995-03-15' AS DATE) + ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) GROUP BY 1, 3, diff --git a/tests/test_sql_refsols/tpch_q4_mysql.sql b/tests/test_sql_refsols/tpch_q4_mysql.sql index 2188c1ef4..4445a7ba6 100644 --- a/tests/test_sql_refsols/tpch_q4_mysql.sql +++ b/tests/test_sql_refsols/tpch_q4_mysql.sql @@ -1,21 +1,21 @@ WITH _u_0 AS ( SELECT l_orderkey AS _u_1 - FROM tpch.lineitem + FROM tpch.LINEITEM WHERE l_commitdate < l_receiptdate GROUP BY 1 ) SELECT - o_orderpriority COLLATE utf8mb4_bin AS O_ORDERPRIORITY, + ORDERS.o_orderpriority COLLATE utf8mb4_bin AS O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT -FROM tpch.orders AS orders +FROM tpch.ORDERS AS ORDERS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = orders.o_orderkey + ON ORDERS.o_orderkey = _u_0._u_1 WHERE - EXTRACT(QUARTER FROM CAST(orders.o_orderdate AS DATETIME)) = 3 - AND EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) = 1993 + EXTRACT(QUARTER FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 3 + AND EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) = 1993 AND NOT _u_0._u_1 IS NULL GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql index 95df76f42..08e5c4532 100644 --- a/tests/test_sql_refsols/tpch_q4_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -1,22 +1,22 @@ WITH _u_0 AS ( SELECT l_orderkey AS _u_1 - FROM tpch.lineitem + FROM TPCH.LINEITEM WHERE l_commitdate < l_receiptdate GROUP BY 1 ) SELECT - orders.o_orderpriority AS O_ORDERPRIORITY, + ORDERS.o_orderpriority AS O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT -FROM tpch.orders AS orders +FROM TPCH.ORDERS AS ORDERS LEFT JOIN _u_0 AS _u_0 - ON _u_0._u_1 = orders.o_orderkey + ON ORDERS.o_orderkey = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL - AND QUARTER(CAST(orders.o_orderdate AS TIMESTAMP)) = 3 - AND YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1993 + AND QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 3 + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q5_mysql.sql b/tests/test_sql_refsols/tpch_q5_mysql.sql index 53cada967..3c0568734 100644 --- a/tests/test_sql_refsols/tpch_q5_mysql.sql +++ b/tests/test_sql_refsols/tpch_q5_mysql.sql @@ -1,30 +1,30 @@ WITH _s11 AS ( SELECT - nation.n_name, - supplier.s_suppkey - FROM tpch.supplier AS supplier - JOIN tpch.nation AS nation - ON nation.n_nationkey = supplier.s_nationkey + NATION.n_name, + SUPPLIER.s_suppkey + FROM tpch.SUPPLIER AS SUPPLIER + JOIN tpch.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey ) SELECT - ANY_VALUE(nation.n_name) AS N_NAME, - COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + ANY_VALUE(NATION.n_name) AS N_NAME, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS REVENUE -FROM tpch.nation AS nation -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' -JOIN tpch.customer AS customer - ON customer.c_nationkey = nation.n_nationkey -JOIN tpch.orders AS orders - ON customer.c_custkey = orders.o_custkey - AND orders.o_orderdate < CAST('1995-01-01' AS DATE) - AND orders.o_orderdate >= CAST('1994-01-01' AS DATE) -JOIN tpch.lineitem AS lineitem - ON lineitem.l_orderkey = orders.o_orderkey +FROM tpch.NATION AS NATION +JOIN tpch.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' +JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN tpch.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) + AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) +JOIN tpch.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey JOIN _s11 AS _s11 - ON _s11.n_name = nation.n_name AND _s11.s_suppkey = lineitem.l_suppkey + ON LINEITEM.l_suppkey = _s11.s_suppkey AND NATION.n_name = _s11.n_name GROUP BY - nation.n_nationkey + NATION.n_nationkey ORDER BY 2 DESC diff --git a/tests/test_sql_refsols/tpch_q5_snowflake.sql b/tests/test_sql_refsols/tpch_q5_snowflake.sql index 443739351..ceadd5291 100644 --- a/tests/test_sql_refsols/tpch_q5_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q5_snowflake.sql @@ -1,30 +1,30 @@ -WITH _s11 AS ( +WITH _S11 AS ( SELECT - nation.n_name, - supplier.s_suppkey - FROM tpch.supplier AS supplier - JOIN tpch.nation AS nation - ON nation.n_nationkey = supplier.s_nationkey + NATION.n_name AS N_NAME, + SUPPLIER.s_suppkey AS S_SUPPKEY + FROM TPCH.SUPPLIER AS SUPPLIER + JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey ) SELECT - ANY_VALUE(nation.n_name) AS N_NAME, - COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + ANY_VALUE(NATION.n_name) AS N_NAME, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS REVENUE -FROM tpch.nation AS nation -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' -JOIN tpch.customer AS customer - ON customer.c_nationkey = nation.n_nationkey -JOIN tpch.orders AS orders - ON customer.c_custkey = orders.o_custkey - AND orders.o_orderdate < CAST('1995-01-01' AS DATE) - AND orders.o_orderdate >= CAST('1994-01-01' AS DATE) -JOIN tpch.lineitem AS lineitem - ON lineitem.l_orderkey = orders.o_orderkey -JOIN _s11 AS _s11 - ON _s11.n_name = nation.n_name AND _s11.s_suppkey = lineitem.l_suppkey +FROM TPCH.NATION AS NATION +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN TPCH.ORDERS AS ORDERS + ON CUSTOMER.c_custkey = ORDERS.o_custkey + AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) + AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) +JOIN TPCH.LINEITEM AS LINEITEM + ON LINEITEM.l_orderkey = ORDERS.o_orderkey +JOIN _S11 AS _S11 + ON LINEITEM.l_suppkey = _S11.S_SUPPKEY AND NATION.n_name = _S11.N_NAME GROUP BY - nation.n_nationkey + NATION.n_nationkey ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/tpch_q6_mysql.sql b/tests/test_sql_refsols/tpch_q6_mysql.sql index 93d3c085b..ab27699f4 100644 --- a/tests/test_sql_refsols/tpch_q6_mysql.sql +++ b/tests/test_sql_refsols/tpch_q6_mysql.sql @@ -1,6 +1,6 @@ SELECT COALESCE(SUM(l_extendedprice * l_discount), 0) AS REVENUE -FROM tpch.lineitem +FROM tpch.LINEITEM WHERE l_discount <= 0.07 AND l_discount >= 0.05 diff --git a/tests/test_sql_refsols/tpch_q6_snowflake.sql b/tests/test_sql_refsols/tpch_q6_snowflake.sql index 93d3c085b..7a58dc75a 100644 --- a/tests/test_sql_refsols/tpch_q6_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q6_snowflake.sql @@ -1,6 +1,6 @@ SELECT COALESCE(SUM(l_extendedprice * l_discount), 0) AS REVENUE -FROM tpch.lineitem +FROM TPCH.LINEITEM WHERE l_discount <= 0.07 AND l_discount >= 0.05 diff --git a/tests/test_sql_refsols/tpch_q7_mysql.sql b/tests/test_sql_refsols/tpch_q7_mysql.sql index 98c928103..5aad518ef 100644 --- a/tests/test_sql_refsols/tpch_q7_mysql.sql +++ b/tests/test_sql_refsols/tpch_q7_mysql.sql @@ -1,41 +1,41 @@ WITH _s9 AS ( SELECT - nation.n_name, - orders.o_orderkey - FROM tpch.orders AS orders - JOIN tpch.customer AS customer - ON customer.c_custkey = orders.o_custkey - JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey + NATION.n_name, + ORDERS.o_orderkey + FROM tpch.ORDERS AS ORDERS + JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey + JOIN tpch.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey AND ( - nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' + NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' ) ) SELECT - supp_nation COLLATE utf8mb4_bin AS SUPP_NATION, + NATION.n_name COLLATE utf8mb4_bin AS SUPP_NATION, _s9.n_name COLLATE utf8mb4_bin AS CUST_NATION, - EXTRACT(YEAR FROM CAST(lineitem.l_shipdate AS DATETIME)) AS L_YEAR, - COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + EXTRACT(YEAR FROM CAST(LINEITEM.l_shipdate AS DATETIME)) AS L_YEAR, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS REVENUE -FROM tpch.lineitem AS lineitem -JOIN tpch.supplier AS supplier - ON lineitem.l_suppkey = supplier.s_suppkey -JOIN tpch.nation AS nation - ON nation.n_nationkey = supplier.s_nationkey +FROM tpch.LINEITEM AS LINEITEM +JOIN tpch.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN tpch.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey JOIN _s9 AS _s9 - ON ( - _s9.n_name = 'FRANCE' OR nation.n_name = 'FRANCE' + ON LINEITEM.l_orderkey = _s9.o_orderkey + AND ( + NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' ) AND ( - _s9.n_name = 'GERMANY' OR nation.n_name = 'GERMANY' + NATION.n_name = 'FRANCE' OR _s9.n_name = 'FRANCE' ) - AND _s9.o_orderkey = lineitem.l_orderkey AND ( - nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' + NATION.n_name = 'GERMANY' OR _s9.n_name = 'GERMANY' ) WHERE - EXTRACT(YEAR FROM CAST(lineitem.l_shipdate AS DATETIME)) IN (1995, 1996) + EXTRACT(YEAR FROM CAST(LINEITEM.l_shipdate AS DATETIME)) IN (1995, 1996) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index 439889188..2d651a0f8 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -1,41 +1,41 @@ -WITH _s9 AS ( +WITH _S9 AS ( SELECT - nation.n_name, - orders.o_orderkey - FROM tpch.orders AS orders - JOIN tpch.customer AS customer - ON customer.c_custkey = orders.o_custkey - JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey + NATION.n_name AS N_NAME, + ORDERS.o_orderkey AS O_ORDERKEY + FROM TPCH.ORDERS AS ORDERS + JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey + JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey AND ( - nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' + NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' ) ) SELECT - nation.n_name AS SUPP_NATION, - _s9.n_name AS CUST_NATION, - YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) AS L_YEAR, - COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + NATION.n_name AS SUPP_NATION, + _S9.N_NAME AS CUST_NATION, + YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) AS L_YEAR, + COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS REVENUE -FROM tpch.lineitem AS lineitem -JOIN tpch.supplier AS supplier - ON lineitem.l_suppkey = supplier.s_suppkey -JOIN tpch.nation AS nation - ON nation.n_nationkey = supplier.s_nationkey -JOIN _s9 AS _s9 - ON ( - _s9.n_name = 'FRANCE' OR nation.n_name = 'FRANCE' +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey +JOIN _S9 AS _S9 + ON LINEITEM.l_orderkey = _S9.O_ORDERKEY + AND ( + NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' ) AND ( - _s9.n_name = 'GERMANY' OR nation.n_name = 'GERMANY' + NATION.n_name = 'FRANCE' OR _S9.N_NAME = 'FRANCE' ) - AND _s9.o_orderkey = lineitem.l_orderkey AND ( - nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' + NATION.n_name = 'GERMANY' OR _S9.N_NAME = 'GERMANY' ) WHERE - YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) IN (1995, 1996) + YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) IN (1995, 1996) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q8_mysql.sql b/tests/test_sql_refsols/tpch_q8_mysql.sql index 0ecdac7ba..997d3596f 100644 --- a/tests/test_sql_refsols/tpch_q8_mysql.sql +++ b/tests/test_sql_refsols/tpch_q8_mysql.sql @@ -1,34 +1,34 @@ SELECT - EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) AS O_YEAR, + EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) AS O_YEAR, COALESCE( SUM( CASE - WHEN nation_2.n_name = 'BRAZIL' - THEN lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + WHEN NATION_2.n_name = 'BRAZIL' + THEN LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount ) ELSE 0 END ), 0 - ) / COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS MKT_SHARE -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part - ON lineitem.l_partkey = part.p_partkey AND part.p_type = 'ECONOMY ANODIZED STEEL' -JOIN tpch.orders AS orders - ON EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) IN (1995, 1996) - AND lineitem.l_orderkey = orders.o_orderkey -JOIN tpch.customer AS customer - ON customer.c_custkey = orders.o_custkey -JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' -JOIN tpch.supplier AS supplier - ON lineitem.l_suppkey = supplier.s_suppkey -JOIN tpch.nation AS nation_2 - ON nation_2.n_nationkey = supplier.s_nationkey +FROM tpch.LINEITEM AS LINEITEM +JOIN tpch.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' +JOIN tpch.ORDERS AS ORDERS + ON EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) IN (1995, 1996) + AND LINEITEM.l_orderkey = ORDERS.o_orderkey +JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey +JOIN tpch.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN tpch.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' +JOIN tpch.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN tpch.NATION AS NATION_2 + ON NATION_2.n_nationkey = SUPPLIER.s_nationkey GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql index 599805c5c..38122ff7a 100644 --- a/tests/test_sql_refsols/tpch_q8_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -1,34 +1,34 @@ SELECT - YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) AS O_YEAR, + YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) AS O_YEAR, COALESCE( SUM( IFF( - nation_2.n_name = 'BRAZIL', - lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + NATION_2.n_name = 'BRAZIL', + LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount ), 0 ) ), 0 - ) / COALESCE(SUM(lineitem.l_extendedprice * ( - 1 - lineitem.l_discount + ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount )), 0) AS MKT_SHARE -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part - ON lineitem.l_partkey = part.p_partkey AND part.p_type = 'ECONOMY ANODIZED STEEL' -JOIN tpch.orders AS orders - ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) IN (1995, 1996) - AND lineitem.l_orderkey = orders.o_orderkey -JOIN tpch.customer AS customer - ON customer.c_custkey = orders.o_custkey -JOIN tpch.nation AS nation - ON customer.c_nationkey = nation.n_nationkey -JOIN tpch.region AS region - ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' -JOIN tpch.supplier AS supplier - ON lineitem.l_suppkey = supplier.s_suppkey -JOIN tpch.nation AS nation_2 - ON nation_2.n_nationkey = supplier.s_nationkey +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' +JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey + AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) IN (1995, 1996) +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_custkey = ORDERS.o_custkey +JOIN TPCH.NATION AS NATION + ON CUSTOMER.c_nationkey = NATION.n_nationkey +JOIN TPCH.REGION AS REGION + ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' +JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.NATION AS NATION_2 + ON NATION_2.n_nationkey = SUPPLIER.s_nationkey GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q9_mysql.sql b/tests/test_sql_refsols/tpch_q9_mysql.sql index 7500a5171..1b7d0331b 100644 --- a/tests/test_sql_refsols/tpch_q9_mysql.sql +++ b/tests/test_sql_refsols/tpch_q9_mysql.sql @@ -1,26 +1,26 @@ SELECT - nation.n_name COLLATE utf8mb4_bin AS NATION, - EXTRACT(YEAR FROM CAST(orders.o_orderdate AS DATETIME)) AS O_YEAR, + NATION.n_name COLLATE utf8mb4_bin AS NATION, + EXTRACT(YEAR FROM CAST(ORDERS.o_orderdate AS DATETIME)) AS O_YEAR, COALESCE( SUM( - lineitem.l_extendedprice * ( - 1 - lineitem.l_discount - ) - partsupp.ps_supplycost * lineitem.l_quantity + LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity ), 0 ) AS AMOUNT -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part - ON lineitem.l_partkey = part.p_partkey AND part.p_name LIKE '%green%' -JOIN tpch.supplier AS supplier - ON lineitem.l_suppkey = supplier.s_suppkey -JOIN tpch.nation AS nation - ON nation.n_nationkey = supplier.s_nationkey -JOIN tpch.orders AS orders - ON lineitem.l_orderkey = orders.o_orderkey -JOIN tpch.partsupp AS partsupp - ON lineitem.l_partkey = partsupp.ps_partkey - AND lineitem.l_suppkey = partsupp.ps_suppkey +FROM tpch.LINEITEM AS LINEITEM +JOIN tpch.PART AS PART + ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_name LIKE '%green%' +JOIN tpch.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN tpch.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey +JOIN tpch.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey +JOIN tpch.PARTSUPP AS PARTSUPP + ON LINEITEM.l_partkey = PARTSUPP.ps_partkey + AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index 1268e47bc..47c6ab423 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -1,26 +1,26 @@ SELECT - nation.n_name AS NATION, - YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) AS O_YEAR, + NATION.n_name AS NATION, + YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) AS O_YEAR, COALESCE( SUM( - lineitem.l_extendedprice * ( - 1 - lineitem.l_discount - ) - partsupp.ps_supplycost * lineitem.l_quantity + LINEITEM.l_extendedprice * ( + 1 - LINEITEM.l_discount + ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity ), 0 ) AS AMOUNT -FROM tpch.lineitem AS lineitem -JOIN tpch.part AS part - ON CONTAINS(part.p_name, 'green') AND lineitem.l_partkey = part.p_partkey -JOIN tpch.supplier AS supplier - ON lineitem.l_suppkey = supplier.s_suppkey -JOIN tpch.nation AS nation - ON nation.n_nationkey = supplier.s_nationkey -JOIN tpch.orders AS orders - ON lineitem.l_orderkey = orders.o_orderkey -JOIN tpch.partsupp AS partsupp - ON lineitem.l_partkey = partsupp.ps_partkey - AND lineitem.l_suppkey = partsupp.ps_suppkey +FROM TPCH.LINEITEM AS LINEITEM +JOIN TPCH.PART AS PART + ON CONTAINS(PART.p_name, 'green') AND LINEITEM.l_partkey = PART.p_partkey +JOIN TPCH.SUPPLIER AS SUPPLIER + ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey +JOIN TPCH.NATION AS NATION + ON NATION.n_nationkey = SUPPLIER.s_nationkey +JOIN TPCH.ORDERS AS ORDERS + ON LINEITEM.l_orderkey = ORDERS.o_orderkey +JOIN TPCH.PARTSUPP AS PARTSUPP + ON LINEITEM.l_partkey = PARTSUPP.ps_partkey + AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_mysql.sql b/tests/test_sql_refsols/unary_and_slicing_operators_mysql.sql index e606ff598..2cb15ddc5 100644 --- a/tests/test_sql_refsols/unary_and_slicing_operators_mysql.sql +++ b/tests/test_sql_refsols/unary_and_slicing_operators_mysql.sql @@ -14,4 +14,4 @@ SELECT END ) AS name_second_to_last_char, c_acctbal >= 0 AS is_not_in_debt -FROM tpch.customer +FROM tpch.CUSTOMER diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql index b80ccca12..9b12e2240 100644 --- a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql +++ b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql @@ -61,4 +61,4 @@ SELECT END ) AS name_second_to_last_char, c_acctbal >= 0 AS is_not_in_debt -FROM tpch.customer +FROM TPCH.CUSTOMER diff --git a/tests/test_sql_refsols/week_offset_mysql.sql b/tests/test_sql_refsols/week_offset_mysql.sql index 8e509a22f..e26dedbca 100644 --- a/tests/test_sql_refsols/week_offset_mysql.sql +++ b/tests/test_sql_refsols/week_offset_mysql.sql @@ -7,7 +7,7 @@ SELECT DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' DAY), INTERVAL '2' WEEK) AS week_adj5, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '-1' MINUTE), INTERVAL '2' WEEK) AS week_adj6, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' YEAR), INTERVAL '2' WEEK) AS week_adj8 -FROM main.sbtransaction +FROM main.sbTransaction WHERE EXTRACT(DAY FROM CAST(sbtxdatetime AS DATETIME)) > 1 AND EXTRACT(YEAR FROM CAST(sbtxdatetime AS DATETIME)) < 2025 diff --git a/tests/test_sql_refsols/week_offset_snowflake.sql b/tests/test_sql_refsols/week_offset_snowflake.sql index 821cbdac1..f1b7c6267 100644 --- a/tests/test_sql_refsols/week_offset_snowflake.sql +++ b/tests/test_sql_refsols/week_offset_snowflake.sql @@ -7,7 +7,7 @@ SELECT DATEADD(WEEK, 2, DATEADD(DAY, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj5, DATEADD(WEEK, 2, DATEADD(MINUTE, -1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj6, DATEADD(WEEK, 2, DATEADD(YEAR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj8 -FROM main.sbtransaction +FROM MAIN.SBTRANSACTION WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/window_functions_mysql.sql b/tests/test_sql_refsols/window_functions_mysql.sql index 925752215..62661daa7 100644 --- a/tests/test_sql_refsols/window_functions_mysql.sql +++ b/tests/test_sql_refsols/window_functions_mysql.sql @@ -1,15 +1,15 @@ SELECT - DENSE_RANK() OVER (ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END DESC, customer.c_acctbal DESC) AS rank_value, - NTILE(10) OVER (ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal) AS precentile_value, - LAG(customer.c_acctbal, 2, 0.0) OVER (PARTITION BY nation.n_regionkey ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal) AS two_prev_value, - LEAD(customer.c_acctbal, 2) OVER (PARTITION BY customer.c_nationkey ORDER BY CASE WHEN customer.c_acctbal IS NULL THEN 1 ELSE 0 END, customer.c_acctbal) AS two_next_value, - SUM(customer.c_acctbal) OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, - SUM(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, - customer.c_acctbal / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, - customer.c_acctbal / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, - customer.c_acctbal / COUNT(*) OVER () AS relsize_value -FROM tpch.region AS region -JOIN tpch.nation AS nation - ON nation.n_regionkey = region.r_regionkey -JOIN tpch.customer AS customer - ON customer.c_nationkey = nation.n_nationkey + DENSE_RANK() OVER (ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END DESC, CUSTOMER.c_acctbal DESC) AS rank_value, + NTILE(10) OVER (ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal) AS precentile_value, + LAG(CUSTOMER.c_acctbal, 2, 0.0) OVER (PARTITION BY NATION.n_regionkey ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal) AS two_prev_value, + LEAD(CUSTOMER.c_acctbal, 2) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CASE WHEN CUSTOMER.c_acctbal IS NULL THEN 1 ELSE 0 END, CUSTOMER.c_acctbal) AS two_next_value, + SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, + SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, + CUSTOMER.c_acctbal / AVG(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, + CUSTOMER.c_acctbal / COUNT(CASE WHEN CUSTOMER.c_acctbal > 0.0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS relcount_value, + CUSTOMER.c_acctbal / COUNT(*) OVER () AS relsize_value +FROM tpch.REGION AS REGION +JOIN tpch.NATION AS NATION + ON NATION.n_regionkey = REGION.r_regionkey +JOIN tpch.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey diff --git a/tests/test_sql_refsols/window_functions_snowflake.sql b/tests/test_sql_refsols/window_functions_snowflake.sql index 63535e1b4..a2ac63af7 100644 --- a/tests/test_sql_refsols/window_functions_snowflake.sql +++ b/tests/test_sql_refsols/window_functions_snowflake.sql @@ -1,15 +1,15 @@ SELECT - DENSE_RANK() OVER (ORDER BY customer.c_acctbal DESC) AS rank_value, - NTILE(10) OVER (ORDER BY customer.c_acctbal) AS precentile_value, - LAG(customer.c_acctbal, 2, 0.0) OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal) AS two_prev_value, - LEAD(customer.c_acctbal, 2) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal) AS two_next_value, - SUM(customer.c_acctbal) OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, - SUM(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, - customer.c_acctbal / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, - customer.c_acctbal / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, - customer.c_acctbal / COUNT(*) OVER () AS relsize_value -FROM tpch.region AS region -JOIN tpch.nation AS nation - ON nation.n_regionkey = region.r_regionkey -JOIN tpch.customer AS customer - ON customer.c_nationkey = nation.n_nationkey + DENSE_RANK() OVER (ORDER BY CUSTOMER.c_acctbal DESC) AS rank_value, + NTILE(10) OVER (ORDER BY CUSTOMER.c_acctbal) AS precentile_value, + LAG(CUSTOMER.c_acctbal, 2, 0.0) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal) AS two_prev_value, + LEAD(CUSTOMER.c_acctbal, 2) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal) AS two_next_value, + SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, + SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, + CUSTOMER.c_acctbal / AVG(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, + CUSTOMER.c_acctbal / COUNT(CASE WHEN CUSTOMER.c_acctbal > 0.0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS relcount_value, + CUSTOMER.c_acctbal / COUNT(*) OVER () AS relsize_value +FROM TPCH.REGION AS REGION +JOIN TPCH.NATION AS NATION + ON NATION.n_regionkey = REGION.r_regionkey +JOIN TPCH.CUSTOMER AS CUSTOMER + ON CUSTOMER.c_nationkey = NATION.n_nationkey diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql index 3eb15239a..e3ecc2587 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql @@ -1,16 +1,16 @@ SELECT - sbtransaction.sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM main.sbcustomer AS sbcustomer -JOIN main.sbtransaction AS sbtransaction - ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + sbTransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbCustomer AS sbCustomer +JOIN main.sbTransaction AS sbTransaction + ON sbCustomer.sbcustid = sbTransaction.sbtxcustid ORDER BY - sbtransaction.sbtxdatetime + sbTransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql index 842523261..6741c2f15 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql @@ -1,16 +1,16 @@ SELECT - sbtransaction.sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM main.sbcustomer AS sbcustomer -JOIN main.sbtransaction AS sbtransaction - ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + SBTRANSACTION.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid ORDER BY - sbtransaction.sbtxdatetime NULLS FIRST + SBTRANSACTION.sbtxdatetime NULLS FIRST LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql index 02578f25c..ff2f29e69 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql @@ -1,16 +1,16 @@ SELECT - sbtransaction.sbtxid AS transaction_id, - SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM main.sbcustomer AS sbcustomer -JOIN main.sbtransaction AS sbtransaction - ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + sbTransaction.sbtxid AS transaction_id, + SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbCustomer AS sbCustomer +JOIN main.sbTransaction AS sbTransaction + ON sbCustomer.sbcustid = sbTransaction.sbtxcustid ORDER BY - sbtransaction.sbtxdatetime + sbTransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql index 449e8361d..451e75183 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql @@ -1,16 +1,16 @@ SELECT - sbtransaction.sbtxid AS transaction_id, - SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM main.sbcustomer AS sbcustomer -JOIN main.sbtransaction AS sbtransaction - ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + SBTRANSACTION.sbtxid AS transaction_id, + SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM MAIN.SBCUSTOMER AS SBCUSTOMER +JOIN MAIN.SBTRANSACTION AS SBTRANSACTION + ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid ORDER BY - sbtransaction.sbtxdatetime NULLS FIRST + SBTRANSACTION.sbtxdatetime NULLS FIRST LIMIT 8 From ed8f82e4adcf73cf93f7a18b0639af4d3ac70c4c Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 25 Aug 2025 16:16:48 -0700 Subject: [PATCH 41/46] modify week_offset to be like mysql for consistency --- tests/test_pipeline_defog_custom.py | 101 ++--- tests/test_pipeline_mysql.py | 217 ++++++++++- tests/test_pipeline_sf.py | 565 ++++++++++++++++++++++++++++ 3 files changed, 805 insertions(+), 78 deletions(-) create mode 100644 tests/test_pipeline_sf.py diff --git a/tests/test_pipeline_defog_custom.py b/tests/test_pipeline_defog_custom.py index 16d55ad3d..0c2cf3fdb 100644 --- a/tests/test_pipeline_defog_custom.py +++ b/tests/test_pipeline_defog_custom.py @@ -65,7 +65,6 @@ time_threshold_reached, transaction_week_sampler, week_offset, - week_offset7, window_sliding_frame_relsize, window_sliding_frame_relsum, years_months_days_hours_datediff, @@ -1368,6 +1367,35 @@ def get_day_of_week( "2023-03-14 15:59:00", "2023-04-13 09:44:00", ], + "week_adj7": [ + "2023-05-16 09:30:00", + "2023-05-16 10:15:00", + "2023-05-16 11:00:00", + "2023-05-16 11:45:00", + "2023-05-16 12:30:00", + "2023-05-16 13:15:00", + "2023-05-16 14:00:00", + "2023-05-16 14:45:00", + "2023-05-16 15:30:00", + "2023-05-16 16:15:00", + "2023-05-17 09:30:00", + "2023-05-17 10:15:00", + "2023-05-17 11:00:00", + "2023-05-17 11:45:00", + "2023-05-17 12:30:00", + "2023-05-17 13:15:00", + "2023-05-17 14:00:00", + "2023-05-17 14:45:00", + "2023-05-17 15:30:00", + "2023-05-17 16:15:00", + "2023-03-01 10:00:00", + "2023-03-02 10:30:00", + "2023-04-03 11:30:00", + "2023-05-09 14:45:00", + "2023-03-16 13:15:00", + "2023-04-11 16:00:00", + "2023-05-14 09:45:00", + ], "week_adj8": [ "2024-04-16 09:30:00", "2024-04-16 10:15:00", @@ -1404,77 +1432,6 @@ def get_day_of_week( ), id="week_offset", ), - pytest.param( - PyDoughPandasTest( - week_offset7, - "Broker", - lambda: pd.DataFrame( - { - "date_time": [ - "2023-04-02 09:30:00", - "2023-04-02 10:15:00", - "2023-04-02 11:00:00", - "2023-04-02 11:45:00", - "2023-04-02 12:30:00", - "2023-04-02 13:15:00", - "2023-04-02 14:00:00", - "2023-04-02 14:45:00", - "2023-04-02 15:30:00", - "2023-04-02 16:15:00", - "2023-04-03 09:30:00", - "2023-04-03 10:15:00", - "2023-04-03 11:00:00", - "2023-04-03 11:45:00", - "2023-04-03 12:30:00", - "2023-04-03 13:15:00", - "2023-04-03 14:00:00", - "2023-04-03 14:45:00", - "2023-04-03 15:30:00", - "2023-04-03 16:15:00", - "2023-01-15 10:00:00", - "2023-01-16 10:30:00", - "2023-02-20 11:30:00", - "2023-03-25 14:45:00", - "2023-01-30 13:15:00", - "2023-02-28 16:00:00", - "2023-03-30 09:45:00", - ], - "week_adj7": [ - "2023-05-16 09:30:00", - "2023-05-16 10:15:00", - "2023-05-16 11:00:00", - "2023-05-16 11:45:00", - "2023-05-16 12:30:00", - "2023-05-16 13:15:00", - "2023-05-16 14:00:00", - "2023-05-16 14:45:00", - "2023-05-16 15:30:00", - "2023-05-16 16:15:00", - "2023-05-17 09:30:00", - "2023-05-17 10:15:00", - "2023-05-17 11:00:00", - "2023-05-17 11:45:00", - "2023-05-17 12:30:00", - "2023-05-17 13:15:00", - "2023-05-17 14:00:00", - "2023-05-17 14:45:00", - "2023-05-17 15:30:00", - "2023-05-17 16:15:00", - "2023-03-01 10:00:00", - "2023-03-02 10:30:00", - "2023-04-03 11:30:00", - "2023-05-09 14:45:00", - "2023-03-16 13:15:00", - "2023-04-11 16:00:00", - "2023-05-14 09:45:00", - ], - } - ), - "week_offset7", - skip_sql=True, - ), - id="week_offset7", - ), pytest.param( PyDoughPandasTest( window_sliding_frame_relsize, diff --git a/tests/test_pipeline_mysql.py b/tests/test_pipeline_mysql.py index fa47351d9..e8b0e1117 100644 --- a/tests/test_pipeline_mysql.py +++ b/tests/test_pipeline_mysql.py @@ -18,7 +18,7 @@ from tests.test_pydough_functions.simple_pydough_functions import ( get_part_multiple, simple_week_sampler_tpch, - week_offset7, + week_offset, ) from tests.test_pydough_functions.tpch_outputs import ( tpch_q16_output, @@ -201,12 +201,14 @@ def defog_mysql_test_data( defog_custom_pipeline_test_data: PyDoughPandasTest, # noqa: F811 ) -> PyDoughPandasTest: """ - Test data for e2e tests for the TPC-H queries. Returns an instance of - PyDoughPandasTest containing information about the test. + Modify reference solution data for some Defog queries. + Return an instance of PyDoughPandasTest containing the modified data. """ - if defog_custom_pipeline_test_data.test_name == "week_offset7": + + # See comment in defog_sf_test_data + if defog_custom_pipeline_test_data.test_name == "week_offset": return PyDoughPandasTest( - week_offset7, + week_offset, "Broker", lambda: pd.DataFrame( { @@ -239,6 +241,180 @@ def defog_mysql_test_data( "2023-02-28 16:00:00", "2023-03-30 09:45:00", ], + "week_adj1": [ + "2023-04-09 09:30:00", + "2023-04-09 10:15:00", + "2023-04-09 11:00:00", + "2023-04-09 11:45:00", + "2023-04-09 12:30:00", + "2023-04-09 13:15:00", + "2023-04-09 14:00:00", + "2023-04-09 14:45:00", + "2023-04-09 15:30:00", + "2023-04-09 16:15:00", + "2023-04-10 09:30:00", + "2023-04-10 10:15:00", + "2023-04-10 11:00:00", + "2023-04-10 11:45:00", + "2023-04-10 12:30:00", + "2023-04-10 13:15:00", + "2023-04-10 14:00:00", + "2023-04-10 14:45:00", + "2023-04-10 15:30:00", + "2023-04-10 16:15:00", + "2023-01-22 10:00:00", + "2023-01-23 10:30:00", + "2023-02-27 11:30:00", + "2023-04-01 14:45:00", + "2023-02-06 13:15:00", + "2023-03-07 16:00:00", + "2023-04-06 09:45:00", + ], + "week_adj2": [ + "2023-03-26 09:30:00", + "2023-03-26 10:15:00", + "2023-03-26 11:00:00", + "2023-03-26 11:45:00", + "2023-03-26 12:30:00", + "2023-03-26 13:15:00", + "2023-03-26 14:00:00", + "2023-03-26 14:45:00", + "2023-03-26 15:30:00", + "2023-03-26 16:15:00", + "2023-03-27 09:30:00", + "2023-03-27 10:15:00", + "2023-03-27 11:00:00", + "2023-03-27 11:45:00", + "2023-03-27 12:30:00", + "2023-03-27 13:15:00", + "2023-03-27 14:00:00", + "2023-03-27 14:45:00", + "2023-03-27 15:30:00", + "2023-03-27 16:15:00", + "2023-01-08 10:00:00", + "2023-01-09 10:30:00", + "2023-02-13 11:30:00", + "2023-03-18 14:45:00", + "2023-01-23 13:15:00", + "2023-02-21 16:00:00", + "2023-03-23 09:45:00", + ], + "week_adj3": [ + "2023-04-16 10:30:00", + "2023-04-16 11:15:00", + "2023-04-16 12:00:00", + "2023-04-16 12:45:00", + "2023-04-16 13:30:00", + "2023-04-16 14:15:00", + "2023-04-16 15:00:00", + "2023-04-16 15:45:00", + "2023-04-16 16:30:00", + "2023-04-16 17:15:00", + "2023-04-17 10:30:00", + "2023-04-17 11:15:00", + "2023-04-17 12:00:00", + "2023-04-17 12:45:00", + "2023-04-17 13:30:00", + "2023-04-17 14:15:00", + "2023-04-17 15:00:00", + "2023-04-17 15:45:00", + "2023-04-17 16:30:00", + "2023-04-17 17:15:00", + "2023-01-29 11:00:00", + "2023-01-30 11:30:00", + "2023-03-06 12:30:00", + "2023-04-08 15:45:00", + "2023-02-13 14:15:00", + "2023-03-14 17:00:00", + "2023-04-13 10:45:00", + ], + "week_adj4": [ + "2023-04-16 09:29:59", + "2023-04-16 10:14:59", + "2023-04-16 10:59:59", + "2023-04-16 11:44:59", + "2023-04-16 12:29:59", + "2023-04-16 13:14:59", + "2023-04-16 13:59:59", + "2023-04-16 14:44:59", + "2023-04-16 15:29:59", + "2023-04-16 16:14:59", + "2023-04-17 09:29:59", + "2023-04-17 10:14:59", + "2023-04-17 10:59:59", + "2023-04-17 11:44:59", + "2023-04-17 12:29:59", + "2023-04-17 13:14:59", + "2023-04-17 13:59:59", + "2023-04-17 14:44:59", + "2023-04-17 15:29:59", + "2023-04-17 16:14:59", + "2023-01-29 09:59:59", + "2023-01-30 10:29:59", + "2023-03-06 11:29:59", + "2023-04-08 14:44:59", + "2023-02-13 13:14:59", + "2023-03-14 15:59:59", + "2023-04-13 09:44:59", + ], + "week_adj5": [ + "2023-04-17 09:30:00", + "2023-04-17 10:15:00", + "2023-04-17 11:00:00", + "2023-04-17 11:45:00", + "2023-04-17 12:30:00", + "2023-04-17 13:15:00", + "2023-04-17 14:00:00", + "2023-04-17 14:45:00", + "2023-04-17 15:30:00", + "2023-04-17 16:15:00", + "2023-04-18 09:30:00", + "2023-04-18 10:15:00", + "2023-04-18 11:00:00", + "2023-04-18 11:45:00", + "2023-04-18 12:30:00", + "2023-04-18 13:15:00", + "2023-04-18 14:00:00", + "2023-04-18 14:45:00", + "2023-04-18 15:30:00", + "2023-04-18 16:15:00", + "2023-01-30 10:00:00", + "2023-01-31 10:30:00", + "2023-03-07 11:30:00", + "2023-04-09 14:45:00", + "2023-02-14 13:15:00", + "2023-03-15 16:00:00", + "2023-04-14 09:45:00", + ], + "week_adj6": [ + "2023-04-16 09:29:00", + "2023-04-16 10:14:00", + "2023-04-16 10:59:00", + "2023-04-16 11:44:00", + "2023-04-16 12:29:00", + "2023-04-16 13:14:00", + "2023-04-16 13:59:00", + "2023-04-16 14:44:00", + "2023-04-16 15:29:00", + "2023-04-16 16:14:00", + "2023-04-17 09:29:00", + "2023-04-17 10:14:00", + "2023-04-17 10:59:00", + "2023-04-17 11:44:00", + "2023-04-17 12:29:00", + "2023-04-17 13:14:00", + "2023-04-17 13:59:00", + "2023-04-17 14:44:00", + "2023-04-17 15:29:00", + "2023-04-17 16:14:00", + "2023-01-29 09:59:00", + "2023-01-30 10:29:00", + "2023-03-06 11:29:00", + "2023-04-08 14:44:00", + "2023-02-13 13:14:00", + "2023-03-14 15:59:00", + "2023-04-13 09:44:00", + ], "week_adj7": [ "2023-05-16 09:30:00", "2023-05-16 10:15:00", @@ -268,9 +444,38 @@ def defog_mysql_test_data( "2023-04-11 16:00:00", "2023-05-14 09:45:00", ], + "week_adj8": [ + "2024-04-16 09:30:00", + "2024-04-16 10:15:00", + "2024-04-16 11:00:00", + "2024-04-16 11:45:00", + "2024-04-16 12:30:00", + "2024-04-16 13:15:00", + "2024-04-16 14:00:00", + "2024-04-16 14:45:00", + "2024-04-16 15:30:00", + "2024-04-16 16:15:00", + "2024-04-17 09:30:00", + "2024-04-17 10:15:00", + "2024-04-17 11:00:00", + "2024-04-17 11:45:00", + "2024-04-17 12:30:00", + "2024-04-17 13:15:00", + "2024-04-17 14:00:00", + "2024-04-17 14:45:00", + "2024-04-17 15:30:00", + "2024-04-17 16:15:00", + "2024-01-29 10:00:00", + "2024-01-30 10:30:00", + "2024-03-05 11:30:00", + "2024-04-08 14:45:00", + "2024-02-13 13:15:00", + "2024-03-13 16:00:00", + "2024-04-13 09:45:00", + ], } ), - "week_offset7", + "week_offset", skip_sql=True, ) diff --git a/tests/test_pipeline_sf.py b/tests/test_pipeline_sf.py new file mode 100644 index 000000000..937a7ce93 --- /dev/null +++ b/tests/test_pipeline_sf.py @@ -0,0 +1,565 @@ +""" +Integration tests for the PyDough workflow on the TPC-H queries using Snowflake. +""" + +# ruff: noqa +# mypy: ignore-errors +# ruff & mypy should not try to typecheck or verify any of this + +import pandas as pd +import pytest +import datetime +from tests.test_pipeline_defog_custom import get_start_of_week, get_day_of_week +from pydough.metadata import GraphMetadata +from pydough.unqualified import UnqualifiedNode +from pydough.configs import DayOfWeek, PyDoughConfigs +from pydough.database_connectors import DatabaseContext +from tests.test_pydough_functions.tpch_outputs import ( + tpch_q16_output, +) +from tests.test_pydough_functions.tpch_test_functions import ( + impl_tpch_q16, +) + +from tests.test_pydough_functions.simple_pydough_functions import week_offset + +from tests.testing_utilities import ( + graph_fetcher, + harmonize_types, + PyDoughSQLComparisonTest, +) +from .test_pipeline_defog_custom import defog_custom_pipeline_test_data +from .test_pipeline_defog import defog_pipeline_test_data + +from .testing_utilities import PyDoughPandasTest +from pydough import init_pydough_context, to_df, to_sql + + +@pytest.fixture( + params=[ + pytest.param( + PyDoughPandasTest( + impl_tpch_q16, + "TPCH", + tpch_q16_output, + "tpch_q16_params", + ), + id="tpch_q16_params", + ), + ], +) +def snowflake_params_tpch_q16_data(request) -> PyDoughPandasTest: + """ + Test data for e2e tests for the TPC-H query 16. Returns an instance of + PyDoughPandasTest containing information about the test. + """ + return request.param + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_tpch_sf_conn( + tpch_pipeline_test_data: PyDoughPandasTest, + get_sf_sample_graph: graph_fetcher, + sf_conn_db_context: DatabaseContext, +): + """ + Test executing the TPC-H queries from the original code generation, + with Snowflake as the executing database. + Using the `connection` as keyword argument to the DatabaseContext. + """ + tpch_pipeline_test_data.run_e2e_test( + get_sf_sample_graph, + sf_conn_db_context("SNOWFLAKE_SAMPLE_DATA", "TPCH_SF1"), + coerce_types=True, + ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_tpch_sf_params( + snowflake_params_tpch_q16_data: PyDoughPandasTest, + get_sf_sample_graph: graph_fetcher, + sf_params_tpch_db_context: DatabaseContext, +): + """ + Test executing the TPC-H queries from the original code generation, + with Snowflake as the executing database. + Using the `user`, `password`, `account`, `database`, `schema`, and `warehouse` + as keyword arguments to the DatabaseContext. + """ + snowflake_params_tpch_q16_data.run_e2e_test( + get_sf_sample_graph, sf_params_tpch_db_context, coerce_types=True + ) + + +def simple_week_sampler(): + x_dt = datetime.datetime(2025, 3, 10, 11, 00, 0) + y_dt = datetime.datetime(2025, 3, 14, 11, 00, 0) + y_dt2 = datetime.datetime(2025, 3, 15, 11, 00, 0) + y_dt3 = datetime.datetime(2025, 3, 16, 11, 00, 0) + y_dt4 = datetime.datetime(2025, 3, 17, 11, 00, 0) + y_dt5 = datetime.datetime(2025, 3, 18, 11, 00, 0) + y_dt6 = datetime.datetime(2025, 3, 19, 11, 00, 0) + y_dt7 = datetime.datetime(2025, 3, 20, 11, 00, 0) + y_dt8 = datetime.datetime(2025, 3, 21, 11, 00, 0) + return TPCH.CALCULATE( + weeks_diff=DATEDIFF("weeks", x_dt, y_dt), + sow1=DATETIME(y_dt, "start of week"), + sow2=DATETIME(y_dt2, "start of week"), + sow3=DATETIME(y_dt3, "start of week"), + sow4=DATETIME(y_dt4, "start of week"), + sow5=DATETIME(y_dt5, "start of week"), + sow6=DATETIME(y_dt6, "start of week"), + sow7=DATETIME(y_dt7, "start of week"), + sow8=DATETIME(y_dt8, "start of week"), + dayname1=DAYNAME(y_dt), + dayname2=DAYNAME(y_dt2), + dayname3=DAYNAME(y_dt3), + dayname4=DAYNAME(y_dt4), + dayname5=DAYNAME(y_dt5), + dayname6=DAYNAME(y_dt6), + dayname7=DAYNAME(y_dt7), + dayname8=DAYNAME(y_dt8), + dayofweek1=DAYOFWEEK(y_dt), + dayofweek2=DAYOFWEEK(y_dt2), + dayofweek3=DAYOFWEEK(y_dt3), + dayofweek4=DAYOFWEEK(y_dt4), + dayofweek5=DAYOFWEEK(y_dt5), + dayofweek6=DAYOFWEEK(y_dt6), + dayofweek7=DAYOFWEEK(y_dt7), + dayofweek8=DAYOFWEEK(y_dt8), + ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_tpch_simple_week( + get_sf_sample_graph: graph_fetcher, + sf_conn_db_context: DatabaseContext, + week_handling_config: PyDoughConfigs, +): + """ + Test executing simple_week_sampler using the tpch schemas with different + week configurations, comparing against expected results. + """ + graph: GraphMetadata = get_sf_sample_graph("TPCH") + root: UnqualifiedNode = init_pydough_context(graph)(simple_week_sampler)() + result: pd.DataFrame = to_df( + root, + metadata=graph, + database=sf_conn_db_context("SNOWFLAKE_SAMPLE_DATA", "TPCH_SF1"), + config=week_handling_config, + ) + + # Generate expected DataFrame based on week_handling_config + start_of_week = week_handling_config.start_of_week + start_week_as_zero = week_handling_config.start_week_as_zero + + x_dt = pd.Timestamp(2025, 3, 10, 11, 0, 0) + y_dt = pd.Timestamp(2025, 3, 14, 11, 0, 0) + y_dt2 = pd.Timestamp(2025, 3, 15, 11, 0, 0) + y_dt3 = pd.Timestamp(2025, 3, 16, 11, 0, 0) + y_dt4 = pd.Timestamp(2025, 3, 17, 11, 0, 0) + y_dt5 = pd.Timestamp(2025, 3, 18, 11, 0, 0) + y_dt6 = pd.Timestamp(2025, 3, 19, 11, 0, 0) + y_dt7 = pd.Timestamp(2025, 3, 20, 11, 0, 0) + y_dt8 = pd.Timestamp(2025, 3, 21, 11, 0, 0) + + # Calculate weeks difference + x_sow = get_start_of_week(x_dt, start_of_week) + y_sow = get_start_of_week(y_dt, start_of_week) + weeks_diff = (y_sow - x_sow).days // 7 + + # Create lists to store calculated values + dates = [y_dt, y_dt2, y_dt3, y_dt4, y_dt5, y_dt6, y_dt7, y_dt8] + sows = [] + daynames = [] + dayofweeks = [] + + # Calculate values for each date in a loop + for dt in dates: + # Calculate start of week + sow = get_start_of_week(dt, start_of_week).strftime("%Y-%m-%d") + sows.append(sow) + + # Get day name + dayname = dt.day_name() + daynames.append(dayname) + + # Calculate day of week + dayofweek = get_day_of_week(dt, start_of_week, start_week_as_zero) + dayofweeks.append(dayofweek) + + # Create dictionary for DataFrame + data_dict = {"WEEKS_DIFF": [weeks_diff]} + + # Add start of week columns + for i in range(len(dates)): + data_dict[f"SOW{i + 1}"] = [sows[i]] + + # Add day name columns + for i in range(len(dates)): + data_dict[f"DAYNAME{i + 1}"] = [daynames[i]] + + # Add day of week columns + for i in range(len(dates)): + data_dict[f"DAYOFWEEK{i + 1}"] = [dayofweeks[i]] + + # Create DataFrame with expected results + expected_df = pd.DataFrame(data_dict) + for col_name in result.columns: + result[col_name], expected_df[col_name] = harmonize_types( + result[col_name], expected_df[col_name] + ) + pd.testing.assert_frame_equal(result, expected_df, check_dtype=False) + + +@pytest.fixture +def defog_sf_test_data( + defog_custom_pipeline_test_data: PyDoughPandasTest, +) -> PyDoughPandasTest: + """ + Modify reference solution data for some Defog queries. + Return an instance of PyDoughPandasTest containing the modified data. + """ + # Adjust the 3rd-to-last data point because Snowflake and SQLite + # handle "+1 month" differently: + # - Snowflake: if the next month overflows, it returns the end of next month + # - SQLite: adds 30 days, which may move into the following month + # + # Example: "2023-01-30 + 1 month" + # SQLite: 2023-03-02 vs. Snowflake: 2023-02-28 + if defog_custom_pipeline_test_data.test_name == "week_offset": + return PyDoughPandasTest( + week_offset, + "Broker", + lambda: pd.DataFrame( + { + "date_time": [ + "2023-04-02 09:30:00", + "2023-04-02 10:15:00", + "2023-04-02 11:00:00", + "2023-04-02 11:45:00", + "2023-04-02 12:30:00", + "2023-04-02 13:15:00", + "2023-04-02 14:00:00", + "2023-04-02 14:45:00", + "2023-04-02 15:30:00", + "2023-04-02 16:15:00", + "2023-04-03 09:30:00", + "2023-04-03 10:15:00", + "2023-04-03 11:00:00", + "2023-04-03 11:45:00", + "2023-04-03 12:30:00", + "2023-04-03 13:15:00", + "2023-04-03 14:00:00", + "2023-04-03 14:45:00", + "2023-04-03 15:30:00", + "2023-04-03 16:15:00", + "2023-01-15 10:00:00", + "2023-01-16 10:30:00", + "2023-02-20 11:30:00", + "2023-03-25 14:45:00", + "2023-01-30 13:15:00", + "2023-02-28 16:00:00", + "2023-03-30 09:45:00", + ], + "week_adj1": [ + "2023-04-09 09:30:00", + "2023-04-09 10:15:00", + "2023-04-09 11:00:00", + "2023-04-09 11:45:00", + "2023-04-09 12:30:00", + "2023-04-09 13:15:00", + "2023-04-09 14:00:00", + "2023-04-09 14:45:00", + "2023-04-09 15:30:00", + "2023-04-09 16:15:00", + "2023-04-10 09:30:00", + "2023-04-10 10:15:00", + "2023-04-10 11:00:00", + "2023-04-10 11:45:00", + "2023-04-10 12:30:00", + "2023-04-10 13:15:00", + "2023-04-10 14:00:00", + "2023-04-10 14:45:00", + "2023-04-10 15:30:00", + "2023-04-10 16:15:00", + "2023-01-22 10:00:00", + "2023-01-23 10:30:00", + "2023-02-27 11:30:00", + "2023-04-01 14:45:00", + "2023-02-06 13:15:00", + "2023-03-07 16:00:00", + "2023-04-06 09:45:00", + ], + "week_adj2": [ + "2023-03-26 09:30:00", + "2023-03-26 10:15:00", + "2023-03-26 11:00:00", + "2023-03-26 11:45:00", + "2023-03-26 12:30:00", + "2023-03-26 13:15:00", + "2023-03-26 14:00:00", + "2023-03-26 14:45:00", + "2023-03-26 15:30:00", + "2023-03-26 16:15:00", + "2023-03-27 09:30:00", + "2023-03-27 10:15:00", + "2023-03-27 11:00:00", + "2023-03-27 11:45:00", + "2023-03-27 12:30:00", + "2023-03-27 13:15:00", + "2023-03-27 14:00:00", + "2023-03-27 14:45:00", + "2023-03-27 15:30:00", + "2023-03-27 16:15:00", + "2023-01-08 10:00:00", + "2023-01-09 10:30:00", + "2023-02-13 11:30:00", + "2023-03-18 14:45:00", + "2023-01-23 13:15:00", + "2023-02-21 16:00:00", + "2023-03-23 09:45:00", + ], + "week_adj3": [ + "2023-04-16 10:30:00", + "2023-04-16 11:15:00", + "2023-04-16 12:00:00", + "2023-04-16 12:45:00", + "2023-04-16 13:30:00", + "2023-04-16 14:15:00", + "2023-04-16 15:00:00", + "2023-04-16 15:45:00", + "2023-04-16 16:30:00", + "2023-04-16 17:15:00", + "2023-04-17 10:30:00", + "2023-04-17 11:15:00", + "2023-04-17 12:00:00", + "2023-04-17 12:45:00", + "2023-04-17 13:30:00", + "2023-04-17 14:15:00", + "2023-04-17 15:00:00", + "2023-04-17 15:45:00", + "2023-04-17 16:30:00", + "2023-04-17 17:15:00", + "2023-01-29 11:00:00", + "2023-01-30 11:30:00", + "2023-03-06 12:30:00", + "2023-04-08 15:45:00", + "2023-02-13 14:15:00", + "2023-03-14 17:00:00", + "2023-04-13 10:45:00", + ], + "week_adj4": [ + "2023-04-16 09:29:59", + "2023-04-16 10:14:59", + "2023-04-16 10:59:59", + "2023-04-16 11:44:59", + "2023-04-16 12:29:59", + "2023-04-16 13:14:59", + "2023-04-16 13:59:59", + "2023-04-16 14:44:59", + "2023-04-16 15:29:59", + "2023-04-16 16:14:59", + "2023-04-17 09:29:59", + "2023-04-17 10:14:59", + "2023-04-17 10:59:59", + "2023-04-17 11:44:59", + "2023-04-17 12:29:59", + "2023-04-17 13:14:59", + "2023-04-17 13:59:59", + "2023-04-17 14:44:59", + "2023-04-17 15:29:59", + "2023-04-17 16:14:59", + "2023-01-29 09:59:59", + "2023-01-30 10:29:59", + "2023-03-06 11:29:59", + "2023-04-08 14:44:59", + "2023-02-13 13:14:59", + "2023-03-14 15:59:59", + "2023-04-13 09:44:59", + ], + "week_adj5": [ + "2023-04-17 09:30:00", + "2023-04-17 10:15:00", + "2023-04-17 11:00:00", + "2023-04-17 11:45:00", + "2023-04-17 12:30:00", + "2023-04-17 13:15:00", + "2023-04-17 14:00:00", + "2023-04-17 14:45:00", + "2023-04-17 15:30:00", + "2023-04-17 16:15:00", + "2023-04-18 09:30:00", + "2023-04-18 10:15:00", + "2023-04-18 11:00:00", + "2023-04-18 11:45:00", + "2023-04-18 12:30:00", + "2023-04-18 13:15:00", + "2023-04-18 14:00:00", + "2023-04-18 14:45:00", + "2023-04-18 15:30:00", + "2023-04-18 16:15:00", + "2023-01-30 10:00:00", + "2023-01-31 10:30:00", + "2023-03-07 11:30:00", + "2023-04-09 14:45:00", + "2023-02-14 13:15:00", + "2023-03-15 16:00:00", + "2023-04-14 09:45:00", + ], + "week_adj6": [ + "2023-04-16 09:29:00", + "2023-04-16 10:14:00", + "2023-04-16 10:59:00", + "2023-04-16 11:44:00", + "2023-04-16 12:29:00", + "2023-04-16 13:14:00", + "2023-04-16 13:59:00", + "2023-04-16 14:44:00", + "2023-04-16 15:29:00", + "2023-04-16 16:14:00", + "2023-04-17 09:29:00", + "2023-04-17 10:14:00", + "2023-04-17 10:59:00", + "2023-04-17 11:44:00", + "2023-04-17 12:29:00", + "2023-04-17 13:14:00", + "2023-04-17 13:59:00", + "2023-04-17 14:44:00", + "2023-04-17 15:29:00", + "2023-04-17 16:14:00", + "2023-01-29 09:59:00", + "2023-01-30 10:29:00", + "2023-03-06 11:29:00", + "2023-04-08 14:44:00", + "2023-02-13 13:14:00", + "2023-03-14 15:59:00", + "2023-04-13 09:44:00", + ], + "week_adj7": [ + "2023-05-16 09:30:00", + "2023-05-16 10:15:00", + "2023-05-16 11:00:00", + "2023-05-16 11:45:00", + "2023-05-16 12:30:00", + "2023-05-16 13:15:00", + "2023-05-16 14:00:00", + "2023-05-16 14:45:00", + "2023-05-16 15:30:00", + "2023-05-16 16:15:00", + "2023-05-17 09:30:00", + "2023-05-17 10:15:00", + "2023-05-17 11:00:00", + "2023-05-17 11:45:00", + "2023-05-17 12:30:00", + "2023-05-17 13:15:00", + "2023-05-17 14:00:00", + "2023-05-17 14:45:00", + "2023-05-17 15:30:00", + "2023-05-17 16:15:00", + "2023-03-01 10:00:00", + "2023-03-02 10:30:00", + "2023-04-03 11:30:00", + "2023-05-09 14:45:00", + "2023-03-14 13:15:00", + "2023-04-11 16:00:00", + "2023-05-14 09:45:00", + ], + "week_adj8": [ + "2024-04-16 09:30:00", + "2024-04-16 10:15:00", + "2024-04-16 11:00:00", + "2024-04-16 11:45:00", + "2024-04-16 12:30:00", + "2024-04-16 13:15:00", + "2024-04-16 14:00:00", + "2024-04-16 14:45:00", + "2024-04-16 15:30:00", + "2024-04-16 16:15:00", + "2024-04-17 09:30:00", + "2024-04-17 10:15:00", + "2024-04-17 11:00:00", + "2024-04-17 11:45:00", + "2024-04-17 12:30:00", + "2024-04-17 13:15:00", + "2024-04-17 14:00:00", + "2024-04-17 14:45:00", + "2024-04-17 15:30:00", + "2024-04-17 16:15:00", + "2024-01-29 10:00:00", + "2024-01-30 10:30:00", + "2024-03-05 11:30:00", + "2024-04-08 14:45:00", + "2024-02-13 13:15:00", + "2024-03-13 16:00:00", + "2024-04-13 09:45:00", + ], + } + ), + "week_offset", + skip_sql=True, + ) + + return defog_custom_pipeline_test_data + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_sf_e2e_defog_custom( + defog_sf_test_data: PyDoughPandasTest, + get_sf_defog_graphs: graph_fetcher, + sf_conn_db_context: DatabaseContext, +): + """ + Test executing the defog analytical queries with Snowflake database. + """ + defog_sf_test_data.run_e2e_test( + get_sf_defog_graphs, + sf_conn_db_context("DEFOG", defog_sf_test_data.graph_name), + coerce_types=True, + ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_defog_e2e( + defog_pipeline_test_data: PyDoughSQLComparisonTest, + get_sf_defog_graphs: graph_fetcher, + sf_conn_db_context: DatabaseContext, + defog_config: PyDoughConfigs, + sqlite_defog_connection: DatabaseContext, +) -> None: + """ + Test executing the defog analytical questions on the sqlite database, + comparing against the result of running the reference SQL query text on the + same database connector. Run on the defog.ai queries. + NOTE: passing SQLite connection as reference database so that refsol + is executed using SQLite. + This is needed because refsol uses SQLite SQL syntax to obtain + the correct results. + """ + defog_pipeline_test_data.run_e2e_test( + get_sf_defog_graphs, + sf_conn_db_context("DEFOG", defog_pipeline_test_data.graph_name), + defog_config, + reference_database=sqlite_defog_connection, + coerce_types=True, + ) + + +@pytest.mark.snowflake +@pytest.mark.execute +def test_pipeline_e2e_week_offset_7_sf( + snowflake_params_week_offset_7_data: PyDoughPandasTest, + get_sf_defog_graphs: graph_fetcher, + sf_conn_db_context: DatabaseContext, +): + """ """ + snowflake_params_week_offset_7_data.run_e2e_test( + get_sf_defog_graphs, + sf_conn_db_context("DEFOG", snowflake_params_week_offset_7_data.graph_name), + coerce_types=True, + ) From 1c33249b6144d8089f0ea696b6fc14996f1c57f0 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 25 Aug 2025 16:17:31 -0700 Subject: [PATCH 42/46] modify week_offset to be like mysql for consistency --- .../test_pydough_functions/simple_pydough_functions.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/tests/test_pydough_functions/simple_pydough_functions.py b/tests/test_pydough_functions/simple_pydough_functions.py index eaad6a48c..ff8cb0fa5 100644 --- a/tests/test_pydough_functions/simple_pydough_functions.py +++ b/tests/test_pydough_functions/simple_pydough_functions.py @@ -2075,16 +2075,8 @@ def week_offset(): week_adj4=DATETIME(date_time, "-1 s", "2 w"), week_adj5=DATETIME(date_time, "1 d", "2 w"), week_adj6=DATETIME(date_time, "-1 m", "2 w"), - week_adj8=DATETIME(date_time, "1 y", "2 w"), - ) - - -def week_offset7(): - return transactions.WHERE( - (YEAR(date_time) < 2025) & (DAY(date_time) > 1) - ).CALCULATE( - date_time, week_adj7=DATETIME(date_time, "1 mm", "2 w"), + week_adj8=DATETIME(date_time, "1 y", "2 w"), ) From 5f31407deed08d203eb98ba762eda2a28096b797 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 25 Aug 2025 16:21:58 -0700 Subject: [PATCH 43/46] [run all] disable dialect for SF only --- pydough/sqlglot/execute_relational.py | 18 +- tests/test_pipeline_tpch_sf.py | 356 ------------------ tests/test_plan_refsols/week_offset.txt | 2 +- tests/test_plan_refsols/week_offset7.txt | 3 - .../agg_simplification_1_snowflake.sql | 52 +-- .../agg_simplification_2_snowflake.sql | 2 +- .../aggregation_functions_snowflake.sql | 72 ++-- ...thmetic_and_binary_operators_snowflake.sql | 22 +- .../casting_functions_snowflake.sql | 2 +- ...risons_and_logical_operators_snowflake.sql | 38 +- .../conditional_functions_snowflake.sql | 28 +- .../cumulative_stock_analysis_snowflake.sql | 34 +- tests/test_sql_refsols/datediff_snowflake.sql | 2 +- .../datetime_functions_snowflake.sql | 2 +- .../datetime_sampler_snowflake.sql | 2 +- .../defog_broker_adv10_snowflake.sql | 28 +- .../defog_broker_adv11_snowflake.sql | 16 +- .../defog_broker_adv12_snowflake.sql | 2 +- .../defog_broker_adv13_snowflake.sql | 2 +- .../defog_broker_adv14_snowflake.sql | 12 +- .../defog_broker_adv15_snowflake.sql | 2 +- .../defog_broker_adv16_snowflake.sql | 22 +- .../defog_broker_adv1_snowflake.sql | 18 +- .../defog_broker_adv2_snowflake.sql | 18 +- .../defog_broker_adv3_snowflake.sql | 22 +- .../defog_broker_adv4_snowflake.sql | 20 +- .../defog_broker_adv5_snowflake.sql | 54 +-- .../defog_broker_adv6_snowflake.sql | 24 +- .../defog_broker_adv7_snowflake.sql | 44 +-- .../defog_broker_adv8_snowflake.sql | 12 +- .../defog_broker_adv9_snowflake.sql | 18 +- .../defog_broker_basic10_snowflake.sql | 10 +- .../defog_broker_basic1_snowflake.sql | 22 +- .../defog_broker_basic2_snowflake.sql | 2 +- .../defog_broker_basic3_snowflake.sql | 22 +- .../defog_broker_basic4_snowflake.sql | 36 +- .../defog_broker_basic5_snowflake.sql | 8 +- .../defog_broker_basic6_snowflake.sql | 8 +- .../defog_broker_basic7_snowflake.sql | 2 +- .../defog_broker_basic8_snowflake.sql | 2 +- .../defog_broker_basic9_snowflake.sql | 10 +- .../defog_broker_gen1_snowflake.sql | 12 +- .../defog_broker_gen2_snowflake.sql | 10 +- .../defog_broker_gen3_snowflake.sql | 20 +- .../defog_broker_gen4_snowflake.sql | 20 +- .../defog_broker_gen5_snowflake.sql | 4 +- .../defog_dealership_adv10_snowflake.sql | 16 +- .../defog_dealership_adv11_snowflake.sql | 12 +- .../defog_dealership_adv12_snowflake.sql | 38 +- .../defog_dealership_adv14_snowflake.sql | 2 +- .../defog_dealership_adv15_snowflake.sql | 20 +- .../defog_dealership_adv16_snowflake.sql | 22 +- .../defog_dealership_adv1_snowflake.sql | 20 +- .../defog_dealership_adv2_snowflake.sql | 22 +- .../defog_dealership_adv3_snowflake.sql | 22 +- .../defog_dealership_adv4_snowflake.sql | 24 +- .../defog_dealership_adv5_snowflake.sql | 26 +- .../defog_dealership_adv6_snowflake.sql | 30 +- .../defog_dealership_adv7_snowflake.sql | 28 +- .../defog_dealership_adv9_snowflake.sql | 2 +- .../defog_dealership_basic10_snowflake.sql | 24 +- .../defog_dealership_basic1_snowflake.sql | 14 +- .../defog_dealership_basic2_snowflake.sql | 8 +- .../defog_dealership_basic3_snowflake.sql | 16 +- .../defog_dealership_basic4_snowflake.sql | 12 +- .../defog_dealership_basic5_snowflake.sql | 24 +- .../defog_dealership_basic6_snowflake.sql | 12 +- .../defog_dealership_basic7_snowflake.sql | 2 +- .../defog_dealership_basic8_snowflake.sql | 24 +- .../defog_dealership_basic9_snowflake.sql | 2 +- .../defog_dealership_gen1_snowflake.sql | 2 +- .../defog_dealership_gen2_snowflake.sql | 2 +- .../defog_dealership_gen3_snowflake.sql | 2 +- .../defog_dealership_gen4_snowflake.sql | 34 +- .../defog_dealership_gen5_snowflake.sql | 22 +- .../defog_ewallet_adv10_snowflake.sql | 18 +- .../defog_ewallet_adv11_snowflake.sql | 18 +- .../defog_ewallet_adv12_snowflake.sql | 20 +- .../defog_ewallet_adv13_snowflake.sql | 2 +- .../defog_ewallet_adv14_snowflake.sql | 2 +- .../defog_ewallet_adv15_snowflake.sql | 26 +- .../defog_ewallet_adv16_snowflake.sql | 20 +- .../defog_ewallet_adv1_snowflake.sql | 22 +- .../defog_ewallet_adv2_snowflake.sql | 16 +- .../defog_ewallet_adv3_snowflake.sql | 20 +- .../defog_ewallet_adv4_snowflake.sql | 10 +- .../defog_ewallet_adv5_snowflake.sql | 2 +- .../defog_ewallet_adv6_snowflake.sql | 17 +- .../defog_ewallet_adv7_snowflake.sql | 18 +- .../defog_ewallet_adv8_snowflake.sql | 24 +- .../defog_ewallet_adv9_snowflake.sql | 2 +- .../defog_ewallet_basic10_snowflake.sql | 22 +- .../defog_ewallet_basic1_snowflake.sql | 16 +- .../defog_ewallet_basic2_snowflake.sql | 10 +- .../defog_ewallet_basic3_snowflake.sql | 8 +- .../defog_ewallet_basic4_snowflake.sql | 8 +- .../defog_ewallet_basic5_snowflake.sql | 10 +- .../defog_ewallet_basic6_snowflake.sql | 2 +- .../defog_ewallet_basic7_snowflake.sql | 2 +- .../defog_ewallet_basic8_snowflake.sql | 22 +- .../defog_ewallet_basic9_snowflake.sql | 22 +- .../defog_ewallet_gen1_snowflake.sql | 14 +- .../defog_ewallet_gen2_snowflake.sql | 26 +- .../defog_ewallet_gen3_snowflake.sql | 2 +- .../defog_ewallet_gen4_snowflake.sql | 50 +-- .../defog_ewallet_gen5_snowflake.sql | 22 +- .../epoch_culture_events_info_snowflake.sql | 52 +-- .../epoch_event_gap_per_era_snowflake.sql | 36 +- .../epoch_events_per_season_snowflake.sql | 12 +- .../epoch_first_event_per_era_snowflake.sql | 26 +- .../epoch_intra_season_searches_snowflake.sql | 122 +++--- ...opular_search_engine_per_tod_snowflake.sql | 26 +- ...ost_popular_topic_per_region_snowflake.sql | 28 +- .../epoch_num_predawn_cold_war_snowflake.sql | 32 +- ..._search_other_users_per_user_snowflake.sql | 40 +- ...ping_event_searches_per_user_snowflake.sql | 44 +-- .../epoch_pct_searches_per_tod_snowflake.sql | 26 +- .../epoch_search_results_by_tod_snowflake.sql | 30 +- ...epoch_summer_events_per_type_snowflake.sql | 14 +- ...poch_unique_users_per_engine_snowflake.sql | 32 +- ...users_most_cold_war_searches_snowflake.sql | 38 +- .../extract_colors_snowflake.sql | 2 +- .../floor_and_ceil_2_snowflake.sql | 2 +- .../floor_and_ceil_snowflake.sql | 2 +- .../get_part_multiple_snowflake.sql | 2 +- .../get_part_single_snowflake.sql | 2 +- .../global_acctbal_breakdown_snowflake.sql | 2 +- .../hour_minute_day_snowflake.sql | 16 +- .../nation_acctbal_breakdown_snowflake.sql | 38 +- .../numerical_functions_snowflake.sql | 2 +- .../part_cross_part_a_snowflake.sql | 44 +-- .../part_cross_part_b_snowflake.sql | 62 +-- .../part_cross_part_c_snowflake.sql | 60 +-- .../quantile_test_1_snowflake.sql | 10 +- .../quantile_test_2_snowflake.sql | 72 ++-- tests/test_sql_refsols/rank_a_snowflake.sql | 2 +- tests/test_sql_refsols/rank_b_snowflake.sql | 2 +- tests/test_sql_refsols/rank_c_snowflake.sql | 2 +- .../region_acctbal_breakdown_snowflake.sql | 38 +- .../simple_filter_snowflake.sql | 2 +- .../simple_scan_snowflake.sql | 2 +- .../simple_smallest_or_largest_snowflake.sql | 2 +- .../simple_var_std_snowflake.sql | 36 +- .../simplification_1_snowflake.sql | 2 +- .../simplification_2_snowflake.sql | 2 +- .../simplification_3_snowflake.sql | 50 +-- tests/test_sql_refsols/smoke_a_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_b_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_c_snowflake.sql | 2 +- tests/test_sql_refsols/smoke_d_snowflake.sql | 42 +-- ...tion_week_sampler_friday_one_snowflake.sql | 2 +- ...ion_week_sampler_friday_zero_snowflake.sql | 2 +- ...tion_week_sampler_monday_one_snowflake.sql | 2 +- ...ion_week_sampler_monday_zero_snowflake.sql | 2 +- ...on_week_sampler_saturday_one_snowflake.sql | 2 +- ...n_week_sampler_saturday_zero_snowflake.sql | 2 +- ...tion_week_sampler_sunday_one_snowflake.sql | 2 +- ...ion_week_sampler_sunday_zero_snowflake.sql | 2 +- ...on_week_sampler_thursday_one_snowflake.sql | 2 +- ...n_week_sampler_thursday_zero_snowflake.sql | 2 +- ...ion_week_sampler_tuesday_one_snowflake.sql | 2 +- ...on_week_sampler_tuesday_zero_snowflake.sql | 2 +- ...n_week_sampler_wednesday_one_snowflake.sql | 2 +- ..._week_sampler_wednesday_zero_snowflake.sql | 2 +- .../string_functions_snowflake.sql | 38 +- ...tery_failure_rates_anomalies_snowflake.sql | 32 +- ...ph_country_cartesian_oddball_snowflake.sql | 14 +- ...country_combination_analysis_snowflake.sql | 62 +-- ...untry_incident_rate_analysis_snowflake.sql | 98 ++--- ...percentages_sun_set_by_error_snowflake.sql | 28 +- ...e_sun_set_by_factory_country_snowflake.sql | 36 +- ...nograph_global_incident_rate_snowflake.sql | 18 +- ...hnograph_hot_purchase_window_snowflake.sql | 16 +- ...ncident_rate_by_release_year_snowflake.sql | 54 +-- ...raph_incident_rate_per_brand_snowflake.sql | 22 +- ...ograph_monthly_incident_rate_snowflake.sql | 82 ++-- ...aph_most_unreliable_products_snowflake.sql | 36 +- ...incident_rate_goldcopperstar_snowflake.sql | 96 ++--- ...lative_incident_rate_overall_snowflake.sql | 68 ++-- .../time_threshold_reached_snowflake.sql | 22 +- tests/test_sql_refsols/tpch_q10_snowflake.sql | 46 +-- tests/test_sql_refsols/tpch_q11_snowflake.sql | 58 +-- tests/test_sql_refsols/tpch_q12_snowflake.sql | 20 +- tests/test_sql_refsols/tpch_q13_snowflake.sql | 16 +- tests/test_sql_refsols/tpch_q14_snowflake.sql | 20 +- tests/test_sql_refsols/tpch_q15_snowflake.sql | 66 ++-- tests/test_sql_refsols/tpch_q16_snowflake.sql | 26 +- tests/test_sql_refsols/tpch_q17_snowflake.sql | 20 +- tests/test_sql_refsols/tpch_q18_snowflake.sql | 34 +- tests/test_sql_refsols/tpch_q19_snowflake.sql | 50 +-- tests/test_sql_refsols/tpch_q1_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q20_snowflake.sql | 50 +-- tests/test_sql_refsols/tpch_q21_snowflake.sql | 86 ++--- tests/test_sql_refsols/tpch_q22_snowflake.sql | 36 +- tests/test_sql_refsols/tpch_q2_snowflake.sql | 58 +-- tests/test_sql_refsols/tpch_q3_snowflake.sql | 24 +- tests/test_sql_refsols/tpch_q4_snowflake.sql | 12 +- tests/test_sql_refsols/tpch_q5_snowflake.sql | 46 +-- tests/test_sql_refsols/tpch_q6_snowflake.sql | 2 +- tests/test_sql_refsols/tpch_q7_snowflake.sql | 52 +-- tests/test_sql_refsols/tpch_q8_snowflake.sql | 44 +-- tests/test_sql_refsols/tpch_q9_snowflake.sql | 34 +- .../unary_and_slicing_operators_snowflake.sql | 2 +- tests/test_sql_refsols/week_offset_ansi.sql | 1 + tests/test_sql_refsols/week_offset_mysql.sql | 1 + .../week_offset_snowflake.sql | 3 +- tests/test_sql_refsols/week_offset_sqlite.sql | 1 + .../window_functions_snowflake.sql | 28 +- ...window_sliding_frame_relsize_snowflake.sql | 26 +- .../window_sliding_frame_relsum_snowflake.sql | 26 +- 210 files changed, 2223 insertions(+), 2573 deletions(-) delete mode 100644 tests/test_pipeline_tpch_sf.py delete mode 100644 tests/test_plan_refsols/week_offset7.txt diff --git a/pydough/sqlglot/execute_relational.py b/pydough/sqlglot/execute_relational.py index 85f2d82e4..6f17e10ac 100644 --- a/pydough/sqlglot/execute_relational.py +++ b/pydough/sqlglot/execute_relational.py @@ -101,14 +101,18 @@ def apply_sqlglot_optimizer( # Apply each rule explicitly with appropriate kwargs + kwargs = { + "quote_identifiers": False, + "isolate_tables": True, + "validate_qualify_columns": False, + } + # Exclude Snowflake dialect to avoid some issues + # related to qualify and column decorrelation + if not isinstance(dialect, SnowflakeDialect): + kwargs["dialect"] = dialect + # Rewrite sqlglot AST to have normalized and qualified tables and columns. - glot_expr = qualify( - glot_expr, - dialect=dialect, - quote_identifiers=False, - isolate_tables=True, - validate_qualify_columns=False, - ) + glot_expr = qualify(glot_expr, **kwargs) # Rewrite sqlglot AST to remove unused columns projections. glot_expr = pushdown_projections(glot_expr) diff --git a/tests/test_pipeline_tpch_sf.py b/tests/test_pipeline_tpch_sf.py deleted file mode 100644 index df98dba33..000000000 --- a/tests/test_pipeline_tpch_sf.py +++ /dev/null @@ -1,356 +0,0 @@ -""" -Integration tests for the PyDough workflow on the TPC-H queries using Snowflake. -""" - -# ruff: noqa -# mypy: ignore-errors -# ruff & mypy should not try to typecheck or verify any of this - -import pandas as pd -import pytest -import datetime -from tests.test_pipeline_defog_custom import get_start_of_week, get_day_of_week -from pydough.metadata import GraphMetadata -from pydough.unqualified import UnqualifiedNode -from pydough.configs import DayOfWeek, PyDoughConfigs -from pydough.database_connectors import DatabaseContext -from tests.test_pydough_functions.tpch_outputs import ( - tpch_q16_output, -) -from tests.test_pydough_functions.tpch_test_functions import ( - impl_tpch_q16, -) - -from tests.test_pydough_functions.simple_pydough_functions import week_offset7 - -from tests.testing_utilities import ( - graph_fetcher, - harmonize_types, - PyDoughSQLComparisonTest, -) -from .test_pipeline_defog_custom import defog_custom_pipeline_test_data -from .test_pipeline_defog import defog_pipeline_test_data - -from .testing_utilities import PyDoughPandasTest -from pydough import init_pydough_context, to_df, to_sql - - -@pytest.fixture( - params=[ - pytest.param( - PyDoughPandasTest( - week_offset7, - "Broker", - lambda: pd.DataFrame( - { - "date_time": [ - "2023-04-02 09:30:00", - "2023-04-02 10:15:00", - "2023-04-02 11:00:00", - "2023-04-02 11:45:00", - "2023-04-02 12:30:00", - "2023-04-02 13:15:00", - "2023-04-02 14:00:00", - "2023-04-02 14:45:00", - "2023-04-02 15:30:00", - "2023-04-02 16:15:00", - "2023-04-03 09:30:00", - "2023-04-03 10:15:00", - "2023-04-03 11:00:00", - "2023-04-03 11:45:00", - "2023-04-03 12:30:00", - "2023-04-03 13:15:00", - "2023-04-03 14:00:00", - "2023-04-03 14:45:00", - "2023-04-03 15:30:00", - "2023-04-03 16:15:00", - "2023-01-15 10:00:00", - "2023-01-16 10:30:00", - "2023-02-20 11:30:00", - "2023-03-25 14:45:00", - "2023-01-30 13:15:00", - "2023-02-28 16:00:00", - "2023-03-30 09:45:00", - ], - "week_adj7": [ - "2023-05-16 09:30:00", - "2023-05-16 10:15:00", - "2023-05-16 11:00:00", - "2023-05-16 11:45:00", - "2023-05-16 12:30:00", - "2023-05-16 13:15:00", - "2023-05-16 14:00:00", - "2023-05-16 14:45:00", - "2023-05-16 15:30:00", - "2023-05-16 16:15:00", - "2023-05-17 09:30:00", - "2023-05-17 10:15:00", - "2023-05-17 11:00:00", - "2023-05-17 11:45:00", - "2023-05-17 12:30:00", - "2023-05-17 13:15:00", - "2023-05-17 14:00:00", - "2023-05-17 14:45:00", - "2023-05-17 15:30:00", - "2023-05-17 16:15:00", - "2023-03-01 10:00:00", - "2023-03-02 10:30:00", - "2023-04-03 11:30:00", - "2023-05-09 14:45:00", - "2023-03-14 13:15:00", - "2023-04-11 16:00:00", - "2023-05-14 09:45:00", - ], - } - ), - "week_offset7", - ), - id="sf_week_offset_7", - ), - ], -) -def snowflake_params_week_offset_7_data(request) -> PyDoughPandasTest: - """ - Test data for e2e tests for the TPC-H query 16. Returns an instance of - PyDoughPandasTest containing information about the test. - """ - return request.param - - -@pytest.fixture( - params=[ - pytest.param( - PyDoughPandasTest( - impl_tpch_q16, - "TPCH", - tpch_q16_output, - "tpch_q16_params", - ), - id="tpch_q16_params", - ), - ], -) -def snowflake_params_tpch_q16_data(request) -> PyDoughPandasTest: - """ - Test data for e2e tests for the TPC-H query 16. Returns an instance of - PyDoughPandasTest containing information about the test. - """ - return request.param - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_pipeline_e2e_tpch_sf_conn( - tpch_pipeline_test_data: PyDoughPandasTest, - get_sf_sample_graph: graph_fetcher, - sf_conn_db_context: DatabaseContext, -): - """ - Test executing the TPC-H queries from the original code generation, - with Snowflake as the executing database. - Using the `connection` as keyword argument to the DatabaseContext. - """ - tpch_pipeline_test_data.run_e2e_test( - get_sf_sample_graph, - sf_conn_db_context("SNOWFLAKE_SAMPLE_DATA", "TPCH_SF1"), - coerce_types=True, - ) - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_pipeline_e2e_tpch_sf_params( - snowflake_params_tpch_q16_data: PyDoughPandasTest, - get_sf_sample_graph: graph_fetcher, - sf_params_tpch_db_context: DatabaseContext, -): - """ - Test executing the TPC-H queries from the original code generation, - with Snowflake as the executing database. - Using the `user`, `password`, `account`, `database`, `schema`, and `warehouse` - as keyword arguments to the DatabaseContext. - """ - snowflake_params_tpch_q16_data.run_e2e_test( - get_sf_sample_graph, sf_params_tpch_db_context, coerce_types=True - ) - - -def simple_week_sampler(): - x_dt = datetime.datetime(2025, 3, 10, 11, 00, 0) - y_dt = datetime.datetime(2025, 3, 14, 11, 00, 0) - y_dt2 = datetime.datetime(2025, 3, 15, 11, 00, 0) - y_dt3 = datetime.datetime(2025, 3, 16, 11, 00, 0) - y_dt4 = datetime.datetime(2025, 3, 17, 11, 00, 0) - y_dt5 = datetime.datetime(2025, 3, 18, 11, 00, 0) - y_dt6 = datetime.datetime(2025, 3, 19, 11, 00, 0) - y_dt7 = datetime.datetime(2025, 3, 20, 11, 00, 0) - y_dt8 = datetime.datetime(2025, 3, 21, 11, 00, 0) - return TPCH.CALCULATE( - weeks_diff=DATEDIFF("weeks", x_dt, y_dt), - sow1=DATETIME(y_dt, "start of week"), - sow2=DATETIME(y_dt2, "start of week"), - sow3=DATETIME(y_dt3, "start of week"), - sow4=DATETIME(y_dt4, "start of week"), - sow5=DATETIME(y_dt5, "start of week"), - sow6=DATETIME(y_dt6, "start of week"), - sow7=DATETIME(y_dt7, "start of week"), - sow8=DATETIME(y_dt8, "start of week"), - dayname1=DAYNAME(y_dt), - dayname2=DAYNAME(y_dt2), - dayname3=DAYNAME(y_dt3), - dayname4=DAYNAME(y_dt4), - dayname5=DAYNAME(y_dt5), - dayname6=DAYNAME(y_dt6), - dayname7=DAYNAME(y_dt7), - dayname8=DAYNAME(y_dt8), - dayofweek1=DAYOFWEEK(y_dt), - dayofweek2=DAYOFWEEK(y_dt2), - dayofweek3=DAYOFWEEK(y_dt3), - dayofweek4=DAYOFWEEK(y_dt4), - dayofweek5=DAYOFWEEK(y_dt5), - dayofweek6=DAYOFWEEK(y_dt6), - dayofweek7=DAYOFWEEK(y_dt7), - dayofweek8=DAYOFWEEK(y_dt8), - ) - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_pipeline_e2e_tpch_simple_week( - get_sf_sample_graph: graph_fetcher, - sf_conn_db_context: DatabaseContext, - week_handling_config: PyDoughConfigs, -): - """ - Test executing simple_week_sampler using the tpch schemas with different - week configurations, comparing against expected results. - """ - graph: GraphMetadata = get_sf_sample_graph("TPCH") - root: UnqualifiedNode = init_pydough_context(graph)(simple_week_sampler)() - result: pd.DataFrame = to_df( - root, - metadata=graph, - database=sf_conn_db_context("SNOWFLAKE_SAMPLE_DATA", "TPCH_SF1"), - config=week_handling_config, - ) - - # Generate expected DataFrame based on week_handling_config - start_of_week = week_handling_config.start_of_week - start_week_as_zero = week_handling_config.start_week_as_zero - - x_dt = pd.Timestamp(2025, 3, 10, 11, 0, 0) - y_dt = pd.Timestamp(2025, 3, 14, 11, 0, 0) - y_dt2 = pd.Timestamp(2025, 3, 15, 11, 0, 0) - y_dt3 = pd.Timestamp(2025, 3, 16, 11, 0, 0) - y_dt4 = pd.Timestamp(2025, 3, 17, 11, 0, 0) - y_dt5 = pd.Timestamp(2025, 3, 18, 11, 0, 0) - y_dt6 = pd.Timestamp(2025, 3, 19, 11, 0, 0) - y_dt7 = pd.Timestamp(2025, 3, 20, 11, 0, 0) - y_dt8 = pd.Timestamp(2025, 3, 21, 11, 0, 0) - - # Calculate weeks difference - x_sow = get_start_of_week(x_dt, start_of_week) - y_sow = get_start_of_week(y_dt, start_of_week) - weeks_diff = (y_sow - x_sow).days // 7 - - # Create lists to store calculated values - dates = [y_dt, y_dt2, y_dt3, y_dt4, y_dt5, y_dt6, y_dt7, y_dt8] - sows = [] - daynames = [] - dayofweeks = [] - - # Calculate values for each date in a loop - for dt in dates: - # Calculate start of week - sow = get_start_of_week(dt, start_of_week).strftime("%Y-%m-%d") - sows.append(sow) - - # Get day name - dayname = dt.day_name() - daynames.append(dayname) - - # Calculate day of week - dayofweek = get_day_of_week(dt, start_of_week, start_week_as_zero) - dayofweeks.append(dayofweek) - - # Create dictionary for DataFrame - data_dict = {"WEEKS_DIFF": [weeks_diff]} - - # Add start of week columns - for i in range(len(dates)): - data_dict[f"SOW{i + 1}"] = [sows[i]] - - # Add day name columns - for i in range(len(dates)): - data_dict[f"DAYNAME{i + 1}"] = [daynames[i]] - - # Add day of week columns - for i in range(len(dates)): - data_dict[f"DAYOFWEEK{i + 1}"] = [dayofweeks[i]] - - # Create DataFrame with expected results - expected_df = pd.DataFrame(data_dict) - for col_name in result.columns: - result[col_name], expected_df[col_name] = harmonize_types( - result[col_name], expected_df[col_name] - ) - pd.testing.assert_frame_equal(result, expected_df, check_dtype=False) - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_pipeline_sf_e2e_defog_custom( - defog_custom_pipeline_test_data: PyDoughPandasTest, - get_sf_defog_graphs: graph_fetcher, - sf_conn_db_context: DatabaseContext, -): - """ - Test executing the defog analytical queries with Snowflake database. - """ - defog_custom_pipeline_test_data.run_e2e_test( - get_sf_defog_graphs, - sf_conn_db_context("DEFOG", defog_custom_pipeline_test_data.graph_name), - coerce_types=True, - ) - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_defog_e2e( - defog_pipeline_test_data: PyDoughSQLComparisonTest, - get_sf_defog_graphs: graph_fetcher, - sf_conn_db_context: DatabaseContext, - defog_config: PyDoughConfigs, - sqlite_defog_connection: DatabaseContext, -) -> None: - """ - Test executing the defog analytical questions on the sqlite database, - comparing against the result of running the reference SQL query text on the - same database connector. Run on the defog.ai queries. - NOTE: passing SQLite connection as reference database so that refsol - is executed using SQLite. - This is needed because refsol uses SQLite SQL syntax to obtain - the correct results. - """ - defog_pipeline_test_data.run_e2e_test( - get_sf_defog_graphs, - sf_conn_db_context("DEFOG", defog_pipeline_test_data.graph_name), - defog_config, - reference_database=sqlite_defog_connection, - coerce_types=True, - ) - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_pipeline_e2e_week_offset_7_sf( - snowflake_params_week_offset_7_data: PyDoughPandasTest, - get_sf_defog_graphs: graph_fetcher, - sf_conn_db_context: DatabaseContext, -): - """ """ - snowflake_params_week_offset_7_data.run_e2e_test( - get_sf_defog_graphs, - sf_conn_db_context("DEFOG", snowflake_params_week_offset_7_data.graph_name), - coerce_types=True, - ) diff --git a/tests/test_plan_refsols/week_offset.txt b/tests/test_plan_refsols/week_offset.txt index 1e899e257..61870220a 100644 --- a/tests/test_plan_refsols/week_offset.txt +++ b/tests/test_plan_refsols/week_offset.txt @@ -1,3 +1,3 @@ -ROOT(columns=[('date_time', sbTxDateTime), ('week_adj1', DATETIME(sbTxDateTime, '1 week':string)), ('week_adj2', DATETIME(sbTxDateTime, '-1 week':string)), ('week_adj3', DATETIME(sbTxDateTime, '1 h':string, '2 w':string)), ('week_adj4', DATETIME(sbTxDateTime, '-1 s':string, '2 w':string)), ('week_adj5', DATETIME(sbTxDateTime, '1 d':string, '2 w':string)), ('week_adj6', DATETIME(sbTxDateTime, '-1 m':string, '2 w':string)), ('week_adj8', DATETIME(sbTxDateTime, '1 y':string, '2 w':string))], orderings=[]) +ROOT(columns=[('date_time', sbTxDateTime), ('week_adj1', DATETIME(sbTxDateTime, '1 week':string)), ('week_adj2', DATETIME(sbTxDateTime, '-1 week':string)), ('week_adj3', DATETIME(sbTxDateTime, '1 h':string, '2 w':string)), ('week_adj4', DATETIME(sbTxDateTime, '-1 s':string, '2 w':string)), ('week_adj5', DATETIME(sbTxDateTime, '1 d':string, '2 w':string)), ('week_adj6', DATETIME(sbTxDateTime, '-1 m':string, '2 w':string)), ('week_adj7', DATETIME(sbTxDateTime, '1 mm':string, '2 w':string)), ('week_adj8', DATETIME(sbTxDateTime, '1 y':string, '2 w':string))], orderings=[]) FILTER(condition=YEAR(sbTxDateTime) < 2025:numeric & DAY(sbTxDateTime) > 1:numeric, columns={'sbTxDateTime': sbTxDateTime}) SCAN(table=main.sbTransaction, columns={'sbTxDateTime': sbTxDateTime}) diff --git a/tests/test_plan_refsols/week_offset7.txt b/tests/test_plan_refsols/week_offset7.txt deleted file mode 100644 index ec6b04240..000000000 --- a/tests/test_plan_refsols/week_offset7.txt +++ /dev/null @@ -1,3 +0,0 @@ -ROOT(columns=[('date_time', sbTxDateTime), ('week_adj7', DATETIME(sbTxDateTime, '1 mm':string, '2 w':string))], orderings=[]) - FILTER(condition=YEAR(sbTxDateTime) < 2025:numeric & DAY(sbTxDateTime) > 1:numeric, columns={'sbTxDateTime': sbTxDateTime}) - SCAN(table=main.sbTransaction, columns={'sbTxDateTime': sbTxDateTime}) diff --git a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql index 1a1c852a2..83fcdd09c 100644 --- a/tests/test_sql_refsols/agg_simplification_1_snowflake.sql +++ b/tests/test_sql_refsols/agg_simplification_1_snowflake.sql @@ -1,29 +1,29 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS AUG_EXCHANGE, - COUNT(*) AS COUNT_ONE - FROM MAIN.SBTICKER + LENGTH(CASE WHEN sbtickerexchange <> 'NYSE Arca' THEN sbtickerexchange ELSE NULL END) AS aug_exchange, + COUNT(*) AS count_one + FROM main.sbticker GROUP BY 1 ) SELECT - AUG_EXCHANGE AS aug_exchange, - COUNT_ONE AS su1, - COUNT_ONE * 2 AS su2, - COUNT_ONE * -1 AS su3, - COUNT_ONE * -3 AS su4, + aug_exchange, + count_one AS su1, + count_one * 2 AS su2, + count_one * -1 AS su3, + count_one * -3 AS su4, 0 AS su5, - COUNT_ONE * 0.5 AS su6, + count_one * 0.5 AS su6, 0 AS su7, - COALESCE(AUG_EXCHANGE, 0) AS su8, - COUNT_ONE AS co1, - COUNT_ONE AS co2, - COUNT_ONE AS co3, - COUNT_ONE AS co4, - COUNT_ONE AS co5, - COUNT_ONE AS co6, + COALESCE(aug_exchange, 0) AS su8, + count_one AS co1, + count_one AS co2, + count_one AS co3, + count_one AS co4, + count_one AS co5, + count_one AS co6, 0 AS co7, - COUNT_ONE * IFF(NOT AUG_EXCHANGE IS NULL, 1, 0) AS co8, + count_one * IFF(NOT aug_exchange IS NULL, 1, 0) AS co8, 1 AS nd1, 1 AS nd2, 1 AS nd3, @@ -31,7 +31,7 @@ SELECT 1 AS nd5, 1 AS nd6, 0 AS nd7, - CAST(NOT AUG_EXCHANGE IS NULL AS BIGINT) AS nd8, + CAST(NOT aug_exchange IS NULL AS BIGINT) AS nd8, 1 AS av1, 2 AS av2, -1 AS av3, @@ -39,7 +39,7 @@ SELECT 0 AS av5, 0.5 AS av6, NULL AS av7, - AUG_EXCHANGE AS av8, + aug_exchange AS av8, 1 AS mi1, 2 AS mi2, -1 AS mi3, @@ -47,7 +47,7 @@ SELECT 0 AS mi5, 0.5 AS mi6, NULL AS mi7, - AUG_EXCHANGE AS mi8, + aug_exchange AS mi8, 1 AS ma1, 2 AS ma2, -1 AS ma3, @@ -55,7 +55,7 @@ SELECT 0 AS ma5, 0.5 AS ma6, NULL AS ma7, - AUG_EXCHANGE AS ma8, + aug_exchange AS ma8, 1 AS an1, 2 AS an2, -1 AS an3, @@ -63,7 +63,7 @@ SELECT 0 AS an5, 0.5 AS an6, NULL AS an7, - AUG_EXCHANGE AS an8, + aug_exchange AS an8, 1 AS me1, 2 AS me2, -1 AS me3, @@ -71,7 +71,7 @@ SELECT 0 AS me5, 0.5 AS me6, NULL AS me7, - AUG_EXCHANGE AS me8, + aug_exchange AS me8, 1 AS qu1, 2 AS qu2, -1 AS qu3, @@ -79,7 +79,7 @@ SELECT 0 AS qu5, 0.5 AS qu6, NULL AS qu7, - AUG_EXCHANGE AS qu8 -FROM _T0 + aug_exchange AS qu8 +FROM _t0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql index adf33c620..c6f20a0d2 100644 --- a/tests/test_sql_refsols/agg_simplification_2_snowflake.sql +++ b/tests/test_sql_refsols/agg_simplification_2_snowflake.sql @@ -9,7 +9,7 @@ SELECT ANY_VALUE(LOWER(sbcuststate)) AS a7, ANY_VALUE(LOWER(sbcuststate)) AS a8, ANY_VALUE(LOWER(sbcuststate)) AS a9 -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/aggregation_functions_snowflake.sql b/tests/test_sql_refsols/aggregation_functions_snowflake.sql index 56ba5b89c..0477091f2 100644 --- a/tests/test_sql_refsols/aggregation_functions_snowflake.sql +++ b/tests/test_sql_refsols/aggregation_functions_snowflake.sql @@ -1,47 +1,47 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + COUNT(*) AS n_rows, + o_custkey + FROM tpch.orders GROUP BY 2 -), _T1 AS ( +), _t1 AS ( SELECT PERCENTILE_DISC(0.8) WITHIN GROUP (ORDER BY - CUSTOMER.c_acctbal) AS AGG_7, - ANY_VALUE(CUSTOMER.c_acctbal) AS ANYTHING_C_ACCTBAL, - AVG(CUSTOMER.c_acctbal) AS AVG_C_ACCTBAL, - COUNT(CUSTOMER.c_acctbal) AS COUNT_C_ACCTBAL, - MAX(CUSTOMER.c_acctbal) AS MAX_C_ACCTBAL, - MEDIAN(CUSTOMER.c_acctbal) AS MEDIAN_C_ACCTBAL, - MIN(CUSTOMER.c_acctbal) AS MIN_C_ACCTBAL, - COUNT(DISTINCT CUSTOMER.c_acctbal) AS NDISTINCT_C_ACCTBAL, - STDDEV(CUSTOMER.c_acctbal) AS SAMPLE_STD_C_ACCTBAL, - VARIANCE(CUSTOMER.c_acctbal) AS SAMPLE_VARIANCE_C_ACCTBAL, - SUM(CUSTOMER.c_acctbal) AS SUM_C_ACCTBAL, - SUM(_S1.N_ROWS) AS SUM_N_ROWS, - CUSTOMER.c_nationkey AS C_NATIONKEY - FROM TPCH.CUSTOMER AS CUSTOMER - LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.O_CUSTKEY + customer.c_acctbal) AS agg_7, + ANY_VALUE(customer.c_acctbal) AS anything_c_acctbal, + AVG(customer.c_acctbal) AS avg_c_acctbal, + COUNT(customer.c_acctbal) AS count_c_acctbal, + MAX(customer.c_acctbal) AS max_c_acctbal, + MEDIAN(customer.c_acctbal) AS median_c_acctbal, + MIN(customer.c_acctbal) AS min_c_acctbal, + COUNT(DISTINCT customer.c_acctbal) AS ndistinct_c_acctbal, + STDDEV(customer.c_acctbal) AS sample_std_c_acctbal, + VARIANCE(customer.c_acctbal) AS sample_variance_c_acctbal, + SUM(customer.c_acctbal) AS sum_c_acctbal, + SUM(_s1.n_rows) AS sum_n_rows, + customer.c_nationkey + FROM tpch.customer AS customer + LEFT JOIN _s1 AS _s1 + ON _s1.o_custkey = customer.c_custkey GROUP BY 13 ) SELECT - COALESCE(_T1.SUM_C_ACCTBAL, 0) AS sum_value, - _T1.AVG_C_ACCTBAL AS avg_value, - _T1.MEDIAN_C_ACCTBAL AS median_value, - _T1.MIN_C_ACCTBAL AS min_value, - _T1.MAX_C_ACCTBAL AS max_value, - _T1.AGG_7 AS quantile_value, - _T1.ANYTHING_C_ACCTBAL AS anything_value, - _T1.COUNT_C_ACCTBAL AS count_value, - _T1.NDISTINCT_C_ACCTBAL AS count_distinct_value, - _T1.SAMPLE_VARIANCE_C_ACCTBAL AS variance_value, - _T1.SAMPLE_STD_C_ACCTBAL AS stddev_value -FROM TPCH.NATION AS NATION -JOIN _T1 AS _T1 - ON NATION.n_nationkey = _T1.C_NATIONKEY + COALESCE(_t1.sum_c_acctbal, 0) AS sum_value, + _t1.avg_c_acctbal AS avg_value, + _t1.median_c_acctbal AS median_value, + _t1.min_c_acctbal AS min_value, + _t1.max_c_acctbal AS max_value, + _t1.agg_7 AS quantile_value, + _t1.anything_c_acctbal AS anything_value, + _t1.count_c_acctbal AS count_value, + _t1.ndistinct_c_acctbal AS count_distinct_value, + _t1.sample_variance_c_acctbal AS variance_value, + _t1.sample_std_c_acctbal AS stddev_value +FROM tpch.nation AS nation +JOIN _t1 AS _t1 + ON _t1.c_nationkey = nation.n_nationkey AND ( - _T1.SUM_N_ROWS = 0 OR _T1.SUM_N_ROWS IS NULL + _t1.sum_n_rows = 0 OR _t1.sum_n_rows IS NULL ) diff --git a/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql b/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql index 21058a870..0a1276bc9 100644 --- a/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql +++ b/tests/test_sql_refsols/arithmetic_and_binary_operators_snowflake.sql @@ -1,16 +1,16 @@ SELECT ( - LINEITEM.l_extendedprice * ( + lineitem.l_extendedprice * ( 1 - ( - POWER(LINEITEM.l_discount, 2) + POWER(lineitem.l_discount, 2) ) ) + 1.0 - ) / PART.p_retailprice AS computed_value, - LINEITEM.l_quantity + LINEITEM.l_extendedprice AS total, - LINEITEM.l_extendedprice - LINEITEM.l_quantity AS delta, - LINEITEM.l_quantity * LINEITEM.l_discount AS product, - LINEITEM.l_extendedprice / LINEITEM.l_quantity AS ratio, - POWER(LINEITEM.l_discount, 2) AS exponent -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey + ) / part.p_retailprice AS computed_value, + lineitem.l_quantity + lineitem.l_extendedprice AS total, + lineitem.l_extendedprice - lineitem.l_quantity AS delta, + lineitem.l_quantity * lineitem.l_discount AS product, + lineitem.l_extendedprice / lineitem.l_quantity AS ratio, + POWER(lineitem.l_discount, 2) AS exponent +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey diff --git a/tests/test_sql_refsols/casting_functions_snowflake.sql b/tests/test_sql_refsols/casting_functions_snowflake.sql index 1ac6e57cc..6393eacfd 100644 --- a/tests/test_sql_refsols/casting_functions_snowflake.sql +++ b/tests/test_sql_refsols/casting_functions_snowflake.sql @@ -3,4 +3,4 @@ SELECT CAST(o_totalprice AS TEXT) AS cast_to_string2, CAST(o_totalprice AS BIGINT) AS cast_to_integer, CAST(o_shippriority AS DOUBLE) AS cast_to_float -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql index 2eef20cb9..b3569f559 100644 --- a/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql +++ b/tests/test_sql_refsols/comparisons_and_logical_operators_snowflake.sql @@ -1,24 +1,24 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + COUNT(*) AS n_rows, + o_custkey + FROM tpch.orders GROUP BY 2 ) SELECT - CUSTOMER.c_acctbal < 0 AS in_debt, - _S1.N_ROWS <= 12 OR _S1.N_ROWS IS NULL AS at_most_12_orders, - REGION.r_name = 'EUROPE' AS is_european, - NATION.n_name <> 'GERMANY' AS non_german, - CUSTOMER.c_acctbal > 0 AS non_empty_acct, - NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS >= 5 AS at_least_5_orders, - REGION.r_name = 'ASIA' OR REGION.r_name = 'EUROPE' AS is_eurasian, - CUSTOMER.c_acctbal < 0 AND REGION.r_name = 'EUROPE' AS is_european_in_debt -FROM TPCH.CUSTOMER AS CUSTOMER -LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.O_CUSTKEY -JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey + customer.c_acctbal < 0 AS in_debt, + _s1.n_rows <= 12 OR _s1.n_rows IS NULL AS at_most_12_orders, + region.r_name = 'EUROPE' AS is_european, + nation.n_name <> 'GERMANY' AS non_german, + customer.c_acctbal > 0 AS non_empty_acct, + NOT _s1.n_rows IS NULL AND _s1.n_rows >= 5 AS at_least_5_orders, + region.r_name = 'ASIA' OR region.r_name = 'EUROPE' AS is_eurasian, + customer.c_acctbal < 0 AND region.r_name = 'EUROPE' AS is_european_in_debt +FROM tpch.customer AS customer +LEFT JOIN _s1 AS _s1 + ON _s1.o_custkey = customer.c_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey diff --git a/tests/test_sql_refsols/conditional_functions_snowflake.sql b/tests/test_sql_refsols/conditional_functions_snowflake.sql index 4c32b8762..e866f55e9 100644 --- a/tests/test_sql_refsols/conditional_functions_snowflake.sql +++ b/tests/test_sql_refsols/conditional_functions_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - MIN(o_totalprice) AS MIN_O_TOTALPRICE, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + MIN(o_totalprice) AS min_o_totalprice, + o_custkey + FROM tpch.orders GROUP BY 2 ) SELECT - IFF(CUSTOMER.c_acctbal > 1000, 'High', 'Low') AS iff_col, - CUSTOMER.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, - COALESCE(_S1.MIN_O_TOTALPRICE, 0.0) AS default_val, - NOT _S1.MIN_O_TOTALPRICE IS NULL AS has_acct_bal, - _S1.MIN_O_TOTALPRICE IS NULL AS no_acct_bal, - CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END AS no_debt_bal -FROM TPCH.CUSTOMER AS CUSTOMER -LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.O_CUSTKEY + IFF(customer.c_acctbal > 1000, 'High', 'Low') AS iff_col, + customer.c_name IN ('Alice', 'Bob', 'Charlie') AS isin_col, + COALESCE(_s1.min_o_totalprice, 0.0) AS default_val, + NOT _s1.min_o_totalprice IS NULL AS has_acct_bal, + _s1.min_o_totalprice IS NULL AS no_acct_bal, + CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END AS no_debt_bal +FROM tpch.customer AS customer +LEFT JOIN _s1 AS _s1 + ON _s1.o_custkey = customer.c_custkey WHERE - CUSTOMER.c_acctbal <= 1000 AND CUSTOMER.c_acctbal >= 100 + customer.c_acctbal <= 1000 AND customer.c_acctbal >= 100 diff --git a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql index e07b6545e..25d8b846f 100644 --- a/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql +++ b/tests/test_sql_refsols/cumulative_stock_analysis_snowflake.sql @@ -1,32 +1,32 @@ SELECT - SBTRANSACTION.sbtxdatetime AS date_time, - COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, + sbtransaction.sbtxdatetime AS date_time, + COUNT(*) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS txn_within_day, COUNT( - CASE WHEN SBTRANSACTION.sbtxtype = 'buy' THEN SBTRANSACTION.sbtxtype ELSE NULL END - ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, + CASE WHEN sbtransaction.sbtxtype = 'buy' THEN sbtransaction.sbtxtype ELSE NULL END + ) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n_buys_within_day, ROUND( ( - 100.0 * COUNT_IF(SBTICKER.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + 100.0 * COUNT_IF(sbticker.sbtickersymbol IN ('AAPL', 'AMZN')) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) + ) / COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS pct_apple_txns, SUM( IFF( - SBTRANSACTION.sbtxtype = 'buy', - SBTRANSACTION.sbtxshares, - 0 - SBTRANSACTION.sbtxshares + sbtransaction.sbtxtype = 'buy', + sbtransaction.sbtxshares, + 0 - sbtransaction.sbtxshares ) - ) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, + ) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS share_change, ROUND( - AVG(SBTRANSACTION.sbtxamount) OVER (ORDER BY SBTRANSACTION.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + AVG(sbtransaction.sbtxamount) OVER (ORDER BY sbtransaction.sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS rolling_avg_amount -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid WHERE - MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 4 - AND SBTRANSACTION.sbtxstatus = 'success' - AND YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 + MONTH(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 4 + AND YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 + AND sbtransaction.sbtxstatus = 'success' ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/datediff_snowflake.sql b/tests/test_sql_refsols/datediff_snowflake.sql index 615e2b218..90148f8b4 100644 --- a/tests/test_sql_refsols/datediff_snowflake.sql +++ b/tests/test_sql_refsols/datediff_snowflake.sql @@ -8,7 +8,7 @@ SELECT DATEDIFF(HOUR, CAST(sbtxdatetime AS DATETIME), CAST('2025-05-02 11:00:00' AS TIMESTAMP)) AS hours_diff, DATEDIFF(MINUTE, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS minutes_diff, DATEDIFF(SECOND, CAST(sbtxdatetime AS DATETIME), CAST('2023-04-03 13:16:30' AS TIMESTAMP)) AS seconds_diff -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 ORDER BY diff --git a/tests/test_sql_refsols/datetime_functions_snowflake.sql b/tests/test_sql_refsols/datetime_functions_snowflake.sql index da530defe..9efb94cfe 100644 --- a/tests/test_sql_refsols/datetime_functions_snowflake.sql +++ b/tests/test_sql_refsols/datetime_functions_snowflake.sql @@ -85,4 +85,4 @@ SELECT WHEN DAYOFWEEK(CAST('1993-08-15 00:00:00' AS TIMESTAMP)) = 6 THEN 'Saturday' END AS dayname_dt -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/datetime_sampler_snowflake.sql b/tests/test_sql_refsols/datetime_sampler_snowflake.sql index c8697dd70..5d6798a50 100644 --- a/tests/test_sql_refsols/datetime_sampler_snowflake.sql +++ b/tests/test_sql_refsols/datetime_sampler_snowflake.sql @@ -167,4 +167,4 @@ SELECT DATEDIFF(MINUTE, CURRENT_TIMESTAMP(), CAST('2018-02-14 12:41:06' AS TIMESTAMP)) AS _expr98, DATEDIFF(SECOND, CURRENT_TIMESTAMP(), CAST('1999-03-14' AS TIMESTAMP)) AS _expr99, DATEDIFF(SECOND, CAST('2022-11-24' AS DATE), CAST('2019-07-04 11:30:00' AS TIMESTAMP)) AS _expr100 -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql index d403616c5..b7b4c5729 100644 --- a/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv10_snowflake.sql @@ -1,24 +1,24 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - YEAR(CAST(sbtxdatetime AS TIMESTAMP)) AS EXPR_1, - MONTH(CAST(sbtxdatetime AS TIMESTAMP)) AS EXPR_2, - COUNT(*) AS N_ROWS, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + YEAR(CAST(sbtxdatetime AS TIMESTAMP)) AS expr_1, + MONTH(CAST(sbtxdatetime AS TIMESTAMP)) AS expr_2, + COUNT(*) AS n_rows, + sbtxcustid + FROM main.sbtransaction GROUP BY 1, 2, 4 ) SELECT - SBCUSTOMER.sbcustid AS _id, - SBCUSTOMER.sbcustname AS name, - COALESCE(_S1.N_ROWS, 0) AS num_transactions -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID - AND _S1.EXPR_1 = YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) - AND _S1.EXPR_2 = MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name, + COALESCE(_s1.n_rows, 0) AS num_transactions +FROM main.sbcustomer AS sbcustomer +LEFT JOIN _s1 AS _s1 + ON _s1.expr_1 = YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) + AND _s1.expr_2 = MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) + AND _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql index a7400d9fe..f497c81e3 100644 --- a/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv11_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT - SBTRANSACTION.sbtxcustid AS _u_1 - FROM MAIN.SBTRANSACTION AS SBTRANSACTION - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid - AND SBTICKER.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') + sbtransaction.sbtxcustid AS _u_1 + FROM main.sbtransaction AS sbtransaction + JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickersymbol IN ('AMZN', 'AAPL', 'GOOGL', 'META', 'NFLX') GROUP BY 1 ) SELECT COUNT(*) AS n_customers -FROM MAIN.SBCUSTOMER AS SBCUSTOMER +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON SBCUSTOMER.sbcustid = _u_0._u_1 + ON _u_0._u_1 = sbcustomer.sbcustid WHERE - ENDSWITH(SBCUSTOMER.sbcustemail, '.com') AND NOT _u_0._u_1 IS NULL + ENDSWITH(sbcustomer.sbcustemail, '.com') AND NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql index 4344097be..b2ee83029 100644 --- a/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv12_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS n_customers -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE ( ENDSWITH(LOWER(sbcustname), 'ez') OR STARTSWITH(LOWER(sbcustname), 'j') diff --git a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql index 1bebc416b..011c5ba86 100644 --- a/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv13_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS cust_country, COUNT(*) AS TAC -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE sbcustjoindate >= CAST('2023-01-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql index a8d0ebe14..0d9f76898 100644 --- a/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv14_snowflake.sql @@ -1,9 +1,9 @@ SELECT - SBTICKER.sbtickertype AS ticker_type, - AVG(SBDAILYPRICE.sbdpclose) AS ACP -FROM MAIN.SBTICKER AS SBTICKER -JOIN MAIN.SBDAILYPRICE AS SBDAILYPRICE - ON DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 - AND SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid + sbticker.sbtickertype AS ticker_type, + AVG(sbdailyprice.sbdpclose) AS ACP +FROM main.sbticker AS sbticker +JOIN main.sbdailyprice AS sbdailyprice + ON DATEDIFF(DAY, CAST(sbdailyprice.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + AND sbdailyprice.sbdptickerid = sbticker.sbtickerid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql index e641bc601..e735bcfcd 100644 --- a/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv15_snowflake.sql @@ -3,7 +3,7 @@ SELECT 100 * ( COALESCE(COUNT_IF(sbcuststatus = 'active'), 0) / COUNT(*) ) AS ar -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE sbcustjoindate <= '2022-12-31' AND sbcustjoindate >= '2022-01-01' GROUP BY diff --git a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql index 6ca9217ef..93d7cefd8 100644 --- a/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv16_snowflake.sql @@ -1,23 +1,23 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(sbtxtax + sbtxcommission) AS SUM_EXPR_2, - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxtickerid AS SBTXTICKERID - FROM MAIN.SBTRANSACTION + SUM(sbtxtax + sbtxcommission) AS sum_expr_2, + SUM(sbtxamount) AS sum_sbtxamount, + sbtxtickerid + FROM main.sbtransaction WHERE sbtxdatetime >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP()) AND sbtxtype = 'sell' GROUP BY 3 ) SELECT - SBTICKER.sbtickersymbol AS symbol, + sbticker.sbtickersymbol AS symbol, ( 100.0 * ( - COALESCE(_S1.SUM_SBTXAMOUNT, 0) - COALESCE(_S1.SUM_EXPR_2, 0) + COALESCE(_s1.sum_sbtxamount, 0) - COALESCE(_s1.sum_expr_2, 0) ) - ) / COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS SPM -FROM MAIN.SBTICKER AS SBTICKER -JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.SBTXTICKERID + ) / COALESCE(_s1.sum_sbtxamount, 0) AS SPM +FROM main.sbticker AS sbticker +JOIN _s1 AS _s1 + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql index 293aef3b2..b83dcb2ac 100644 --- a/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv1_snowflake.sql @@ -1,17 +1,17 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction GROUP BY 2 ) SELECT - SBCUSTOMER.sbcustname AS name, - COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + sbcustomer.sbcustname AS name, + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount +FROM main.sbcustomer AS sbcustomer +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 2 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql index 50990724f..b4dfab519 100644 --- a/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv2_snowflake.sql @@ -1,8 +1,8 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - sbtxtickerid AS SBTXTICKERID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + sbtxtickerid + FROM main.sbtransaction WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -10, CURRENT_TIMESTAMP())) AND sbtxtype = 'buy' @@ -10,11 +10,11 @@ WITH _S1 AS ( 2 ) SELECT - SBTICKER.sbtickersymbol AS symbol, - COALESCE(_S1.N_ROWS, 0) AS tx_count -FROM MAIN.SBTICKER AS SBTICKER -LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.SBTXTICKERID + sbticker.sbtickersymbol AS symbol, + COALESCE(_s1.n_rows, 0) AS tx_count +FROM main.sbticker AS sbticker +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 2 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql index d08f16b72..542ba352c 100644 --- a/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv3_snowflake.sql @@ -1,19 +1,19 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - COUNT(*) AS N_ROWS, - COUNT_IF(sbtxstatus = 'success') AS SUM_EXPR_2, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + COUNT_IF(sbtxstatus = 'success') AS sum_expr_2, + sbtxcustid + FROM main.sbtransaction GROUP BY 3 ) SELECT - SBCUSTOMER.sbcustname AS name, + sbcustomer.sbcustname AS name, ( - 100.0 * COALESCE(_T1.SUM_EXPR_2, 0) - ) / _T1.N_ROWS AS success_rate -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN _T1 AS _T1 - ON SBCUSTOMER.sbcustid = _T1.SBTXCUSTID AND _T1.N_ROWS >= 5 + 100.0 * COALESCE(_t1.sum_expr_2, 0) + ) / _t1.n_rows AS success_rate +FROM main.sbcustomer AS sbcustomer +JOIN _t1 AS _t1 + ON _t1.n_rows >= 5 AND _t1.sbtxcustid = sbcustomer.sbcustid ORDER BY 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql index 463f8ee2c..37d5e5c4a 100644 --- a/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv4_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - MAX(sbdphigh) AS MAX_SBDPHIGH, - MIN(sbdplow) AS MIN_SBDPLOW, - sbdptickerid AS SBDPTICKERID - FROM MAIN.SBDAILYPRICE + MAX(sbdphigh) AS max_sbdphigh, + MIN(sbdplow) AS min_sbdplow, + sbdptickerid + FROM main.sbdailyprice WHERE sbdpdate <= CAST('2023-04-04' AS DATE) AND sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 3 ) SELECT - SBTICKER.sbtickersymbol AS symbol, - _S1.MAX_SBDPHIGH - _S1.MIN_SBDPLOW AS price_change -FROM MAIN.SBTICKER AS SBTICKER -LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.SBDPTICKERID + sbticker.sbtickersymbol AS symbol, + _s1.max_sbdphigh - _s1.min_sbdplow AS price_change +FROM main.sbticker AS sbticker +LEFT JOIN _s1 AS _s1 + ON _s1.sbdptickerid = sbticker.sbtickerid ORDER BY 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql index a628e33fd..09b128632 100644 --- a/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv5_snowflake.sql @@ -1,43 +1,43 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - COUNT(sbdpclose) AS COUNT_SBDPCLOSE, - MAX(sbdphigh) AS MAX_HIGH, - MIN(sbdplow) AS MIN_LOW, + COUNT(sbdpclose) AS count_sbdpclose, + MAX(sbdphigh) AS max_high, + MIN(sbdplow) AS min_low, CONCAT_WS( '-', YEAR(CAST(sbdpdate AS TIMESTAMP)), LPAD(MONTH(CAST(sbdpdate AS TIMESTAMP)), 2, '0') - ) AS MONTH, - SUM(sbdpclose) AS SUM_SBDPCLOSE, - sbdptickerid AS SBDPTICKERID - FROM MAIN.SBDAILYPRICE + ) AS month, + SUM(sbdpclose) AS sum_sbdpclose, + sbdptickerid + FROM main.sbdailyprice GROUP BY 4, 6 -), _T0 AS ( +), _t0 AS ( SELECT - MAX(_S0.MAX_HIGH) AS MAX_HIGH, - MIN(_S0.MIN_LOW) AS MIN_LOW, - SUM(_S0.COUNT_SBDPCLOSE) AS SUM_COUNT_SBDPCLOSE, - SUM(_S0.SUM_SBDPCLOSE) AS SUM_SUM_SBDPCLOSE, - _S0.MONTH, - SBTICKER.sbtickersymbol AS SBTICKERSYMBOL - FROM _S0 AS _S0 - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = _S0.SBDPTICKERID + MAX(_s0.max_high) AS max_high, + MIN(_s0.min_low) AS min_low, + SUM(_s0.count_sbdpclose) AS sum_count_sbdpclose, + SUM(_s0.sum_sbdpclose) AS sum_sum_sbdpclose, + _s0.month, + sbticker.sbtickersymbol + FROM _s0 AS _s0 + JOIN main.sbticker AS sbticker + ON _s0.sbdptickerid = sbticker.sbtickerid GROUP BY 5, 6 ) SELECT - SBTICKERSYMBOL AS symbol, - MONTH AS month, - SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE AS avg_close, - MAX_HIGH AS max_high, - MIN_LOW AS min_low, + sbtickersymbol AS symbol, + month, + sum_sum_sbdpclose / sum_count_sbdpclose AS avg_close, + max_high, + min_low, ( ( - SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE - ) - LAG(SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) - ) / LAG(SUM_SUM_SBDPCLOSE / SUM_COUNT_SBDPCLOSE, 1) OVER (PARTITION BY SBTICKERSYMBOL ORDER BY MONTH) AS momc -FROM _T0 + sum_sum_sbdpclose / sum_count_sbdpclose + ) - LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY month) + ) / LAG(sum_sum_sbdpclose / sum_count_sbdpclose, 1) OVER (PARTITION BY sbtickersymbol ORDER BY month) AS momc +FROM _t0 diff --git a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql index e8dc4a0e7..cbbff3f2a 100644 --- a/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv6_snowflake.sql @@ -1,17 +1,17 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction GROUP BY 3 ) SELECT - SBCUSTOMER.sbcustname AS name, - _S1.N_ROWS AS num_tx, - COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount, - RANK() OVER (ORDER BY COALESCE(_S1.SUM_SBTXAMOUNT, 0) DESC) AS cust_rank -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + sbcustomer.sbcustname AS name, + _s1.n_rows AS num_tx, + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount, + RANK() OVER (ORDER BY COALESCE(_s1.sum_sbtxamount, 0) DESC) AS cust_rank +FROM main.sbcustomer AS sbcustomer +JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid diff --git a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql index 1e67b2da7..c2416b560 100644 --- a/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv7_snowflake.sql @@ -1,40 +1,40 @@ -WITH _S2 AS ( +WITH _s2 AS ( SELECT CONCAT_WS( '-', YEAR(CAST(sbcustjoindate AS TIMESTAMP)), LPAD(MONTH(CAST(sbcustjoindate AS TIMESTAMP)), 2, '0') - ) AS MONTH, - COUNT(*) AS N_ROWS - FROM MAIN.SBCUSTOMER + ) AS month, + COUNT(*) AS n_rows + FROM main.sbcustomer WHERE sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY 1 -), _S3 AS ( +), _s3 AS ( SELECT - AVG(SBTRANSACTION.sbtxamount) AS AVG_SBTXAMOUNT, + AVG(sbtransaction.sbtxamount) AS avg_sbtxamount, CONCAT_WS( '-', - YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), - LPAD(MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)), 2, '0') - ) AS MONTH - FROM MAIN.SBCUSTOMER AS SBCUSTOMER - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON MONTH(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) - AND SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND YEAR(CAST(SBCUSTOMER.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)), + LPAD(MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)), 2, '0') + ) AS month + FROM main.sbcustomer AS sbcustomer + JOIN main.sbtransaction AS sbtransaction + ON MONTH(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) = MONTH(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + AND YEAR(CAST(sbcustomer.sbcustjoindate AS TIMESTAMP)) = YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid WHERE - SBCUSTOMER.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) - AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) + sbcustomer.sbcustjoindate < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) + AND sbcustomer.sbcustjoindate >= DATE_TRUNC('MONTH', DATEADD(MONTH, -6, CURRENT_TIMESTAMP())) GROUP BY 2 ) SELECT - _S2.MONTH AS month, - _S2.N_ROWS AS customer_signups, - _S3.AVG_SBTXAMOUNT AS avg_tx_amount -FROM _S2 AS _S2 -LEFT JOIN _S3 AS _S3 - ON _S2.MONTH = _S3.MONTH + _s2.month, + _s2.n_rows AS customer_signups, + _s3.avg_sbtxamount AS avg_tx_amount +FROM _s2 AS _s2 +LEFT JOIN _s3 AS _s3 + ON _s2.month = _s3.month diff --git a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql index 5a061a0dc..50141aab4 100644 --- a/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv8_snowflake.sql @@ -1,7 +1,7 @@ WITH _u_0 AS ( SELECT sbcustid AS _u_1 - FROM MAIN.SBCUSTOMER + FROM main.sbcustomer WHERE LOWER(sbcustcountry) = 'usa' GROUP BY @@ -9,13 +9,13 @@ WITH _u_0 AS ( ) SELECT CASE WHEN COUNT(*) > 0 THEN COUNT(*) ELSE NULL END AS n_transactions, - COALESCE(SUM(SBTRANSACTION.sbtxamount), 0) AS total_amount -FROM MAIN.SBTRANSACTION AS SBTRANSACTION + COALESCE(SUM(sbtransaction.sbtxamount), 0) AS total_amount +FROM main.sbtransaction AS sbtransaction LEFT JOIN _u_0 AS _u_0 - ON SBTRANSACTION.sbtxcustid = _u_0._u_1 + ON _u_0._u_1 = sbtransaction.sbtxcustid WHERE NOT _u_0._u_1 IS NULL - AND SBTRANSACTION.sbtxdatetime < DATE_TRUNC( + AND sbtransaction.sbtxdatetime < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -27,7 +27,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND SBTRANSACTION.sbtxdatetime >= DATEADD( + AND sbtransaction.sbtxdatetime >= DATEADD( WEEK, -1, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql index 8cdd93e22..e98831783 100644 --- a/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_adv9_snowflake.sql @@ -5,27 +5,27 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP) + CAST(sbtransaction.sbtxdatetime AS TIMESTAMP) ) ) AS week, COUNT(*) AS num_transactions, COALESCE( COUNT_IF(( ( - DAYOFWEEK(SBTRANSACTION.sbtxdatetime) + 6 + DAYOFWEEK(sbtransaction.sbtxdatetime) + 6 ) % 7 ) IN (5, 6)), 0 ) AS weekend_transactions -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid - AND SBTICKER.sbtickertype = 'stock' +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickertype = 'stock' WHERE - SBTRANSACTION.sbtxdatetime < DATE_TRUNC( + sbtransaction.sbtxdatetime < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -37,7 +37,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND SBTRANSACTION.sbtxdatetime >= DATEADD( + AND sbtransaction.sbtxdatetime >= DATEADD( WEEK, -8, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql index f926019f9..1b3a16cf5 100644 --- a/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic10_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM MAIN.SBDAILYPRICE + FROM main.sbdailyprice GROUP BY 1 ) SELECT - SBTICKER.sbtickerid AS _id, - SBTICKER.sbtickersymbol AS symbol -FROM MAIN.SBTICKER AS SBTICKER + sbticker.sbtickerid AS _id, + sbticker.sbtickersymbol AS symbol +FROM main.sbticker AS sbticker LEFT JOIN _u_0 AS _u_0 - ON SBTICKER.sbtickerid = _u_0._u_1 + ON _u_0._u_1 = sbticker.sbtickerid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql index f555d7941..121a66b86 100644 --- a/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic1_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + SUM(sbtxamount) AS sum_sbtxamount, + sbtxcustid + FROM main.sbtransaction WHERE sbtxdatetime >= DATE_TRUNC('DAY', DATEADD(DAY, -30, CURRENT_TIMESTAMP())) GROUP BY 3 ) SELECT - SBCUSTOMER.sbcustcountry AS country, - COALESCE(SUM(_S1.N_ROWS), 0) AS num_transactions, - COALESCE(SUM(_S1.SUM_SBTXAMOUNT), 0) AS total_amount -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + sbcustomer.sbcustcountry AS country, + COALESCE(SUM(_s1.n_rows), 0) AS num_transactions, + COALESCE(SUM(_s1.sum_sbtxamount), 0) AS total_amount +FROM main.sbcustomer AS sbcustomer +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql index f5697ff7a..2c2ba028b 100644 --- a/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic2_snowflake.sql @@ -2,7 +2,7 @@ SELECT sbtxtype AS transaction_type, COUNT(DISTINCT sbtxcustid) AS num_customers, AVG(sbtxshares) AS avg_shares -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE sbtxdatetime <= CAST('2023-03-31' AS DATE) AND sbtxdatetime >= CAST('2023-01-01' AS DATE) diff --git a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql index d2103a902..14a43a168 100644 --- a/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic3_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sbtxamount) AS SUM_SBTXAMOUNT, - sbtxtickerid AS SBTXTICKERID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + SUM(sbtxamount) AS sum_sbtxamount, + sbtxtickerid + FROM main.sbtransaction GROUP BY 3 ) SELECT - SBTICKER.sbtickersymbol AS symbol, - COALESCE(_S1.N_ROWS, 0) AS num_transactions, - COALESCE(_S1.SUM_SBTXAMOUNT, 0) AS total_amount -FROM MAIN.SBTICKER AS SBTICKER -LEFT JOIN _S1 AS _S1 - ON SBTICKER.sbtickerid = _S1.SBTXTICKERID + sbticker.sbtickersymbol AS symbol, + COALESCE(_s1.n_rows, 0) AS num_transactions, + COALESCE(_s1.sum_sbtxamount, 0) AS total_amount +FROM main.sbticker AS sbticker +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxtickerid = sbticker.sbtickerid ORDER BY 3 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql index fe28def67..726590352 100644 --- a/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic4_snowflake.sql @@ -1,31 +1,31 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - COUNT(*) AS NUM_TRANSACTIONS, - sbtxcustid AS SBTXCUSTID, - sbtxtickerid AS SBTXTICKERID - FROM MAIN.SBTRANSACTION + COUNT(*) AS num_transactions, + sbtxcustid, + sbtxtickerid + FROM main.sbtransaction GROUP BY 2, 3 -), _S2 AS ( +), _s2 AS ( SELECT - SUM(_S0.NUM_TRANSACTIONS) AS NUM_TRANSACTIONS, - SBTICKER.sbtickertype AS SBTICKERTYPE, - _S0.SBTXCUSTID - FROM _S0 AS _S0 - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = _S0.SBTXTICKERID + SUM(_s0.num_transactions) AS num_transactions, + sbticker.sbtickertype, + _s0.sbtxcustid + FROM _s0 AS _s0 + JOIN main.sbticker AS sbticker + ON _s0.sbtxtickerid = sbticker.sbtickerid GROUP BY 2, 3 ) SELECT - SBCUSTOMER.sbcuststate AS state, - _S2.SBTICKERTYPE AS ticker_type, - SUM(_S2.NUM_TRANSACTIONS) AS num_transactions -FROM _S2 AS _S2 -JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = _S2.SBTXCUSTID + sbcustomer.sbcuststate AS state, + _s2.sbtickertype AS ticker_type, + SUM(_s2.num_transactions) AS num_transactions +FROM _s2 AS _s2 +JOIN main.sbcustomer AS sbcustomer + ON _s2.sbtxcustid = sbcustomer.sbcustid GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql index 7d9a16807..669d92e42 100644 --- a/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic5_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM MAIN.SBTRANSACTION + FROM main.sbtransaction WHERE sbtxtype = 'buy' GROUP BY 1 ) SELECT - SBCUSTOMER.sbcustid AS _id -FROM MAIN.SBCUSTOMER AS SBCUSTOMER + sbcustomer.sbcustid AS _id +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON SBCUSTOMER.sbcustid = _u_0._u_1 + ON _u_0._u_1 = sbcustomer.sbcustid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql index 39ecccabf..170c215bd 100644 --- a/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic6_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT sbdptickerid AS _u_1 - FROM MAIN.SBDAILYPRICE + FROM main.sbdailyprice WHERE sbdpdate >= CAST('2023-04-01' AS DATE) GROUP BY 1 ) SELECT - SBTICKER.sbtickerid AS _id -FROM MAIN.SBTICKER AS SBTICKER + sbticker.sbtickerid AS _id +FROM main.sbticker AS sbticker LEFT JOIN _u_0 AS _u_0 - ON SBTICKER.sbtickerid = _u_0._u_1 + ON _u_0._u_1 = sbticker.sbtickerid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql index 64b64904a..c1f3031b1 100644 --- a/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic7_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbtxstatus AS status, COUNT(*) AS num_transactions -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql index fab020c76..fb20ad227 100644 --- a/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic8_snowflake.sql @@ -1,7 +1,7 @@ SELECT sbcustcountry AS country, COUNT(*) AS num_customers -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql index 5ad788527..f96baada7 100644 --- a/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_basic9_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT sbtxcustid AS _u_1 - FROM MAIN.SBTRANSACTION + FROM main.sbtransaction GROUP BY 1 ) SELECT - SBCUSTOMER.sbcustid AS _id, - SBCUSTOMER.sbcustname AS name -FROM MAIN.SBCUSTOMER AS SBCUSTOMER + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name +FROM main.sbcustomer AS sbcustomer LEFT JOIN _u_0 AS _u_0 - ON SBCUSTOMER.sbcustid = _u_0._u_1 + ON _u_0._u_1 = sbcustomer.sbcustid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql index 55d275bc0..db65bbc3a 100644 --- a/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen1_snowflake.sql @@ -1,8 +1,8 @@ SELECT - MIN(SBDAILYPRICE.sbdpclose) AS lowest_price -FROM MAIN.SBDAILYPRICE AS SBDAILYPRICE -JOIN MAIN.SBTICKER AS SBTICKER - ON SBDAILYPRICE.sbdptickerid = SBTICKER.sbtickerid - AND SBTICKER.sbtickersymbol = 'VTI' + MIN(sbdailyprice.sbdpclose) AS lowest_price +FROM main.sbdailyprice AS sbdailyprice +JOIN main.sbticker AS sbticker + ON sbdailyprice.sbdptickerid = sbticker.sbtickerid + AND sbticker.sbtickersymbol = 'VTI' WHERE - DATEDIFF(DAY, CAST(SBDAILYPRICE.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(sbdailyprice.sbdpdate AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql index f42cf1b23..e2117c631 100644 --- a/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen2_snowflake.sql @@ -1,6 +1,6 @@ SELECT - COUNT(SBTRANSACTION.sbtxcustid) AS transaction_count -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND SBCUSTOMER.sbcustjoindate >= DATE_TRUNC('DAY', DATEADD(DAY, -70, CURRENT_TIMESTAMP())) + COUNT(sbtransaction.sbtxcustid) AS transaction_count +FROM main.sbtransaction AS sbtransaction +JOIN main.sbcustomer AS sbcustomer + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + AND sbcustomer.sbcustjoindate >= DATE_TRUNC('DAY', DATEADD(DAY, -70, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql index 7a344e4ec..9a3cc7626 100644 --- a/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen3_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - MIN(sbtxdatetime) AS MIN_SBTXDATETIME, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + MIN(sbtxdatetime) AS min_sbtxdatetime, + sbtxcustid + FROM main.sbtransaction GROUP BY 2 ) SELECT - SBCUSTOMER.sbcustid AS cust_id, + sbcustomer.sbcustid AS cust_id, DATEDIFF( SECOND, - CAST(SBCUSTOMER.sbcustjoindate AS DATETIME), - CAST(_S1.MIN_SBTXDATETIME AS DATETIME) + CAST(sbcustomer.sbcustjoindate AS DATETIME), + CAST(_s1.min_sbtxdatetime AS DATETIME) ) / 86400.0 AS DaysFromJoinToFirstTransaction -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID +FROM main.sbcustomer AS sbcustomer +JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid diff --git a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql index dcb16e69c..c534bb045 100644 --- a/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen4_snowflake.sql @@ -1,8 +1,8 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - sbtxcustid AS SBTXCUSTID - FROM MAIN.SBTRANSACTION + COUNT(*) AS n_rows, + sbtxcustid + FROM main.sbtransaction WHERE CAST(sbtxdatetime AS TIMESTAMP) < CAST('2023-04-02' AS DATE) AND CAST(sbtxdatetime AS TIMESTAMP) >= CAST('2023-04-01' AS DATE) @@ -11,12 +11,12 @@ WITH _S1 AS ( 2 ) SELECT - SBCUSTOMER.sbcustid AS _id, - SBCUSTOMER.sbcustname AS name, - COALESCE(_S1.N_ROWS, 0) AS num_tx -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S1 AS _S1 - ON SBCUSTOMER.sbcustid = _S1.SBTXCUSTID + sbcustomer.sbcustid AS _id, + sbcustomer.sbcustname AS name, + COALESCE(_s1.n_rows, 0) AS num_tx +FROM main.sbcustomer AS sbcustomer +LEFT JOIN _s1 AS _s1 + ON _s1.sbtxcustid = sbcustomer.sbcustid ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql index 18311845d..e0c8a99a3 100644 --- a/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_broker_gen5_snowflake.sql @@ -1,11 +1,11 @@ SELECT DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month, AVG(sbtxprice) AS avg_price -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE QUARTER(CAST(sbtxdatetime AS TIMESTAMP)) = 1 - AND sbtxstatus = 'success' AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 + AND sbtxstatus = 'success' GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql index a07ccf3df..376248e57 100644 --- a/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv10_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - MAX(payment_date) AS MAX_PAYMENT_DATE, - sale_id AS SALE_ID - FROM MAIN.PAYMENTS_RECEIVED + MAX(payment_date) AS max_payment_date, + sale_id + FROM main.payments_received GROUP BY 2 ) SELECT ROUND( AVG( - DATEDIFF(DAY, CAST(SALES.sale_date AS DATETIME), CAST(_S1.MAX_PAYMENT_DATE AS DATETIME)) + DATEDIFF(DAY, CAST(sales.sale_date AS DATETIME), CAST(_s1.max_payment_date AS DATETIME)) ), 2 ) AS avg_days_to_payment -FROM MAIN.SALES AS SALES -LEFT JOIN _S1 AS _S1 - ON SALES._id = _S1.SALE_ID +FROM main.sales AS sales +LEFT JOIN _s1 AS _s1 + ON _s1.sale_id = sales._id diff --git a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql index 5d3582b3f..57a27617d 100644 --- a/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv11_snowflake.sql @@ -1,11 +1,11 @@ SELECT ( ( - COALESCE(SUM(SALES.sale_price), 0) - COALESCE(SUM(CARS.cost), 0) - ) / COALESCE(SUM(CARS.cost), 0) + COALESCE(SUM(sales.sale_price), 0) - COALESCE(SUM(cars.cost), 0) + ) / COALESCE(SUM(cars.cost), 0) ) * 100 AS GPM -FROM MAIN.SALES AS SALES -JOIN MAIN.CARS AS CARS - ON CARS._id = SALES.car_id +FROM main.sales AS sales +JOIN main.cars AS cars + ON cars._id = sales.car_id WHERE - YEAR(CAST(SALES.sale_date AS TIMESTAMP)) = 2023 + YEAR(CAST(sales.sale_date AS TIMESTAMP)) = 2023 diff --git a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql index bd7f07392..441231c8e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv12_snowflake.sql @@ -1,28 +1,28 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - ANY_VALUE(SALES.car_id) AS ANYTHING_CAR_ID, - ANY_VALUE(CARS.make) AS ANYTHING_MAKE, - ANY_VALUE(CARS.model) AS ANYTHING_MODEL, - ANY_VALUE(SALES.sale_price) AS ANYTHING_SALE_PRICE, - CARS._id AS _ID_1 - FROM MAIN.SALES AS SALES - JOIN MAIN.CARS AS CARS - ON CARS._id = SALES.car_id - JOIN MAIN.INVENTORY_SNAPSHOTS AS INVENTORY_SNAPSHOTS - ON CARS._id = INVENTORY_SNAPSHOTS.car_id - AND INVENTORY_SNAPSHOTS.is_in_inventory = 0 - AND INVENTORY_SNAPSHOTS.snapshot_date = SALES.sale_date + ANY_VALUE(sales.car_id) AS anything_car_id, + ANY_VALUE(cars.make) AS anything_make, + ANY_VALUE(cars.model) AS anything_model, + ANY_VALUE(sales.sale_price) AS anything_sale_price, + cars._id AS _id_1 + FROM main.sales AS sales + JOIN main.cars AS cars + ON cars._id = sales.car_id + JOIN main.inventory_snapshots AS inventory_snapshots + ON cars._id = inventory_snapshots.car_id + AND inventory_snapshots.is_in_inventory = 0 + AND inventory_snapshots.snapshot_date = sales.sale_date GROUP BY - SALES._id, + sales._id, 5 ) SELECT - ANYTHING_MAKE AS make, - ANYTHING_MODEL AS model, - ANYTHING_SALE_PRICE AS sale_price -FROM _T1 + anything_make AS make, + anything_model AS model, + anything_sale_price AS sale_price +FROM _t1 WHERE - ANYTHING_CAR_ID = _ID_1 + _id_1 = anything_car_id ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql index a785f1d56..aa0f7479e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv14_snowflake.sql @@ -1,5 +1,5 @@ SELECT COUNT(*) AS TSC -FROM MAIN.SALES +FROM main.sales WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql index 006deec16..33e8ec651 100644 --- a/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv15_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - AVG(sale_price) AS AVG_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + AVG(sale_price) AS avg_sale_price, + salesperson_id + FROM main.sales GROUP BY 2 ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - _S1.AVG_SALE_PRICE AS ASP -FROM MAIN.SALESPERSONS AS SALESPERSONS -LEFT JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons.first_name, + salespersons.last_name, + _s1.avg_sale_price AS ASP +FROM main.salespersons AS salespersons +LEFT JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 3 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql index f9dfe34b2..f51f3467f 100644 --- a/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv16_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(sale_price) AS SUM_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + SUM(sale_price) AS sum_sale_price, + salesperson_id + FROM main.sales GROUP BY 2 ) SELECT - SALESPERSONS._id, - SALESPERSONS.first_name, - SALESPERSONS.last_name, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total -FROM MAIN.SALESPERSONS AS SALESPERSONS -LEFT JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons._id, + salespersons.first_name, + salespersons.last_name, + COALESCE(_s1.sum_sale_price, 0) AS total +FROM main.salespersons AS salespersons +LEFT JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql index 3b1358f39..28c10f073 100644 --- a/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv1_snowflake.sql @@ -5,24 +5,24 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(payments_received.payment_date AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(PAYMENTS_RECEIVED.payment_date AS TIMESTAMP) + CAST(payments_received.payment_date AS TIMESTAMP) ) ) AS payment_week, COUNT(*) AS total_payments, COALESCE( COUNT_IF(( ( - DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + DAYOFWEEK(payments_received.payment_date) + 6 ) % 7 ) IN (5, 6)), 0 ) AS weekend_payments -FROM MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED -JOIN MAIN.SALES AS SALES - ON PAYMENTS_RECEIVED.sale_id = SALES._id AND SALES.sale_price > 30000 +FROM main.payments_received AS payments_received +JOIN main.sales AS sales + ON payments_received.sale_id = sales._id AND sales.sale_price > 30000 WHERE DATEDIFF( WEEK, @@ -30,10 +30,10 @@ WHERE DAY, ( ( - DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + DAYOFWEEK(payments_received.payment_date) + 6 ) % 7 ) * -1, - PAYMENTS_RECEIVED.payment_date + payments_received.payment_date ) AS DATETIME), DATEADD( DAY, @@ -51,10 +51,10 @@ WHERE DAY, ( ( - DAYOFWEEK(PAYMENTS_RECEIVED.payment_date) + 6 + DAYOFWEEK(payments_received.payment_date) + 6 ) % 7 ) * -1, - PAYMENTS_RECEIVED.payment_date + payments_received.payment_date ) AS DATETIME), DATEADD( DAY, diff --git a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql index fccee1e5d..951d47afe 100644 --- a/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv2_snowflake.sql @@ -1,21 +1,21 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + salesperson_id + FROM main.sales WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY 2 ) SELECT - SALESPERSONS._id, - SALESPERSONS.first_name, - SALESPERSONS.last_name, - _S1.N_ROWS AS num_sales -FROM MAIN.SALESPERSONS AS SALESPERSONS -JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons._id, + salespersons.first_name, + salespersons.last_name, + _s1.n_rows AS num_sales +FROM main.salespersons AS salespersons +JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 4 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql index 0f9f5ed4c..05258a65e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv3_snowflake.sql @@ -1,17 +1,17 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - car_id AS CAR_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + car_id + FROM main.sales GROUP BY 2 ) SELECT - CARS.make, - CARS.model, - COALESCE(_S1.N_ROWS, 0) AS num_sales -FROM MAIN.CARS AS CARS -LEFT JOIN _S1 AS _S1 - ON CARS._id = _S1.CAR_ID + cars.make, + cars.model, + COALESCE(_s1.n_rows, 0) AS num_sales +FROM main.cars AS cars +LEFT JOIN _s1 AS _s1 + ON _s1.car_id = cars._id WHERE - CONTAINS(LOWER(CARS.vin_number), 'm5') + CONTAINS(LOWER(cars.vin_number), 'm5') diff --git a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql index 5aeeccbf3..2d82c7314 100644 --- a/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv4_snowflake.sql @@ -1,25 +1,25 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sale_price) AS SUM_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + SUM(sale_price) AS sum_sale_price, + car_id + FROM main.sales WHERE sale_date >= DATEADD(DAY, -30, CURRENT_TIMESTAMP()) GROUP BY 3 ) SELECT - COALESCE(_S1.N_ROWS, 0) AS num_sales, + COALESCE(_s1.n_rows, 0) AS num_sales, CASE WHEN ( - NOT _S1.N_ROWS IS NULL AND _S1.N_ROWS > 0 + NOT _s1.n_rows IS NULL AND _s1.n_rows > 0 ) - THEN COALESCE(_S1.SUM_SALE_PRICE, 0) + THEN COALESCE(_s1.sum_sale_price, 0) ELSE NULL END AS total_revenue -FROM MAIN.CARS AS CARS -LEFT JOIN _S1 AS _S1 - ON CARS._id = _S1.CAR_ID +FROM main.cars AS cars +LEFT JOIN _s1 AS _s1 + ON _s1.car_id = cars._id WHERE - CONTAINS(LOWER(CARS.make), 'toyota') + CONTAINS(LOWER(cars.make), 'toyota') diff --git a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql index f27054fd2..c6080293e 100644 --- a/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv5_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sale_price) AS SUM_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + SUM(sale_price) AS sum_sale_price, + salesperson_id + FROM main.sales GROUP BY 3 ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_sales, - _S1.N_ROWS AS num_sales, - RANK() OVER (ORDER BY COALESCE(_S1.SUM_SALE_PRICE, 0) DESC) AS sales_rank -FROM MAIN.SALESPERSONS AS SALESPERSONS -JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons.first_name, + salespersons.last_name, + COALESCE(_s1.sum_sale_price, 0) AS total_sales, + _s1.n_rows AS num_sales, + RANK() OVER (ORDER BY COALESCE(_s1.sum_sale_price, 0) DESC) AS sales_rank +FROM main.salespersons AS salespersons +JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 3 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql index 0d6b733bb..e9166f5be 100644 --- a/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv6_snowflake.sql @@ -1,26 +1,26 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - car_id AS CAR_ID - FROM MAIN.INVENTORY_SNAPSHOTS + car_id + FROM main.inventory_snapshots QUALIFY NOT is_in_inventory AND ROW_NUMBER() OVER (PARTITION BY car_id ORDER BY snapshot_date DESC) = 1 -), _S3 AS ( +), _s3 AS ( SELECT - MAX(sale_price) AS MAX_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES + MAX(sale_price) AS max_sale_price, + car_id + FROM main.sales GROUP BY 2 ) SELECT - CARS.make, - CARS.model, - _S3.MAX_SALE_PRICE AS highest_sale_price -FROM MAIN.CARS AS CARS -JOIN _T1 AS _T1 - ON CARS._id = _T1.CAR_ID -LEFT JOIN _S3 AS _S3 - ON CARS._id = _S3.CAR_ID + cars.make, + cars.model, + _s3.max_sale_price AS highest_sale_price +FROM main.cars AS cars +JOIN _t1 AS _t1 + ON _t1.car_id = cars._id +LEFT JOIN _s3 AS _s3 + ON _s3.car_id = cars._id ORDER BY 3 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql index 075f4c2c9..265fc93bd 100644 --- a/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv7_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - AVG(sale_price) AS AVG_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES + AVG(sale_price) AS avg_sale_price, + car_id + FROM main.sales GROUP BY 2 ) SELECT - CARS.make, - CARS.model, - CARS.year, - CARS.color, - CARS.vin_number, - _S1.AVG_SALE_PRICE AS avg_sale_price -FROM MAIN.CARS AS CARS -LEFT JOIN _S1 AS _S1 - ON CARS._id = _S1.CAR_ID + cars.make, + cars.model, + cars.year, + cars.color, + cars.vin_number, + _s1.avg_sale_price +FROM main.cars AS cars +LEFT JOIN _s1 AS _s1 + ON _s1.car_id = cars._id WHERE - CONTAINS(LOWER(CARS.make), 'fords') OR CONTAINS(LOWER(CARS.model), 'mustang') + CONTAINS(LOWER(cars.make), 'fords') OR CONTAINS(LOWER(cars.model), 'mustang') diff --git a/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql index ffee74ac5..a581d84e5 100644 --- a/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_adv9_snowflake.sql @@ -1,5 +1,5 @@ SELECT AVG(sale_price) AS ASP -FROM MAIN.SALES +FROM main.sales WHERE sale_date <= '2023-03-31' AND sale_date >= '2023-01-01' diff --git a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql index 8ef019134..ad6e9ed12 100644 --- a/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic10_snowflake.sql @@ -1,22 +1,22 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sale_price) AS SUM_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + SUM(sale_price) AS sum_sale_price, + salesperson_id + FROM main.sales WHERE sale_date >= DATEADD(MONTH, -3, CURRENT_TIMESTAMP()) GROUP BY 3 ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - COALESCE(_S1.N_ROWS, 0) AS total_sales, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue -FROM MAIN.SALESPERSONS AS SALESPERSONS -LEFT JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons.first_name, + salespersons.last_name, + COALESCE(_s1.n_rows, 0) AS total_sales, + COALESCE(_s1.sum_sale_price, 0) AS total_revenue +FROM main.salespersons AS salespersons +LEFT JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 4 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql index 672f26b06..bbd756397 100644 --- a/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic1_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT car_id AS _u_1 - FROM MAIN.SALES + FROM main.sales GROUP BY 1 ) SELECT - CARS._id, - CARS.make, - CARS.model, - CARS.year -FROM MAIN.CARS AS CARS + cars._id, + cars.make, + cars.model, + cars.year +FROM main.cars AS cars LEFT JOIN _u_0 AS _u_0 - ON CARS._id = _u_0._u_1 + ON _u_0._u_1 = cars._id WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql index 8214ad5c0..16cb73183 100644 --- a/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic2_snowflake.sql @@ -1,14 +1,14 @@ WITH _u_0 AS ( SELECT customer_id AS _u_1 - FROM MAIN.SALES + FROM main.sales GROUP BY 1 ) SELECT - CUSTOMERS._id -FROM MAIN.CUSTOMERS AS CUSTOMERS + customers._id +FROM main.customers AS customers LEFT JOIN _u_0 AS _u_0 - ON CUSTOMERS._id = _u_0._u_1 + ON _u_0._u_1 = customers._id WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql index 7341c1804..4310aba26 100644 --- a/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic3_snowflake.sql @@ -1,17 +1,17 @@ WITH _u_0 AS ( SELECT - SALES.salesperson_id AS _u_1 - FROM MAIN.SALES AS SALES - JOIN MAIN.PAYMENTS_RECEIVED AS PAYMENTS_RECEIVED - ON PAYMENTS_RECEIVED.payment_method = 'cash' - AND PAYMENTS_RECEIVED.sale_id = SALES._id + sales.salesperson_id AS _u_1 + FROM main.sales AS sales + JOIN main.payments_received AS payments_received + ON payments_received.payment_method = 'cash' + AND payments_received.sale_id = sales._id GROUP BY 1 ) SELECT - SALESPERSONS._id AS salesperson_id -FROM MAIN.SALESPERSONS AS SALESPERSONS + salespersons._id AS salesperson_id +FROM main.salespersons AS salespersons LEFT JOIN _u_0 AS _u_0 - ON SALESPERSONS._id = _u_0._u_1 + ON _u_0._u_1 = salespersons._id WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql index acc3292db..8d94ed4be 100644 --- a/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic4_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT salesperson_id AS _u_1 - FROM MAIN.SALES + FROM main.sales GROUP BY 1 ) SELECT - SALESPERSONS._id, - SALESPERSONS.first_name, - SALESPERSONS.last_name -FROM MAIN.SALESPERSONS AS SALESPERSONS + salespersons._id, + salespersons.first_name, + salespersons.last_name +FROM main.salespersons AS salespersons LEFT JOIN _u_0 AS _u_0 - ON SALESPERSONS._id = _u_0._u_1 + ON _u_0._u_1 = salespersons._id WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql index e148d933a..7e60facb1 100644 --- a/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic5_snowflake.sql @@ -1,22 +1,22 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS_1, - SUM(sale_price) AS SUM_SALE_PRICE, - salesperson_id AS SALESPERSON_ID - FROM MAIN.SALES + COUNT(*) AS n_rows_1, + SUM(sale_price) AS sum_sale_price, + salesperson_id + FROM main.sales WHERE DATEDIFF(DAY, CAST(sale_date AS DATETIME), CURRENT_TIMESTAMP()) <= 30 GROUP BY 3 ) SELECT - SALESPERSONS.first_name, - SALESPERSONS.last_name, - _S1.N_ROWS_1 AS total_sales, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue -FROM MAIN.SALESPERSONS AS SALESPERSONS -JOIN _S1 AS _S1 - ON SALESPERSONS._id = _S1.SALESPERSON_ID + salespersons.first_name, + salespersons.last_name, + _s1.n_rows_1 AS total_sales, + COALESCE(_s1.sum_sale_price, 0) AS total_revenue +FROM main.salespersons AS salespersons +JOIN _s1 AS _s1 + ON _s1.salesperson_id = salespersons._id ORDER BY 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql index a32d0be09..e34a0bded 100644 --- a/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic6_snowflake.sql @@ -1,10 +1,10 @@ SELECT - CUSTOMERS.state, - COUNT(DISTINCT SALES.customer_id) AS unique_customers, - COALESCE(SUM(SALES.sale_price), 0) AS total_revenue -FROM MAIN.SALES AS SALES -JOIN MAIN.CUSTOMERS AS CUSTOMERS - ON CUSTOMERS._id = SALES.customer_id + customers.state, + COUNT(DISTINCT sales.customer_id) AS unique_customers, + COALESCE(SUM(sales.sale_price), 0) AS total_revenue +FROM main.sales AS sales +JOIN main.customers AS customers + ON customers._id = sales.customer_id GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql index 0462e8672..e906254e2 100644 --- a/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic7_snowflake.sql @@ -2,7 +2,7 @@ SELECT payment_method, COUNT(*) AS total_payments, COALESCE(SUM(payment_amount), 0) AS total_amount -FROM MAIN.PAYMENTS_RECEIVED +FROM main.payments_received GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql index 2dbf6c3ac..df98deb1d 100644 --- a/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic8_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(sale_price) AS SUM_SALE_PRICE, - car_id AS CAR_ID - FROM MAIN.SALES + COUNT(*) AS n_rows, + SUM(sale_price) AS sum_sale_price, + car_id + FROM main.sales GROUP BY 3 ) SELECT - CARS.make, - CARS.model, - COALESCE(_S1.N_ROWS, 0) AS total_sales, - COALESCE(_S1.SUM_SALE_PRICE, 0) AS total_revenue -FROM MAIN.CARS AS CARS -LEFT JOIN _S1 AS _S1 - ON CARS._id = _S1.CAR_ID + cars.make, + cars.model, + COALESCE(_s1.n_rows, 0) AS total_sales, + COALESCE(_s1.sum_sale_price, 0) AS total_revenue +FROM main.cars AS cars +LEFT JOIN _s1 AS _s1 + ON _s1.car_id = cars._id ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql index 0ad936b14..8b2f15206 100644 --- a/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_basic9_snowflake.sql @@ -1,7 +1,7 @@ SELECT state, COUNT(*) AS total_signups -FROM MAIN.CUSTOMERS +FROM main.customers GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql index 064fa879d..0b56ff82e 100644 --- a/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen1_snowflake.sql @@ -3,7 +3,7 @@ SELECT last_name, phone, DATEDIFF(DAY, CAST(hire_date AS DATETIME), CAST(termination_date AS DATETIME)) * 1.0 AS days_employed -FROM MAIN.SALESPERSONS +FROM main.salespersons WHERE NOT termination_date IS NULL ORDER BY diff --git a/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql index 34244c823..d7f5d6345 100644 --- a/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen2_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS weekend_payments -FROM MAIN.PAYMENTS_MADE +FROM main.payments_made WHERE ( ( diff --git a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql index 769b3c8a4..84fb51a65 100644 --- a/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen3_snowflake.sql @@ -2,7 +2,7 @@ SELECT payment_date, payment_method, COALESCE(SUM(payment_amount), 0) AS total_amount -FROM MAIN.PAYMENTS_RECEIVED +FROM main.payments_received WHERE DATEDIFF( WEEK, diff --git a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql index 83ac1134c..6825403cf 100644 --- a/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen4_snowflake.sql @@ -1,33 +1,33 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS QUARTER, - SUM(sale_price) AS SUM_SALE_PRICE, - customer_id AS CUSTOMER_ID - FROM MAIN.SALES + DATE_TRUNC('QUARTER', CAST(sale_date AS TIMESTAMP)) AS quarter, + SUM(sale_price) AS sum_sale_price, + customer_id + FROM main.sales WHERE YEAR(CAST(sale_date AS TIMESTAMP)) = 2023 GROUP BY 1, 3 -), _T1 AS ( +), _t1 AS ( SELECT - SUM(_S0.SUM_SALE_PRICE) AS SUM_SUM_SALE_PRICE, - _S0.QUARTER, - CUSTOMERS.state AS STATE - FROM _S0 AS _S0 - JOIN MAIN.CUSTOMERS AS CUSTOMERS - ON CUSTOMERS._id = _S0.CUSTOMER_ID + SUM(_s0.sum_sale_price) AS sum_sum_sale_price, + _s0.quarter, + customers.state + FROM _s0 AS _s0 + JOIN main.customers AS customers + ON _s0.customer_id = customers._id GROUP BY 2, 3 ) SELECT - QUARTER AS quarter, - STATE AS customer_state, - COALESCE(SUM_SUM_SALE_PRICE, 0) AS total_sales -FROM _T1 + quarter, + state AS customer_state, + COALESCE(sum_sum_sale_price, 0) AS total_sales +FROM _t1 WHERE - NOT SUM_SUM_SALE_PRICE IS NULL AND SUM_SUM_SALE_PRICE > 0 + NOT sum_sum_sale_price IS NULL AND sum_sum_sale_price > 0 ORDER BY 1 NULLS FIRST, 2 NULLS FIRST diff --git a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql index 067021c1d..830b28cec 100644 --- a/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_dealership_gen5_snowflake.sql @@ -1,18 +1,18 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - car_id AS CAR_ID - FROM MAIN.INVENTORY_SNAPSHOTS + car_id + FROM main.inventory_snapshots WHERE MONTH(CAST(snapshot_date AS TIMESTAMP)) = 3 AND YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 QUALIFY - is_in_inventory AND RANK() OVER (ORDER BY snapshot_date DESC) = 1 + RANK() OVER (ORDER BY snapshot_date DESC) = 1 AND is_in_inventory ) SELECT - CARS._id, - CARS.make, - CARS.model, - CARS.year -FROM _T0 AS _T0 -JOIN MAIN.CARS AS CARS - ON CARS._id = _T0.CAR_ID + cars._id, + cars.make, + cars.model, + cars.year +FROM _t0 AS _t0 +JOIN main.cars AS cars + ON _t0.car_id = cars._id diff --git a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql index 89d60f61b..273fe3fb6 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv10_snowflake.sql @@ -1,16 +1,16 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - sender_id AS SENDER_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + COUNT(*) AS n_rows, + sender_id + FROM main.wallet_transactions_daily WHERE sender_type = 0 GROUP BY 2 ) SELECT - USERS.uid AS user_id, - _S1.N_ROWS AS total_transactions -FROM MAIN.USERS AS USERS -JOIN _S1 AS _S1 - ON USERS.uid = _S1.SENDER_ID + users.uid AS user_id, + _s1.n_rows AS total_transactions +FROM main.users AS users +JOIN _s1 AS _s1 + ON _s1.sender_id = users.uid diff --git a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql index 34e032cdc..e8d3f43cd 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv11_snowflake.sql @@ -1,20 +1,20 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT SUM( DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) - ) AS SUM_DURATION, - user_id AS USER_ID - FROM MAIN.USER_SESSIONS + ) AS sum_duration, + user_id + FROM main.user_sessions WHERE session_end_ts < '2023-06-08' AND session_start_ts >= '2023-06-01' GROUP BY 2 ) SELECT - USERS.uid, - COALESCE(_S1.SUM_DURATION, 0) AS total_duration -FROM MAIN.USERS AS USERS -JOIN _S1 AS _S1 - ON USERS.uid = _S1.USER_ID + users.uid, + COALESCE(_s1.sum_duration, 0) AS total_duration +FROM main.users AS users +JOIN _s1 AS _s1 + ON _s1.user_id = users.uid ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql index 93638d1ec..a874f7588 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv12_snowflake.sql @@ -1,16 +1,16 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(amount) AS SUM_AMOUNT, - coupon_id AS COUPON_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + SUM(amount) AS sum_amount, + coupon_id + FROM main.wallet_transactions_daily GROUP BY 2 ) SELECT - COUPONS.cid AS coupon_id, - COALESCE(_S1.SUM_AMOUNT, 0) AS total_discount -FROM MAIN.COUPONS AS COUPONS -LEFT JOIN _S1 AS _S1 - ON COUPONS.cid = _S1.COUPON_ID + coupons.cid AS coupon_id, + COALESCE(_s1.sum_amount, 0) AS total_discount +FROM main.coupons AS coupons +LEFT JOIN _s1 AS _s1 + ON _s1.coupon_id = coupons.cid WHERE - COUPONS.merchant_id = '1' + coupons.merchant_id = '1' diff --git a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql index bf5f205c2..0ebf11a50 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv13_snowflake.sql @@ -1,6 +1,6 @@ SELECT COUNT(*) AS TUC -FROM MAIN.USER_SESSIONS +FROM main.user_sessions WHERE session_end_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) OR session_start_ts >= DATE_TRUNC('DAY', DATEADD(MONTH, -1, CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql index c90bef4e0..3cfa5fa6f 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv14_snowflake.sql @@ -1,5 +1,5 @@ SELECT COALESCE(COUNT_IF(status = 'success'), 0) / COUNT(*) AS _expr0 -FROM MAIN.WALLET_TRANSACTIONS_DAILY +FROM main.wallet_transactions_daily WHERE DATEDIFF(MONTH, CAST(created_at AS DATETIME), CURRENT_TIMESTAMP()) = 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql index b0e8d3341..d60f519f9 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv15_snowflake.sql @@ -1,21 +1,21 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - COUPONS.merchant_id AS MERCHANT_ID - FROM MAIN.COUPONS AS COUPONS - JOIN MAIN.MERCHANTS AS MERCHANTS - ON COUPONS.merchant_id = MERCHANTS.mid - AND DATEDIFF(MONTH, CAST(MERCHANTS.created_at AS DATETIME), CAST(COUPONS.created_at AS DATETIME)) = 0 + COUNT(*) AS n_rows, + coupons.merchant_id + FROM main.coupons AS coupons + JOIN main.merchants AS merchants + ON DATEDIFF(MONTH, CAST(merchants.created_at AS DATETIME), CAST(coupons.created_at AS DATETIME)) = 0 + AND coupons.merchant_id = merchants.mid GROUP BY 2 ) SELECT - MERCHANTS.mid AS merchant_id, - MERCHANTS.name AS merchant_name, - COALESCE(_S3.N_ROWS, 0) AS coupons_per_merchant -FROM MAIN.MERCHANTS AS MERCHANTS -LEFT JOIN _S3 AS _S3 - ON MERCHANTS.mid = _S3.MERCHANT_ID + merchants.mid AS merchant_id, + merchants.name AS merchant_name, + COALESCE(_s3.n_rows, 0) AS coupons_per_merchant +FROM main.merchants AS merchants +LEFT JOIN _s3 AS _s3 + ON _s3.merchant_id = merchants.mid ORDER BY 3 DESC NULLS LAST LIMIT 1 diff --git a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql index 923769829..635f567ce 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv16_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - user_id AS USER_ID - FROM MAIN.NOTIFICATIONS + COUNT(*) AS n_rows, + user_id + FROM main.notifications WHERE status = 'unread' AND type = 'promotion' GROUP BY 2 ) SELECT - USERS.username, - _S1.N_ROWS AS total_unread_notifs -FROM MAIN.USERS AS USERS -JOIN _S1 AS _S1 - ON USERS.uid = _S1.USER_ID + users.username, + _s1.n_rows AS total_unread_notifs +FROM main.users AS users +JOIN _s1 AS _s1 + ON _s1.user_id = users.uid WHERE - LOWER(USERS.country) = 'us' + LOWER(users.country) = 'us' diff --git a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql index a73f40ff2..4466e1c8c 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv1_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(DISTINCT coupon_id) AS NDISTINCT_COUPON_ID, - COUNT(DISTINCT txid) AS NDISTINCT_TXID, - receiver_id AS RECEIVER_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + COUNT(DISTINCT coupon_id) AS ndistinct_coupon_id, + COUNT(DISTINCT txid) AS ndistinct_txid, + receiver_id + FROM main.wallet_transactions_daily WHERE status = 'success' GROUP BY 3 ) SELECT - MERCHANTS.name, + merchants.name, ( - _S1.NDISTINCT_COUPON_ID * 1.0 - ) / _S1.NDISTINCT_TXID AS CPUR -FROM MAIN.MERCHANTS AS MERCHANTS -JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.RECEIVER_ID + _s1.ndistinct_coupon_id * 1.0 + ) / _s1.ndistinct_txid AS CPUR +FROM main.merchants AS merchants +JOIN _s1 AS _s1 + ON _s1.receiver_id = merchants.mid diff --git a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql index 8bff2a903..bd7a73fe3 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv2_snowflake.sql @@ -5,23 +5,23 @@ SELECT DAY, ( ( - DAYOFWEEK(CAST(NOTIFICATIONS.created_at AS TIMESTAMP)) + 6 + DAYOFWEEK(CAST(notifications.created_at AS TIMESTAMP)) + 6 ) % 7 ) * -1, - CAST(NOTIFICATIONS.created_at AS TIMESTAMP) + CAST(notifications.created_at AS TIMESTAMP) ) ) AS week, COUNT(*) AS num_notifs, COALESCE(COUNT_IF(( ( - DAYOFWEEK(NOTIFICATIONS.created_at) + 6 + DAYOFWEEK(notifications.created_at) + 6 ) % 7 ) IN (5, 6)), 0) AS weekend_notifs -FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS -JOIN MAIN.USERS AS USERS - ON NOTIFICATIONS.user_id = USERS.uid AND USERS.country IN ('US', 'CA') +FROM main.notifications AS notifications +JOIN main.users AS users + ON notifications.user_id = users.uid AND users.country IN ('US', 'CA') WHERE - NOTIFICATIONS.created_at < DATE_TRUNC( + notifications.created_at < DATE_TRUNC( 'DAY', DATEADD( DAY, @@ -33,7 +33,7 @@ WHERE CURRENT_TIMESTAMP() ) ) - AND NOTIFICATIONS.created_at >= DATEADD( + AND notifications.created_at >= DATEADD( WEEK, -3, DATE_TRUNC( diff --git a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql index 84e9f51cd..ca5865599 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv3_snowflake.sql @@ -1,16 +1,16 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - merchant_id AS MERCHANT_ID - FROM MAIN.COUPONS + COUNT(*) AS n_rows, + merchant_id + FROM main.coupons GROUP BY 2 ) SELECT - MERCHANTS.name AS merchant_name, - _S1.N_ROWS AS total_coupons -FROM MAIN.MERCHANTS AS MERCHANTS -JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.MERCHANT_ID + merchants.name AS merchant_name, + _s1.n_rows AS total_coupons +FROM main.merchants AS merchants +JOIN _s1 AS _s1 + ON _s1.merchant_id = merchants.mid WHERE - CONTAINS(LOWER(MERCHANTS.category), 'retail') AND MERCHANTS.status = 'active' + CONTAINS(LOWER(merchants.category), 'retail') AND merchants.status = 'active' diff --git a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql index dc63e9c66..b6ab12c52 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv4_snowflake.sql @@ -2,11 +2,11 @@ SELECT COUNT(*) AS num_transactions, CASE WHEN COUNT(*) > 0 - THEN COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) + THEN COALESCE(SUM(wallet_transactions_daily.amount), 0) ELSE NULL END AS total_amount -FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY -JOIN MAIN.USERS AS USERS - ON USERS.country = 'US' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id +FROM main.wallet_transactions_daily AS wallet_transactions_daily +JOIN main.users AS users + ON users.country = 'US' AND users.uid = wallet_transactions_daily.sender_id WHERE - DATEDIFF(DAY, CAST(WALLET_TRANSACTIONS_DAILY.created_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 + DATEDIFF(DAY, CAST(wallet_transactions_daily.created_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql index 9a4fb1eaa..679a19eab 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv5_snowflake.sql @@ -1,5 +1,5 @@ SELECT AVG(balance) AS AMB -FROM MAIN.WALLET_USER_BALANCE_DAILY +FROM main.wallet_user_balance_daily WHERE DATEDIFF(DAY, CAST(updated_at AS DATETIME), CURRENT_TIMESTAMP()) <= 7 diff --git a/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql index a1b7d10d1..facbf73f3 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv6_snowflake.sql @@ -1,13 +1,14 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - balance AS BALANCE - FROM MAIN.WALLET_USER_BALANCE_DAILY + balance, + user_id + FROM main.wallet_user_balance_daily QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY updated_at DESC) = 1 ) SELECT - USERS.uid AS user_id, - _T0.BALANCE AS latest_balance -FROM MAIN.USERS AS USERS -JOIN _T0 AS _T0 - ON USERS.uid = USERS.uid + users.uid AS user_id, + _t0.balance AS latest_balance +FROM main.users AS users +JOIN _t0 AS _t0 + ON _t0.user_id = users.uid diff --git a/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql index 5c8ab9215..3a44a5777 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv7_snowflake.sql @@ -1,14 +1,14 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - marketing_opt_in AS MARKETING_OPT_IN, - user_id AS USER_ID - FROM MAIN.USER_SETTING_SNAPSHOT + marketing_opt_in, + user_id + FROM main.user_setting_snapshot QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) = 1 ) SELECT - USERS.uid, - _T0.MARKETING_OPT_IN AS marketing_opt_in -FROM MAIN.USERS AS USERS -JOIN _T0 AS _T0 - ON USERS.uid = _T0.USER_ID + users.uid, + _t0.marketing_opt_in +FROM main.users AS users +JOIN _t0 AS _t0 + ON _t0.user_id = users.uid diff --git a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql index 041eb0000..d8a15f120 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv8_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - SUM(amount) AS SUM_AMOUNT, - receiver_id AS RECEIVER_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + SUM(amount) AS sum_amount, + receiver_id + FROM main.wallet_transactions_daily WHERE receiver_type = 1 AND status = 'success' GROUP BY 2 ) SELECT - MERCHANTS.mid AS merchants_id, - MERCHANTS.name AS merchants_name, - MERCHANTS.category, - COALESCE(_S1.SUM_AMOUNT, 0) AS total_revenue, - ROW_NUMBER() OVER (ORDER BY COALESCE(_S1.SUM_AMOUNT, 0) DESC) AS mrr -FROM MAIN.MERCHANTS AS MERCHANTS -JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.RECEIVER_ID + merchants.mid AS merchants_id, + merchants.name AS merchants_name, + merchants.category, + COALESCE(_s1.sum_amount, 0) AS total_revenue, + ROW_NUMBER() OVER (ORDER BY COALESCE(_s1.sum_amount, 0) DESC) AS mrr +FROM main.merchants AS merchants +JOIN _s1 AS _s1 + ON _s1.receiver_id = merchants.mid diff --git a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql index f2607877b..fc9507f0f 100644 --- a/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_adv9_snowflake.sql @@ -1,7 +1,7 @@ SELECT DATE_TRUNC('MONTH', CAST(created_at AS TIMESTAMP)) AS year_month, COUNT(DISTINCT sender_id) AS active_users -FROM MAIN.WALLET_TRANSACTIONS_DAILY +FROM main.wallet_transactions_daily WHERE created_at < DATE_TRUNC('MONTH', CURRENT_TIMESTAMP()) AND created_at >= DATEADD(MONTH, -2, DATE_TRUNC('MONTH', CURRENT_TIMESTAMP())) diff --git a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql index eec471299..75fa0c7cb 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic10_snowflake.sql @@ -1,9 +1,9 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(amount) AS SUM_AMOUNT, - receiver_id AS RECEIVER_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + COUNT(*) AS n_rows, + SUM(amount) AS sum_amount, + receiver_id + FROM main.wallet_transactions_daily WHERE created_at >= DATE_TRUNC('DAY', DATEADD(DAY, -150, CURRENT_TIMESTAMP())) AND receiver_type = 1 @@ -11,12 +11,12 @@ WITH _S1 AS ( 3 ) SELECT - MERCHANTS.name AS merchant_name, - COALESCE(_S1.N_ROWS, 0) AS total_transactions, - COALESCE(_S1.SUM_AMOUNT, 0) AS total_amount -FROM MAIN.MERCHANTS AS MERCHANTS -LEFT JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.RECEIVER_ID + merchants.name AS merchant_name, + COALESCE(_s1.n_rows, 0) AS total_transactions, + COALESCE(_s1.sum_amount, 0) AS total_amount +FROM main.merchants AS merchants +LEFT JOIN _s1 AS _s1 + ON _s1.receiver_id = merchants.mid ORDER BY 3 DESC NULLS LAST LIMIT 2 diff --git a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql index f9fb46604..5ea6919b3 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic1_snowflake.sql @@ -1,12 +1,12 @@ SELECT - DATE_TRUNC('MONTH', CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) AS month, - COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS active_users -FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY -JOIN MAIN.USERS AS USERS - ON USERS.status = 'active' AND USERS.uid = WALLET_TRANSACTIONS_DAILY.sender_id + DATE_TRUNC('MONTH', CAST(wallet_transactions_daily.created_at AS TIMESTAMP)) AS month, + COUNT(DISTINCT wallet_transactions_daily.sender_id) AS active_users +FROM main.wallet_transactions_daily AS wallet_transactions_daily +JOIN main.users AS users + ON users.status = 'active' AND users.uid = wallet_transactions_daily.sender_id WHERE - WALLET_TRANSACTIONS_DAILY.sender_type = 0 - AND WALLET_TRANSACTIONS_DAILY.status = 'success' - AND YEAR(CAST(WALLET_TRANSACTIONS_DAILY.created_at AS TIMESTAMP)) = 2023 + YEAR(CAST(wallet_transactions_daily.created_at AS TIMESTAMP)) = 2023 + AND wallet_transactions_daily.sender_type = 0 + AND wallet_transactions_daily.status = 'success' GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql index 998fa51ee..9ca419d96 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic2_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT merchant_id AS _u_1 - FROM MAIN.COUPONS + FROM main.coupons GROUP BY 1 ) SELECT - MERCHANTS.mid AS merchant_id, - MERCHANTS.name AS merchant_name -FROM MAIN.MERCHANTS AS MERCHANTS + merchants.mid AS merchant_id, + merchants.name AS merchant_name +FROM main.merchants AS merchants LEFT JOIN _u_0 AS _u_0 - ON MERCHANTS.mid = _u_0._u_1 + ON _u_0._u_1 = merchants.mid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql index 7fe4d0718..80b4b414d 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic3_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT receiver_id AS _u_1 - FROM MAIN.WALLET_TRANSACTIONS_DAILY + FROM main.wallet_transactions_daily WHERE receiver_type = 1 GROUP BY 1 ) SELECT - MERCHANTS.mid AS merchant -FROM MAIN.MERCHANTS AS MERCHANTS + merchants.mid AS merchant +FROM main.merchants AS merchants LEFT JOIN _u_0 AS _u_0 - ON MERCHANTS.mid = _u_0._u_1 + ON _u_0._u_1 = merchants.mid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql index 432e6a920..b831e9388 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic4_snowflake.sql @@ -1,16 +1,16 @@ WITH _u_0 AS ( SELECT user_id AS _u_1 - FROM MAIN.NOTIFICATIONS + FROM main.notifications WHERE type = 'transaction' GROUP BY 1 ) SELECT - USERS.uid AS user_id -FROM MAIN.USERS AS USERS + users.uid AS user_id +FROM main.users AS users LEFT JOIN _u_0 AS _u_0 - ON USERS.uid = _u_0._u_1 + ON _u_0._u_1 = users.uid WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql index 294d9c309..b1a33dd01 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic5_snowflake.sql @@ -1,15 +1,15 @@ WITH _u_0 AS ( SELECT user_id AS _u_1 - FROM MAIN.NOTIFICATIONS + FROM main.notifications GROUP BY 1 ) SELECT - USERS.uid, - USERS.username -FROM MAIN.USERS AS USERS + users.uid, + users.username +FROM main.users AS users LEFT JOIN _u_0 AS _u_0 - ON USERS.uid = _u_0._u_1 + ON _u_0._u_1 = users.uid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql index 36d041330..bd8925e79 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic6_snowflake.sql @@ -1,7 +1,7 @@ SELECT device_type, COUNT(*) AS count -FROM MAIN.USER_SESSIONS +FROM main.user_sessions GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql index b9b49f533..2575506fa 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic7_snowflake.sql @@ -1,7 +1,7 @@ SELECT status, COUNT(*) AS count -FROM MAIN.WALLET_TRANSACTIONS_DAILY +FROM main.wallet_transactions_daily GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql index 4132cad40..035c4d087 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic8_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(txid) AS COUNT_TXID, - SUM(amount) AS SUM_AMOUNT, - coupon_id AS COUPON_ID - FROM MAIN.WALLET_TRANSACTIONS_DAILY + COUNT(txid) AS count_txid, + SUM(amount) AS sum_amount, + coupon_id + FROM main.wallet_transactions_daily GROUP BY 3 ) SELECT - COUPONS.code AS coupon_code, - COALESCE(_S1.COUNT_TXID, 0) AS redemption_count, - COALESCE(_S1.SUM_AMOUNT, 0) AS total_discount -FROM MAIN.COUPONS AS COUPONS -LEFT JOIN _S1 AS _S1 - ON COUPONS.cid = _S1.COUPON_ID + coupons.code AS coupon_code, + COALESCE(_s1.count_txid, 0) AS redemption_count, + COALESCE(_s1.sum_amount, 0) AS total_discount +FROM main.coupons AS coupons +LEFT JOIN _s1 AS _s1 + ON _s1.coupon_id = coupons.cid ORDER BY 2 DESC NULLS LAST LIMIT 3 diff --git a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql index 559681b4e..114ba10b7 100644 --- a/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_basic9_snowflake.sql @@ -1,18 +1,18 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - country AS COUNTRY, - uid AS UID - FROM MAIN.USERS + country, + uid + FROM main.users ) SELECT - _S1.COUNTRY AS country, - COUNT(DISTINCT WALLET_TRANSACTIONS_DAILY.sender_id) AS user_count, - COALESCE(SUM(WALLET_TRANSACTIONS_DAILY.amount), 0) AS total_amount -FROM MAIN.WALLET_TRANSACTIONS_DAILY AS WALLET_TRANSACTIONS_DAILY -LEFT JOIN _S1 AS _S1 - ON WALLET_TRANSACTIONS_DAILY.sender_id = _S1.UID + _s1.country, + COUNT(DISTINCT wallet_transactions_daily.sender_id) AS user_count, + COALESCE(SUM(wallet_transactions_daily.amount), 0) AS total_amount +FROM main.wallet_transactions_daily AS wallet_transactions_daily +LEFT JOIN _s1 AS _s1 + ON _s1.uid = wallet_transactions_daily.sender_id WHERE - WALLET_TRANSACTIONS_DAILY.sender_type = 0 + wallet_transactions_daily.sender_type = 0 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql index 047f6ad99..fb87bcce3 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen1_snowflake.sql @@ -1,9 +1,9 @@ SELECT - MEDIAN(WALLET_MERCHANT_BALANCE_DAILY.balance) AS _expr0 -FROM MAIN.WALLET_MERCHANT_BALANCE_DAILY AS WALLET_MERCHANT_BALANCE_DAILY -JOIN MAIN.MERCHANTS AS MERCHANTS - ON CONTAINS(LOWER(MERCHANTS.category), 'retail') - AND MERCHANTS.mid = WALLET_MERCHANT_BALANCE_DAILY.merchant_id - AND MERCHANTS.status = 'active' + MEDIAN(wallet_merchant_balance_daily.balance) AS _expr0 +FROM main.wallet_merchant_balance_daily AS wallet_merchant_balance_daily +JOIN main.merchants AS merchants + ON CONTAINS(LOWER(merchants.category), 'retail') + AND merchants.mid = wallet_merchant_balance_daily.merchant_id + AND merchants.status = 'active' WHERE - DATE_TRUNC('DAY', CAST(WALLET_MERCHANT_BALANCE_DAILY.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) + DATE_TRUNC('DAY', CAST(wallet_merchant_balance_daily.updated_at AS TIMESTAMP)) = DATE_TRUNC('DAY', CURRENT_TIMESTAMP()) diff --git a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql index efe787625..958b2afa2 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen2_snowflake.sql @@ -1,23 +1,23 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - MIN(snapshot_date) AS MIN_DATE - FROM MAIN.USER_SETTING_SNAPSHOT + MIN(snapshot_date) AS min_date + FROM main.user_setting_snapshot WHERE YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 -), _S1 AS ( +), _s1 AS ( SELECT - AVG(tx_limit_daily) AS AVG_TX_LIMIT_DAILY, - AVG(tx_limit_monthly) AS AVG_TX_LIMIT_MONTHLY, - snapshot_date AS SNAPSHOT_DATE - FROM MAIN.USER_SETTING_SNAPSHOT + AVG(tx_limit_daily) AS avg_tx_limit_daily, + AVG(tx_limit_monthly) AS avg_tx_limit_monthly, + snapshot_date + FROM main.user_setting_snapshot WHERE YEAR(CAST(snapshot_date AS TIMESTAMP)) = 2023 GROUP BY 3 ) SELECT - _S1.AVG_TX_LIMIT_DAILY AS avg_daily_limit, - _S1.AVG_TX_LIMIT_MONTHLY AS avg_monthly_limit -FROM _S0 AS _S0 -LEFT JOIN _S1 AS _S1 - ON _S0.MIN_DATE = _S1.SNAPSHOT_DATE + _s1.avg_tx_limit_daily AS avg_daily_limit, + _s1.avg_tx_limit_monthly AS avg_monthly_limit +FROM _s0 AS _s0 +LEFT JOIN _s1 AS _s1 + ON _s0.min_date = _s1.snapshot_date diff --git a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql index 627792b9f..7432d05ac 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen3_snowflake.sql @@ -3,6 +3,6 @@ SELECT AVG( DATEDIFF(SECOND, CAST(session_start_ts AS DATETIME), CAST(session_end_ts AS DATETIME)) ) AS avg_session_duration_seconds -FROM MAIN.USER_SESSIONS +FROM main.user_sessions GROUP BY 1 diff --git a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql index dd68d2e5c..ad361d520 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen4_snowflake.sql @@ -1,35 +1,35 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - merchant_id AS MERCHANT_ID, - start_date AS START_DATE - FROM MAIN.COUPONS -), _S1 AS ( + merchant_id, + start_date + FROM main.coupons +), _s1 AS ( SELECT - MIN(START_DATE) AS MIN_START_DATE, - MERCHANT_ID - FROM _T0 + MIN(start_date) AS min_start_date, + merchant_id + FROM _t0 GROUP BY 2 -), _S3 AS ( +), _s3 AS ( SELECT - MAX(cid) AS MAX_CID, - merchant_id AS MERCHANT_ID, - start_date AS START_DATE - FROM MAIN.COUPONS + MAX(cid) AS max_cid, + merchant_id, + start_date + FROM main.coupons GROUP BY 2, 3 ) SELECT - MERCHANTS.mid AS merchants_id, - MERCHANTS.created_at AS merchant_registration_date, - _S1.MIN_START_DATE AS earliest_coupon_start_date, - _S3.MAX_CID AS earliest_coupon_id -FROM MAIN.MERCHANTS AS MERCHANTS -LEFT JOIN _S1 AS _S1 - ON MERCHANTS.mid = _S1.MERCHANT_ID -LEFT JOIN _S3 AS _S3 - ON MERCHANTS.mid = _S3.MERCHANT_ID AND _S1.MIN_START_DATE = _S3.START_DATE -JOIN _T0 AS _S5 - ON MERCHANTS.mid = _S5.MERCHANT_ID - AND _S5.START_DATE <= DATEADD(YEAR, 1, CAST(MERCHANTS.created_at AS TIMESTAMP)) + merchants.mid AS merchants_id, + merchants.created_at AS merchant_registration_date, + _s1.min_start_date AS earliest_coupon_start_date, + _s3.max_cid AS earliest_coupon_id +FROM main.merchants AS merchants +LEFT JOIN _s1 AS _s1 + ON _s1.merchant_id = merchants.mid +LEFT JOIN _s3 AS _s3 + ON _s1.min_start_date = _s3.start_date AND _s3.merchant_id = merchants.mid +JOIN _t0 AS _s5 + ON _s5.merchant_id = merchants.mid + AND _s5.start_date <= DATEADD(YEAR, 1, CAST(merchants.created_at AS TIMESTAMP)) diff --git a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql index d36e88502..dbace8406 100644 --- a/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql +++ b/tests/test_sql_refsols/defog_ewallet_gen5_snowflake.sql @@ -1,20 +1,20 @@ WITH _u_0 AS ( SELECT - NOTIFICATIONS.user_id AS _u_1 - FROM MAIN.NOTIFICATIONS AS NOTIFICATIONS - JOIN MAIN.USERS AS USERS - ON NOTIFICATIONS.created_at <= DATEADD(YEAR, 1, CAST(USERS.created_at AS TIMESTAMP)) - AND NOTIFICATIONS.created_at >= USERS.created_at - AND NOTIFICATIONS.user_id = USERS.uid + notifications.user_id AS _u_1 + FROM main.notifications AS notifications + JOIN main.users AS users + ON notifications.created_at <= DATEADD(YEAR, 1, CAST(users.created_at AS TIMESTAMP)) + AND notifications.created_at >= users.created_at + AND notifications.user_id = users.uid GROUP BY 1 ) SELECT - USERS.username, - USERS.email, - USERS.created_at -FROM MAIN.USERS AS USERS + users.username, + users.email, + users.created_at +FROM main.users AS users LEFT JOIN _u_0 AS _u_0 - ON USERS.uid = _u_0._u_1 + ON _u_0._u_1 = users.uid WHERE _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql index 37b479c66..7db29730d 100644 --- a/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql +++ b/tests/test_sql_refsols/epoch_culture_events_info_snowflake.sql @@ -1,32 +1,32 @@ -WITH _S2 AS ( +WITH _s2 AS ( SELECT - ev_dt AS EV_DT, - ev_key AS EV_KEY - FROM EVENTS + ev_dt, + ev_key + FROM events ) SELECT - EVENTS.ev_name AS event_name, - ERAS.er_name AS era_name, - YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) AS event_year, - SEASONS.s_name AS season_name, - TIMES.t_name AS tod -FROM EVENTS AS EVENTS -JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) - AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) -JOIN _S2 AS _S2 - ON EVENTS.ev_key = _S2.EV_KEY -JOIN SEASONS AS SEASONS - ON SEASONS.s_month1 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) - OR SEASONS.s_month2 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) - OR SEASONS.s_month3 = MONTH(CAST(_S2.EV_DT AS TIMESTAMP)) -JOIN _S2 AS _S6 - ON EVENTS.ev_key = _S6.EV_KEY -JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(CAST(_S6.EV_DT AS TIMESTAMP)) - AND TIMES.t_start_hour <= HOUR(CAST(_S6.EV_DT AS TIMESTAMP)) + events.ev_name AS event_name, + eras.er_name AS era_name, + YEAR(CAST(events.ev_dt AS TIMESTAMP)) AS event_year, + seasons.s_name AS season_name, + times.t_name AS tod +FROM events AS events +JOIN eras AS eras + ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) + AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) +JOIN _s2 AS _s2 + ON _s2.ev_key = events.ev_key +JOIN seasons AS seasons + ON seasons.s_month1 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) + OR seasons.s_month2 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) + OR seasons.s_month3 = MONTH(CAST(_s2.ev_dt AS TIMESTAMP)) +JOIN _s2 AS _s6 + ON _s6.ev_key = events.ev_key +JOIN times AS times + ON times.t_end_hour > HOUR(CAST(_s6.ev_dt AS TIMESTAMP)) + AND times.t_start_hour <= HOUR(CAST(_s6.ev_dt AS TIMESTAMP)) WHERE - EVENTS.ev_typ = 'culture' + events.ev_typ = 'culture' ORDER BY - EVENTS.ev_dt NULLS FIRST + events.ev_dt NULLS FIRST LIMIT 6 diff --git a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql index da1449442..e4de3b246 100644 --- a/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_event_gap_per_era_snowflake.sql @@ -1,27 +1,27 @@ -WITH _T2 AS ( +WITH _t2 AS ( SELECT DATEDIFF( DAY, - CAST(LAG(EVENTS.ev_dt, 1) OVER (PARTITION BY ERAS.er_name, ERAS.er_name ORDER BY EVENTS.ev_dt) AS DATETIME), - CAST(EVENTS.ev_dt AS DATETIME) - ) AS DAY_GAP, - ERAS.er_end_year AS ER_END_YEAR, - ERAS.er_name AS ER_NAME, - ERAS.er_start_year AS ER_START_YEAR, - EVENTS.ev_dt AS EV_DT - FROM ERAS AS ERAS - JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) - AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + CAST(LAG(events.ev_dt, 1) OVER (PARTITION BY eras.er_name, eras.er_name ORDER BY events.ev_dt) AS DATETIME), + CAST(events.ev_dt AS DATETIME) + ) AS day_gap, + eras.er_end_year, + eras.er_name, + eras.er_start_year, + events.ev_dt + FROM eras AS eras + JOIN events AS events + ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) + AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) ) SELECT - ER_NAME AS era_name, - AVG(DAY_GAP) AS avg_event_gap -FROM _T2 + er_name AS era_name, + AVG(day_gap) AS avg_event_gap +FROM _t2 WHERE - ER_END_YEAR > YEAR(CAST(EV_DT AS TIMESTAMP)) - AND ER_START_YEAR <= YEAR(CAST(EV_DT AS TIMESTAMP)) + er_end_year > YEAR(CAST(ev_dt AS TIMESTAMP)) + AND er_start_year <= YEAR(CAST(ev_dt AS TIMESTAMP)) GROUP BY 1 ORDER BY - ANY_VALUE(ER_START_YEAR) NULLS FIRST + ANY_VALUE(er_start_year) NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql index 65ed9d6f2..f3744ccc7 100644 --- a/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql +++ b/tests/test_sql_refsols/epoch_events_per_season_snowflake.sql @@ -1,11 +1,11 @@ SELECT - SEASONS.s_name AS season_name, + seasons.s_name AS season_name, COUNT(*) AS n_events -FROM SEASONS AS SEASONS -JOIN EVENTS AS EVENTS - ON SEASONS.s_month1 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) - OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) - OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) +FROM seasons AS seasons +JOIN events AS events + ON seasons.s_month1 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + OR seasons.s_month2 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + OR seasons.s_month3 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql index 155d48459..c313bfd21 100644 --- a/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql +++ b/tests/test_sql_refsols/epoch_first_event_per_era_snowflake.sql @@ -1,18 +1,18 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - ERAS.er_name AS ER_NAME, - ERAS.er_start_year AS ER_START_YEAR, - EVENTS.ev_name AS EV_NAME - FROM ERAS AS ERAS - JOIN EVENTS AS EVENTS - ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) - AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + eras.er_name, + eras.er_start_year, + events.ev_name + FROM eras AS eras + JOIN events AS events + ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) + AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) QUALIFY - ROW_NUMBER() OVER (PARTITION BY ERAS.er_name ORDER BY EVENTS.ev_dt) = 1 + ROW_NUMBER() OVER (PARTITION BY eras.er_name ORDER BY events.ev_dt) = 1 ) SELECT - ER_NAME AS era_name, - EV_NAME AS event_name -FROM _T1 + er_name AS era_name, + ev_name AS event_name +FROM _t1 ORDER BY - ER_START_YEAR NULLS FIRST + er_start_year NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql index e6ae52b96..1ddb4623b 100644 --- a/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_intra_season_searches_snowflake.sql @@ -1,82 +1,82 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - s_month1 AS S_MONTH1, - s_month2 AS S_MONTH2, - s_month3 AS S_MONTH3, - s_name AS S_NAME - FROM SEASONS -), _S5 AS ( + s_month1, + s_month2, + s_month3, + s_name + FROM seasons +), _s5 AS ( SELECT - ev_dt AS EV_DT, - ev_name AS EV_NAME - FROM EVENTS -), _S9 AS ( + ev_dt, + ev_name + FROM events +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - _S2.S_NAME, - SEARCHES.search_id AS SEARCH_ID - FROM _S0 AS _S2 - JOIN SEARCHES AS SEARCHES - ON _S2.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S2.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S2.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - JOIN _S5 AS _S5 - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S5.EV_NAME)) - JOIN _S0 AS _S7 - ON _S2.S_NAME = _S7.S_NAME + COUNT(*) AS n_rows, + _s2.s_name, + searches.search_id + FROM _s0 AS _s2 + JOIN searches AS searches + ON _s2.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s2.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s2.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + JOIN _s5 AS _s5 + ON CONTAINS(LOWER(searches.search_string), LOWER(_s5.ev_name)) + JOIN _s0 AS _s7 + ON _s2.s_name = _s7.s_name AND ( - _S7.S_MONTH1 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) - OR _S7.S_MONTH2 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) - OR _S7.S_MONTH3 = MONTH(CAST(_S5.EV_DT AS TIMESTAMP)) + _s7.s_month1 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) + OR _s7.s_month2 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) + OR _s7.s_month3 = MONTH(CAST(_s5.ev_dt AS TIMESTAMP)) ) GROUP BY 2, 3 -), _S16 AS ( +), _s16 AS ( SELECT - COUNT(*) AS N_ROWS, + COUNT(*) AS n_rows, COUNT_IF(( - NOT _S9.N_ROWS IS NULL AND _S9.N_ROWS > 0 - )) AS SUM_IS_INTRA_SEASON, - _S0.S_NAME - FROM _S0 AS _S0 - JOIN SEARCHES AS SEARCHES - ON _S0.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S0.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S0.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - LEFT JOIN _S9 AS _S9 - ON SEARCHES.search_id = _S9.SEARCH_ID AND _S0.S_NAME = _S9.S_NAME + NOT _s9.n_rows IS NULL AND _s9.n_rows > 0 + )) AS sum_is_intra_season, + _s0.s_name + FROM _s0 AS _s0 + JOIN searches AS searches + ON _s0.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s0.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s0.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + LEFT JOIN _s9 AS _s9 + ON _s0.s_name = _s9.s_name AND _s9.search_id = searches.search_id GROUP BY 3 -), _S17 AS ( +), _s17 AS ( SELECT - COUNT(*) AS N_ROWS, - COUNT_IF(_S15.S_NAME = _S10.S_NAME) AS SUM_IS_INTRA_SEASON, - _S10.S_NAME - FROM _S0 AS _S10 - JOIN _S5 AS _S11 - ON _S10.S_MONTH1 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) - OR _S10.S_MONTH2 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) - OR _S10.S_MONTH3 = MONTH(CAST(_S11.EV_DT AS TIMESTAMP)) - JOIN SEARCHES AS SEARCHES - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(_S11.EV_NAME)) - JOIN _S0 AS _S15 - ON _S15.S_MONTH1 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S15.S_MONTH2 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) - OR _S15.S_MONTH3 = MONTH(CAST(SEARCHES.search_ts AS TIMESTAMP)) + COUNT(*) AS n_rows, + COUNT_IF(_s15.s_name = _s10.s_name) AS sum_is_intra_season, + _s10.s_name + FROM _s0 AS _s10 + JOIN _s5 AS _s11 + ON _s10.s_month1 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) + OR _s10.s_month2 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) + OR _s10.s_month3 = MONTH(CAST(_s11.ev_dt AS TIMESTAMP)) + JOIN searches AS searches + ON CONTAINS(LOWER(searches.search_string), LOWER(_s11.ev_name)) + JOIN _s0 AS _s15 + ON _s15.s_month1 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s15.s_month2 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) + OR _s15.s_month3 = MONTH(CAST(searches.search_ts AS TIMESTAMP)) GROUP BY 3 ) SELECT - _S16.S_NAME AS season_name, + _s16.s_name AS season_name, ROUND(( - 100.0 * COALESCE(_S16.SUM_IS_INTRA_SEASON, 0) - ) / _S16.N_ROWS, 2) AS pct_season_searches, + 100.0 * COALESCE(_s16.sum_is_intra_season, 0) + ) / _s16.n_rows, 2) AS pct_season_searches, ROUND(( - 100.0 * COALESCE(_S17.SUM_IS_INTRA_SEASON, 0) - ) / COALESCE(_S17.N_ROWS, 0), 2) AS pct_event_searches -FROM _S16 AS _S16 -LEFT JOIN _S17 AS _S17 - ON _S16.S_NAME = _S17.S_NAME + 100.0 * COALESCE(_s17.sum_is_intra_season, 0) + ) / COALESCE(_s17.n_rows, 0), 2) AS pct_event_searches +FROM _s16 AS _s16 +LEFT JOIN _s17 AS _s17 + ON _s16.s_name = _s17.s_name ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql index 7e70f42ff..cabbb3e36 100644 --- a/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_search_engine_per_tod_snowflake.sql @@ -1,22 +1,22 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - COUNT(*) AS N_SEARCHES, - SEARCHES.search_engine AS SEARCH_ENGINE, - TIMES.t_name AS T_NAME - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) - AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + COUNT(*) AS n_searches, + searches.search_engine, + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) + AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) GROUP BY 2, 3 QUALIFY - ROW_NUMBER() OVER (PARTITION BY TIMES.t_name ORDER BY COUNT(*) DESC, SEARCHES.search_engine) = 1 + ROW_NUMBER() OVER (PARTITION BY times.t_name ORDER BY COUNT(*) DESC, searches.search_engine) = 1 ) SELECT - T_NAME AS tod, - SEARCH_ENGINE AS search_engine, - N_SEARCHES AS n_searches -FROM _T1 + t_name AS tod, + search_engine, + n_searches +FROM _t1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql index 803dccc7f..1f7517326 100644 --- a/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql +++ b/tests/test_sql_refsols/epoch_most_popular_topic_per_region_snowflake.sql @@ -1,21 +1,21 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - COUNT(DISTINCT SEARCHES.search_id) AS N_SEARCHES, - EVENTS.ev_typ AS EV_TYP, - USERS.user_region AS USER_REGION - FROM EVENTS AS EVENTS - JOIN SEARCHES AS SEARCHES - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) - JOIN USERS AS USERS - ON SEARCHES.search_user_id = USERS.user_id + COUNT(DISTINCT searches.search_id) AS n_searches, + events.ev_typ, + users.user_region + FROM events AS events + JOIN searches AS searches + ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) + JOIN users AS users + ON searches.search_user_id = users.user_id GROUP BY 2, 3 QUALIFY - ROW_NUMBER() OVER (PARTITION BY USERS.user_region ORDER BY COUNT(DISTINCT SEARCHES.search_id) DESC) = 1 + ROW_NUMBER() OVER (PARTITION BY users.user_region ORDER BY COUNT(DISTINCT searches.search_id) DESC) = 1 ) SELECT - USER_REGION AS region, - EV_TYP AS event_type, - N_SEARCHES AS n_searches -FROM _T0 + user_region AS region, + ev_typ AS event_type, + n_searches +FROM _t0 diff --git a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql index 22cd7db4f..5e8914950 100644 --- a/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql +++ b/tests/test_sql_refsols/epoch_num_predawn_cold_war_snowflake.sql @@ -1,27 +1,27 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - ev_dt AS EV_DT, - ev_key AS EV_KEY - FROM EVENTS + ev_dt, + ev_key + FROM events ), _u_0 AS ( SELECT - _S2.EV_KEY AS _u_1 - FROM _S0 AS _S2 - JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) - AND ERAS.er_name = 'Cold War' - AND ERAS.er_start_year <= YEAR(CAST(_S2.EV_DT AS TIMESTAMP)) + _s2.ev_key AS _u_1 + FROM _s0 AS _s2 + JOIN eras AS eras + ON eras.er_end_year > YEAR(CAST(_s2.ev_dt AS TIMESTAMP)) + AND eras.er_name = 'Cold War' + AND eras.er_start_year <= YEAR(CAST(_s2.ev_dt AS TIMESTAMP)) GROUP BY 1 ) SELECT COUNT(*) AS n_events -FROM _S0 AS _S0 -JOIN TIMES AS TIMES - ON TIMES.t_end_hour > HOUR(CAST(_S0.EV_DT AS TIMESTAMP)) - AND TIMES.t_name = 'Pre-Dawn' - AND TIMES.t_start_hour <= HOUR(CAST(_S0.EV_DT AS TIMESTAMP)) +FROM _s0 AS _s0 +JOIN times AS times + ON times.t_end_hour > HOUR(CAST(_s0.ev_dt AS TIMESTAMP)) + AND times.t_name = 'Pre-Dawn' + AND times.t_start_hour <= HOUR(CAST(_s0.ev_dt AS TIMESTAMP)) LEFT JOIN _u_0 AS _u_0 - ON _S0.EV_KEY = _u_0._u_1 + ON _s0.ev_key = _u_0._u_1 WHERE NOT _u_0._u_1 IS NULL diff --git a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql index 5acfed6ba..760a8ee7a 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_search_other_users_per_user_snowflake.sql @@ -1,28 +1,28 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - user_id AS USER_ID, - user_name AS USER_NAME - FROM USERS -), _S1 AS ( + user_id, + user_name + FROM users +), _s1 AS ( SELECT - search_string AS SEARCH_STRING, - search_user_id AS SEARCH_USER_ID - FROM SEARCHES + search_string, + search_user_id + FROM searches ) SELECT - ANY_VALUE(_S0.USER_NAME) AS user_name, - COUNT(DISTINCT _S7.USER_ID) AS n_other_users -FROM _S0 AS _S0 -JOIN _S1 AS _S1 - ON _S0.USER_ID = _S1.SEARCH_USER_ID -JOIN EVENTS AS EVENTS - ON CONTAINS(LOWER(_S1.SEARCH_STRING), LOWER(EVENTS.ev_name)) -JOIN _S1 AS _S5 - ON CONTAINS(LOWER(_S5.SEARCH_STRING), LOWER(EVENTS.ev_name)) -JOIN _S0 AS _S7 - ON _S0.USER_NAME <> _S7.USER_NAME AND _S5.SEARCH_USER_ID = _S7.USER_ID + ANY_VALUE(_s0.user_name) AS user_name, + COUNT(DISTINCT _s7.user_id) AS n_other_users +FROM _s0 AS _s0 +JOIN _s1 AS _s1 + ON _s0.user_id = _s1.search_user_id +JOIN events AS events + ON CONTAINS(LOWER(_s1.search_string), LOWER(events.ev_name)) +JOIN _s1 AS _s5 + ON CONTAINS(LOWER(_s5.search_string), LOWER(events.ev_name)) +JOIN _s0 AS _s7 + ON _s0.user_name <> _s7.user_name AND _s5.search_user_id = _s7.user_id GROUP BY - _S0.USER_ID + _s0.user_id ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql index eeaeb8d4e..e6b9376d7 100644 --- a/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql +++ b/tests/test_sql_refsols/epoch_overlapping_event_searches_per_user_snowflake.sql @@ -1,34 +1,34 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - user_id AS USER_ID, - user_name AS USER_NAME - FROM USERS -), _T2 AS ( + user_id, + user_name + FROM users +), _t2 AS ( SELECT - ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID, - ANY_VALUE(_S0.USER_NAME) AS ANYTHING_USER_NAME, - _S0.USER_ID - FROM _S0 AS _S0 - JOIN SEARCHES AS SEARCHES - ON SEARCHES.search_user_id = _S0.USER_ID - JOIN EVENTS AS EVENTS - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) - JOIN SEARCHES AS SEARCHES_2 - ON CONTAINS(LOWER(SEARCHES_2.search_string), LOWER(EVENTS.ev_name)) - JOIN _S0 AS _S7 - ON SEARCHES_2.search_user_id = _S7.USER_ID AND _S0.USER_NAME <> _S7.USER_NAME + ANY_VALUE(searches.search_user_id) AS anything_search_user_id, + ANY_VALUE(_s0.user_name) AS anything_user_name, + _s0.user_id + FROM _s0 AS _s0 + JOIN searches AS searches + ON _s0.user_id = searches.search_user_id + JOIN events AS events + ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) + JOIN searches AS searches_2 + ON CONTAINS(LOWER(searches_2.search_string), LOWER(events.ev_name)) + JOIN _s0 AS _s7 + ON _s0.user_name <> _s7.user_name AND _s7.user_id = searches_2.search_user_id GROUP BY - SEARCHES.search_id, + searches.search_id, 3 ) SELECT - ANY_VALUE(ANYTHING_USER_NAME) AS user_name, + ANY_VALUE(anything_user_name) AS user_name, COUNT(*) AS n_searches -FROM _T2 +FROM _t2 WHERE - ANYTHING_SEARCH_USER_ID = USER_ID + anything_search_user_id = user_id GROUP BY - USER_ID + user_id ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql index 0d4297b4d..aa17edcc7 100644 --- a/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_pct_searches_per_tod_snowflake.sql @@ -1,20 +1,20 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, - COUNT(*) AS N_ROWS, - TIMES.t_name AS T_NAME - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) - AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, + COUNT(*) AS n_rows, + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) + AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) GROUP BY 3 ) SELECT - T_NAME AS tod, + t_name AS tod, ROUND(( - 100.0 * N_ROWS - ) / SUM(N_ROWS) OVER (), 2) AS pct_searches -FROM _T0 + 100.0 * n_rows + ) / SUM(n_rows) OVER (), 2) AS pct_searches +FROM _t0 ORDER BY - ANYTHING_T_START_HOUR NULLS FIRST + anything_t_start_hour NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql index ba9737406..089aac377 100644 --- a/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql +++ b/tests/test_sql_refsols/epoch_search_results_by_tod_snowflake.sql @@ -1,22 +1,22 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - ANY_VALUE(TIMES.t_start_hour) AS ANYTHING_T_START_HOUR, - AVG(SEARCHES.search_num_results) AS AVG_SEARCH_NUM_RESULTS, - COUNT(*) AS N_ROWS, - TIMES.t_name AS T_NAME - FROM TIMES AS TIMES - JOIN SEARCHES AS SEARCHES - ON TIMES.t_end_hour > HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) - AND TIMES.t_start_hour <= HOUR(CAST(SEARCHES.search_ts AS TIMESTAMP)) + ANY_VALUE(times.t_start_hour) AS anything_t_start_hour, + AVG(searches.search_num_results) AS avg_search_num_results, + COUNT(*) AS n_rows, + times.t_name + FROM times AS times + JOIN searches AS searches + ON times.t_end_hour > HOUR(CAST(searches.search_ts AS TIMESTAMP)) + AND times.t_start_hour <= HOUR(CAST(searches.search_ts AS TIMESTAMP)) GROUP BY 4 ) SELECT - T_NAME AS tod, + t_name AS tod, ROUND(( - 100.0 * N_ROWS - ) / SUM(N_ROWS) OVER (), 2) AS pct_searches, - ROUND(AVG_SEARCH_NUM_RESULTS, 2) AS avg_results -FROM _T0 + 100.0 * n_rows + ) / SUM(n_rows) OVER (), 2) AS pct_searches, + ROUND(avg_search_num_results, 2) AS avg_results +FROM _t0 ORDER BY - ANYTHING_T_START_HOUR NULLS FIRST + anything_t_start_hour NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql index eb48862b3..b7091de07 100644 --- a/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql +++ b/tests/test_sql_refsols/epoch_summer_events_per_type_snowflake.sql @@ -1,14 +1,14 @@ SELECT - EVENTS.ev_typ AS event_type, + events.ev_typ AS event_type, COUNT(*) AS n_events -FROM EVENTS AS EVENTS -JOIN SEASONS AS SEASONS +FROM events AS events +JOIN seasons AS seasons ON ( - SEASONS.s_month1 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) - OR SEASONS.s_month2 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) - OR SEASONS.s_month3 = MONTH(CAST(EVENTS.ev_dt AS TIMESTAMP)) + seasons.s_month1 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + OR seasons.s_month2 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) + OR seasons.s_month3 = MONTH(CAST(events.ev_dt AS TIMESTAMP)) ) - AND SEASONS.s_name = 'Summer' + AND seasons.s_name = 'Summer' GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql index 924c69027..030770bb5 100644 --- a/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql +++ b/tests/test_sql_refsols/epoch_unique_users_per_engine_snowflake.sql @@ -1,25 +1,25 @@ -WITH _S2 AS ( +WITH _s2 AS ( SELECT DISTINCT - search_engine AS SEARCH_ENGINE - FROM SEARCHES -), _S3 AS ( + search_engine + FROM searches +), _s3 AS ( SELECT - COUNT(DISTINCT USERS.user_id) AS NDISTINCT_USER_ID, - SEARCHES.search_engine AS SEARCH_ENGINE - FROM SEARCHES AS SEARCHES - JOIN USERS AS USERS - ON SEARCHES.search_user_id = USERS.user_id + COUNT(DISTINCT users.user_id) AS ndistinct_user_id, + searches.search_engine + FROM searches AS searches + JOIN users AS users + ON searches.search_user_id = users.user_id WHERE - YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) <= 2019 - AND YEAR(CAST(SEARCHES.search_ts AS TIMESTAMP)) >= 2010 + YEAR(CAST(searches.search_ts AS TIMESTAMP)) <= 2019 + AND YEAR(CAST(searches.search_ts AS TIMESTAMP)) >= 2010 GROUP BY 2 ) SELECT - _S2.SEARCH_ENGINE AS engine, - COALESCE(_S3.NDISTINCT_USER_ID, 0) AS n_users -FROM _S2 AS _S2 -LEFT JOIN _S3 AS _S3 - ON _S2.SEARCH_ENGINE = _S3.SEARCH_ENGINE + _s2.search_engine AS engine, + COALESCE(_s3.ndistinct_user_id, 0) AS n_users +FROM _s2 AS _s2 +LEFT JOIN _s3 AS _s3 + ON _s2.search_engine = _s3.search_engine ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql index 6c9e77849..244b30369 100644 --- a/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql +++ b/tests/test_sql_refsols/epoch_users_most_cold_war_searches_snowflake.sql @@ -1,29 +1,29 @@ -WITH _T0 AS ( +WITH _t0 AS ( SELECT - ANY_VALUE(SEARCHES.search_user_id) AS ANYTHING_SEARCH_USER_ID - FROM SEARCHES AS SEARCHES - JOIN EVENTS AS EVENTS - ON CONTAINS(LOWER(SEARCHES.search_string), LOWER(EVENTS.ev_name)) - JOIN ERAS AS ERAS - ON ERAS.er_end_year > YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) - AND ERAS.er_name = 'Cold War' - AND ERAS.er_start_year <= YEAR(CAST(EVENTS.ev_dt AS TIMESTAMP)) + ANY_VALUE(searches.search_user_id) AS anything_search_user_id + FROM searches AS searches + JOIN events AS events + ON CONTAINS(LOWER(searches.search_string), LOWER(events.ev_name)) + JOIN eras AS eras + ON eras.er_end_year > YEAR(CAST(events.ev_dt AS TIMESTAMP)) + AND eras.er_name = 'Cold War' + AND eras.er_start_year <= YEAR(CAST(events.ev_dt AS TIMESTAMP)) GROUP BY - SEARCHES.search_id -), _S5 AS ( + searches.search_id +), _s5 AS ( SELECT - COUNT(*) AS N_COLD_WAR_SEARCHES, - ANYTHING_SEARCH_USER_ID - FROM _T0 + COUNT(*) AS n_cold_war_searches, + anything_search_user_id + FROM _t0 GROUP BY 2 ) SELECT - USERS.user_name, - _S5.N_COLD_WAR_SEARCHES AS n_cold_war_searches -FROM USERS AS USERS -JOIN _S5 AS _S5 - ON USERS.user_id = _S5.ANYTHING_SEARCH_USER_ID + users.user_name, + _s5.n_cold_war_searches +FROM users AS users +JOIN _s5 AS _s5 + ON _s5.anything_search_user_id = users.user_id ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/extract_colors_snowflake.sql b/tests/test_sql_refsols/extract_colors_snowflake.sql index a78c12923..07a4abd25 100644 --- a/tests/test_sql_refsols/extract_colors_snowflake.sql +++ b/tests/test_sql_refsols/extract_colors_snowflake.sql @@ -6,7 +6,7 @@ SELECT UPPER(SPLIT_PART(p_name, ' ', 4)) AS c4, UPPER(SPLIT_PART(p_name, ' ', 5)) AS c5, UPPER(SPLIT_PART(p_name, ' ', 6)) AS c6 -FROM TPCH.PART +FROM tpch.part ORDER BY 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql index cc39b84ab..9c0b4527b 100644 --- a/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql +++ b/tests/test_sql_refsols/floor_and_ceil_2_snowflake.sql @@ -3,7 +3,7 @@ SELECT ps_partkey AS part_key, FLOOR(ps_availqty) AS complete_parts, CEIL(ps_supplycost * FLOOR(ps_availqty)) AS total_cost -FROM TPCH.PARTSUPP +FROM tpch.partsupp ORDER BY 4 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/floor_and_ceil_snowflake.sql b/tests/test_sql_refsols/floor_and_ceil_snowflake.sql index fbccc9e04..38b321fcd 100644 --- a/tests/test_sql_refsols/floor_and_ceil_snowflake.sql +++ b/tests/test_sql_refsols/floor_and_ceil_snowflake.sql @@ -8,4 +8,4 @@ SELECT FLOOR(-6) AS floor_int_neg, CEIL(-6) AS ceil_int_neg FROM (VALUES - (NULL)) AS _Q_0(_COL_0) + (NULL)) AS _q_0(_col_0) diff --git a/tests/test_sql_refsols/get_part_multiple_snowflake.sql b/tests/test_sql_refsols/get_part_multiple_snowflake.sql index b1b83fa0d..e52d4abc3 100644 --- a/tests/test_sql_refsols/get_part_multiple_snowflake.sql +++ b/tests/test_sql_refsols/get_part_multiple_snowflake.sql @@ -18,7 +18,7 @@ SELECT SPLIT_PART(sbcuststate, sbcuststate, CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p16, SPLIT_PART(SPLIT_PART(sbcustphone, '-', 1), '5', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p17, SPLIT_PART(sbcustpostalcode, '0', CAST(SUBSTRING(sbcustid, 2) AS BIGINT)) AS p18 -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE CAST(SUBSTRING(sbcustid, 2) AS BIGINT) <= 4 ORDER BY diff --git a/tests/test_sql_refsols/get_part_single_snowflake.sql b/tests/test_sql_refsols/get_part_single_snowflake.sql index 4a85cbc15..a9694cfb1 100644 --- a/tests/test_sql_refsols/get_part_single_snowflake.sql +++ b/tests/test_sql_refsols/get_part_single_snowflake.sql @@ -1,5 +1,5 @@ SELECT SPLIT_PART(sbcustname, ' ', -1) AS last_name -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer WHERE sbcustname = 'Alex Rodriguez' diff --git a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql index 9ff814a80..973d5975d 100644 --- a/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/global_acctbal_breakdown_snowflake.sql @@ -4,4 +4,4 @@ SELECT MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS median_red_acctbal, MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS median_black_acctbal, MEDIAN(c_acctbal) AS median_overall_acctbal -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/hour_minute_day_snowflake.sql b/tests/test_sql_refsols/hour_minute_day_snowflake.sql index 278a2c7c3..571c2b0be 100644 --- a/tests/test_sql_refsols/hour_minute_day_snowflake.sql +++ b/tests/test_sql_refsols/hour_minute_day_snowflake.sql @@ -1,11 +1,11 @@ SELECT - SBTRANSACTION.sbtxid AS transaction_id, - HOUR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr0, - MINUTE(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr1, - SECOND(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) AS _expr2 -FROM MAIN.SBTRANSACTION AS SBTRANSACTION -JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid - AND SBTICKER.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') + sbtransaction.sbtxid AS transaction_id, + HOUR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr0, + MINUTE(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr1, + SECOND(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) AS _expr2 +FROM main.sbtransaction AS sbtransaction +JOIN main.sbticker AS sbticker + ON sbticker.sbtickerid = sbtransaction.sbtxtickerid + AND sbticker.sbtickersymbol IN ('AAPL', 'GOOGL', 'NFLX') ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql index 696a66e0a..5a3587e17 100644 --- a/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/nation_acctbal_breakdown_snowflake.sql @@ -1,26 +1,26 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_BLACK_ACCTBAL, - MEDIAN(c_acctbal) AS MEDIAN_OVERALL_ACCTBAL, - MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, - COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, - COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, - c_nationkey AS C_NATIONKEY - FROM TPCH.CUSTOMER + MEDIAN(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS median_black_acctbal, + MEDIAN(c_acctbal) AS median_overall_acctbal, + MEDIAN(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS median_red_acctbal, + COUNT(CASE WHEN c_acctbal >= 0 THEN c_acctbal ELSE NULL END) AS n_black_acctbal, + COUNT(CASE WHEN c_acctbal < 0 THEN c_acctbal ELSE NULL END) AS n_red_acctbal, + c_nationkey + FROM tpch.customer GROUP BY 6 ) SELECT - NATION.n_name AS nation_name, - _S3.N_RED_ACCTBAL AS n_red_acctbal, - _S3.N_BLACK_ACCTBAL AS n_black_acctbal, - _S3.MEDIAN_RED_ACCTBAL AS median_red_acctbal, - _S3.MEDIAN_BLACK_ACCTBAL AS median_black_acctbal, - _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal -FROM TPCH.NATION AS NATION -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' -JOIN _S3 AS _S3 - ON NATION.n_nationkey = _S3.C_NATIONKEY + nation.n_name AS nation_name, + _s3.n_red_acctbal, + _s3.n_black_acctbal, + _s3.median_red_acctbal, + _s3.median_black_acctbal, + _s3.median_overall_acctbal +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' +JOIN _s3 AS _s3 + ON _s3.c_nationkey = nation.n_nationkey ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/numerical_functions_snowflake.sql b/tests/test_sql_refsols/numerical_functions_snowflake.sql index b138f575b..d02e9691a 100644 --- a/tests/test_sql_refsols/numerical_functions_snowflake.sql +++ b/tests/test_sql_refsols/numerical_functions_snowflake.sql @@ -8,4 +8,4 @@ SELECT SIGN(c_acctbal) AS sign_value, LEAST(c_acctbal, 0) AS smallest_value, GREATEST(c_acctbal, 0) AS largest_value -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/part_cross_part_a_snowflake.sql b/tests/test_sql_refsols/part_cross_part_a_snowflake.sql index 0505c200f..5d7c38cea 100644 --- a/tests/test_sql_refsols/part_cross_part_a_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_a_snowflake.sql @@ -1,32 +1,32 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT DISTINCT - sbtickerexchange AS SBTICKEREXCHANGE - FROM MAIN.SBTICKER -), _S9 AS ( + sbtickerexchange + FROM main.sbticker +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - SBCUSTOMER.sbcustid AS SBCUSTID, - _S2.SBTICKEREXCHANGE - FROM _S0 AS _S2 - CROSS JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - JOIN MAIN.SBTICKER AS SBTICKER - ON SBTICKER.sbtickerexchange = _S2.SBTICKEREXCHANGE - AND SBTICKER.sbtickerid = SBTRANSACTION.sbtxtickerid + COUNT(*) AS n_rows, + sbcustomer.sbcustid, + _s2.sbtickerexchange + FROM _s0 AS _s2 + CROSS JOIN main.sbcustomer AS sbcustomer + JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid + JOIN main.sbticker AS sbticker + ON _s2.sbtickerexchange = sbticker.sbtickerexchange + AND sbticker.sbtickerid = sbtransaction.sbtxtickerid GROUP BY 2, 3 ) SELECT - SBCUSTOMER.sbcuststate AS state, - _S0.SBTICKEREXCHANGE AS exchange, - COALESCE(SUM(_S9.N_ROWS), 0) AS n -FROM _S0 AS _S0 -CROSS JOIN MAIN.SBCUSTOMER AS SBCUSTOMER -LEFT JOIN _S9 AS _S9 - ON SBCUSTOMER.sbcustid = _S9.SBCUSTID - AND _S0.SBTICKEREXCHANGE = _S9.SBTICKEREXCHANGE + sbcustomer.sbcuststate AS state, + _s0.sbtickerexchange AS exchange, + COALESCE(SUM(_s9.n_rows), 0) AS n +FROM _s0 AS _s0 +CROSS JOIN main.sbcustomer AS sbcustomer +LEFT JOIN _s9 AS _s9 + ON _s0.sbtickerexchange = _s9.sbtickerexchange + AND _s9.sbcustid = sbcustomer.sbcustid GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/part_cross_part_b_snowflake.sql b/tests/test_sql_refsols/part_cross_part_b_snowflake.sql index e96e0332c..695035c21 100644 --- a/tests/test_sql_refsols/part_cross_part_b_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_b_snowflake.sql @@ -1,46 +1,46 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT DISTINCT - sbcuststate AS SBCUSTSTATE - FROM MAIN.SBCUSTOMER -), _T2 AS ( + sbcuststate + FROM main.sbcustomer +), _t2 AS ( SELECT - sbtxdatetime AS SBTXDATETIME - FROM MAIN.SBTRANSACTION + sbtxdatetime + FROM main.sbtransaction WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _S1 AS ( +), _s1 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH - FROM _T2 -), _S3 AS ( + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month + FROM _t2 +), _s3 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH - FROM _T2 -), _S9 AS ( + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month + FROM _t2 +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - _S3.MONTH, - _S2.SBCUSTSTATE - FROM _S0 AS _S2 - CROSS JOIN _S3 AS _S3 - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 - AND _S3.MONTH = DATE_TRUNC('MONTH', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) - JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND SBCUSTOMER.sbcuststate = _S2.SBCUSTSTATE + COUNT(*) AS n_rows, + _s3.month, + _s2.sbcuststate + FROM _s0 AS _s2 + CROSS JOIN _s3 AS _s3 + JOIN main.sbtransaction AS sbtransaction + ON YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 + AND _s3.month = DATE_TRUNC('MONTH', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + JOIN main.sbcustomer AS sbcustomer + ON _s2.sbcuststate = sbcustomer.sbcuststate + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid GROUP BY 2, 3 ) SELECT - _S0.SBCUSTSTATE AS state, - _S1.MONTH AS month_of_year, - SUM(COALESCE(_S9.N_ROWS, 0)) OVER (PARTITION BY _S0.SBCUSTSTATE ORDER BY _S1.MONTH ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n -FROM _S0 AS _S0 -CROSS JOIN _S1 AS _S1 -LEFT JOIN _S9 AS _S9 - ON _S0.SBCUSTSTATE = _S9.SBCUSTSTATE AND _S1.MONTH = _S9.MONTH + _s0.sbcuststate AS state, + _s1.month AS month_of_year, + SUM(COALESCE(_s9.n_rows, 0)) OVER (PARTITION BY _s0.sbcuststate ORDER BY _s1.month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS n +FROM _s0 AS _s0 +CROSS JOIN _s1 AS _s1 +LEFT JOIN _s9 AS _s9 + ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month ORDER BY 1 NULLS FIRST, 2 NULLS FIRST diff --git a/tests/test_sql_refsols/part_cross_part_c_snowflake.sql b/tests/test_sql_refsols/part_cross_part_c_snowflake.sql index 8df574e96..82c088a76 100644 --- a/tests/test_sql_refsols/part_cross_part_c_snowflake.sql +++ b/tests/test_sql_refsols/part_cross_part_c_snowflake.sql @@ -1,44 +1,44 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT DISTINCT - sbcuststate AS SBCUSTSTATE - FROM MAIN.SBCUSTOMER -), _T2 AS ( + sbcuststate + FROM main.sbcustomer +), _t2 AS ( SELECT - sbtxdatetime AS SBTXDATETIME - FROM MAIN.SBTRANSACTION + sbtxdatetime + FROM main.sbtransaction WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _S1 AS ( +), _s1 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH - FROM _T2 -), _S3 AS ( + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month + FROM _t2 +), _s3 AS ( SELECT DISTINCT - DATE_TRUNC('MONTH', CAST(SBTXDATETIME AS TIMESTAMP)) AS MONTH - FROM _T2 -), _S9 AS ( + DATE_TRUNC('MONTH', CAST(sbtxdatetime AS TIMESTAMP)) AS month + FROM _t2 +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - _S3.MONTH, - _S2.SBCUSTSTATE - FROM _S0 AS _S2 - CROSS JOIN _S3 AS _S3 - JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON YEAR(CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) = 2023 - AND _S3.MONTH = DATE_TRUNC('MONTH', CAST(SBTRANSACTION.sbtxdatetime AS TIMESTAMP)) - JOIN MAIN.SBCUSTOMER AS SBCUSTOMER - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid - AND SBCUSTOMER.sbcuststate = _S2.SBCUSTSTATE + COUNT(*) AS n_rows, + _s3.month, + _s2.sbcuststate + FROM _s0 AS _s2 + CROSS JOIN _s3 AS _s3 + JOIN main.sbtransaction AS sbtransaction + ON YEAR(CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) = 2023 + AND _s3.month = DATE_TRUNC('MONTH', CAST(sbtransaction.sbtxdatetime AS TIMESTAMP)) + JOIN main.sbcustomer AS sbcustomer + ON _s2.sbcuststate = sbcustomer.sbcuststate + AND sbcustomer.sbcustid = sbtransaction.sbtxcustid GROUP BY 2, 3 ) SELECT - _S0.SBCUSTSTATE AS state, - MAX(COALESCE(_S9.N_ROWS, 0)) AS max_n -FROM _S0 AS _S0 -CROSS JOIN _S1 AS _S1 -LEFT JOIN _S9 AS _S9 - ON _S0.SBCUSTSTATE = _S9.SBCUSTSTATE AND _S1.MONTH = _S9.MONTH + _s0.sbcuststate AS state, + MAX(COALESCE(_s9.n_rows, 0)) AS max_n +FROM _s0 AS _s0 +CROSS JOIN _s1 AS _s1 +LEFT JOIN _s9 AS _s9 + ON _s0.sbcuststate = _s9.sbcuststate AND _s1.month = _s9.month GROUP BY 1 diff --git a/tests/test_sql_refsols/quantile_test_1_snowflake.sql b/tests/test_sql_refsols/quantile_test_1_snowflake.sql index f1352353d..00345f528 100644 --- a/tests/test_sql_refsols/quantile_test_1_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_1_snowflake.sql @@ -1,7 +1,7 @@ SELECT PERCENTILE_DISC(0.7) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS seventieth_order_price -FROM TPCH.CUSTOMER AS CUSTOMER -JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 + orders.o_totalprice) AS seventieth_order_price +FROM tpch.customer AS customer +JOIN tpch.orders AS orders + ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1998 + AND customer.c_custkey = orders.o_custkey diff --git a/tests/test_sql_refsols/quantile_test_2_snowflake.sql b/tests/test_sql_refsols/quantile_test_2_snowflake.sql index 1054e1756..d0703b387 100644 --- a/tests/test_sql_refsols/quantile_test_2_snowflake.sql +++ b/tests/test_sql_refsols/quantile_test_2_snowflake.sql @@ -1,56 +1,56 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - n_name AS N_NAME, - n_nationkey AS N_NATIONKEY, - n_regionkey AS N_REGIONKEY - FROM TPCH.NATION + n_name, + n_nationkey, + n_regionkey + FROM tpch.nation ORDER BY 1 NULLS FIRST LIMIT 5 -), _S5 AS ( +), _s5 AS ( SELECT PERCENTILE_DISC(0.1) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_0, + orders.o_totalprice) AS agg_0, PERCENTILE_DISC(0.01) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_1, + orders.o_totalprice) AS agg_1, PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_2, + orders.o_totalprice) AS agg_2, PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_3, + orders.o_totalprice) AS agg_3, PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_4, + orders.o_totalprice) AS agg_4, PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_5, + orders.o_totalprice) AS agg_5, PERCENTILE_DISC(1.0) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_6, + orders.o_totalprice) AS agg_6, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_7, + orders.o_totalprice) AS agg_7, PERCENTILE_DISC(0.0) WITHIN GROUP (ORDER BY - ORDERS.o_totalprice) AS AGG_8, - CUSTOMER.c_nationkey AS C_NATIONKEY - FROM TPCH.CUSTOMER AS CUSTOMER - JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1998 + orders.o_totalprice) AS agg_8, + customer.c_nationkey + FROM tpch.customer AS customer + JOIN tpch.orders AS orders + ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1998 + AND customer.c_custkey = orders.o_custkey GROUP BY 10 ) SELECT - REGION.r_name AS region_name, - _S0.N_NAME AS nation_name, - _S5.AGG_8 AS orders_min, - _S5.AGG_1 AS orders_1_percent, - _S5.AGG_0 AS orders_10_percent, - _S5.AGG_2 AS orders_25_percent, - _S5.AGG_7 AS orders_median, - _S5.AGG_3 AS orders_75_percent, - _S5.AGG_4 AS orders_90_percent, - _S5.AGG_5 AS orders_99_percent, - _S5.AGG_6 AS orders_max -FROM _S0 AS _S0 -JOIN TPCH.REGION AS REGION - ON REGION.r_regionkey = _S0.N_REGIONKEY -LEFT JOIN _S5 AS _S5 - ON _S0.N_NATIONKEY = _S5.C_NATIONKEY + region.r_name AS region_name, + _s0.n_name AS nation_name, + _s5.agg_8 AS orders_min, + _s5.agg_1 AS orders_1_percent, + _s5.agg_0 AS orders_10_percent, + _s5.agg_2 AS orders_25_percent, + _s5.agg_7 AS orders_median, + _s5.agg_3 AS orders_75_percent, + _s5.agg_4 AS orders_90_percent, + _s5.agg_5 AS orders_99_percent, + _s5.agg_6 AS orders_max +FROM _s0 AS _s0 +JOIN tpch.region AS region + ON _s0.n_regionkey = region.r_regionkey +LEFT JOIN _s5 AS _s5 + ON _s0.n_nationkey = _s5.c_nationkey ORDER BY 2 NULLS FIRST diff --git a/tests/test_sql_refsols/rank_a_snowflake.sql b/tests/test_sql_refsols/rank_a_snowflake.sql index 9a7f14d7c..483dd35e1 100644 --- a/tests/test_sql_refsols/rank_a_snowflake.sql +++ b/tests/test_sql_refsols/rank_a_snowflake.sql @@ -1,4 +1,4 @@ SELECT c_custkey AS id, ROW_NUMBER() OVER (ORDER BY c_acctbal DESC) AS rk -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/rank_b_snowflake.sql b/tests/test_sql_refsols/rank_b_snowflake.sql index b323162a0..14229140a 100644 --- a/tests/test_sql_refsols/rank_b_snowflake.sql +++ b/tests/test_sql_refsols/rank_b_snowflake.sql @@ -1,4 +1,4 @@ SELECT o_orderkey AS order_key, RANK() OVER (ORDER BY o_orderpriority) AS rank -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/rank_c_snowflake.sql b/tests/test_sql_refsols/rank_c_snowflake.sql index 8b019c54b..159e7b9ba 100644 --- a/tests/test_sql_refsols/rank_c_snowflake.sql +++ b/tests/test_sql_refsols/rank_c_snowflake.sql @@ -1,4 +1,4 @@ SELECT o_orderdate AS order_date, DENSE_RANK() OVER (ORDER BY o_orderdate) AS rank -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql index a3d6f89f5..b4ab449d5 100644 --- a/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql +++ b/tests/test_sql_refsols/region_acctbal_breakdown_snowflake.sql @@ -1,26 +1,26 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - MEDIAN(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_BLACK_ACCTBAL, - MEDIAN(CUSTOMER.c_acctbal) AS MEDIAN_OVERALL_ACCTBAL, - MEDIAN(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS MEDIAN_RED_ACCTBAL, - COUNT(CASE WHEN CUSTOMER.c_acctbal >= 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_BLACK_ACCTBAL, - COUNT(CASE WHEN CUSTOMER.c_acctbal < 0 THEN CUSTOMER.c_acctbal ELSE NULL END) AS N_RED_ACCTBAL, - NATION.n_regionkey AS N_REGIONKEY - FROM TPCH.NATION AS NATION - JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey + MEDIAN(CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END) AS median_black_acctbal, + MEDIAN(customer.c_acctbal) AS median_overall_acctbal, + MEDIAN(CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END) AS median_red_acctbal, + COUNT(CASE WHEN customer.c_acctbal >= 0 THEN customer.c_acctbal ELSE NULL END) AS n_black_acctbal, + COUNT(CASE WHEN customer.c_acctbal < 0 THEN customer.c_acctbal ELSE NULL END) AS n_red_acctbal, + nation.n_regionkey + FROM tpch.nation AS nation + JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey GROUP BY 6 ) SELECT - REGION.r_name AS region_name, - _S3.N_RED_ACCTBAL AS n_red_acctbal, - _S3.N_BLACK_ACCTBAL AS n_black_acctbal, - _S3.MEDIAN_RED_ACCTBAL AS median_red_acctbal, - _S3.MEDIAN_BLACK_ACCTBAL AS median_black_acctbal, - _S3.MEDIAN_OVERALL_ACCTBAL AS median_overall_acctbal -FROM TPCH.REGION AS REGION -JOIN _S3 AS _S3 - ON REGION.r_regionkey = _S3.N_REGIONKEY + region.r_name AS region_name, + _s3.n_red_acctbal, + _s3.n_black_acctbal, + _s3.median_red_acctbal, + _s3.median_black_acctbal, + _s3.median_overall_acctbal +FROM tpch.region AS region +JOIN _s3 AS _s3 + ON _s3.n_regionkey = region.r_regionkey ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/simple_filter_snowflake.sql b/tests/test_sql_refsols/simple_filter_snowflake.sql index dfa0ed0dd..b3caa6ec4 100644 --- a/tests/test_sql_refsols/simple_filter_snowflake.sql +++ b/tests/test_sql_refsols/simple_filter_snowflake.sql @@ -2,6 +2,6 @@ SELECT o_orderdate AS order_date, o_orderkey, o_totalprice -FROM TPCH.ORDERS +FROM tpch.orders WHERE o_totalprice < 1000.0 diff --git a/tests/test_sql_refsols/simple_scan_snowflake.sql b/tests/test_sql_refsols/simple_scan_snowflake.sql index e0125c3c4..4a2aac94f 100644 --- a/tests/test_sql_refsols/simple_scan_snowflake.sql +++ b/tests/test_sql_refsols/simple_scan_snowflake.sql @@ -1,3 +1,3 @@ SELECT o_orderkey AS key -FROM TPCH.ORDERS +FROM tpch.orders diff --git a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql index 2235cea26..9a77bc82b 100644 --- a/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql +++ b/tests/test_sql_refsols/simple_smallest_or_largest_snowflake.sql @@ -26,4 +26,4 @@ SELECT GREATEST('', 'alphabet soup', 'Hello World') AS l8, GREATEST(NULL, 'alphabet soup', 'Hello World') AS l9 FROM (VALUES - (NULL)) AS _Q_0(_COL_0) + (NULL)) AS _q_0(_col_0) diff --git a/tests/test_sql_refsols/simple_var_std_snowflake.sql b/tests/test_sql_refsols/simple_var_std_snowflake.sql index d864bf2b5..6e8b2ccfc 100644 --- a/tests/test_sql_refsols/simple_var_std_snowflake.sql +++ b/tests/test_sql_refsols/simple_var_std_snowflake.sql @@ -1,24 +1,24 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - STDDEV_POP(s_acctbal) AS POP_STD, - VARIANCE_POP(s_acctbal) AS POP_VAR, - STDDEV(s_acctbal) AS SAMPLE_STD, - VARIANCE(s_acctbal) AS SAMPLE_VAR, - s_nationkey AS S_NATIONKEY - FROM TPCH.SUPPLIER + STDDEV_POP(s_acctbal) AS pop_std, + VARIANCE_POP(s_acctbal) AS pop_var, + STDDEV(s_acctbal) AS sample_std, + VARIANCE(s_acctbal) AS sample_var, + s_nationkey + FROM tpch.supplier GROUP BY 5 ) SELECT - NATION.n_name AS name, - _S1.POP_VAR AS var, - _S1.POP_STD AS std, - _S1.SAMPLE_VAR AS sample_var, - _S1.SAMPLE_STD AS sample_std, - _S1.POP_VAR AS pop_var, - _S1.POP_STD AS pop_std -FROM TPCH.NATION AS NATION -JOIN _S1 AS _S1 - ON NATION.n_nationkey = _S1.S_NATIONKEY + nation.n_name AS name, + _s1.pop_var AS var, + _s1.pop_std AS std, + _s1.sample_var, + _s1.sample_std, + _s1.pop_var, + _s1.pop_std +FROM tpch.nation AS nation +JOIN _s1 AS _s1 + ON _s1.s_nationkey = nation.n_nationkey WHERE - NATION.n_name IN ('ALGERIA', 'ARGENTINA') + nation.n_name IN ('ALGERIA', 'ARGENTINA') diff --git a/tests/test_sql_refsols/simplification_1_snowflake.sql b/tests/test_sql_refsols/simplification_1_snowflake.sql index 295d976e7..9e7a4ecbe 100644 --- a/tests/test_sql_refsols/simplification_1_snowflake.sql +++ b/tests/test_sql_refsols/simplification_1_snowflake.sql @@ -23,4 +23,4 @@ SELECT TRUE AS s21, TRUE AS s22, TRUE AS s23 -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer diff --git a/tests/test_sql_refsols/simplification_2_snowflake.sql b/tests/test_sql_refsols/simplification_2_snowflake.sql index b4df6c451..963c3a426 100644 --- a/tests/test_sql_refsols/simplification_2_snowflake.sql +++ b/tests/test_sql_refsols/simplification_2_snowflake.sql @@ -47,4 +47,4 @@ SELECT NULL AS s45, NULL AS s46, COALESCE(MAX(sbcustname), '') LIKE '%r%' AS s47 -FROM MAIN.SBCUSTOMER +FROM main.sbcustomer diff --git a/tests/test_sql_refsols/simplification_3_snowflake.sql b/tests/test_sql_refsols/simplification_3_snowflake.sql index 422f38d7e..a1b6b5a76 100644 --- a/tests/test_sql_refsols/simplification_3_snowflake.sql +++ b/tests/test_sql_refsols/simplification_3_snowflake.sql @@ -1,28 +1,28 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - ROW_NUMBER() OVER (ORDER BY sbcustname) AS RANK, - AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS RAVG1, + ROW_NUMBER() OVER (ORDER BY sbcustname) AS rank, + AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS ravg1, COALESCE( AVG(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 0.1 - ) AS RAVG2, - COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER () AS RCNT1, + ) AS ravg2, + COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER () AS rcnt1, COALESCE( COUNT(CAST(sbcustpostalcode AS BIGINT)) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0.1 - ) AS RCNT2, - COUNT(*) OVER () AS RSIZ1, + ) AS rcnt2, + COUNT(*) OVER () AS rsiz1, COALESCE( COUNT(*) OVER (ORDER BY sbcustname ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING), 0.1 - ) AS RSIZ2, - SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS RSUM1, + ) AS rsiz2, + SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER () AS rsum1, COALESCE( SUM(ABS(COALESCE(CAST(sbcustpostalcode AS BIGINT), 0))) OVER (ORDER BY sbcustname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0.1 - ) AS RSUM2, - sbcustpostalcode AS SBCUSTPOSTALCODE - FROM MAIN.SBCUSTOMER + ) AS rsum2, + sbcustpostalcode + FROM main.sbcustomer ) SELECT TRUE AS s00, @@ -51,16 +51,16 @@ SELECT FALSE AS s23, TRUE AS s24, PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY - ABS(CAST(SBCUSTPOSTALCODE AS BIGINT))) AS s25, - MEDIAN(ABS(CAST(SBCUSTPOSTALCODE AS BIGINT))) AS s26, - MIN(RANK) AS s27, - MAX(RANK) AS s28, - ANY_VALUE(RSUM1) AS s29, - ROUND(SUM(RSUM2), 2) AS s30, - ANY_VALUE(RAVG1) AS s31, - ROUND(SUM(RAVG2), 2) AS s32, - ANY_VALUE(RCNT1) AS s33, - ROUND(SUM(RCNT2), 2) AS s34, - ANY_VALUE(RSIZ1) AS s35, - ROUND(SUM(RSIZ2), 2) AS s36 -FROM _T1 + ABS(CAST(sbcustpostalcode AS BIGINT))) AS s25, + MEDIAN(ABS(CAST(sbcustpostalcode AS BIGINT))) AS s26, + MIN(rank) AS s27, + MAX(rank) AS s28, + ANY_VALUE(rsum1) AS s29, + ROUND(SUM(rsum2), 2) AS s30, + ANY_VALUE(ravg1) AS s31, + ROUND(SUM(ravg2), 2) AS s32, + ANY_VALUE(rcnt1) AS s33, + ROUND(SUM(rcnt2), 2) AS s34, + ANY_VALUE(rsiz1) AS s35, + ROUND(SUM(rsiz2), 2) AS s36 +FROM _t1 diff --git a/tests/test_sql_refsols/smoke_a_snowflake.sql b/tests/test_sql_refsols/smoke_a_snowflake.sql index ce24ce0b9..9a0ae9ce2 100644 --- a/tests/test_sql_refsols/smoke_a_snowflake.sql +++ b/tests/test_sql_refsols/smoke_a_snowflake.sql @@ -51,7 +51,7 @@ SELECT ) / 100.0 ) AS h, ROUND(POWER(GREATEST(p_size, 10), 0.5), 3) AS i -FROM TPCH.PART +FROM tpch.part ORDER BY 1 NULLS FIRST LIMIT 5 diff --git a/tests/test_sql_refsols/smoke_b_snowflake.sql b/tests/test_sql_refsols/smoke_b_snowflake.sql index 33ca38803..0e8b04f07 100644 --- a/tests/test_sql_refsols/smoke_b_snowflake.sql +++ b/tests/test_sql_refsols/smoke_b_snowflake.sql @@ -62,7 +62,7 @@ SELECT 'DAY', DATEADD(DAY, DAYOFWEEK(CAST(o_orderdate AS TIMESTAMP)) * -1, CAST(o_orderdate AS TIMESTAMP)) ) AS q -FROM TPCH.ORDERS +FROM tpch.orders WHERE CONTAINS(o_comment, 'fo') AND ENDSWITH(o_clerk, '5') diff --git a/tests/test_sql_refsols/smoke_c_snowflake.sql b/tests/test_sql_refsols/smoke_c_snowflake.sql index c80e86cfe..4bcbbcc4d 100644 --- a/tests/test_sql_refsols/smoke_c_snowflake.sql +++ b/tests/test_sql_refsols/smoke_c_snowflake.sql @@ -18,4 +18,4 @@ SELECT PERCENTILE_DISC(0.2) WITHIN GROUP (ORDER BY c_acctbal) AS q, MEDIAN(c_acctbal) AS r -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/smoke_d_snowflake.sql b/tests/test_sql_refsols/smoke_d_snowflake.sql index 3c14fdd8e..fe9dfe411 100644 --- a/tests/test_sql_refsols/smoke_d_snowflake.sql +++ b/tests/test_sql_refsols/smoke_d_snowflake.sql @@ -1,29 +1,29 @@ SELECT - CUSTOMER.c_custkey AS key, - ROW_NUMBER() OVER (ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS a, - ROW_NUMBER() OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS b, - RANK() OVER (ORDER BY CUSTOMER.c_mktsegment) AS c, - DENSE_RANK() OVER (ORDER BY CUSTOMER.c_mktsegment) AS d, - NTILE(100) OVER (ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS e, - NTILE(12) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal, CUSTOMER.c_custkey) AS f, - LAG(CUSTOMER.c_custkey, 1) OVER (ORDER BY CUSTOMER.c_custkey) AS g, - LAG(CUSTOMER.c_custkey, 2, -1) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey) AS h, - LEAD(CUSTOMER.c_custkey, 1) OVER (ORDER BY CUSTOMER.c_custkey) AS i, - LEAD(CUSTOMER.c_custkey, 6000) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey) AS j, - SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey) AS k, - SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, - ROUND(AVG(CUSTOMER.c_acctbal) OVER (), 2) AS m, + customer.c_custkey AS key, + ROW_NUMBER() OVER (ORDER BY customer.c_acctbal, customer.c_custkey) AS a, + ROW_NUMBER() OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal, customer.c_custkey) AS b, + RANK() OVER (ORDER BY customer.c_mktsegment) AS c, + DENSE_RANK() OVER (ORDER BY customer.c_mktsegment) AS d, + NTILE(100) OVER (ORDER BY customer.c_acctbal, customer.c_custkey) AS e, + NTILE(12) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal, customer.c_custkey) AS f, + LAG(customer.c_custkey, 1) OVER (ORDER BY customer.c_custkey) AS g, + LAG(customer.c_custkey, 2, -1) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey) AS h, + LEAD(customer.c_custkey, 1) OVER (ORDER BY customer.c_custkey) AS i, + LEAD(customer.c_custkey, 6000) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey) AS j, + SUM(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey) AS k, + SUM(customer.c_acctbal) OVER (ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS l, + ROUND(AVG(customer.c_acctbal) OVER (), 2) AS m, ROUND( - AVG(CUSTOMER.c_acctbal) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), + AVG(customer.c_acctbal) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_custkey ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 2 ) AS n, - COUNT(CASE WHEN CUSTOMER.c_acctbal > 0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS o, + COUNT(CASE WHEN customer.c_acctbal > 0 THEN customer.c_acctbal ELSE NULL END) OVER () AS o, COUNT(*) OVER () AS p -FROM TPCH.NATION AS NATION -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey ORDER BY 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql index 7c055025b..b7abadaab 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 2 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql index c3878ac5d..18d65f3ec 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_friday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 2 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql index ed2d77fe4..2507f64b0 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 6 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql index 087eca477..9cc943050 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_monday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 6 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql index 75693c067..cb89fecc5 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 1 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql index 096676be4..e05df5b6c 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_saturday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 1 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql index 301b5bde4..3cf42e00b 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_one_snowflake.sql @@ -25,7 +25,7 @@ SELECT THEN 'Saturday' END AS dayname, DAYOFWEEK(sbtxdatetime) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql index 70a72d914..cfd9286a4 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_sunday_zero_snowflake.sql @@ -25,7 +25,7 @@ SELECT THEN 'Saturday' END AS dayname, DAYOFWEEK(sbtxdatetime) AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql index b85cc65a2..f90847533 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 3 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql index 9481d96f6..49bcc08ed 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_thursday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 3 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql index 81db985e0..c38c8adfe 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 5 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql index f37c1cef8..288348ef7 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_tuesday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 5 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql index 2dac3db47..1739fbb7c 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_one_snowflake.sql @@ -33,7 +33,7 @@ SELECT DAYOFWEEK(sbtxdatetime) + 4 ) % 7 ) + 1 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql index 113a907a3..7359370e5 100644 --- a/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql +++ b/tests/test_sql_refsols/sql_transaction_week_sampler_wednesday_zero_snowflake.sql @@ -31,7 +31,7 @@ SELECT ( DAYOFWEEK(sbtxdatetime) + 4 ) % 7 AS dayofweek -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/string_functions_snowflake.sql b/tests/test_sql_refsols/string_functions_snowflake.sql index 8614acb85..613e229a7 100644 --- a/tests/test_sql_refsols/string_functions_snowflake.sql +++ b/tests/test_sql_refsols/string_functions_snowflake.sql @@ -1,26 +1,26 @@ SELECT - LOWER(CUSTOMER.c_name) AS lowercase_name, - UPPER(CUSTOMER.c_name) AS uppercase_name, - LENGTH(CUSTOMER.c_name) AS name_length, - STARTSWITH(CUSTOMER.c_name, 'A') AS starts_with_A, - ENDSWITH(CUSTOMER.c_name, 'z') AS ends_with_z, - CONTAINS(CUSTOMER.c_name, 'sub') AS contains_sub, - CUSTOMER.c_name LIKE '%test%' AS matches_like, - CONCAT_WS('::', CUSTOMER.c_name, NATION.n_name) AS joined_string, - LPAD(CUSTOMER.c_name, 20, '*') AS lpad_name, - RPAD(CUSTOMER.c_name, 20, '-') AS rpad_name, - TRIM(CUSTOMER.c_name, '\n\t ') AS stripped, - TRIM(CUSTOMER.c_name, 'aeiou') AS stripped_vowels, - REPLACE(CUSTOMER.c_name, 'Corp', 'Inc') AS replaced_name, - REPLACE(CUSTOMER.c_name, 'Ltd', '') AS removed_substr, + LOWER(customer.c_name) AS lowercase_name, + UPPER(customer.c_name) AS uppercase_name, + LENGTH(customer.c_name) AS name_length, + STARTSWITH(customer.c_name, 'A') AS starts_with_A, + ENDSWITH(customer.c_name, 'z') AS ends_with_z, + CONTAINS(customer.c_name, 'sub') AS contains_sub, + customer.c_name LIKE '%test%' AS matches_like, + CONCAT_WS('::', customer.c_name, nation.n_name) AS joined_string, + LPAD(customer.c_name, 20, '*') AS lpad_name, + RPAD(customer.c_name, 20, '-') AS rpad_name, + TRIM(customer.c_name, '\n\t ') AS stripped, + TRIM(customer.c_name, 'aeiou') AS stripped_vowels, + REPLACE(customer.c_name, 'Corp', 'Inc') AS replaced_name, + REPLACE(customer.c_name, 'Ltd', '') AS removed_substr, CASE WHEN LENGTH('e') = 0 THEN 0 ELSE CAST(( - LENGTH(CUSTOMER.c_name) - LENGTH(REPLACE(CUSTOMER.c_name, 'e', '')) + LENGTH(customer.c_name) - LENGTH(REPLACE(customer.c_name, 'e', '')) ) / LENGTH('e') AS BIGINT) END AS count_e, - CHARINDEX('Alex', CUSTOMER.c_name) - 1 AS idx_Alex -FROM TPCH.CUSTOMER AS CUSTOMER -JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + CHARINDEX('Alex', customer.c_name) - 1 AS idx_Alex +FROM tpch.customer AS customer +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql index 6f5f383d2..0b97ba986 100644 --- a/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql +++ b/tests/test_sql_refsols/technograph_battery_failure_rates_anomalies_snowflake.sql @@ -1,24 +1,24 @@ -WITH _S7 AS ( +WITH _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - INCIDENTS.in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS AS INCIDENTS - JOIN MAIN.ERRORS AS ERRORS - ON ERRORS.er_id = INCIDENTS.in_error_id AND ERRORS.er_name = 'Battery Failure' + COUNT(*) AS n_rows, + incidents.in_device_id + FROM main.incidents AS incidents + JOIN main.errors AS errors + ON errors.er_id = incidents.in_error_id AND errors.er_name = 'Battery Failure' GROUP BY 2 ) SELECT - COUNTRIES.co_name AS country_name, - PRODUCTS.pr_name AS product_name, - ROUND(COALESCE(SUM(_S7.N_ROWS), 0) / COUNT(*), 2) AS ir -FROM MAIN.COUNTRIES AS COUNTRIES -JOIN MAIN.DEVICES AS DEVICES - ON COUNTRIES.co_id = DEVICES.de_production_country_id -JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id -LEFT JOIN _S7 AS _S7 - ON DEVICES.de_id = _S7.IN_DEVICE_ID + countries.co_name AS country_name, + products.pr_name AS product_name, + ROUND(COALESCE(SUM(_s7.n_rows), 0) / COUNT(*), 2) AS ir +FROM main.countries AS countries +JOIN main.devices AS devices + ON countries.co_id = devices.de_production_country_id +JOIN main.products AS products + ON devices.de_product_id = products.pr_id +LEFT JOIN _s7 AS _s7 + ON _s7.in_device_id = devices.de_id GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql index cc0735ab8..6f371134e 100644 --- a/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_cartesian_oddball_snowflake.sql @@ -1,12 +1,12 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_OTHER_COUNTRIES - FROM MAIN.COUNTRIES + COUNT(*) AS n_other_countries + FROM main.countries ) SELECT - COUNTRIES.co_name AS name, - _S1.N_OTHER_COUNTRIES AS n_other_countries -FROM MAIN.COUNTRIES AS COUNTRIES -CROSS JOIN _S1 AS _S1 + countries.co_name AS name, + _s1.n_other_countries +FROM main.countries AS countries +CROSS JOIN _s1 AS _s1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql index a51c012c6..5835cd8c9 100644 --- a/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_combination_analysis_snowflake.sql @@ -1,46 +1,46 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - co_id AS CO_ID, - co_name AS CO_NAME - FROM MAIN.COUNTRIES -), _S2 AS ( + co_id, + co_name + FROM main.countries +), _s2 AS ( SELECT - co_id AS CO_ID - FROM MAIN.COUNTRIES -), _S7 AS ( + co_id + FROM main.countries +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS + COUNT(*) AS n_rows, + in_device_id + FROM main.incidents GROUP BY 2 -), _S9 AS ( +), _s9 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S7.N_ROWS) AS SUM_N_ROWS, - _S3.CO_ID AS _ID_3, - _S2.CO_ID - FROM _S2 AS _S2 - CROSS JOIN _S2 AS _S3 - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_production_country_id = _S2.CO_ID - AND DEVICES.de_purchase_country_id = _S3.CO_ID - LEFT JOIN _S7 AS _S7 - ON DEVICES.de_id = _S7.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s7.n_rows) AS sum_n_rows, + _s3.co_id AS _id_3, + _s2.co_id + FROM _s2 AS _s2 + CROSS JOIN _s2 AS _s3 + JOIN main.devices AS devices + ON _s2.co_id = devices.de_production_country_id + AND _s3.co_id = devices.de_purchase_country_id + LEFT JOIN _s7 AS _s7 + ON _s7.in_device_id = devices.de_id GROUP BY 3, 4 ) SELECT - _S0.CO_NAME AS factory_country, - _S1.CO_NAME AS purchase_country, + _s0.co_name AS factory_country, + _s1.co_name AS purchase_country, ROUND(( - 1.0 * COALESCE(_S9.SUM_N_ROWS, 0) - ) / COALESCE(_S9.N_ROWS, 0), 2) AS ir -FROM _S0 AS _S0 -CROSS JOIN _S0 AS _S1 -LEFT JOIN _S9 AS _S9 - ON _S0.CO_ID = _S9.CO_ID AND _S1.CO_ID = _S9._ID_3 + 1.0 * COALESCE(_s9.sum_n_rows, 0) + ) / COALESCE(_s9.n_rows, 0), 2) AS ir +FROM _s0 AS _s0 +CROSS JOIN _s0 AS _s1 +LEFT JOIN _s9 AS _s9 + ON _s0.co_id = _s9.co_id AND _s1.co_id = _s9._id_3 ORDER BY 3 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql index 80d74eed0..13f73b452 100644 --- a/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql +++ b/tests/test_sql_refsols/technograph_country_incident_rate_analysis_snowflake.sql @@ -1,72 +1,72 @@ -WITH _T2 AS ( +WITH _t2 AS ( SELECT - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS -), _S1 AS ( + in_device_id + FROM main.incidents +), _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - IN_DEVICE_ID - FROM _T2 + COUNT(*) AS n_rows, + in_device_id + FROM _t2 GROUP BY 2 -), _S3 AS ( +), _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S1.N_ROWS) AS SUM_N_ROWS, - DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID - FROM MAIN.DEVICES AS DEVICES - LEFT JOIN _S1 AS _S1 - ON DEVICES.de_id = _S1.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s1.n_rows) AS sum_n_rows, + devices.de_production_country_id + FROM main.devices AS devices + LEFT JOIN _s1 AS _s1 + ON _s1.in_device_id = devices.de_id GROUP BY 3 -), _S5 AS ( +), _s5 AS ( SELECT - COUNT(*) AS N_ROWS, - IN_DEVICE_ID - FROM _T2 + COUNT(*) AS n_rows, + in_device_id + FROM _t2 GROUP BY 2 -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S5.N_ROWS) AS SUM_N_ROWS, - DEVICES.de_purchase_country_id AS DE_PURCHASE_COUNTRY_ID - FROM MAIN.DEVICES AS DEVICES - LEFT JOIN _S5 AS _S5 - ON DEVICES.de_id = _S5.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s5.n_rows) AS sum_n_rows, + devices.de_purchase_country_id + FROM main.devices AS devices + LEFT JOIN _s5 AS _s5 + ON _s5.in_device_id = devices.de_id GROUP BY 3 -), _S11 AS ( +), _s11 AS ( SELECT - COUNT(*) AS N_ROWS, - IN_DEVICE_ID - FROM _T2 + COUNT(*) AS n_rows, + in_device_id + FROM _t2 GROUP BY 2 -), _S13 AS ( +), _s13 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S11.N_ROWS) AS SUM_N_ROWS, - USERS.us_country_id AS US_COUNTRY_ID - FROM MAIN.USERS AS USERS - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_owner_id = USERS.us_id - LEFT JOIN _S11 AS _S11 - ON DEVICES.de_id = _S11.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s11.n_rows) AS sum_n_rows, + users.us_country_id + FROM main.users AS users + JOIN main.devices AS devices + ON devices.de_owner_id = users.us_id + LEFT JOIN _s11 AS _s11 + ON _s11.in_device_id = devices.de_id GROUP BY 3 ) SELECT - COUNTRIES.co_name AS country_name, - ROUND(COALESCE(_S3.SUM_N_ROWS, 0) / _S3.N_ROWS, 2) AS made_ir, - ROUND(COALESCE(_S7.SUM_N_ROWS, 0) / _S7.N_ROWS, 2) AS sold_ir, - ROUND(COALESCE(_S13.SUM_N_ROWS, 0) / COALESCE(_S13.N_ROWS, 0), 2) AS user_ir -FROM MAIN.COUNTRIES AS COUNTRIES -JOIN _S3 AS _S3 - ON COUNTRIES.co_id = _S3.DE_PRODUCTION_COUNTRY_ID -JOIN _S7 AS _S7 - ON COUNTRIES.co_id = _S7.DE_PURCHASE_COUNTRY_ID -LEFT JOIN _S13 AS _S13 - ON COUNTRIES.co_id = _S13.US_COUNTRY_ID + countries.co_name AS country_name, + ROUND(COALESCE(_s3.sum_n_rows, 0) / _s3.n_rows, 2) AS made_ir, + ROUND(COALESCE(_s7.sum_n_rows, 0) / _s7.n_rows, 2) AS sold_ir, + ROUND(COALESCE(_s13.sum_n_rows, 0) / COALESCE(_s13.n_rows, 0), 2) AS user_ir +FROM main.countries AS countries +JOIN _s3 AS _s3 + ON _s3.de_production_country_id = countries.co_id +JOIN _s7 AS _s7 + ON _s7.de_purchase_country_id = countries.co_id +LEFT JOIN _s13 AS _s13 + ON _s13.us_country_id = countries.co_id ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql index 3fbc93593..3de27b18a 100644 --- a/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_percentages_sun_set_by_error_snowflake.sql @@ -1,22 +1,22 @@ -WITH _S5 AS ( +WITH _s5 AS ( SELECT - COUNT(*) AS N_ROWS, - INCIDENTS.in_error_id AS IN_ERROR_ID - FROM MAIN.INCIDENTS AS INCIDENTS - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' + COUNT(*) AS n_rows, + incidents.in_error_id + FROM main.incidents AS incidents + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id + JOIN main.products AS products + ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' GROUP BY 2 ) SELECT - ERRORS.er_name AS error, + errors.er_name AS error, ROUND(( - 100.0 * COALESCE(_S5.N_ROWS, 0) - ) / SUM(COALESCE(_S5.N_ROWS, 0)) OVER (), 2) AS pct -FROM MAIN.ERRORS AS ERRORS -LEFT JOIN _S5 AS _S5 - ON ERRORS.er_id = _S5.IN_ERROR_ID + 100.0 * COALESCE(_s5.n_rows, 0) + ) / SUM(COALESCE(_s5.n_rows, 0)) OVER (), 2) AS pct +FROM main.errors AS errors +LEFT JOIN _s5 AS _s5 + ON _s5.in_error_id = errors.er_id ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql index 130589712..9b395aef9 100644 --- a/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql +++ b/tests/test_sql_refsols/technograph_error_rate_sun_set_by_factory_country_snowflake.sql @@ -1,28 +1,28 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS + COUNT(*) AS n_rows, + in_device_id + FROM main.incidents GROUP BY 2 -), _S5 AS ( +), _s5 AS ( SELECT - COALESCE(SUM(_S3.N_ROWS), 0) AS SUM_N_INCIDENTS, - DEVICES.de_production_country_id AS DE_PRODUCTION_COUNTRY_ID, - COUNT(*) AS N_ROWS - FROM MAIN.DEVICES AS DEVICES - JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id AND PRODUCTS.pr_name = 'Sun-Set' - LEFT JOIN _S3 AS _S3 - ON DEVICES.de_id = _S3.IN_DEVICE_ID + COALESCE(SUM(_s3.n_rows), 0) AS sum_n_incidents, + devices.de_production_country_id, + COUNT(*) AS n_rows + FROM main.devices AS devices + JOIN main.products AS products + ON devices.de_product_id = products.pr_id AND products.pr_name = 'Sun-Set' + LEFT JOIN _s3 AS _s3 + ON _s3.in_device_id = devices.de_id GROUP BY 2 ) SELECT - COUNTRIES.co_name AS country, - ROUND(COALESCE(_S5.SUM_N_INCIDENTS, 0) / COALESCE(_S5.N_ROWS, 0), 2) AS ir -FROM MAIN.COUNTRIES AS COUNTRIES -LEFT JOIN _S5 AS _S5 - ON COUNTRIES.co_id = _S5.DE_PRODUCTION_COUNTRY_ID + countries.co_name AS country, + ROUND(COALESCE(_s5.sum_n_incidents, 0) / COALESCE(_s5.n_rows, 0), 2) AS ir +FROM main.countries AS countries +LEFT JOIN _s5 AS _s5 + ON _s5.de_production_country_id = countries.co_id ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql index 2ca72ecd8..2d5a8ae63 100644 --- a/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_global_incident_rate_snowflake.sql @@ -1,13 +1,13 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - COUNT(*) AS N_ROWS - FROM MAIN.INCIDENTS -), _S1 AS ( + COUNT(*) AS n_rows + FROM main.incidents +), _s1 AS ( SELECT - COUNT(*) AS N_ROWS - FROM MAIN.DEVICES + COUNT(*) AS n_rows + FROM main.devices ) SELECT - ROUND(_S0.N_ROWS / _S1.N_ROWS, 2) AS ir -FROM _S0 AS _S0 -CROSS JOIN _S1 AS _S1 + ROUND(_s0.n_rows / _s1.n_rows, 2) AS ir +FROM _s0 AS _s0 +CROSS JOIN _s1 AS _s1 diff --git a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql index 9b7d3a13f..d7cbf77f4 100644 --- a/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql +++ b/tests/test_sql_refsols/technograph_hot_purchase_window_snowflake.sql @@ -1,14 +1,14 @@ SELECT - CALENDAR.ca_dt AS start_of_period, + calendar.ca_dt AS start_of_period, COUNT(*) AS n_purchases -FROM MAIN.CALENDAR AS CALENDAR -JOIN MAIN.CALENDAR AS CALENDAR_2 - ON CALENDAR.ca_dt <= CALENDAR_2.ca_dt - AND CALENDAR_2.ca_dt < DATEADD(DAY, 5, CAST(CALENDAR.ca_dt AS TIMESTAMP)) -JOIN MAIN.DEVICES AS DEVICES - ON CALENDAR_2.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) +FROM main.calendar AS calendar +JOIN main.calendar AS calendar_2 + ON calendar.ca_dt <= calendar_2.ca_dt + AND calendar_2.ca_dt < DATEADD(DAY, 5, CAST(calendar.ca_dt AS TIMESTAMP)) +JOIN main.devices AS devices + ON calendar_2.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) WHERE - YEAR(CAST(CALENDAR.ca_dt AS TIMESTAMP)) = 2024 + YEAR(CAST(calendar.ca_dt AS TIMESTAMP)) = 2024 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql index 0d7c08ce3..316a5e3b1 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_by_release_year_snowflake.sql @@ -1,41 +1,41 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - COUNT(*) AS N_ROWS, - de_product_id AS DE_PRODUCT_ID - FROM MAIN.DEVICES + COUNT(*) AS n_rows, + de_product_id + FROM main.devices GROUP BY 2 -), _S1 AS ( +), _s1 AS ( SELECT - pr_id AS PR_ID, - pr_release AS PR_RELEASE - FROM MAIN.PRODUCTS -), _S6 AS ( + pr_id, + pr_release + FROM main.products +), _s6 AS ( SELECT - YEAR(CAST(_S1.PR_RELEASE AS TIMESTAMP)) AS RELEASE_YEAR, - SUM(_S0.N_ROWS) AS SUM_N_ROWS - FROM _S0 AS _S0 - JOIN _S1 AS _S1 - ON _S0.DE_PRODUCT_ID = _S1.PR_ID + YEAR(CAST(_s1.pr_release AS TIMESTAMP)) AS release_year, + SUM(_s0.n_rows) AS sum_n_rows + FROM _s0 AS _s0 + JOIN _s1 AS _s1 + ON _s0.de_product_id = _s1.pr_id GROUP BY 1 -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - YEAR(CAST(_S3.PR_RELEASE AS TIMESTAMP)) AS RELEASE_YEAR - FROM MAIN.DEVICES AS DEVICES - JOIN _S1 AS _S3 - ON DEVICES.de_product_id = _S3.PR_ID - JOIN MAIN.INCIDENTS AS INCIDENTS - ON DEVICES.de_id = INCIDENTS.in_device_id + COUNT(*) AS n_rows, + YEAR(CAST(_s3.pr_release AS TIMESTAMP)) AS release_year + FROM main.devices AS devices + JOIN _s1 AS _s3 + ON _s3.pr_id = devices.de_product_id + JOIN main.incidents AS incidents + ON devices.de_id = incidents.in_device_id GROUP BY 2 ) SELECT - _S6.RELEASE_YEAR AS year, - ROUND(COALESCE(_S7.N_ROWS, 0) / _S6.SUM_N_ROWS, 2) AS ir -FROM _S6 AS _S6 -LEFT JOIN _S7 AS _S7 - ON _S6.RELEASE_YEAR = _S7.RELEASE_YEAR + _s6.release_year AS year, + ROUND(COALESCE(_s7.n_rows, 0) / _s6.sum_n_rows, 2) AS ir +FROM _s6 AS _s6 +LEFT JOIN _s7 AS _s7 + ON _s6.release_year = _s7.release_year ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql index bad452e73..075b007a3 100644 --- a/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql +++ b/tests/test_sql_refsols/technograph_incident_rate_per_brand_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS + COUNT(*) AS n_rows, + in_device_id + FROM main.incidents GROUP BY 2 ) SELECT - PRODUCTS.pr_brand AS brand, - ROUND(COALESCE(SUM(_S3.N_ROWS), 0) / COUNT(*), 2) AS ir -FROM MAIN.DEVICES AS DEVICES -JOIN MAIN.PRODUCTS AS PRODUCTS - ON DEVICES.de_product_id = PRODUCTS.pr_id -LEFT JOIN _S3 AS _S3 - ON DEVICES.de_id = _S3.IN_DEVICE_ID + products.pr_brand AS brand, + ROUND(COALESCE(SUM(_s3.n_rows), 0) / COUNT(*), 2) AS ir +FROM main.devices AS devices +JOIN main.products AS products + ON devices.de_product_id = products.pr_id +LEFT JOIN _s3 AS _s3 + ON _s3.in_device_id = devices.de_id GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql index dfae7b184..846bb0250 100644 --- a/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql +++ b/tests/test_sql_refsols/technograph_monthly_incident_rate_snowflake.sql @@ -1,62 +1,62 @@ -WITH _T2 AS ( +WITH _t2 AS ( SELECT - ca_dt AS CA_DT - FROM MAIN.CALENDAR + ca_dt + FROM main.calendar WHERE YEAR(CAST(ca_dt AS TIMESTAMP)) IN (2020, 2021) -), _T5 AS ( +), _t5 AS ( SELECT - co_id AS CO_ID, - co_name AS CO_NAME - FROM MAIN.COUNTRIES + co_id, + co_name + FROM main.countries WHERE co_name = 'CN' -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - _T4.CA_DT - FROM _T2 AS _T4 - JOIN MAIN.CALENDAR AS CALENDAR - ON CALENDAR.ca_dt >= DATEADD(MONTH, -6, CAST(_T4.CA_DT AS TIMESTAMP)) - JOIN MAIN.DEVICES AS DEVICES - ON CALENDAR.ca_dt = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - JOIN _T5 AS _T5 - ON DEVICES.de_production_country_id = _T5.CO_ID + COUNT(*) AS n_rows, + _t4.ca_dt + FROM _t2 AS _t4 + JOIN main.calendar AS calendar + ON calendar.ca_dt >= DATEADD(MONTH, -6, CAST(_t4.ca_dt AS TIMESTAMP)) + JOIN main.devices AS devices + ON calendar.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) + JOIN _t5 AS _t5 + ON _t5.co_id = devices.de_production_country_id GROUP BY 2 -), _S15 AS ( +), _s15 AS ( SELECT - COUNT(*) AS N_ROWS, - _T7.CA_DT - FROM _T2 AS _T7 - JOIN MAIN.INCIDENTS AS INCIDENTS - ON _T7.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN _T5 AS _T8 - ON DEVICES.de_production_country_id = _T8.CO_ID + COUNT(*) AS n_rows, + _t7.ca_dt + FROM _t2 AS _t7 + JOIN main.incidents AS incidents + ON _t7.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id + JOIN _t5 AS _t8 + ON _t8.co_id = devices.de_production_country_id GROUP BY 2 -), _T0 AS ( +), _t0 AS ( SELECT - MONTH(CAST(_T2.CA_DT AS TIMESTAMP)) AS MONTH, - SUM(_S7.N_ROWS) AS SUM_EXPR_3, - SUM(_S15.N_ROWS) AS SUM_N_ROWS, - YEAR(CAST(_T2.CA_DT AS TIMESTAMP)) AS YEAR - FROM _T2 AS _T2 - LEFT JOIN _S7 AS _S7 - ON _S7.CA_DT = _T2.CA_DT - LEFT JOIN _S15 AS _S15 - ON _S15.CA_DT = _T2.CA_DT + MONTH(CAST(_t2.ca_dt AS TIMESTAMP)) AS month, + SUM(_s7.n_rows) AS sum_expr_3, + SUM(_s15.n_rows) AS sum_n_rows, + YEAR(CAST(_t2.ca_dt AS TIMESTAMP)) AS year + FROM _t2 AS _t2 + LEFT JOIN _s7 AS _s7 + ON _s7.ca_dt = _t2.ca_dt + LEFT JOIN _s15 AS _s15 + ON _s15.ca_dt = _t2.ca_dt GROUP BY 1, 4 ) SELECT - CONCAT_WS('-', YEAR, LPAD(MONTH, 2, '0')) AS month, + CONCAT_WS('-', year, LPAD(month, 2, '0')) AS month, ROUND(( - 1000000.0 * COALESCE(SUM_N_ROWS, 0) - ) / COALESCE(SUM_EXPR_3, 0), 2) AS ir -FROM _T0 + 1000000.0 * COALESCE(sum_n_rows, 0) + ) / COALESCE(sum_expr_3, 0), 2) AS ir +FROM _t0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql index a5931737f..38be32ec0 100644 --- a/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql +++ b/tests/test_sql_refsols/technograph_most_unreliable_products_snowflake.sql @@ -1,29 +1,29 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - in_device_id AS IN_DEVICE_ID - FROM MAIN.INCIDENTS + COUNT(*) AS n_rows, + in_device_id + FROM main.incidents GROUP BY 2 -), _S3 AS ( +), _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - SUM(_S1.N_ROWS) AS SUM_N_INCIDENTS, - DEVICES.de_product_id AS DE_PRODUCT_ID - FROM MAIN.DEVICES AS DEVICES - LEFT JOIN _S1 AS _S1 - ON DEVICES.de_id = _S1.IN_DEVICE_ID + COUNT(*) AS n_rows, + SUM(_s1.n_rows) AS sum_n_incidents, + devices.de_product_id + FROM main.devices AS devices + LEFT JOIN _s1 AS _s1 + ON _s1.in_device_id = devices.de_id GROUP BY 3 ) SELECT - PRODUCTS.pr_name AS product, - PRODUCTS.pr_brand AS product_brand, - PRODUCTS.pr_type AS product_type, - ROUND(COALESCE(_S3.SUM_N_INCIDENTS, 0) / _S3.N_ROWS, 2) AS ir -FROM MAIN.PRODUCTS AS PRODUCTS -JOIN _S3 AS _S3 - ON PRODUCTS.pr_id = _S3.DE_PRODUCT_ID + products.pr_name AS product, + products.pr_brand AS product_brand, + products.pr_type AS product_type, + ROUND(COALESCE(_s3.sum_n_incidents, 0) / _s3.n_rows, 2) AS ir +FROM main.products AS products +JOIN _s3 AS _s3 + ON _s3.de_product_id = products.pr_id ORDER BY 4 DESC NULLS LAST LIMIT 5 diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql index 48bdb69eb..1a33ae4a2 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_goldcopperstar_snowflake.sql @@ -1,83 +1,83 @@ -WITH _S14 AS ( +WITH _s14 AS ( SELECT - ANY_VALUE(pr_release) AS RELEASE_DATE - FROM MAIN.PRODUCTS + ANY_VALUE(pr_release) AS release_date + FROM main.products WHERE pr_name = 'GoldCopper-Star' -), _S6 AS ( +), _s6 AS ( SELECT - ca_dt AS CA_DT - FROM MAIN.CALENDAR -), _T5 AS ( + ca_dt + FROM main.calendar +), _t5 AS ( SELECT - pr_id AS PR_ID, - pr_name AS PR_NAME - FROM MAIN.PRODUCTS + pr_id, + pr_name + FROM main.products WHERE pr_name = 'GoldCopper-Star' -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - _S0.CA_DT - FROM _S6 AS _S0 - JOIN MAIN.INCIDENTS AS INCIDENTS - ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) - JOIN MAIN.DEVICES AS DEVICES - ON DEVICES.de_id = INCIDENTS.in_device_id - JOIN _T5 AS _T5 - ON DEVICES.de_product_id = _T5.PR_ID + COUNT(*) AS n_rows, + _s0.ca_dt + FROM _s6 AS _s0 + JOIN main.incidents AS incidents + ON _s0.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) + JOIN main.devices AS devices + ON devices.de_id = incidents.in_device_id + JOIN _t5 AS _t5 + ON _t5.pr_id = devices.de_product_id GROUP BY 2 -), _S13 AS ( +), _s13 AS ( SELECT - COUNT(*) AS N_ROWS, - _S8.CA_DT - FROM _S6 AS _S8 - JOIN MAIN.DEVICES AS DEVICES - ON _S8.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) - JOIN _T5 AS _T7 - ON DEVICES.de_product_id = _T7.PR_ID + COUNT(*) AS n_rows, + _s8.ca_dt + FROM _s6 AS _s8 + JOIN main.devices AS devices + ON _s8.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) + JOIN _t5 AS _t7 + ON _t7.pr_id = devices.de_product_id GROUP BY 2 -), _S15 AS ( +), _s15 AS ( SELECT - SUM(_S7.N_ROWS) AS SUM_EXPR_4, - SUM(_S13.N_ROWS) AS SUM_N_ROWS, - YEAR(CAST(_S6.CA_DT AS TIMESTAMP)) AS YEAR_1 - FROM _S6 AS _S6 - LEFT JOIN _S7 AS _S7 - ON _S6.CA_DT = _S7.CA_DT - LEFT JOIN _S13 AS _S13 - ON _S13.CA_DT = _S6.CA_DT + SUM(_s7.n_rows) AS sum_expr_4, + SUM(_s13.n_rows) AS sum_n_rows, + YEAR(CAST(_s6.ca_dt AS TIMESTAMP)) AS year_1 + FROM _s6 AS _s6 + LEFT JOIN _s7 AS _s7 + ON _s6.ca_dt = _s7.ca_dt + LEFT JOIN _s13 AS _s13 + ON _s13.ca_dt = _s6.ca_dt GROUP BY 3 ) SELECT - _S15.YEAR_1 - YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) AS years_since_release, + _s15.year_1 - YEAR(CAST(_s14.release_date AS TIMESTAMP)) AS years_since_release, ROUND( - SUM(COALESCE(_S15.SUM_EXPR_4, 0)) OVER (ORDER BY _S15.YEAR_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_S15.SUM_N_ROWS, 0)) OVER (ORDER BY _S15.YEAR_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(_s15.sum_expr_4, 0)) OVER (ORDER BY _s15.year_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(_s15.sum_n_rows, 0)) OVER (ORDER BY _s15.year_1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS cum_ir, ROUND( ( 100.0 * ( - COALESCE(_S15.SUM_N_ROWS, 0) - LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR_1) + COALESCE(_s15.sum_n_rows, 0) - LAG(COALESCE(_s15.sum_n_rows, 0), 1) OVER (ORDER BY _s15.year_1) ) - ) / LAG(COALESCE(_S15.SUM_N_ROWS, 0), 1) OVER (ORDER BY _S15.YEAR_1), + ) / LAG(COALESCE(_s15.sum_n_rows, 0), 1) OVER (ORDER BY _s15.year_1), 2 ) AS pct_bought_change, ROUND( ( 100.0 * ( - COALESCE(_S15.SUM_EXPR_4, 0) - LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR_1) + COALESCE(_s15.sum_expr_4, 0) - LAG(COALESCE(_s15.sum_expr_4, 0), 1) OVER (ORDER BY _s15.year_1) ) - ) / LAG(COALESCE(_S15.SUM_EXPR_4, 0), 1) OVER (ORDER BY _S15.YEAR_1), + ) / LAG(COALESCE(_s15.sum_expr_4, 0), 1) OVER (ORDER BY _s15.year_1), 2 ) AS pct_incident_change, - COALESCE(_S15.SUM_N_ROWS, 0) AS bought, - COALESCE(_S15.SUM_EXPR_4, 0) AS incidents -FROM _S14 AS _S14 -JOIN _S15 AS _S15 - ON _S15.YEAR_1 >= YEAR(CAST(_S14.RELEASE_DATE AS TIMESTAMP)) + COALESCE(_s15.sum_n_rows, 0) AS bought, + COALESCE(_s15.sum_expr_4, 0) AS incidents +FROM _s14 AS _s14 +JOIN _s15 AS _s15 + ON _s15.year_1 >= YEAR(CAST(_s14.release_date AS TIMESTAMP)) ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql index 21b47479a..fc1622d96 100644 --- a/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql +++ b/tests/test_sql_refsols/technograph_year_cumulative_incident_rate_overall_snowflake.sql @@ -1,64 +1,64 @@ -WITH _S2 AS ( +WITH _s2 AS ( SELECT - ca_dt AS CA_DT - FROM MAIN.CALENDAR -), _S3 AS ( + ca_dt + FROM main.calendar +), _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - _S0.CA_DT - FROM _S2 AS _S0 - JOIN MAIN.DEVICES AS DEVICES - ON _S0.CA_DT = DATE_TRUNC('DAY', CAST(DEVICES.de_purchase_ts AS TIMESTAMP)) + COUNT(*) AS n_rows, + _s0.ca_dt + FROM _s2 AS _s0 + JOIN main.devices AS devices + ON _s0.ca_dt = DATE_TRUNC('DAY', CAST(devices.de_purchase_ts AS TIMESTAMP)) GROUP BY 2 -), _S7 AS ( +), _s7 AS ( SELECT - COUNT(*) AS N_ROWS, - _S4.CA_DT - FROM _S2 AS _S4 - JOIN MAIN.INCIDENTS AS INCIDENTS - ON _S4.CA_DT = DATE_TRUNC('DAY', CAST(INCIDENTS.in_error_report_ts AS TIMESTAMP)) + COUNT(*) AS n_rows, + _s4.ca_dt + FROM _s2 AS _s4 + JOIN main.incidents AS incidents + ON _s4.ca_dt = DATE_TRUNC('DAY', CAST(incidents.in_error_report_ts AS TIMESTAMP)) GROUP BY 2 -), _T1 AS ( +), _t1 AS ( SELECT - SUM(_S3.N_ROWS) AS SUM_EXPR_3, - SUM(_S7.N_ROWS) AS SUM_N_ROWS, - YEAR(CAST(_S2.CA_DT AS TIMESTAMP)) AS YEAR - FROM _S2 AS _S2 - LEFT JOIN _S3 AS _S3 - ON _S2.CA_DT = _S3.CA_DT - LEFT JOIN _S7 AS _S7 - ON _S2.CA_DT = _S7.CA_DT + SUM(_s3.n_rows) AS sum_expr_3, + SUM(_s7.n_rows) AS sum_n_rows, + YEAR(CAST(_s2.ca_dt AS TIMESTAMP)) AS year + FROM _s2 AS _s2 + LEFT JOIN _s3 AS _s3 + ON _s2.ca_dt = _s3.ca_dt + LEFT JOIN _s7 AS _s7 + ON _s2.ca_dt = _s7.ca_dt GROUP BY 3 ) SELECT - YEAR AS yr, + year AS yr, ROUND( - SUM(COALESCE(SUM_N_ROWS, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(SUM_EXPR_3, 0)) OVER (ORDER BY YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), + SUM(COALESCE(sum_n_rows, 0)) OVER (ORDER BY year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / SUM(COALESCE(sum_expr_3, 0)) OVER (ORDER BY year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2 ) AS cum_ir, ROUND( ( 100.0 * ( - COALESCE(SUM_EXPR_3, 0) - LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR) + COALESCE(sum_expr_3, 0) - LAG(COALESCE(sum_expr_3, 0), 1) OVER (ORDER BY year) ) - ) / LAG(COALESCE(SUM_EXPR_3, 0), 1) OVER (ORDER BY YEAR), + ) / LAG(COALESCE(sum_expr_3, 0), 1) OVER (ORDER BY year), 2 ) AS pct_bought_change, ROUND( ( 100.0 * ( - COALESCE(SUM_N_ROWS, 0) - LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR) + COALESCE(sum_n_rows, 0) - LAG(COALESCE(sum_n_rows, 0), 1) OVER (ORDER BY year) ) - ) / LAG(COALESCE(SUM_N_ROWS, 0), 1) OVER (ORDER BY YEAR), + ) / LAG(COALESCE(sum_n_rows, 0), 1) OVER (ORDER BY year), 2 ) AS pct_incident_change, - COALESCE(SUM_EXPR_3, 0) AS bought, - COALESCE(SUM_N_ROWS, 0) AS incidents -FROM _T1 + COALESCE(sum_expr_3, 0) AS bought, + COALESCE(sum_n_rows, 0) AS incidents +FROM _t1 WHERE - NOT SUM_EXPR_3 IS NULL AND SUM_EXPR_3 > 0 + NOT sum_expr_3 IS NULL AND sum_expr_3 > 0 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql index a37249290..4902f2306 100644 --- a/tests/test_sql_refsols/time_threshold_reached_snowflake.sql +++ b/tests/test_sql_refsols/time_threshold_reached_snowflake.sql @@ -1,23 +1,23 @@ -WITH _T3 AS ( +WITH _t3 AS ( SELECT ( 100.0 * SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY sbtxdatetime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS PCT_OF_DAY, - sbtxdatetime AS SBTXDATETIME - FROM MAIN.SBTRANSACTION + ) / SUM(sbtxshares) OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP))) AS pct_of_day, + sbtxdatetime + FROM main.sbtransaction WHERE YEAR(CAST(sbtxdatetime AS TIMESTAMP)) = 2023 -), _T1 AS ( +), _t1 AS ( SELECT - SBTXDATETIME - FROM _T3 + sbtxdatetime + FROM _t3 WHERE - PCT_OF_DAY >= 50.0 + pct_of_day >= 50.0 QUALIFY - ROW_NUMBER() OVER (PARTITION BY DATE_TRUNC('DAY', CAST(SBTXDATETIME AS TIMESTAMP)) ORDER BY PCT_OF_DAY) = 1 + ROW_NUMBER() OVER (PARTITION BY DATE_TRUNC('DAY', CAST(sbtxdatetime AS TIMESTAMP)) ORDER BY pct_of_day) = 1 ) SELECT - SBTXDATETIME AS date_time -FROM _T1 + sbtxdatetime AS date_time +FROM _t1 ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q10_snowflake.sql b/tests/test_sql_refsols/tpch_q10_snowflake.sql index c455acda0..1ae176529 100644 --- a/tests/test_sql_refsols/tpch_q10_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q10_snowflake.sql @@ -1,32 +1,32 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - )) AS SUM_EXPR_1, - ORDERS.o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS AS ORDERS - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_returnflag = 'R' + SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount + )) AS sum_expr_1, + orders.o_custkey + FROM tpch.orders AS orders + JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey AND lineitem.l_returnflag = 'R' WHERE - QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 4 - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 + QUARTER(CAST(orders.o_orderdate AS TIMESTAMP)) = 4 + AND YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY 2 ) SELECT - CUSTOMER.c_custkey AS C_CUSTKEY, - CUSTOMER.c_name AS C_NAME, - COALESCE(_S3.SUM_EXPR_1, 0) AS REVENUE, - CUSTOMER.c_acctbal AS C_ACCTBAL, - NATION.n_name AS N_NAME, - CUSTOMER.c_address AS C_ADDRESS, - CUSTOMER.c_phone AS C_PHONE, - CUSTOMER.c_comment AS C_COMMENT -FROM TPCH.CUSTOMER AS CUSTOMER -LEFT JOIN _S3 AS _S3 - ON CUSTOMER.c_custkey = _S3.O_CUSTKEY -JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + customer.c_custkey AS C_CUSTKEY, + customer.c_name AS C_NAME, + COALESCE(_s3.sum_expr_1, 0) AS REVENUE, + customer.c_acctbal AS C_ACCTBAL, + nation.n_name AS N_NAME, + customer.c_address AS C_ADDRESS, + customer.c_phone AS C_PHONE, + customer.c_comment AS C_COMMENT +FROM tpch.customer AS customer +LEFT JOIN _s3 AS _s3 + ON _s3.o_custkey = customer.c_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey ORDER BY 3 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q11_snowflake.sql b/tests/test_sql_refsols/tpch_q11_snowflake.sql index 74543ab46..677c62d95 100644 --- a/tests/test_sql_refsols/tpch_q11_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q11_snowflake.sql @@ -1,43 +1,43 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - s_nationkey AS S_NATIONKEY, - s_suppkey AS S_SUPPKEY - FROM TPCH.SUPPLIER -), _T2 AS ( + s_nationkey, + s_suppkey + FROM tpch.supplier +), _t2 AS ( SELECT - n_name AS N_NAME, - n_nationkey AS N_NATIONKEY - FROM TPCH.NATION + n_name, + n_nationkey + FROM tpch.nation WHERE n_name = 'GERMANY' -), _S8 AS ( +), _s8 AS ( SELECT - SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_METRIC - FROM TPCH.PARTSUPP AS PARTSUPP - JOIN _S0 AS _S0 - ON PARTSUPP.ps_suppkey = _S0.S_SUPPKEY - JOIN _T2 AS _T2 - ON _S0.S_NATIONKEY = _T2.N_NATIONKEY -), _S9 AS ( + SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_metric + FROM tpch.partsupp AS partsupp + JOIN _s0 AS _s0 + ON _s0.s_suppkey = partsupp.ps_suppkey + JOIN _t2 AS _t2 + ON _s0.s_nationkey = _t2.n_nationkey +), _s9 AS ( SELECT - SUM(PARTSUPP.ps_supplycost * PARTSUPP.ps_availqty) AS SUM_EXPR_2, - PARTSUPP.ps_partkey AS PS_PARTKEY - FROM TPCH.PARTSUPP AS PARTSUPP - JOIN _S0 AS _S4 - ON PARTSUPP.ps_suppkey = _S4.S_SUPPKEY - JOIN _T2 AS _T4 - ON _S4.S_NATIONKEY = _T4.N_NATIONKEY + SUM(partsupp.ps_supplycost * partsupp.ps_availqty) AS sum_expr_2, + partsupp.ps_partkey + FROM tpch.partsupp AS partsupp + JOIN _s0 AS _s4 + ON _s4.s_suppkey = partsupp.ps_suppkey + JOIN _t2 AS _t4 + ON _s4.s_nationkey = _t4.n_nationkey GROUP BY 2 ) SELECT - _S9.PS_PARTKEY, - COALESCE(_S9.SUM_EXPR_2, 0) AS VALUE -FROM _S8 AS _S8 -JOIN _S9 AS _S9 + _s9.ps_partkey AS PS_PARTKEY, + COALESCE(_s9.sum_expr_2, 0) AS VALUE +FROM _s8 AS _s8 +JOIN _s9 AS _s9 ON ( - COALESCE(_S8.SUM_METRIC, 0) * 0.0001 - ) < COALESCE(_S9.SUM_EXPR_2, 0) + COALESCE(_s8.sum_metric, 0) * 0.0001 + ) < COALESCE(_s9.sum_expr_2, 0) ORDER BY 2 DESC NULLS LAST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q12_snowflake.sql b/tests/test_sql_refsols/tpch_q12_snowflake.sql index 5e26c4382..b02a4f3ff 100644 --- a/tests/test_sql_refsols/tpch_q12_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q12_snowflake.sql @@ -1,17 +1,17 @@ SELECT - LINEITEM.l_shipmode AS L_SHIPMODE, - COALESCE(COUNT_IF(ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, - COALESCE(COUNT_IF(NOT ORDERS.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey + lineitem.l_shipmode AS L_SHIPMODE, + COALESCE(COUNT_IF(orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS HIGH_LINE_COUNT, + COALESCE(COUNT_IF(NOT orders.o_orderpriority IN ('1-URGENT', '2-HIGH')), 0) AS LOW_LINE_COUNT +FROM tpch.lineitem AS lineitem +JOIN tpch.orders AS orders + ON lineitem.l_orderkey = orders.o_orderkey WHERE - LINEITEM.l_commitdate < LINEITEM.l_receiptdate - AND LINEITEM.l_commitdate > LINEITEM.l_shipdate + YEAR(CAST(lineitem.l_receiptdate AS TIMESTAMP)) = 1994 + AND lineitem.l_commitdate < lineitem.l_receiptdate + AND lineitem.l_commitdate > lineitem.l_shipdate AND ( - LINEITEM.l_shipmode = 'MAIL' OR LINEITEM.l_shipmode = 'SHIP' + lineitem.l_shipmode = 'MAIL' OR lineitem.l_shipmode = 'SHIP' ) - AND YEAR(CAST(LINEITEM.l_receiptdate AS TIMESTAMP)) = 1994 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q13_snowflake.sql b/tests/test_sql_refsols/tpch_q13_snowflake.sql index 17df0163e..d3d53c838 100644 --- a/tests/test_sql_refsols/tpch_q13_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q13_snowflake.sql @@ -1,19 +1,19 @@ -WITH _S1 AS ( +WITH _s1 AS ( SELECT - COUNT(*) AS N_ROWS, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + COUNT(*) AS n_rows, + o_custkey + FROM tpch.orders WHERE NOT o_comment LIKE '%special%requests%' GROUP BY 2 ) SELECT - COALESCE(_S1.N_ROWS, 0) AS C_COUNT, + COALESCE(_s1.n_rows, 0) AS C_COUNT, COUNT(*) AS CUSTDIST -FROM TPCH.CUSTOMER AS CUSTOMER -LEFT JOIN _S1 AS _S1 - ON CUSTOMER.c_custkey = _S1.O_CUSTKEY +FROM tpch.customer AS customer +LEFT JOIN _s1 AS _s1 + ON _s1.o_custkey = customer.c_custkey GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q14_snowflake.sql b/tests/test_sql_refsols/tpch_q14_snowflake.sql index cf4f6d086..7c04495f8 100644 --- a/tests/test_sql_refsols/tpch_q14_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q14_snowflake.sql @@ -3,21 +3,21 @@ SELECT 100.0 * COALESCE( SUM( IFF( - STARTSWITH(PART.p_type, 'PROMO'), - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + STARTSWITH(part.p_type, 'PROMO'), + lineitem.l_extendedprice * ( + 1 - lineitem.l_discount ), 0 ) ), 0 ) - ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ) / COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS PROMO_REVENUE -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey WHERE - MONTH(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) = 9 - AND YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) = 1995 + MONTH(CAST(lineitem.l_shipdate AS TIMESTAMP)) = 9 + AND YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) = 1995 diff --git a/tests/test_sql_refsols/tpch_q15_snowflake.sql b/tests/test_sql_refsols/tpch_q15_snowflake.sql index 41ffbc19b..545e6f34c 100644 --- a/tests/test_sql_refsols/tpch_q15_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q15_snowflake.sql @@ -1,48 +1,48 @@ -WITH _T3 AS ( +WITH _t3 AS ( SELECT - l_discount AS L_DISCOUNT, - l_extendedprice AS L_EXTENDEDPRICE, - l_shipdate AS L_SHIPDATE, - l_suppkey AS L_SUPPKEY - FROM TPCH.LINEITEM + l_discount, + l_extendedprice, + l_shipdate, + l_suppkey + FROM tpch.lineitem WHERE l_shipdate < CAST('1996-04-01' AS DATE) AND l_shipdate >= CAST('1996-01-01' AS DATE) -), _S1 AS ( +), _s1 AS ( SELECT - SUM(L_EXTENDEDPRICE * ( - 1 - L_DISCOUNT - )) AS SUM_EXPR_2, - L_SUPPKEY - FROM _T3 + SUM(l_extendedprice * ( + 1 - l_discount + )) AS sum_expr_2, + l_suppkey + FROM _t3 GROUP BY 2 -), _S2 AS ( +), _s2 AS ( SELECT - MAX(COALESCE(_S1.SUM_EXPR_2, 0)) AS MAX_REVENUE - FROM TPCH.SUPPLIER AS SUPPLIER - JOIN _S1 AS _S1 - ON SUPPLIER.s_suppkey = _S1.L_SUPPKEY -), _S5 AS ( + MAX(COALESCE(_s1.sum_expr_2, 0)) AS max_revenue + FROM tpch.supplier AS supplier + JOIN _s1 AS _s1 + ON _s1.l_suppkey = supplier.s_suppkey +), _s5 AS ( SELECT - SUM(L_EXTENDEDPRICE * ( - 1 - L_DISCOUNT - )) AS SUM_EXPR_3, - L_SUPPKEY - FROM _T3 + SUM(l_extendedprice * ( + 1 - l_discount + )) AS sum_expr_3, + l_suppkey + FROM _t3 GROUP BY 2 ) SELECT - SUPPLIER.s_suppkey AS S_SUPPKEY, - SUPPLIER.s_name AS S_NAME, - SUPPLIER.s_address AS S_ADDRESS, - SUPPLIER.s_phone AS S_PHONE, - COALESCE(_S5.SUM_EXPR_3, 0) AS TOTAL_REVENUE -FROM _S2 AS _S2 -CROSS JOIN TPCH.SUPPLIER AS SUPPLIER -JOIN _S5 AS _S5 - ON SUPPLIER.s_suppkey = _S5.L_SUPPKEY - AND _S2.MAX_REVENUE = COALESCE(_S5.SUM_EXPR_3, 0) + supplier.s_suppkey AS S_SUPPKEY, + supplier.s_name AS S_NAME, + supplier.s_address AS S_ADDRESS, + supplier.s_phone AS S_PHONE, + COALESCE(_s5.sum_expr_3, 0) AS TOTAL_REVENUE +FROM _s2 AS _s2 +CROSS JOIN tpch.supplier AS supplier +JOIN _s5 AS _s5 + ON _s2.max_revenue = COALESCE(_s5.sum_expr_3, 0) + AND _s5.l_suppkey = supplier.s_suppkey ORDER BY 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q16_snowflake.sql b/tests/test_sql_refsols/tpch_q16_snowflake.sql index afe61e7fe..142fca36a 100644 --- a/tests/test_sql_refsols/tpch_q16_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q16_snowflake.sql @@ -1,17 +1,17 @@ SELECT - PART.p_brand AS P_BRAND, - PART.p_type AS P_TYPE, - PART.p_size AS P_SIZE, - COUNT(DISTINCT PARTSUPP.ps_suppkey) AS SUPPLIER_COUNT -FROM TPCH.PARTSUPP AS PARTSUPP -JOIN TPCH.SUPPLIER AS SUPPLIER - ON NOT SUPPLIER.s_comment LIKE '%Customer%Complaints%' - AND PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey -JOIN TPCH.PART AS PART - ON NOT STARTSWITH(PART.p_type, 'MEDIUM POLISHED%') - AND PART.p_brand <> 'BRAND#45' - AND PART.p_partkey = PARTSUPP.ps_partkey - AND PART.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) + part.p_brand AS P_BRAND, + part.p_type AS P_TYPE, + part.p_size AS P_SIZE, + COUNT(DISTINCT partsupp.ps_suppkey) AS SUPPLIER_COUNT +FROM tpch.partsupp AS partsupp +JOIN tpch.supplier AS supplier + ON NOT supplier.s_comment LIKE '%Customer%Complaints%' + AND partsupp.ps_suppkey = supplier.s_suppkey +JOIN tpch.part AS part + ON NOT STARTSWITH(part.p_type, 'MEDIUM POLISHED%') + AND part.p_brand <> 'BRAND#45' + AND part.p_partkey = partsupp.ps_partkey + AND part.p_size IN (49, 14, 23, 45, 19, 3, 36, 9) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q17_snowflake.sql b/tests/test_sql_refsols/tpch_q17_snowflake.sql index ea50aeedf..5338e7f5c 100644 --- a/tests/test_sql_refsols/tpch_q17_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q17_snowflake.sql @@ -1,16 +1,16 @@ -WITH _T2 AS ( +WITH _t2 AS ( SELECT - LINEITEM.l_extendedprice AS L_EXTENDEDPRICE - FROM TPCH.PART AS PART - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_partkey = PART.p_partkey + lineitem.l_extendedprice + FROM tpch.part AS part + JOIN tpch.lineitem AS lineitem + ON lineitem.l_partkey = part.p_partkey WHERE - PART.p_brand = 'Brand#23' AND PART.p_container = 'MED BOX' + part.p_brand = 'Brand#23' AND part.p_container = 'MED BOX' QUALIFY - LINEITEM.l_quantity < ( - 0.2 * AVG(LINEITEM.l_quantity) OVER (PARTITION BY LINEITEM.l_partkey) + lineitem.l_quantity < ( + 0.2 * AVG(lineitem.l_quantity) OVER (PARTITION BY lineitem.l_partkey) ) ) SELECT - COALESCE(SUM(L_EXTENDEDPRICE), 0) / 7.0 AS AVG_YEARLY -FROM _T2 + COALESCE(SUM(l_extendedprice), 0) / 7.0 AS AVG_YEARLY +FROM _t2 diff --git a/tests/test_sql_refsols/tpch_q18_snowflake.sql b/tests/test_sql_refsols/tpch_q18_snowflake.sql index eedd7e04e..917d29d0b 100644 --- a/tests/test_sql_refsols/tpch_q18_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q18_snowflake.sql @@ -1,25 +1,25 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - SUM(l_quantity) AS SUM_L_QUANTITY, - l_orderkey AS L_ORDERKEY - FROM TPCH.LINEITEM + SUM(l_quantity) AS sum_l_quantity, + l_orderkey + FROM tpch.lineitem GROUP BY 2 ) SELECT - CUSTOMER.c_name AS C_NAME, - CUSTOMER.c_custkey AS C_CUSTKEY, - ORDERS.o_orderkey AS O_ORDERKEY, - ORDERS.o_orderdate AS O_ORDERDATE, - ORDERS.o_totalprice AS O_TOTALPRICE, - COALESCE(_T1.SUM_L_QUANTITY, 0) AS TOTAL_QUANTITY -FROM TPCH.ORDERS AS ORDERS -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey -JOIN _T1 AS _T1 - ON NOT _T1.SUM_L_QUANTITY IS NULL - AND ORDERS.o_orderkey = _T1.L_ORDERKEY - AND _T1.SUM_L_QUANTITY > 300 + customer.c_name AS C_NAME, + customer.c_custkey AS C_CUSTKEY, + orders.o_orderkey AS O_ORDERKEY, + orders.o_orderdate AS O_ORDERDATE, + orders.o_totalprice AS O_TOTALPRICE, + COALESCE(_t1.sum_l_quantity, 0) AS TOTAL_QUANTITY +FROM tpch.orders AS orders +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey +JOIN _t1 AS _t1 + ON NOT _t1.sum_l_quantity IS NULL + AND _t1.l_orderkey = orders.o_orderkey + AND _t1.sum_l_quantity > 300 ORDER BY 5 DESC NULLS LAST, 4 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q19_snowflake.sql b/tests/test_sql_refsols/tpch_q19_snowflake.sql index 3e7099562..3ea806f1f 100644 --- a/tests/test_sql_refsols/tpch_q19_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q19_snowflake.sql @@ -1,36 +1,36 @@ SELECT - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part ON ( ( - LINEITEM.l_quantity <= 11 - AND LINEITEM.l_quantity >= 1 - AND PART.p_brand = 'Brand#12' - AND PART.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') - AND PART.p_size <= 5 - AND PART.p_size >= 1 + lineitem.l_quantity <= 11 + AND lineitem.l_quantity >= 1 + AND part.p_brand = 'Brand#12' + AND part.p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + AND part.p_size <= 5 + AND part.p_size >= 1 ) OR ( - LINEITEM.l_quantity <= 20 - AND LINEITEM.l_quantity >= 10 - AND PART.p_brand = 'Brand#23' - AND PART.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') - AND PART.p_size <= 10 - AND PART.p_size >= 1 + lineitem.l_quantity <= 20 + AND lineitem.l_quantity >= 10 + AND part.p_brand = 'Brand#23' + AND part.p_container IN ('MED BAG', 'MED BOX', 'MED PACK', 'MED PKG') + AND part.p_size <= 10 + AND part.p_size >= 1 ) OR ( - LINEITEM.l_quantity <= 30 - AND LINEITEM.l_quantity >= 20 - AND PART.p_brand = 'Brand#34' - AND PART.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') - AND PART.p_size <= 15 - AND PART.p_size >= 1 + lineitem.l_quantity <= 30 + AND lineitem.l_quantity >= 20 + AND part.p_brand = 'Brand#34' + AND part.p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + AND part.p_size <= 15 + AND part.p_size >= 1 ) ) - AND LINEITEM.l_partkey = PART.p_partkey + AND lineitem.l_partkey = part.p_partkey WHERE - LINEITEM.l_shipinstruct = 'DELIVER IN PERSON' - AND LINEITEM.l_shipmode IN ('AIR', 'AIR REG') + lineitem.l_shipinstruct = 'DELIVER IN PERSON' + AND lineitem.l_shipmode IN ('AIR', 'AIR REG') diff --git a/tests/test_sql_refsols/tpch_q1_snowflake.sql b/tests/test_sql_refsols/tpch_q1_snowflake.sql index 34e204133..a060e085e 100644 --- a/tests/test_sql_refsols/tpch_q1_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q1_snowflake.sql @@ -15,7 +15,7 @@ SELECT AVG(l_extendedprice) AS AVG_PRICE, AVG(l_discount) AS AVG_DISC, COUNT(*) AS COUNT_ORDER -FROM TPCH.LINEITEM +FROM tpch.lineitem WHERE l_shipdate <= CAST('1998-12-01' AS DATE) GROUP BY diff --git a/tests/test_sql_refsols/tpch_q20_snowflake.sql b/tests/test_sql_refsols/tpch_q20_snowflake.sql index afd1a3c47..175c86131 100644 --- a/tests/test_sql_refsols/tpch_q20_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q20_snowflake.sql @@ -1,39 +1,39 @@ -WITH _S3 AS ( +WITH _s3 AS ( SELECT - SUM(l_quantity) AS SUM_L_QUANTITY, - l_partkey AS L_PARTKEY - FROM TPCH.LINEITEM + SUM(l_quantity) AS sum_l_quantity, + l_partkey + FROM tpch.lineitem WHERE YEAR(CAST(l_shipdate AS TIMESTAMP)) = 1994 GROUP BY 2 -), _S5 AS ( +), _s5 AS ( SELECT - PART.p_partkey AS P_PARTKEY, - _S3.SUM_L_QUANTITY - FROM TPCH.PART AS PART - JOIN _S3 AS _S3 - ON PART.p_partkey = _S3.L_PARTKEY + part.p_partkey, + _s3.sum_l_quantity + FROM tpch.part AS part + JOIN _s3 AS _s3 + ON _s3.l_partkey = part.p_partkey WHERE - STARTSWITH(PART.p_name, 'forest') -), _S7 AS ( + STARTSWITH(part.p_name, 'forest') +), _s7 AS ( SELECT DISTINCT - PARTSUPP.ps_suppkey AS PS_SUPPKEY - FROM TPCH.PARTSUPP AS PARTSUPP - JOIN _S5 AS _S5 - ON PARTSUPP.ps_availqty > ( - 0.5 * COALESCE(_S5.SUM_L_QUANTITY, 0) + partsupp.ps_suppkey + FROM tpch.partsupp AS partsupp + JOIN _s5 AS _s5 + ON _s5.p_partkey = partsupp.ps_partkey + AND partsupp.ps_availqty > ( + 0.5 * COALESCE(_s5.sum_l_quantity, 0) ) - AND PARTSUPP.ps_partkey = _S5.P_PARTKEY ) SELECT - SUPPLIER.s_name AS S_NAME, - SUPPLIER.s_address AS S_ADDRESS -FROM TPCH.SUPPLIER AS SUPPLIER -JOIN TPCH.NATION AS NATION - ON NATION.n_name = 'CANADA' AND NATION.n_nationkey = SUPPLIER.s_nationkey -JOIN _S7 AS _S7 - ON SUPPLIER.s_suppkey = _S7.PS_SUPPKEY + supplier.s_name AS S_NAME, + supplier.s_address AS S_ADDRESS +FROM tpch.supplier AS supplier +JOIN tpch.nation AS nation + ON nation.n_name = 'CANADA' AND nation.n_nationkey = supplier.s_nationkey +JOIN _s7 AS _s7 + ON _s7.ps_suppkey = supplier.s_suppkey ORDER BY 1 NULLS FIRST LIMIT 10 diff --git a/tests/test_sql_refsols/tpch_q21_snowflake.sql b/tests/test_sql_refsols/tpch_q21_snowflake.sql index 1a48842f6..d2b7c0da2 100644 --- a/tests/test_sql_refsols/tpch_q21_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q21_snowflake.sql @@ -1,67 +1,67 @@ -WITH _T5 AS ( +WITH _t5 AS ( SELECT - l_commitdate AS L_COMMITDATE, - l_linenumber AS L_LINENUMBER, - l_orderkey AS L_ORDERKEY, - l_receiptdate AS L_RECEIPTDATE, - l_suppkey AS L_SUPPKEY - FROM TPCH.LINEITEM + l_commitdate, + l_linenumber, + l_orderkey, + l_receiptdate, + l_suppkey + FROM tpch.lineitem WHERE l_commitdate < l_receiptdate -), _T3 AS ( +), _t3 AS ( SELECT - ANY_VALUE(_T5.L_SUPPKEY) AS ANYTHING_L_SUPPKEY, - ANY_VALUE(ORDERS.o_orderstatus) AS ANYTHING_O_ORDERSTATUS, - _T5.L_LINENUMBER, - _T5.L_ORDERKEY, - ORDERS.o_orderkey AS O_ORDERKEY - FROM _T5 AS _T5 - JOIN TPCH.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _T5.L_ORDERKEY - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey AND LINEITEM.l_suppkey <> _T5.L_SUPPKEY + ANY_VALUE(_t5.l_suppkey) AS anything_l_suppkey, + ANY_VALUE(orders.o_orderstatus) AS anything_o_orderstatus, + _t5.l_linenumber, + _t5.l_orderkey, + orders.o_orderkey + FROM _t5 AS _t5 + JOIN tpch.orders AS orders + ON _t5.l_orderkey = orders.o_orderkey + JOIN tpch.lineitem AS lineitem + ON _t5.l_suppkey <> lineitem.l_suppkey AND lineitem.l_orderkey = orders.o_orderkey GROUP BY 3, 4, 5 ), _u_0 AS ( SELECT - _T6.L_LINENUMBER AS _u_1, - _T6.L_ORDERKEY AS _u_2, - ORDERS.o_orderkey AS _u_3 - FROM _T5 AS _T6 - JOIN TPCH.ORDERS AS ORDERS - ON ORDERS.o_orderkey = _T6.L_ORDERKEY - JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_commitdate < LINEITEM.l_receiptdate - AND LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_suppkey <> _T6.L_SUPPKEY + _t6.l_linenumber AS _u_1, + _t6.l_orderkey AS _u_2, + orders.o_orderkey AS _u_3 + FROM _t5 AS _t6 + JOIN tpch.orders AS orders + ON _t6.l_orderkey = orders.o_orderkey + JOIN tpch.lineitem AS lineitem + ON _t6.l_suppkey <> lineitem.l_suppkey + AND lineitem.l_commitdate < lineitem.l_receiptdate + AND lineitem.l_orderkey = orders.o_orderkey GROUP BY 1, 2, 3 -), _S13 AS ( +), _s13 AS ( SELECT - COUNT(*) AS N_ROWS, - _T3.ANYTHING_L_SUPPKEY - FROM _T3 AS _T3 + COUNT(*) AS n_rows, + _t3.anything_l_suppkey + FROM _t3 AS _t3 LEFT JOIN _u_0 AS _u_0 - ON _T3.L_LINENUMBER = _u_0._u_1 - AND _T3.L_ORDERKEY = _u_0._u_2 - AND _T3.O_ORDERKEY = _u_0._u_3 + ON _t3.l_linenumber = _u_0._u_1 + AND _t3.l_orderkey = _u_0._u_2 + AND _t3.o_orderkey = _u_0._u_3 WHERE - _T3.ANYTHING_O_ORDERSTATUS = 'F' AND _u_0._u_1 IS NULL + _t3.anything_o_orderstatus = 'F' AND _u_0._u_1 IS NULL GROUP BY 2 ) SELECT - SUPPLIER.s_name AS S_NAME, - COALESCE(_S13.N_ROWS, 0) AS NUMWAIT -FROM TPCH.SUPPLIER AS SUPPLIER -JOIN TPCH.NATION AS NATION - ON NATION.n_name = 'SAUDI ARABIA' AND NATION.n_nationkey = SUPPLIER.s_nationkey -LEFT JOIN _S13 AS _S13 - ON SUPPLIER.s_suppkey = _S13.ANYTHING_L_SUPPKEY + supplier.s_name AS S_NAME, + COALESCE(_s13.n_rows, 0) AS NUMWAIT +FROM tpch.supplier AS supplier +JOIN tpch.nation AS nation + ON nation.n_name = 'SAUDI ARABIA' AND nation.n_nationkey = supplier.s_nationkey +LEFT JOIN _s13 AS _s13 + ON _s13.anything_l_suppkey = supplier.s_suppkey ORDER BY 2 DESC NULLS LAST, 1 NULLS FIRST diff --git a/tests/test_sql_refsols/tpch_q22_snowflake.sql b/tests/test_sql_refsols/tpch_q22_snowflake.sql index c95df37aa..6b975db02 100644 --- a/tests/test_sql_refsols/tpch_q22_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q22_snowflake.sql @@ -1,30 +1,30 @@ -WITH _S0 AS ( +WITH _s0 AS ( SELECT - AVG(c_acctbal) AS GLOBAL_AVG_BALANCE - FROM TPCH.CUSTOMER + AVG(c_acctbal) AS global_avg_balance + FROM tpch.customer WHERE - c_acctbal > 0.0 - AND SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') -), _S3 AS ( + SUBSTRING(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') + AND c_acctbal > 0.0 +), _s3 AS ( SELECT - COUNT(*) AS N_ROWS, - o_custkey AS O_CUSTKEY - FROM TPCH.ORDERS + COUNT(*) AS n_rows, + o_custkey + FROM tpch.orders GROUP BY 2 ) SELECT - SUBSTRING(CUSTOMER.c_phone, 1, 2) AS CNTRY_CODE, + SUBSTRING(customer.c_phone, 1, 2) AS CNTRY_CODE, COUNT(*) AS NUM_CUSTS, - COALESCE(SUM(CUSTOMER.c_acctbal), 0) AS TOTACCTBAL -FROM _S0 AS _S0 -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_acctbal > _S0.GLOBAL_AVG_BALANCE - AND SUBSTRING(CUSTOMER.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') -LEFT JOIN _S3 AS _S3 - ON CUSTOMER.c_custkey = _S3.O_CUSTKEY + COALESCE(SUM(customer.c_acctbal), 0) AS TOTACCTBAL +FROM _s0 AS _s0 +JOIN tpch.customer AS customer + ON SUBSTRING(customer.c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17') + AND _s0.global_avg_balance < customer.c_acctbal +LEFT JOIN _s3 AS _s3 + ON _s3.o_custkey = customer.c_custkey WHERE - _S3.N_ROWS = 0 OR _S3.N_ROWS IS NULL + _s3.n_rows = 0 OR _s3.n_rows IS NULL GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q2_snowflake.sql b/tests/test_sql_refsols/tpch_q2_snowflake.sql index 346be1649..b256ac78c 100644 --- a/tests/test_sql_refsols/tpch_q2_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q2_snowflake.sql @@ -1,37 +1,37 @@ -WITH _T1 AS ( +WITH _t1 AS ( SELECT - NATION.n_name AS N_NAME, - PART.p_mfgr AS P_MFGR, - PART.p_partkey AS P_PARTKEY, - SUPPLIER.s_acctbal AS S_ACCTBAL, - SUPPLIER.s_address AS S_ADDRESS, - SUPPLIER.s_comment AS S_COMMENT, - SUPPLIER.s_name AS S_NAME, - SUPPLIER.s_phone AS S_PHONE - FROM TPCH.PART AS PART - JOIN TPCH.PARTSUPP AS PARTSUPP - ON PART.p_partkey = PARTSUPP.ps_partkey - JOIN TPCH.SUPPLIER AS SUPPLIER - ON PARTSUPP.ps_suppkey = SUPPLIER.s_suppkey - JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey - JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'EUROPE' + nation.n_name, + part.p_mfgr, + part.p_partkey, + supplier.s_acctbal, + supplier.s_address, + supplier.s_comment, + supplier.s_name, + supplier.s_phone + FROM tpch.part AS part + JOIN tpch.partsupp AS partsupp + ON part.p_partkey = partsupp.ps_partkey + JOIN tpch.supplier AS supplier + ON partsupp.ps_suppkey = supplier.s_suppkey + JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey + JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'EUROPE' WHERE - ENDSWITH(PART.p_type, 'BRASS') AND PART.p_size = 15 + ENDSWITH(part.p_type, 'BRASS') AND part.p_size = 15 QUALIFY - RANK() OVER (PARTITION BY PARTSUPP.ps_partkey ORDER BY PARTSUPP.ps_supplycost) = 1 + RANK() OVER (PARTITION BY partsupp.ps_partkey ORDER BY partsupp.ps_supplycost) = 1 ) SELECT - S_ACCTBAL, - S_NAME, - N_NAME, - P_PARTKEY, - P_MFGR, - S_ADDRESS, - S_PHONE, - S_COMMENT -FROM _T1 + s_acctbal AS S_ACCTBAL, + s_name AS S_NAME, + n_name AS N_NAME, + p_partkey AS P_PARTKEY, + p_mfgr AS P_MFGR, + s_address AS S_ADDRESS, + s_phone AS S_PHONE, + s_comment AS S_COMMENT +FROM _t1 ORDER BY 1 DESC NULLS LAST, 3 NULLS FIRST, diff --git a/tests/test_sql_refsols/tpch_q3_snowflake.sql b/tests/test_sql_refsols/tpch_q3_snowflake.sql index 8c0db572f..6804cc526 100644 --- a/tests/test_sql_refsols/tpch_q3_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q3_snowflake.sql @@ -1,18 +1,18 @@ SELECT - LINEITEM.l_orderkey AS L_ORDERKEY, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + lineitem.l_orderkey AS L_ORDERKEY, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE, - ORDERS.o_orderdate AS O_ORDERDATE, - ORDERS.o_shippriority AS O_SHIPPRIORITY -FROM TPCH.ORDERS AS ORDERS -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey AND CUSTOMER.c_mktsegment = 'BUILDING' -JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - AND LINEITEM.l_shipdate > CAST('1995-03-15' AS DATE) + orders.o_orderdate AS O_ORDERDATE, + orders.o_shippriority AS O_SHIPPRIORITY +FROM tpch.orders AS orders +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey AND customer.c_mktsegment = 'BUILDING' +JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey + AND lineitem.l_shipdate > CAST('1995-03-15' AS DATE) WHERE - ORDERS.o_orderdate < CAST('1995-03-15' AS DATE) + orders.o_orderdate < CAST('1995-03-15' AS DATE) GROUP BY 1, 3, diff --git a/tests/test_sql_refsols/tpch_q4_snowflake.sql b/tests/test_sql_refsols/tpch_q4_snowflake.sql index 08e5c4532..95df76f42 100644 --- a/tests/test_sql_refsols/tpch_q4_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q4_snowflake.sql @@ -1,22 +1,22 @@ WITH _u_0 AS ( SELECT l_orderkey AS _u_1 - FROM TPCH.LINEITEM + FROM tpch.lineitem WHERE l_commitdate < l_receiptdate GROUP BY 1 ) SELECT - ORDERS.o_orderpriority AS O_ORDERPRIORITY, + orders.o_orderpriority AS O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT -FROM TPCH.ORDERS AS ORDERS +FROM tpch.orders AS orders LEFT JOIN _u_0 AS _u_0 - ON ORDERS.o_orderkey = _u_0._u_1 + ON _u_0._u_1 = orders.o_orderkey WHERE NOT _u_0._u_1 IS NULL - AND QUARTER(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 3 - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) = 1993 + AND QUARTER(CAST(orders.o_orderdate AS TIMESTAMP)) = 3 + AND YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) = 1993 GROUP BY 1 ORDER BY diff --git a/tests/test_sql_refsols/tpch_q5_snowflake.sql b/tests/test_sql_refsols/tpch_q5_snowflake.sql index ceadd5291..443739351 100644 --- a/tests/test_sql_refsols/tpch_q5_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q5_snowflake.sql @@ -1,30 +1,30 @@ -WITH _S11 AS ( +WITH _s11 AS ( SELECT - NATION.n_name AS N_NAME, - SUPPLIER.s_suppkey AS S_SUPPKEY - FROM TPCH.SUPPLIER AS SUPPLIER - JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey + nation.n_name, + supplier.s_suppkey + FROM tpch.supplier AS supplier + JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey ) SELECT - ANY_VALUE(NATION.n_name) AS N_NAME, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ANY_VALUE(nation.n_name) AS N_NAME, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM TPCH.NATION AS NATION -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'ASIA' -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN TPCH.ORDERS AS ORDERS - ON CUSTOMER.c_custkey = ORDERS.o_custkey - AND ORDERS.o_orderdate < CAST('1995-01-01' AS DATE) - AND ORDERS.o_orderdate >= CAST('1994-01-01' AS DATE) -JOIN TPCH.LINEITEM AS LINEITEM - ON LINEITEM.l_orderkey = ORDERS.o_orderkey -JOIN _S11 AS _S11 - ON LINEITEM.l_suppkey = _S11.S_SUPPKEY AND NATION.n_name = _S11.N_NAME +FROM tpch.nation AS nation +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'ASIA' +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.orders AS orders + ON customer.c_custkey = orders.o_custkey + AND orders.o_orderdate < CAST('1995-01-01' AS DATE) + AND orders.o_orderdate >= CAST('1994-01-01' AS DATE) +JOIN tpch.lineitem AS lineitem + ON lineitem.l_orderkey = orders.o_orderkey +JOIN _s11 AS _s11 + ON _s11.n_name = nation.n_name AND _s11.s_suppkey = lineitem.l_suppkey GROUP BY - NATION.n_nationkey + nation.n_nationkey ORDER BY 2 DESC NULLS LAST diff --git a/tests/test_sql_refsols/tpch_q6_snowflake.sql b/tests/test_sql_refsols/tpch_q6_snowflake.sql index 7a58dc75a..93d3c085b 100644 --- a/tests/test_sql_refsols/tpch_q6_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q6_snowflake.sql @@ -1,6 +1,6 @@ SELECT COALESCE(SUM(l_extendedprice * l_discount), 0) AS REVENUE -FROM TPCH.LINEITEM +FROM tpch.lineitem WHERE l_discount <= 0.07 AND l_discount >= 0.05 diff --git a/tests/test_sql_refsols/tpch_q7_snowflake.sql b/tests/test_sql_refsols/tpch_q7_snowflake.sql index 2d651a0f8..439889188 100644 --- a/tests/test_sql_refsols/tpch_q7_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q7_snowflake.sql @@ -1,41 +1,41 @@ -WITH _S9 AS ( +WITH _s9 AS ( SELECT - NATION.n_name AS N_NAME, - ORDERS.o_orderkey AS O_ORDERKEY - FROM TPCH.ORDERS AS ORDERS - JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey - JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey + nation.n_name, + orders.o_orderkey + FROM tpch.orders AS orders + JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey + JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey AND ( - NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' + nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' ) ) SELECT - NATION.n_name AS SUPP_NATION, - _S9.N_NAME AS CUST_NATION, - YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) AS L_YEAR, - COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + nation.n_name AS SUPP_NATION, + _s9.n_name AS CUST_NATION, + YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) AS L_YEAR, + COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS REVENUE -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey -JOIN _S9 AS _S9 - ON LINEITEM.l_orderkey = _S9.O_ORDERKEY - AND ( - NATION.n_name = 'FRANCE' OR NATION.n_name = 'GERMANY' +FROM tpch.lineitem AS lineitem +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey +JOIN _s9 AS _s9 + ON ( + _s9.n_name = 'FRANCE' OR nation.n_name = 'FRANCE' ) AND ( - NATION.n_name = 'FRANCE' OR _S9.N_NAME = 'FRANCE' + _s9.n_name = 'GERMANY' OR nation.n_name = 'GERMANY' ) + AND _s9.o_orderkey = lineitem.l_orderkey AND ( - NATION.n_name = 'GERMANY' OR _S9.N_NAME = 'GERMANY' + nation.n_name = 'FRANCE' OR nation.n_name = 'GERMANY' ) WHERE - YEAR(CAST(LINEITEM.l_shipdate AS TIMESTAMP)) IN (1995, 1996) + YEAR(CAST(lineitem.l_shipdate AS TIMESTAMP)) IN (1995, 1996) GROUP BY 1, 2, diff --git a/tests/test_sql_refsols/tpch_q8_snowflake.sql b/tests/test_sql_refsols/tpch_q8_snowflake.sql index 38122ff7a..599805c5c 100644 --- a/tests/test_sql_refsols/tpch_q8_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q8_snowflake.sql @@ -1,34 +1,34 @@ SELECT - YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) AS O_YEAR, + YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) AS O_YEAR, COALESCE( SUM( IFF( - NATION_2.n_name = 'BRAZIL', - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + nation_2.n_name = 'BRAZIL', + lineitem.l_extendedprice * ( + 1 - lineitem.l_discount ), 0 ) ), 0 - ) / COALESCE(SUM(LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount + ) / COALESCE(SUM(lineitem.l_extendedprice * ( + 1 - lineitem.l_discount )), 0) AS MKT_SHARE -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART - ON LINEITEM.l_partkey = PART.p_partkey AND PART.p_type = 'ECONOMY ANODIZED STEEL' -JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey - AND YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) IN (1995, 1996) -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_custkey = ORDERS.o_custkey -JOIN TPCH.NATION AS NATION - ON CUSTOMER.c_nationkey = NATION.n_nationkey -JOIN TPCH.REGION AS REGION - ON NATION.n_regionkey = REGION.r_regionkey AND REGION.r_name = 'AMERICA' -JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN TPCH.NATION AS NATION_2 - ON NATION_2.n_nationkey = SUPPLIER.s_nationkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON lineitem.l_partkey = part.p_partkey AND part.p_type = 'ECONOMY ANODIZED STEEL' +JOIN tpch.orders AS orders + ON YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) IN (1995, 1996) + AND lineitem.l_orderkey = orders.o_orderkey +JOIN tpch.customer AS customer + ON customer.c_custkey = orders.o_custkey +JOIN tpch.nation AS nation + ON customer.c_nationkey = nation.n_nationkey +JOIN tpch.region AS region + ON nation.n_regionkey = region.r_regionkey AND region.r_name = 'AMERICA' +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation_2 + ON nation_2.n_nationkey = supplier.s_nationkey GROUP BY 1 diff --git a/tests/test_sql_refsols/tpch_q9_snowflake.sql b/tests/test_sql_refsols/tpch_q9_snowflake.sql index 47c6ab423..1268e47bc 100644 --- a/tests/test_sql_refsols/tpch_q9_snowflake.sql +++ b/tests/test_sql_refsols/tpch_q9_snowflake.sql @@ -1,26 +1,26 @@ SELECT - NATION.n_name AS NATION, - YEAR(CAST(ORDERS.o_orderdate AS TIMESTAMP)) AS O_YEAR, + nation.n_name AS NATION, + YEAR(CAST(orders.o_orderdate AS TIMESTAMP)) AS O_YEAR, COALESCE( SUM( - LINEITEM.l_extendedprice * ( - 1 - LINEITEM.l_discount - ) - PARTSUPP.ps_supplycost * LINEITEM.l_quantity + lineitem.l_extendedprice * ( + 1 - lineitem.l_discount + ) - partsupp.ps_supplycost * lineitem.l_quantity ), 0 ) AS AMOUNT -FROM TPCH.LINEITEM AS LINEITEM -JOIN TPCH.PART AS PART - ON CONTAINS(PART.p_name, 'green') AND LINEITEM.l_partkey = PART.p_partkey -JOIN TPCH.SUPPLIER AS SUPPLIER - ON LINEITEM.l_suppkey = SUPPLIER.s_suppkey -JOIN TPCH.NATION AS NATION - ON NATION.n_nationkey = SUPPLIER.s_nationkey -JOIN TPCH.ORDERS AS ORDERS - ON LINEITEM.l_orderkey = ORDERS.o_orderkey -JOIN TPCH.PARTSUPP AS PARTSUPP - ON LINEITEM.l_partkey = PARTSUPP.ps_partkey - AND LINEITEM.l_suppkey = PARTSUPP.ps_suppkey +FROM tpch.lineitem AS lineitem +JOIN tpch.part AS part + ON CONTAINS(part.p_name, 'green') AND lineitem.l_partkey = part.p_partkey +JOIN tpch.supplier AS supplier + ON lineitem.l_suppkey = supplier.s_suppkey +JOIN tpch.nation AS nation + ON nation.n_nationkey = supplier.s_nationkey +JOIN tpch.orders AS orders + ON lineitem.l_orderkey = orders.o_orderkey +JOIN tpch.partsupp AS partsupp + ON lineitem.l_partkey = partsupp.ps_partkey + AND lineitem.l_suppkey = partsupp.ps_suppkey GROUP BY 1, 2 diff --git a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql index 9b12e2240..b80ccca12 100644 --- a/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql +++ b/tests/test_sql_refsols/unary_and_slicing_operators_snowflake.sql @@ -61,4 +61,4 @@ SELECT END ) AS name_second_to_last_char, c_acctbal >= 0 AS is_not_in_debt -FROM TPCH.CUSTOMER +FROM tpch.customer diff --git a/tests/test_sql_refsols/week_offset_ansi.sql b/tests/test_sql_refsols/week_offset_ansi.sql index 88c9b5644..2ae4c3b7f 100644 --- a/tests/test_sql_refsols/week_offset_ansi.sql +++ b/tests/test_sql_refsols/week_offset_ansi.sql @@ -6,6 +6,7 @@ SELECT DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), -1, 'SECOND'), 2, 'WEEK') AS week_adj4, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), 1, 'DAY'), 2, 'WEEK') AS week_adj5, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), -1, 'MINUTE'), 2, 'WEEK') AS week_adj6, + DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), 1, 'MONTH'), 2, 'WEEK') AS week_adj7, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS TIMESTAMP), 1, 'YEAR'), 2, 'WEEK') AS week_adj8 FROM main.sbtransaction WHERE diff --git a/tests/test_sql_refsols/week_offset_mysql.sql b/tests/test_sql_refsols/week_offset_mysql.sql index e26dedbca..587f210e9 100644 --- a/tests/test_sql_refsols/week_offset_mysql.sql +++ b/tests/test_sql_refsols/week_offset_mysql.sql @@ -6,6 +6,7 @@ SELECT DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '-1' SECOND), INTERVAL '2' WEEK) AS week_adj4, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' DAY), INTERVAL '2' WEEK) AS week_adj5, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '-1' MINUTE), INTERVAL '2' WEEK) AS week_adj6, + DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' MONTH), INTERVAL '2' WEEK) AS week_adj7, DATE_ADD(DATE_ADD(CAST(sbtxdatetime AS DATETIME), INTERVAL '1' YEAR), INTERVAL '2' WEEK) AS week_adj8 FROM main.sbTransaction WHERE diff --git a/tests/test_sql_refsols/week_offset_snowflake.sql b/tests/test_sql_refsols/week_offset_snowflake.sql index f1b7c6267..8fe3d278e 100644 --- a/tests/test_sql_refsols/week_offset_snowflake.sql +++ b/tests/test_sql_refsols/week_offset_snowflake.sql @@ -6,8 +6,9 @@ SELECT DATEADD(WEEK, 2, DATEADD(SECOND, -1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj4, DATEADD(WEEK, 2, DATEADD(DAY, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj5, DATEADD(WEEK, 2, DATEADD(MINUTE, -1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj6, + DATEADD(WEEK, 2, DATEADD(MONTH, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj7, DATEADD(WEEK, 2, DATEADD(YEAR, 1, CAST(sbtxdatetime AS TIMESTAMP))) AS week_adj8 -FROM MAIN.SBTRANSACTION +FROM main.sbtransaction WHERE DAY(CAST(sbtxdatetime AS TIMESTAMP)) > 1 AND YEAR(CAST(sbtxdatetime AS TIMESTAMP)) < 2025 diff --git a/tests/test_sql_refsols/week_offset_sqlite.sql b/tests/test_sql_refsols/week_offset_sqlite.sql index 30d678a08..eca1528ea 100644 --- a/tests/test_sql_refsols/week_offset_sqlite.sql +++ b/tests/test_sql_refsols/week_offset_sqlite.sql @@ -6,6 +6,7 @@ SELECT DATETIME(sbtxdatetime, '-1 second', '14 day') AS week_adj4, DATETIME(sbtxdatetime, '1 day', '14 day') AS week_adj5, DATETIME(sbtxdatetime, '-1 minute', '14 day') AS week_adj6, + DATETIME(sbtxdatetime, '1 month', '14 day') AS week_adj7, DATETIME(sbtxdatetime, '1 year', '14 day') AS week_adj8 FROM main.sbtransaction WHERE diff --git a/tests/test_sql_refsols/window_functions_snowflake.sql b/tests/test_sql_refsols/window_functions_snowflake.sql index a2ac63af7..63535e1b4 100644 --- a/tests/test_sql_refsols/window_functions_snowflake.sql +++ b/tests/test_sql_refsols/window_functions_snowflake.sql @@ -1,15 +1,15 @@ SELECT - DENSE_RANK() OVER (ORDER BY CUSTOMER.c_acctbal DESC) AS rank_value, - NTILE(10) OVER (ORDER BY CUSTOMER.c_acctbal) AS precentile_value, - LAG(CUSTOMER.c_acctbal, 2, 0.0) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal) AS two_prev_value, - LEAD(CUSTOMER.c_acctbal, 2) OVER (PARTITION BY CUSTOMER.c_nationkey ORDER BY CUSTOMER.c_acctbal) AS two_next_value, - SUM(CUSTOMER.c_acctbal) OVER (PARTITION BY NATION.n_regionkey ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, - SUM(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, - CUSTOMER.c_acctbal / AVG(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, - CUSTOMER.c_acctbal / COUNT(CASE WHEN CUSTOMER.c_acctbal > 0.0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS relcount_value, - CUSTOMER.c_acctbal / COUNT(*) OVER () AS relsize_value -FROM TPCH.REGION AS REGION -JOIN TPCH.NATION AS NATION - ON NATION.n_regionkey = REGION.r_regionkey -JOIN TPCH.CUSTOMER AS CUSTOMER - ON CUSTOMER.c_nationkey = NATION.n_nationkey + DENSE_RANK() OVER (ORDER BY customer.c_acctbal DESC) AS rank_value, + NTILE(10) OVER (ORDER BY customer.c_acctbal) AS precentile_value, + LAG(customer.c_acctbal, 2, 0.0) OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal) AS two_prev_value, + LEAD(customer.c_acctbal, 2) OVER (PARTITION BY customer.c_nationkey ORDER BY customer.c_acctbal) AS two_next_value, + SUM(customer.c_acctbal) OVER (PARTITION BY nation.n_regionkey ORDER BY customer.c_acctbal ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS relsum_value, + SUM(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS relsum_value2, + customer.c_acctbal / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, + customer.c_acctbal / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, + customer.c_acctbal / COUNT(*) OVER () AS relsize_value +FROM tpch.region AS region +JOIN tpch.nation AS nation + ON nation.n_regionkey = region.r_regionkey +JOIN tpch.customer AS customer + ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql index 6741c2f15..842523261 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql @@ -1,16 +1,16 @@ SELECT - SBTRANSACTION.sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + sbtransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - SBTRANSACTION.sbtxdatetime NULLS FIRST + sbtransaction.sbtxdatetime NULLS FIRST LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql index 451e75183..449e8361d 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql @@ -1,16 +1,16 @@ SELECT - SBTRANSACTION.sbtxid AS transaction_id, - SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(SBTRANSACTION.sbtxshares) OVER (ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(SBTRANSACTION.sbtxshares) OVER (PARTITION BY SBTRANSACTION.sbtxcustid ORDER BY SBTRANSACTION.sbtxdatetime, SBTRANSACTION.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM MAIN.SBCUSTOMER AS SBCUSTOMER -JOIN MAIN.SBTRANSACTION AS SBTRANSACTION - ON SBCUSTOMER.sbcustid = SBTRANSACTION.sbtxcustid + sbtransaction.sbtxid AS transaction_id, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - SBTRANSACTION.sbtxdatetime NULLS FIRST + sbtransaction.sbtxdatetime NULLS FIRST LIMIT 8 From 8a28f4adb0b1d169e0021aa8b71074e1c72ead29 Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Mon, 25 Aug 2025 16:31:23 -0700 Subject: [PATCH 44/46] [run all] fix link and remove old test --- documentation/usage.md | 2 +- tests/test_pipeline_sf.py | 15 --------------- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/documentation/usage.md b/documentation/usage.md index 97649db4a..00d231438 100644 --- a/documentation/usage.md +++ b/documentation/usage.md @@ -397,7 +397,7 @@ It is important to ensure that the correct database context is being used for se schema=snowflake_schema ) ``` -You can find a full example of using Snowflake database with PyDough in [this usage guide](./../demos/notebooks/Snowflake_TPCH.ipynb). +You can find a full example of using Snowflake database with PyDough in [this usage guide](./../demos/notebooks/SF_TPCH_q1.ipynb). - MySQL: You can connect to a mysql database using `load_metadata_graph` and `connect_database` APIs. For example: ```py diff --git a/tests/test_pipeline_sf.py b/tests/test_pipeline_sf.py index 937a7ce93..8d8a5bf63 100644 --- a/tests/test_pipeline_sf.py +++ b/tests/test_pipeline_sf.py @@ -548,18 +548,3 @@ def test_defog_e2e( reference_database=sqlite_defog_connection, coerce_types=True, ) - - -@pytest.mark.snowflake -@pytest.mark.execute -def test_pipeline_e2e_week_offset_7_sf( - snowflake_params_week_offset_7_data: PyDoughPandasTest, - get_sf_defog_graphs: graph_fetcher, - sf_conn_db_context: DatabaseContext, -): - """ """ - snowflake_params_week_offset_7_data.run_e2e_test( - get_sf_defog_graphs, - sf_conn_db_context("DEFOG", snowflake_params_week_offset_7_data.graph_name), - coerce_types=True, - ) From 35c1c2e43bc5a02655b93f8bd17b8539bb60715d Mon Sep 17 00:00:00 2001 From: Hadia Ahmed Date: Tue, 26 Aug 2025 14:09:05 -0700 Subject: [PATCH 45/46] address comments [run all] --- README.md | 4 +- demos/notebooks/1_introduction.ipynb | 2 +- demos/notebooks/SF_TPCH_q1.ipynb | 278 +++++++++++++++++- .../database_connectors/database_connector.py | 25 +- pydough/sqlglot/__init__.py | 2 - pydough/sqlglot/execute_relational.py | 2 +- pydough/sqlglot/sqlglot_helpers.py | 34 +-- .../base_transform_bindings.py | 11 +- .../sf_transform_bindings.py | 16 +- 9 files changed, 307 insertions(+), 67 deletions(-) diff --git a/README.md b/README.md index 73c1fe4e3..ac167691e 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,9 @@ script must be run so that the `defog.db` file is located in the `tests` directo When submitting a PR, you can control which CI tests run by adding special flags to your **latest commit message**. -- To run **PyDough CI tests**, add: `[run CI]` +**Note:** All flags are **case-insensitive**. + +- To run **PyDough CI tests**, add: `[run CI]` (only runs **SQLite tests**, no other SQL dialects) - To run **PyDough and all dialect tests**, add: `[run all]` - To run **specific dialect tests**, use the corresponding flag as described below. diff --git a/demos/notebooks/1_introduction.ipynb b/demos/notebooks/1_introduction.ipynb index 931b4c604..35ee0ad78 100644 --- a/demos/notebooks/1_introduction.ipynb +++ b/demos/notebooks/1_introduction.ipynb @@ -294,7 +294,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.5" + "version": "3.12.2" } }, "nbformat": 4, diff --git a/demos/notebooks/SF_TPCH_q1.ipynb b/demos/notebooks/SF_TPCH_q1.ipynb index 3cfdaee50..478f5650a 100644 --- a/demos/notebooks/SF_TPCH_q1.ipynb +++ b/demos/notebooks/SF_TPCH_q1.ipynb @@ -60,16 +60,16 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "DatabaseContext(connection=, dialect=)" + "DatabaseContext(connection=, dialect=)" ] }, - "execution_count": 3, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -77,6 +77,7 @@ "source": [ "import json\n", "\n", + "# Step 1: Load credentials from a JSON file\n", "path_to_creds = \"./creds.json\"\n", "with open(path_to_creds) as f:\n", " creds = json.load(f)\n", @@ -88,7 +89,8 @@ "sf_tpch_schema = creds[\"SF_SCHEMA\"]\n", "sf_warehouse = creds[\"SF_WH\"]\n", "\n", - "pydough.active_session.load_metadata_graph(\"./tests/test_metadata/snowflake_sample_graphs.json\", \"TPCH\")\n", + "# Step 2: Load a sample metadata graph and connect PyDough to Snowflake\n", + "pydough.active_session.load_metadata_graph(\"../../tests/test_metadata/snowflake_sample_graphs.json\", \"TPCH\")\n", "pydough.active_session.connect_database(\"snowflake\", \n", " user=sf_username,\n", " password=sf_password,\n", @@ -116,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -253,7 +255,8 @@ "source": [ "%%pydough\n", "# TPCH Q1\n", - "output = ( lines.WHERE((ship_date <= datetime.date(1998, 12, 1)))\n", + "output = (\n", + " lines.WHERE((ship_date <= datetime.date(1998, 12, 1)))\n", " .PARTITION(name=\"groups\", by=(return_flag, status))\n", " .CALCULATE(\n", " L_RETURNFLAG=return_flag,\n", @@ -271,16 +274,275 @@ " )\n", " .ORDER_BY(L_RETURNFLAG.ASC(), L_LINESTATUS.ASC())\n", ")\n", + "# Step 3: Execute code\n", + "pydough.to_df(output)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another way to connect to the Snowflake database is by passing a connection object directly. Here's an example:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
L_RETURNFLAGL_LINESTATUSSUM_QTYSUM_BASE_PRICESUM_DISC_PRICESUM_CHARGEAVG_QTYAVG_PRICEAVG_DISCCOUNT_ORDER
0AF37734107.056586554400.7353758257134.870055909065222.82769225.5220058538273.129734620.049985301478493
1NF991417.01487504710.381413082168.05411469649223.19437525.5164719238284.467760850.0500934338854
2NO76633518.0114935210409.19109189591897.4720113561024263.01378225.5020196438248.015609060.050000263004998
3RF37719753.056568041380.9053741292684.604055889619119.83193225.5057936138250.854626100.050009411478870
\n", + "
" + ], + "text/plain": [ + " L_RETURNFLAG L_LINESTATUS SUM_QTY SUM_BASE_PRICE SUM_DISC_PRICE \\\n", + "0 A F 37734107.0 56586554400.73 53758257134.8700 \n", + "1 N F 991417.0 1487504710.38 1413082168.0541 \n", + "2 N O 76633518.0 114935210409.19 109189591897.4720 \n", + "3 R F 37719753.0 56568041380.90 53741292684.6040 \n", + "\n", + " SUM_CHARGE AVG_QTY AVG_PRICE AVG_DISC COUNT_ORDER \n", + "0 55909065222.827692 25.52200585 38273.12973462 0.04998530 1478493 \n", + "1 1469649223.194375 25.51647192 38284.46776085 0.05009343 38854 \n", + "2 113561024263.013782 25.50201964 38248.01560906 0.05000026 3004998 \n", + "3 55889619119.831932 25.50579361 38250.85462610 0.05000941 1478870 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import snowflake.connector as sf_connector\n", + "\n", + "# Step 1: Load credentials from a JSON file\n", + "path_to_creds = \"./creds.json\"\n", + "with open(path_to_creds) as f:\n", + " creds = json.load(f)\n", + "\n", + "sf_username = creds[\"SF_USERNAME\"]\n", + "sf_password = creds[\"SF_PASSWORD\"]\n", + "sf_account = creds[\"SF_ACCOUNT\"]\n", + "sf_tpch_db = creds[\"SF_DATABASE\"]\n", + "sf_tpch_schema = creds[\"SF_SCHEMA\"]\n", + "sf_warehouse = creds[\"SF_WH\"]\n", + "\n", + "# Step 2: Create a Snowflake connection object\n", + "connection: sf_connector.connection.SnowflakeConnection = sf_connector.connect(\n", + " user=sf_username,\n", + " password=sf_password,\n", + " account=sf_account,\n", + " warehouse=sf_warehouse,\n", + " database=sf_tpch_db,\n", + " schema=sf_tpch_schema\n", + " )\n", + "\n", + "# Step 3: Load a sample metadata graph and connect PyDough to Snowflake\n", + "pydough.active_session.load_metadata_graph(\"../../tests/test_metadata/snowflake_sample_graphs.json\", \"TPCH\")\n", + "conn_db = pydough.active_session.connect_database(\"snowflake\", connection=connection)\n", + "pydough.active_session.database = conn_db\n", "\n", + "# Step 4: Execute code\n", "pydough.to_df(output)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, use the same connection outside PyDoughto inspect the last query executed" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Last query text: SELECT\n", + " l_returnflag AS L_RETURNFLAG,\n", + " l_linestatus AS L_LINESTATUS,\n", + " COALESCE(SUM(l_quantity), 0) AS SUM_QTY,\n", + " COALESCE(SUM(l_extendedprice), 0) AS SUM_BASE_PRICE,\n", + " COALESCE(SUM(l_extendedprice * (\n", + " 1 - l_discount\n", + " )), 0) AS SUM_DISC_PRICE,\n", + " COALESCE(SUM(l_extendedprice * (\n", + " 1 - l_discount\n", + " ) * (\n", + " 1 + l_tax\n", + " )), 0) AS SUM_CHARGE,\n", + " AVG(l_quantity) AS AVG_QTY,\n", + " AVG(l_extendedprice) AS AVG_PRICE,\n", + " AVG(l_discount) AS AVG_DISC,\n", + " COUNT(*) AS COUNT_ORDER\n", + "FROM tpch_sf1.lineitem\n", + "WHERE\n", + " l_shipdate <= CAST('1998-12-01' AS DATE)\n", + "GROUP BY\n", + " 1,\n", + " 2\n", + "ORDER BY\n", + " 1 NULLS FIRST,\n", + " 2 NULLS FIRST\n" + ] + } + ], + "source": [ + "cur = conn_db.connection.cursor\n", + "\n", + "\n", + "last_query_id = cur.sfqid\n", + "cur.execute(f\"\"\"\n", + " SELECT query_text\n", + " FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY())\n", + " WHERE query_id = '{last_query_id}'\n", + "\"\"\")\n", + "last_query_text = cur.fetchone()[0]\n", + "print(\"Last query text:\", last_query_text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run additional queries if needed:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Snowflake version: 9.24.1\n", + "Today's date: 2025-08-26\n" + ] + } + ], + "source": [ + "# Example: run another test query\n", + "cur.execute(\"SELECT CURRENT_VERSION()\")\n", + "version = cur.fetchone()[0]\n", + "print(\"Snowflake version:\", version)\n", + "\n", + "# Example: Get today's date\n", + "cur.execute(\"SELECT CURRENT_DATE()\")\n", + "today = cur.fetchone()[0]\n", + "print(\"Today's date:\", today)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, close the cursor and connection:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "cur.close()\n", + "connection.close()" + ] } ], "metadata": { diff --git a/pydough/database_connectors/database_connector.py b/pydough/database_connectors/database_connector.py index 075e53f30..dce6ebb55 100644 --- a/pydough/database_connectors/database_connector.py +++ b/pydough/database_connectors/database_connector.py @@ -27,9 +27,11 @@ class DatabaseConnection: # sqlite3 contains the connection specification and is packaged # with Python. _connection: DBConnection + _cursor: DBCursor | None def __init__(self, connection: DBConnection) -> None: self._connection = connection + self._cursor = None def execute_query_df(self, sql: str) -> pd.DataFrame: """Create a cursor object using the connection and execute the query, @@ -44,9 +46,9 @@ def execute_query_df(self, sql: str) -> pd.DataFrame: Returns: list[pt.Any]: A list of rows returned by the query. """ - cursor: DBCursor = self._connection.cursor() + self._cursor = self._connection.cursor() try: - cursor.execute(sql) + self.cursor.execute(sql) except Exception as e: print(f"ERROR WHILE EXECUTING QUERY:\n{sql}") raise e @@ -55,19 +57,19 @@ def execute_query_df(self, sql: str) -> pd.DataFrame: # NOTE: Code does not run in type checking mode, so we need to # check at run-time if the cursor has the method. if TYPE_CHECKING: - _ = cast(SnowflakeCursor, cursor).fetch_pandas_all + _ = cast(SnowflakeCursor, self.cursor).fetch_pandas_all # At run-time check and run the fetch. - if hasattr(cursor, "fetch_pandas_all"): - return cursor.fetch_pandas_all() + if hasattr(self.cursor, "fetch_pandas_all"): + return self.cursor.fetch_pandas_all() else: # Assume sqlite3 column_names: list[str] = [ - description[0] for description in cursor.description + description[0] for description in self.cursor.description ] # No need to close the cursor, as its closed by del. # TODO: (gh #174) Cache the cursor? # TODO: (gh #175) enable typed DataFrames. - data = cursor.fetchall() + data = self.cursor.fetchall() return pd.DataFrame(data, columns=column_names) # TODO: Consider adding a streaming API for large queries. It's not yet clear @@ -84,6 +86,15 @@ def connection(self) -> DBConnection: """ return self._connection + @property + def cursor(self) -> DBCursor: + """Get the database cursor. + + Returns: + DBCursor: The database cursor PyDough is managing. + """ + return self._cursor + class DatabaseDialect(Enum): """Enum for the supported database dialects. diff --git a/pydough/sqlglot/__init__.py b/pydough/sqlglot/__init__.py index 710906160..8edc1b483 100644 --- a/pydough/sqlglot/__init__.py +++ b/pydough/sqlglot/__init__.py @@ -7,7 +7,6 @@ "find_identifiers", "find_identifiers_in_list", "get_glot_name", - "is_boolean_expression", "set_glot_alias", "unwrap_alias", ] @@ -18,7 +17,6 @@ ) from .sqlglot_helpers import ( get_glot_name, - is_boolean_expression, set_glot_alias, unwrap_alias, ) diff --git a/pydough/sqlglot/execute_relational.py b/pydough/sqlglot/execute_relational.py index 6f17e10ac..e9147bce4 100644 --- a/pydough/sqlglot/execute_relational.py +++ b/pydough/sqlglot/execute_relational.py @@ -107,7 +107,7 @@ def apply_sqlglot_optimizer( "validate_qualify_columns": False, } # Exclude Snowflake dialect to avoid some issues - # related to qualify and column decorrelation + # related to name qualification if not isinstance(dialect, SnowflakeDialect): kwargs["dialect"] = dialect diff --git a/pydough/sqlglot/sqlglot_helpers.py b/pydough/sqlglot/sqlglot_helpers.py index b7dc116e1..c99c53cf5 100644 --- a/pydough/sqlglot/sqlglot_helpers.py +++ b/pydough/sqlglot/sqlglot_helpers.py @@ -3,12 +3,11 @@ that can act as wrappers around the internal implementation of SQLGlot. """ -import sqlglot.expressions as sqlglot_expressions from sqlglot.expressions import Alias as SQLGlotAlias from sqlglot.expressions import Expression as SQLGlotExpression from sqlglot.expressions import Identifier -__all__ = ["get_glot_name", "is_boolean_expression", "set_glot_alias", "unwrap_alias"] +__all__ = ["get_glot_name", "set_glot_alias", "unwrap_alias"] def get_glot_name(expr: SQLGlotExpression) -> str | None: @@ -68,34 +67,3 @@ def unwrap_alias(expr: SQLGlotExpression) -> SQLGlotExpression: The unwrapped expression. """ return expr.this if isinstance(expr, SQLGlotAlias) else expr - - -def is_boolean_expression(expr: SQLGlotExpression) -> bool: - """Check if the given expression is a boolean expression. - - Args: - expr The expression to check. - - Returns: - True if the expression is a boolean expression, False otherwise. - """ - boolean_types = ( - sqlglot_expressions.In, - sqlglot_expressions.EQ, - sqlglot_expressions.NEQ, - sqlglot_expressions.GT, - sqlglot_expressions.GTE, - sqlglot_expressions.LT, - sqlglot_expressions.LTE, - sqlglot_expressions.And, - sqlglot_expressions.Or, - sqlglot_expressions.Not, - sqlglot_expressions.Between, - sqlglot_expressions.Like, - sqlglot_expressions.ILike, - sqlglot_expressions.Is, - ) - if isinstance(expr, boolean_types): - return True - - return False diff --git a/pydough/sqlglot/transform_bindings/base_transform_bindings.py b/pydough/sqlglot/transform_bindings/base_transform_bindings.py index 9edc9844b..5a1ff17a9 100644 --- a/pydough/sqlglot/transform_bindings/base_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/base_transform_bindings.py @@ -87,7 +87,6 @@ def dialect_dow_mapping(self) -> dict[str, int]: standard_func_bindings: dict[ pydop.PyDoughExpressionOperator, sqlglot_expressions.Func ] = { - pydop.SUM: sqlglot_expressions.Sum, pydop.AVG: sqlglot_expressions.Avg, pydop.MIN: sqlglot_expressions.Min, pydop.MAX: sqlglot_expressions.Max, @@ -214,6 +213,8 @@ def convert_call_to_sqlglot( return self.convert_sign(args, types) case pydop.ROUND: return self.convert_round(args, types) + case pydop.SUM: + return self.convert_sum(args, types) case pydop.CEIL: return self.convert_ceil(args, types) case pydop.FLOOR: @@ -292,6 +293,14 @@ def make_datetime_arg(self, expr: SQLGlotExpression) -> SQLGlotExpression: return self.handle_datetime_base_arg(expr) return expr + def convert_sum( + self, args: SQLGlotExpression, types: list[PyDoughType] + ) -> SQLGlotExpression: + """ + Converts a SUM function call to its SQLGlot equivalent. + """ + return sqlglot_expressions.Sum.from_arg_list(args) + def convert_find( self, args: list[SQLGlotExpression], diff --git a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py index a3e337be6..1796a329b 100644 --- a/pydough/sqlglot/transform_bindings/sf_transform_bindings.py +++ b/pydough/sqlglot/transform_bindings/sf_transform_bindings.py @@ -43,11 +43,6 @@ def convert_call_to_sqlglot( args: list[SQLGlotExpression], types: list[PyDoughType], ) -> SQLGlotExpression: - match operator: - case pydop.SUM: - return self.convert_sum(args, types) - case pydop.GETPART: - return self.convert_get_part(args, types) if operator in self.PYDOP_TO_SNOWFLAKE_FUNC: return sqlglot_expressions.Anonymous( this=self.PYDOP_TO_SNOWFLAKE_FUNC[operator], expressions=args @@ -63,8 +58,8 @@ def convert_sum( This method checks the type of the argument to determine whether to use COUNT_IF (for BooleanType) or SUM (for other types). Arguments: - arg (SQLGlotExpression): The argument to the SUM function. - types (list[PyDoughType]): The types of the arguments. + `arg` : The argument to the SUM function. + `types` : The types of the arguments. """ match types[0]: # If the argument is of BooleanType, it uses COUNT_IF to count true values. @@ -74,11 +69,6 @@ def convert_sum( # For other types, use SUM directly return sqlglot_expressions.Sum(this=arg[0]) - def convert_get_part( - self, args: SQLGlotExpression, types: list[PyDoughType] - ) -> SQLGlotExpression: - return sqlglot_expressions.Anonymous(this="SPLIT_PART", expressions=args) - def convert_extract_datetime( self, args: list[SQLGlotExpression], @@ -86,7 +76,7 @@ def convert_extract_datetime( unit: DateTimeUnit, ) -> SQLGlotExpression: # Update argument type to fit datetime - dt_expr = self.handle_datetime_base_arg(args[0]) + dt_expr: SQLGlotExpression = self.handle_datetime_base_arg(args[0]) func_expr: SQLGlotExpression match unit: case DateTimeUnit.YEAR: From 0d6eddf9e0b7dcf6155b0506a30cb424c33a3e3a Mon Sep 17 00:00:00 2001 From: knassre-bodo Date: Tue, 26 Aug 2025 18:55:29 -0400 Subject: [PATCH 46/46] Fixing MySQL testing issues [RUN ALL] --- tests/gen_data/init_defog_mysql.sql | 25 ++++++++++--------- tests/test_pipeline_mysql.py | 2 +- tests/test_sql_refsols/smoke_a_snowflake.sql | 8 +++++- .../string_functions_snowflake.sql | 8 +++++- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/tests/gen_data/init_defog_mysql.sql b/tests/gen_data/init_defog_mysql.sql index 02aa196e5..d7753fb21 100644 --- a/tests/gen_data/init_defog_mysql.sql +++ b/tests/gen_data/init_defog_mysql.sql @@ -553,12 +553,12 @@ INSERT INTO `sales` (`_id`, `car_id`, `salesperson_id`, `customer_id`, `sale_pri (14, 2, 3, 1, 23200.00, SUBDATE(CURDATE(), INTERVAL 21 DAY)), (15, 8, 6, 12, 43500.00, SUBDATE(CURDATE(), INTERVAL 3 DAY)), (16, 10, 4, 2, 29500.00, SUBDATE(CURDATE(), INTERVAL 5 DAY)), - (17, 3, 2, 3, 46000.00, SUBDATE(CURDATE(), INTERVAL 7 DAY) + INTERVAL 1 DAY), - (18, 3, 2, 7, 47500.00, SUBDATE(CURDATE(), INTERVAL 7 DAY)), - (19, 3, 2, 10, 46500.00, SUBDATE(CURDATE(), INTERVAL 7 DAY) - INTERVAL 1 DAY), - (20, 4, 1, 3, 48000.00, SUBDATE(CURDATE(), INTERVAL 56 DAY) + INTERVAL 1 DAY), - (21, 4, 1, 7, 45000.00, SUBDATE(CURDATE(), INTERVAL 56 DAY)), - (22, 4, 1, 10, 49000.00, SUBDATE(CURDATE(), INTERVAL 56 DAY) - INTERVAL 1 DAY); + (17, 3, 2, 3, 46000.00, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 7 DAY + INTERVAL 1 DAY), + (18, 3, 2, 7, 47500.00, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 7 DAY), + (19, 3, 2, 10, 46500.00, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 7 DAY - INTERVAL 1 DAY), + (20, 4, 1, 3, 48000.00, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 56 DAY + INTERVAL 1 DAY), + (21, 4, 1, 7, 45000.00, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 56 DAY), + (22, 4, 1, 10, 49000.00, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 56 DAY - INTERVAL 1 DAY); INSERT INTO `inventory_snapshots` (`_id`, `snapshot_date`, `car_id`, `is_in_inventory`) VALUES (1, '2023-03-15', 1, TRUE), @@ -603,12 +603,13 @@ INSERT INTO `payments_received` (`_id`, `sale_id`, `payment_date`, `payment_amou (15, 14, SUBDATE(CURDATE(), INTERVAL 1 DAY), 17200.00, 'financing'), (16, 15, SUBDATE(CURDATE(), INTERVAL 1 DAY), 37500.00, 'credit_card'), (17, 16, SUBDATE(CURDATE(), INTERVAL 5 DAY), 26500.00, 'debit_card'), - (18, 17, SUBDATE(CURDATE(), INTERVAL 7 DAY) + INTERVAL 1 DAY, 115000.00, 'financing'), - (19, 18, SUBDATE(CURDATE(), INTERVAL 7 DAY), 115000.00, 'credit_card'), - (20, 19, SUBDATE(CURDATE(), INTERVAL 7 DAY) - INTERVAL 1 DAY, 115000.00, 'debit_card'), - (21, 20, SUBDATE(CURDATE(), INTERVAL 56 DAY) + INTERVAL 1 DAY, 115000.00, 'cash'), - (22, 21, SUBDATE(CURDATE(), INTERVAL 56 DAY), 115000.00, 'check'), - (23, 22, SUBDATE(CURDATE(), INTERVAL 56 DAY) - INTERVAL 1 DAY, 115000.00, 'credit_card'); + (18, 17, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 7 DAY + INTERVAL 1 DAY, 115000.00, 'financing'), + (19, 18, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 7 DAY, 115000.00, 'credit_card'), + (20, 19, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 7 DAY - INTERVAL 1 DAY, 115000.00, 'debit_card'), + (21, 20, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 56 DAY + INTERVAL 1 DAY, 115000.00, 'cash'), + (22, 21, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 56 DAY, 115000.00, 'check'), + (23, 22, CURRENT_DATE - INTERVAL ((DAYOFWEEK(CURRENT_DATE()) + 5) % 7) DAY - INTERVAL 56 DAY - INTERVAL 1 DAY, 115000.00, 'credit_card'); + INSERT INTO `payments_made` (`_id`, `vendor_name`, `payment_date`, `payment_amount`, `payment_method`, `invoice_number`, `invoice_date`, `due_date`) VALUES (1, 'Car Manufacturer Inc', '2023-03-01', 150000.00, 'bank_transfer', 'INV-001', '2023-02-25', '2023-03-25'), diff --git a/tests/test_pipeline_mysql.py b/tests/test_pipeline_mysql.py index 40bcb17ac..fa47351d9 100644 --- a/tests/test_pipeline_mysql.py +++ b/tests/test_pipeline_mysql.py @@ -204,7 +204,7 @@ def defog_mysql_test_data( Test data for e2e tests for the TPC-H queries. Returns an instance of PyDoughPandasTest containing information about the test. """ - if defog_custom_pipeline_test_data.test_name == "week_offset": + if defog_custom_pipeline_test_data.test_name == "week_offset7": return PyDoughPandasTest( week_offset7, "Broker", diff --git a/tests/test_sql_refsols/smoke_a_snowflake.sql b/tests/test_sql_refsols/smoke_a_snowflake.sql index 0eaf982f4..ce24ce0b9 100644 --- a/tests/test_sql_refsols/smoke_a_snowflake.sql +++ b/tests/test_sql_refsols/smoke_a_snowflake.sql @@ -39,7 +39,13 @@ SELECT RPAD(CAST(p_size AS TEXT), 3, '0') AS e, REPLACE(p_mfgr, 'Manufacturer#', 'm') AS f, REPLACE(LOWER(p_container), ' ', '') AS g, - REGEXP_COUNT(p_name, 'o') + ( + CASE + WHEN LENGTH('o') = 0 + THEN 0 + ELSE CAST(( + LENGTH(p_name) - LENGTH(REPLACE(p_name, 'o', '')) + ) / LENGTH('o') AS BIGINT) + END + ( ( CHARINDEX('o', p_name) - 1 ) / 100.0 diff --git a/tests/test_sql_refsols/string_functions_snowflake.sql b/tests/test_sql_refsols/string_functions_snowflake.sql index 909e7fa3c..8614acb85 100644 --- a/tests/test_sql_refsols/string_functions_snowflake.sql +++ b/tests/test_sql_refsols/string_functions_snowflake.sql @@ -13,7 +13,13 @@ SELECT TRIM(CUSTOMER.c_name, 'aeiou') AS stripped_vowels, REPLACE(CUSTOMER.c_name, 'Corp', 'Inc') AS replaced_name, REPLACE(CUSTOMER.c_name, 'Ltd', '') AS removed_substr, - REGEXP_COUNT(CUSTOMER.c_name, 'e') AS count_e, + CASE + WHEN LENGTH('e') = 0 + THEN 0 + ELSE CAST(( + LENGTH(CUSTOMER.c_name) - LENGTH(REPLACE(CUSTOMER.c_name, 'e', '')) + ) / LENGTH('e') AS BIGINT) + END AS count_e, CHARINDEX('Alex', CUSTOMER.c_name) - 1 AS idx_Alex FROM TPCH.CUSTOMER AS CUSTOMER JOIN TPCH.NATION AS NATION