diff --git a/.gitignore b/.gitignore deleted file mode 100644 index ec55f99..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.DS_STORE -results/ -*.png -*.zip -*.xlsx \ No newline at end of file diff --git a/006-LaunchPresto.sh b/006-LaunchPresto.sh deleted file mode 100755 index 6ffb4c2..0000000 --- a/006-LaunchPresto.sh +++ /dev/null @@ -1,42 +0,0 @@ -# Creates a small dataproc cluster for benchmarking -# Be sure to delete the cluster created in 1-LaunchDataproc.sh before running this -set -e - -# Create master instance -gcloud compute \ - --project "digital-arbor-400" \ - instances create "tpcds-presto-m" \ - --zone "us-central1-f" \ - --machine-type "n2-highmem-32" \ - --image-project "ubuntu-os-cloud" \ - --image "ubuntu-1804-bionic-v20200218" \ - --metadata "PrestoRole=Master,PrestoMaster=tpcds-presto-m" \ - --metadata-from-file "startup-script=Presto.sh" \ - --boot-disk-size "10" \ - --local-ssd interface=NVME --local-ssd interface=NVME --local-ssd interface=NVME --local-ssd interface=NVME \ - --local-ssd interface=NVME --local-ssd interface=NVME --local-ssd interface=NVME --local-ssd interface=NVME - -# Create worker instance group -gcloud compute \ - --project "digital-arbor-400" \ - instance-templates delete "presto-worker" \ - --quiet \ - || echo "...ignoring error" -gcloud compute \ - --project "digital-arbor-400" \ - instance-templates create "presto-worker" \ - --machine-type "n2-highmem-32" \ - --image-project "ubuntu-os-cloud" \ - --image "ubuntu-1804-bionic-v20200218" \ - --metadata "PrestoRole=Worker,PrestoMaster=tpcds-presto-m" \ - --metadata-from-file "startup-script=Presto.sh" \ - --boot-disk-size "10" \ - --local-ssd interface=NVME --local-ssd interface=NVME --local-ssd interface=NVME --local-ssd interface=NVME \ - --local-ssd interface=NVME --local-ssd interface=NVME --local-ssd interface=NVME --local-ssd interface=NVME -gcloud compute \ - --project "digital-arbor-400" \ - instance-groups managed create "tpcds-presto-w" \ - --zone "us-central1-f" \ - --base-instance-name "tpcds-presto-w" \ - --template "presto-worker" \ - --size "3" \ No newline at end of file diff --git a/007-ConnectPresto.sh b/007-ConnectPresto.sh deleted file mode 100755 index 5f26c44..0000000 --- a/007-ConnectPresto.sh +++ /dev/null @@ -1,10 +0,0 @@ -# Copy benchmarking files to Presto master and connect -zip -r presto.zip \ - Warmup.sql \ - PrestoTiming.sql \ - 100-PopulatePresto.sh \ - 101-BenchmarkPresto.sh \ - 102-PrestoTiming.sql \ - query -gcloud compute --project "digital-arbor-400" scp presto.zip tpcds-presto-m:~ -gcloud compute --project "digital-arbor-400" ssh tpcds-presto-m \ No newline at end of file diff --git a/100-PopulatePresto.sh b/100-PopulatePresto.sh deleted file mode 100755 index c1fff3c..0000000 --- a/100-PopulatePresto.sh +++ /dev/null @@ -1,768 +0,0 @@ -set -e - -# Create external tables in Hive pointing to GCS -export LOCATION=gs://fivetran-benchmark/tpcds_1000_dat - -hive < PopulateHdfs.sql < ComputeStatistics.sql < /dev/null - -# Run each query -ls query/*.sql | while read f; -do - echo "$f" - presto --catalog hive --schema tpcds_hdfs -f $f > /dev/null -done \ No newline at end of file diff --git a/102-PrestoTiming.sh b/102-PrestoTiming.sh deleted file mode 100755 index 8741408..0000000 --- a/102-PrestoTiming.sh +++ /dev/null @@ -1,10 +0,0 @@ -cat > PrestoTiming.sql < Presto.csv -# gcloud compute scp tpcds-presto-m:~/Presto.csv Presto.csv \ No newline at end of file diff --git a/400-PopulateBigQuery.sh b/400-PopulateBigQuery.sh index 536ab08..1579d01 100755 --- a/400-PopulateBigQuery.sh +++ b/400-PopulateBigQuery.sh @@ -1,8 +1,8 @@ #!/bin/bash # Load into BQ -export PROJECT=fivetran-bq-reserved +export PROJECT=billing-333723 export GS_BASE=fivetran-benchmark/tpcds_1000_dat -export DATASET=tpcds_1000 +export DATASET=tpcds set -e diff --git a/401-BenchmarkBigQuery.sh b/401-BenchmarkBigQuery.sh index 4866a4c..60ea562 100755 --- a/401-BenchmarkBigQuery.sh +++ b/401-BenchmarkBigQuery.sh @@ -3,8 +3,8 @@ # NOTE: you will need to install https://www.npmjs.com/package/json to run this script set -e -export PROJECT=fivetran-bq-reserved -export DATASET=tpcds_1000 +export PROJECT=billing-333723 +export DATASET=tpcds # Warm-up echo 'Warmup.sql...' diff --git a/Presto.sh b/Presto.sh deleted file mode 100644 index 3b641ce..0000000 --- a/Presto.sh +++ /dev/null @@ -1,398 +0,0 @@ -#!/bin/bash -# Copyright 2015 Google, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -x -e - -# Variables for running this script -ROLE=$(curl -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/instance/attributes/PrestoRole) -MASTER=$(curl -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/instance/attributes/PrestoMaster) -HTTP_PORT="8080" -INSTANCE_VCPUS=32 -INSTANCE_MEMORY=256000 -TASK_CONCURRENCY=$(( ${INSTANCE_VCPUS} )) -PRESTO_JVM_MB=$(( ${INSTANCE_MEMORY} * 7 / 10 )) -QUERY_MAX_TOTAL_MEMORY_PER_NODE_MB=$(( ${PRESTO_JVM_MB} * 7 / 10 )) -QUERY_MAX_MEMORY_PER_NODE_MB=$(( ${QUERY_MAX_TOTAL_MEMORY_PER_NODE_MB} / 2 )) - -# Prevents "Too many open files" -ulimit -n 30000 - -# Configure local ssd -for i in 1 2 3 4 5 6 7 8 -do - mkfs.ext4 -F /dev/nvme0n$i - mkdir -p /mnt/disks/ssd$i - mount /dev/nvme0n$i /mnt/disks/ssd$i - chmod a+w /mnt/disks/ssd$i -done - -# Install Java -apt-get update -apt-get install openjdk-8-jre-headless -y -export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/ -echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/' >> /etc/bash.bashrc - -# Install python, zip -apt-get install python zip -y - -# Install Hadoop -wget -q http://mirrors.sonic.net/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz -tar -zxf hadoop-2.10.0.tar.gz -mv hadoop-2.10.0 hadoop -export PATH=/hadoop/bin:$PATH -echo 'PATH=/hadoop/bin:$PATH' >> /etc/bash.bashrc - -# Tell Hadoop where to store data -cat > /hadoop/etc/hadoop/hdfs-site.xml < - - dfs.datanode.data.dir - /mnt/disks/ssd1,/mnt/disks/ssd2,/mnt/disks/ssd3,/mnt/disks/ssd4,/mnt/disks/ssd5,/mnt/disks/ssd6,/mnt/disks/ssd7,/mnt/disks/ssd8 - Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks. - - - - dfs.namenode.name.dir - /hadoop/dfs/name - Path on the local filesystem where the NameNode stores the namespace and transaction logs persistently. - - - - dfs.replication - 1 - - -EOF - -cat > /hadoop/etc/hadoop/yarn-site.xml < - - - yarn.resourcemanager.hostname - ${MASTER} - - - yarn.nodemanager.vmem-check-enabled - false - - - - The maximum allocation for every container request at the RM, in - terms of virtual CPU cores. Requests higher than this won't take - effect, and will get capped to this value. - - yarn.scheduler.maximum-allocation-vcores - 32000 - - - yarn.nodemanager.resource.memory-mb - $(( ${INSTANCE_MEMORY} * 8 / 10 )) - - - yarn.scheduler.minimum-allocation-mb - 1024 - - - yarn.nodemanager.resource.cpu-vcores - ${INSTANCE_VCPUS} - - Number of vcores that can be allocated for containers. This is used by - the RM scheduler when allocating resources for containers. This is not - used to limit the number of physical cores used by YARN containers. - - - - yarn.scheduler.maximum-allocation-mb - $(( ${INSTANCE_MEMORY} * 8 / 10 )) - - - yarn.nodemanager.aux-services - mapreduce_shuffle - - -EOF - -cat > /hadoop/etc/hadoop/mapred-site.xml < - - - mapreduce.map.memory.mb - 1024 - - - mapreduce.reduce.memory.mb - 3072 - - - mapreduce.framework.name - yarn - - - mapreduce.reduce.java.opts - -Xmx2457m - - - mapreduce.map.java.opts - -Xmx819m - - - mapreduce.task.io.sort.mb - 256 - - -EOF - -# Tell Hadoop where the hdfs name node lives -cat > /hadoop/etc/hadoop/core-site.xml < - - fs.defaultFS - hdfs://${MASTER}/ - NameNode URI - - - - fs.gs.metadata.cache.directory - /hadoop_gcs_connector_metadata_cache - - Only used if fs.gs.metadata.cache.type is FILESYSTEM_BACKED, specifies - the local path to use as the base path for storing mirrored GCS metadata. - Must be an absolute path, must be a directory, and must be fully - readable/writable/executable by any user running processes which use the - GCS connector. - - - - fs.gs.impl - com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem - The FileSystem for gs: (GCS) uris. - - - fs.gs.project.id - digital-arbor-400 - - Google Cloud Project ID with access to configured GCS buckets. - - - - fs.gs.metadata.cache.enable - false - - - fs.gs.implicit.dir.infer.enable - true - - If set, we create and return in-memory directory objects on the fly when - no backing object exists, but we know there are files with the same - prefix. - - - - fs.gs.application.name.suffix - -hadoop - - Appended to the user-agent header for API requests to GCS to help identify - the traffic as coming from Dataproc. - - - - fs.AbstractFileSystem.gs.impl - com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS - The AbstractFileSystem for gs: (GCS) uris. - - - fs.gs.metadata.cache.type - FILESYSTEM_BACKED - - Specifies which implementation of DirectoryListCache to use for - supplementing GCS API &amp;quot;list&amp;quot; requests. Supported - implementations: IN_MEMORY: Enforces immediate consistency within - same Java process. FILESYSTEM_BACKED: Enforces consistency across - all cooperating processes pointed at the same local mirror - directory, which may be an NFS directory for massively-distributed - coordination. - - - - fs.gs.block.size - 134217728 - - -EOF - -# Install google cloud storage connector -wget -q https://storage.googleapis.com/hadoop-lib/gcs/gcs-connector-latest-hadoop2.jar -O /hadoop/share/hadoop/common/lib/gcs-connector-latest-hadoop2.jar -mkdir /hadoop_gcs_connector_metadata_cache - -if [[ "${ROLE}" == 'Master' ]]; then -## Start HDFS daemons -# Format the namenode directory (DO THIS ONLY ONCE, THE FIRST TIME) -/hadoop/bin/hdfs namenode -format -# Start the namenode daemon -/hadoop/sbin/hadoop-daemon.sh start namenode - -## Start YARN daemons -# Start the resourcemanager daemon -/hadoop/sbin/yarn-daemon.sh start resourcemanager -fi - -# Start the nodemanager daemon -/hadoop/sbin/yarn-daemon.sh start nodemanager -# Start the datanode daemon -/hadoop/sbin/hadoop-daemon.sh start datanode - -# Install Hive -wget -q http://mirrors.sonic.net/apache/hive/hive-2.3.6/apache-hive-2.3.6-bin.tar.gz -tar -zxf apache-hive-2.3.6-bin.tar.gz -mv apache-hive-2.3.6-bin /hive -export PATH=/hive/bin:$PATH -echo 'PATH=/hive/bin:$PATH' >> /etc/bash.bashrc - -# Configure hive -cat > /hive/conf/hive-site.xml < - - - - javax.jdo.option.ConnectionURL - jdbc:postgresql://localhost/metastore - - - - javax.jdo.option.ConnectionDriverName - org.postgresql.Driver - - - - javax.jdo.option.ConnectionUserName - hiveuser - - - - javax.jdo.option.ConnectionPassword - mypassword - - - - datanucleus.autoCreateSchema - false - - - - hive.metastore.uris - thrift://${MASTER}:9083 - IP address (or fully-qualified domain name) and port of the metastore host - - -EOF - -if [[ "${ROLE}" == 'Master' ]]; then -hadoop fs -mkdir -p /tmp -hadoop fs -mkdir -p /user/hive/warehouse -hadoop fs -chmod a+w /tmp -hadoop fs -chmod a+w /user/hive/warehouse - -# Install postgres for our metastore -apt-get install -y postgresql -service postgresql start -sudo -u postgres psql < /presto/etc/node.properties < /presto/etc/catalog/hive.properties < /presto/etc/jvm.config < /presto/etc/config.properties < /presto/etc/config.properties < + user: + password: + warehouse: + database: + schema: + threads: 1 + bigquery: + type: bigquery + method: oauth + database: + schema: + threads: 1 + synapse: + type: synapse + driver: 'ODBC Driver 17 for SQL Server' # (The ODBC Driver installed on your system) + server: + port: 1433 + database: + schema: + user: + password: + threads: 1 + redshift: + type: redshift + host: + user: + password: + port: 5439 + dbname: + schema: + threads: 1 + databricks: + type: databricks + schema: + host: + http_path: + port: 443 + token: + project: + threads: 1 diff --git a/dbt/macros/materialization_query.sql b/dbt/macros/materialization_query.sql new file mode 100644 index 0000000..cff2825 --- /dev/null +++ b/dbt/macros/materialization_query.sql @@ -0,0 +1,9 @@ +{%- materialization query, default -%} + -- build model + {% call statement('main') -%} + {{ sql }} + {%- endcall %} + + {{ return({'relations': []}) }} + +{%- endmaterialization -%} diff --git a/dbt/macros/stddev.sql b/dbt/macros/stddev.sql new file mode 100644 index 0000000..009a84f --- /dev/null +++ b/dbt/macros/stddev.sql @@ -0,0 +1,13 @@ +{% macro stddev(column) -%} + {{ return(adapter.dispatch('stddev')(column)) }} +{%- endmacro %} + + +{% macro default__stddev(column) -%} + stddev({{ column }}) +{%- endmacro %} + + +{% macro synapse__stddev(column) %} + Stdev({{ column }}) +{% endmacro %} diff --git a/dbt/macros/substr.sql b/dbt/macros/substr.sql new file mode 100644 index 0000000..3735741 --- /dev/null +++ b/dbt/macros/substr.sql @@ -0,0 +1,18 @@ +{% macro substr(column, start_position, num_characters) -%} + {{ return(adapter.dispatch('substr')(column, start_position, num_characters)) }} +{%- endmacro %} + + +{% macro default__substr(column, start_position, num_characters) -%} + substr({{ column }}, {{ start_position }}, {{ num_characters }}) +{%- endmacro %} + + +{% macro redshift__substr(column, start_position, num_characters) %} + substring({{ column }}, {{ start_position }}, {{ num_characters }}) +{% endmacro %} + + +{% macro synapse__substr(column, start_position, num_characters) %} + substring({{ column }}, {{ start_position }}, {{ num_characters }}) +{% endmacro %} diff --git a/dbt/models/tpc_ds/query01.sql b/dbt/models/tpc_ds/query01.sql new file mode 100644 index 0000000..fedabeb --- /dev/null +++ b/dbt/models/tpc_ds/query01.sql @@ -0,0 +1,30 @@ +-- query1 +WITH customer_total_return + AS (SELECT sr_customer_sk AS ctr_customer_sk, + sr_store_sk AS ctr_store_sk, + Sum(sr_return_amt) AS ctr_total_return + FROM {{source('src__tpc_ds', 'store_returns')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE sr_returned_date_sk = d_date_sk + AND d_year = 2001 + GROUP BY sr_customer_sk, + sr_store_sk), +high_return AS ( + SELECT ctr_store_sk, Avg(ctr_total_return) * 1.2 AS return_limit + FROM customer_total_return ctr2 + GROUP BY ctr_store_sk +) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} c_customer_id +FROM customer_total_return ctr1, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'customer')}}, + high_return +WHERE ctr1.ctr_total_return > high_return.return_limit + AND s_store_sk = ctr1.ctr_store_sk + AND s_state = 'TN' + AND ctr1.ctr_customer_sk = c_customer_sk + AND ctr1.ctr_store_sk = high_return.ctr_store_sk +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY c_customer_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query02.sql b/dbt/models/tpc_ds/query02.sql new file mode 100644 index 0000000..7f0823a --- /dev/null +++ b/dbt/models/tpc_ds/query02.sql @@ -0,0 +1,81 @@ +-- query2 +WITH wscs + AS (SELECT sold_date_sk, + sales_price + FROM (SELECT ws_sold_date_sk sold_date_sk, + ws_ext_sales_price sales_price + FROM {{source('src__tpc_ds', 'web_sales')}}) as ws + UNION ALL + (SELECT cs_sold_date_sk sold_date_sk, + cs_ext_sales_price sales_price + FROM {{source('src__tpc_ds', 'catalog_sales')}})), + wswscs + AS (SELECT d_week_seq, + Sum(CASE + WHEN ( d_day_name = 'Sunday' ) THEN sales_price + ELSE NULL + END) sun_sales, + Sum(CASE + WHEN ( d_day_name = 'Monday' ) THEN sales_price + ELSE NULL + END) mon_sales, + Sum(CASE + WHEN ( d_day_name = 'Tuesday' ) THEN sales_price + ELSE NULL + END) tue_sales, + Sum(CASE + WHEN ( d_day_name = 'Wednesday' ) THEN sales_price + ELSE NULL + END) wed_sales, + Sum(CASE + WHEN ( d_day_name = 'Thursday' ) THEN sales_price + ELSE NULL + END) thu_sales, + Sum(CASE + WHEN ( d_day_name = 'Friday' ) THEN sales_price + ELSE NULL + END) fri_sales, + Sum(CASE + WHEN ( d_day_name = 'Saturday' ) THEN sales_price + ELSE NULL + END) sat_sales + FROM wscs, + {{source('src__tpc_ds', 'date_dim')}} + WHERE d_date_sk = sold_date_sk + GROUP BY d_week_seq) +SELECT d_week_seq1, + Round(sun_sales1 / sun_sales2, 2) as rnd_sun_sales1, + Round(mon_sales1 / mon_sales2, 2) as rnd_mon_sales1, + Round(tue_sales1 / tue_sales2, 2) as rnd_tue_sales1, + Round(wed_sales1 / wed_sales2, 2) as rnd_wed_sales1, + Round(thu_sales1 / thu_sales2, 2) as rnd_thu_sales1, + Round(fri_sales1 / fri_sales2, 2) as rnd_fri_sales1, + Round(sat_sales1 / sat_sales2, 2) as rnd_sat_sales1 +FROM (SELECT wswscs.d_week_seq d_week_seq1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wswscs, + {{source('src__tpc_ds', 'date_dim')}} + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 1998) y, + (SELECT wswscs.d_week_seq d_week_seq2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wswscs, + {{source('src__tpc_ds', 'date_dim')}} + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 1998 + 1) z +WHERE d_week_seq1 = d_week_seq2 - 53 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY d_week_seq1 +{% endif %} diff --git a/dbt/models/tpc_ds/query03.sql b/dbt/models/tpc_ds/query03.sql new file mode 100644 index 0000000..93f531e --- /dev/null +++ b/dbt/models/tpc_ds/query03.sql @@ -0,0 +1,21 @@ +-- query3 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + Sum(ss_ext_discount_amt) sum_agg +FROM {{source('src__tpc_ds', 'date_dim')}} dt, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}} +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 427 + AND dt.d_moy = 11 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY dt.d_year, + sum_agg DESC, + brand_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query04.sql b/dbt/models/tpc_ds/query04.sql new file mode 100644 index 0000000..913b1e2 --- /dev/null +++ b/dbt/models/tpc_ds/query04.sql @@ -0,0 +1,105 @@ +-- query4 +WITH year_total + AS (SELECT c_customer_id customer_id, + d_year dyear, + Sum(( ( ss_ext_list_price - ss_ext_wholesale_cost + - ss_ext_discount_amt + ) + + + ss_ext_sales_price ) / 2) year_total, + 's' sale_type + FROM {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + d_year + UNION ALL + SELECT c_customer_id customer_id, + d_year dyear, + Sum(( ( ( cs_ext_list_price + - cs_ext_wholesale_cost + - cs_ext_discount_amt + ) + + cs_ext_sales_price ) / 2 )) year_total, + 'c' sale_type + FROM {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c_customer_sk = cs_bill_customer_sk + AND cs_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + d_year + UNION ALL + SELECT c_customer_id customer_id, + d_year dyear, + Sum(( ( ( ws_ext_list_price + - ws_ext_wholesale_cost + - ws_ext_discount_amt + ) + + ws_ext_sales_price ) / 2 )) year_total, + 'w' sale_type + FROM {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + d_year) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} t_s_secyear.customer_id, + customer.c_first_name, + customer.c_last_name, + customer.c_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_c_firstyear, + year_total t_c_secyear, + year_total t_w_firstyear, + year_total t_w_secyear, + {{source('src__tpc_ds', 'customer')}} +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_c_secyear.customer_id + AND t_s_firstyear.customer_id = t_c_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_secyear.customer_id = customer.c_customer_id + AND t_s_firstyear.sale_type = 's' + AND t_c_firstyear.sale_type = 'c' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_c_secyear.sale_type = 'c' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001 + 1 + AND t_c_firstyear.dyear = 2001 + AND t_c_secyear.dyear = 2001 + 1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_c_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / + t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN + t_s_secyear.year_total / + t_s_firstyear.year_total + ELSE NULL + END + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / + t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_w_firstyear.year_total > 0 THEN + t_w_secyear.year_total / + t_w_firstyear.year_total + ELSE NULL + END +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY t_s_secyear.customer_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query05.sql b/dbt/models/tpc_ds/query05.sql new file mode 100644 index 0000000..06ea73a --- /dev/null +++ b/dbt/models/tpc_ds/query05.sql @@ -0,0 +1,127 @@ +-- query5 +WITH ssr AS +( + SELECT s_store_id, + Sum(sales_price) AS sales, + Sum(profit) AS profit, + Sum(return_amt) AS returns1, + Sum(net_loss) AS profit_loss + FROM ( + SELECT ss_store_sk AS store_sk, + ss_sold_date_sk AS date_sk, + ss_ext_sales_price AS sales_price, + ss_net_profit AS profit, + 0 AS return_amt, + 0 AS net_loss + FROM {{source('src__tpc_ds', 'store_sales')}} + UNION ALL + SELECT sr_store_sk AS store_sk, + sr_returned_date_sk AS date_sk, + 0 AS sales_price, + 0 AS profit, + sr_return_amt AS return_amt, + sr_net_loss AS net_loss + FROM {{source('src__tpc_ds', 'store_returns')}} ) salesreturns, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}} + WHERE date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN Cast('2002-08-22' AS DATE) AND ( + Cast('2002-09-05' AS DATE)) + AND store_sk = s_store_sk + GROUP BY s_store_id) , csr AS +( + SELECT cp_catalog_page_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns1, + sum(net_loss) AS profit_loss + FROM ( + SELECT cs_catalog_page_sk AS page_sk, + cs_sold_date_sk AS date_sk, + cs_ext_sales_price AS sales_price, + cs_net_profit AS profit, + 0 AS return_amt, + 0 AS net_loss + FROM {{source('src__tpc_ds', 'catalog_sales')}} + UNION ALL + SELECT cr_catalog_page_sk AS page_sk, + cr_returned_date_sk AS date_sk, + 0 AS sales_price, + 0 AS profit, + cr_return_amount AS return_amt, + cr_net_loss AS net_loss + FROM {{source('src__tpc_ds', 'catalog_returns')}} ) salesreturns, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'catalog_page')}} + WHERE date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2002-08-22' AS date) AND ( + Cast('2002-09-05' AS DATE)) + AND page_sk = cp_catalog_page_sk + GROUP BY cp_catalog_page_id) , wsr AS +( + SELECT web_site_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns1, + sum(net_loss) AS profit_loss + FROM ( + SELECT ws_web_site_sk AS wsr_web_site_sk, + ws_sold_date_sk AS date_sk, + ws_ext_sales_price AS sales_price, + ws_net_profit AS profit, + 0 AS return_amt, + 0 AS net_loss + FROM {{source('src__tpc_ds', 'web_sales')}} + UNION ALL + SELECT ws_web_site_sk AS wsr_web_site_sk, + wr_returned_date_sk AS date_sk, + 0 AS sales_price, + 0 AS profit, + wr_return_amt AS return_amt, + wr_net_loss AS net_loss + FROM {{source('src__tpc_ds', 'web_returns')}} + LEFT OUTER JOIN {{source('src__tpc_ds', 'web_sales')}} + ON ( + wr_item_sk = ws_item_sk + AND wr_order_number = ws_order_number) ) salesreturns, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'web_site')}} + WHERE date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2002-08-22' AS date) AND ( + Cast('2002-09-05' AS DATE)) + AND wsr_web_site_sk = web_site_sk + GROUP BY web_site_id) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + channel , + id , + sum(sales) AS sales , + sum(returns1) AS returns1 , + sum(profit) AS profit +FROM ( + SELECT '{{source('src__tpc_ds', 'store')}} channel' AS channel , + Concat('store', s_store_id) AS id , + sales , + returns1 , + (profit - profit_loss) AS profit + FROM ssr + UNION ALL + SELECT 'catalog channel' AS channel , + Concat('catalog_page', cp_catalog_page_id) AS id , + sales , + returns1 , + (profit - profit_loss) AS profit + FROM csr + UNION ALL + SELECT 'web channel' AS channel , + Concat('web_site', web_site_id) AS id , + sales , + returns1 , + (profit - profit_loss) AS profit + FROM wsr ) x +GROUP BY channel, id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY channel , + id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query06.sql b/dbt/models/tpc_ds/query06.sql new file mode 100644 index 0000000..ce96107 --- /dev/null +++ b/dbt/models/tpc_ds/query06.sql @@ -0,0 +1,25 @@ +-- query6 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} a.ca_state state, + Count(*) cnt +FROM {{source('src__tpc_ds', 'customer_address')}} a, + {{source('src__tpc_ds', 'customer')}} c, + {{source('src__tpc_ds', 'store_sales')}} s, + {{source('src__tpc_ds', 'date_dim')}} d, + {{source('src__tpc_ds', 'item')}} i +WHERE a.ca_address_sk = c.c_current_addr_sk + AND c.c_customer_sk = s.ss_customer_sk + AND s.ss_sold_date_sk = d.d_date_sk + AND s.ss_item_sk = i.i_item_sk + AND d.d_month_seq = (SELECT DISTINCT ( d_month_seq ) + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_year = 1998 + AND d_moy = 7) + AND i.i_current_price > 1.2 * (SELECT Avg(j.i_current_price) + FROM {{source('src__tpc_ds', 'item')}} j + WHERE j.i_category = i.i_category) +GROUP BY a.ca_state +HAVING Count(*) >= 10 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY cnt +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query07.sql b/dbt/models/tpc_ds/query07.sql new file mode 100644 index 0000000..1c85ff0 --- /dev/null +++ b/dbt/models/tpc_ds/query07.sql @@ -0,0 +1,26 @@ +-- query7 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_id, + Avg(ss_quantity) agg1, + Avg(ss_list_price) agg2, + Avg(ss_coupon_amt) agg3, + Avg(ss_sales_price) agg4 +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'customer_demographics')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'promotion')}} +WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_cdemo_sk = cd_demo_sk + AND ss_promo_sk = p_promo_sk + AND cd_gender = 'F' + AND cd_marital_status = 'W' + AND cd_education_status = '2 yr Degree' + AND ( p_channel_email = 'N' + OR p_channel_event = 'N' ) + AND d_year = 1998 +GROUP BY i_item_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query08.sql b/dbt/models/tpc_ds/query08.sql new file mode 100644 index 0000000..4c2868a --- /dev/null +++ b/dbt/models/tpc_ds/query08.sql @@ -0,0 +1,236 @@ +-- query8 +WITH ca_zips AS ( + SELECT {{ substr('ca_zip', 1, 5) }} AS ca_zip + FROM {{source('src__tpc_ds', 'customer_address')}} + WHERE {{ substr('ca_zip', 1, 5) }} IN ( '67436', '26121', '38443', + '63157', + '68856', '19485', '86425', + '26741', + '70991', '60899', '63573', + '47556', + '56193', '93314', '87827', + '62017', + '85067', '95390', '48091', + '10261', + '81845', '41790', '42853', + '24675', + '12840', '60065', '84430', + '57451', + '24021', '91735', '75335', + '71935', + '34482', '56943', '70695', + '52147', + '56251', '28411', '86653', + '23005', + '22478', '29031', '34398', + '15365', + '42460', '33337', '59433', + '73943', + '72477', '74081', '74430', + '64605', + '39006', '11226', '49057', + '97308', + '42663', '18187', '19768', + '43454', + '32147', '76637', '51975', + '11181', + '45630', '33129', '45995', + '64386', + '55522', '26697', '20963', + '35154', + '64587', '49752', '66386', + '30586', + '59286', '13177', '66646', + '84195', + '74316', '36853', '32927', + '12469', + '11904', '36269', '17724', + '55346', + '12595', '53988', '65439', + '28015', + '63268', '73590', '29216', + '82575', + '69267', '13805', '91678', + '79460', + '94152', '14961', '15419', + '48277', + '62588', '55493', '28360', + '14152', + '55225', '18007', '53705', + '56573', + '80245', '71769', '57348', + '36845', + '13039', '17270', '22363', + '83474', + '25294', '43269', '77666', + '15488', + '99146', '64441', '43338', + '38736', + '62754', '48556', '86057', + '23090', + '38114', '66061', '18910', + '84385', + '23600', '19975', '27883', + '65719', + '19933', '32085', '49731', + '40473', + '27190', '46192', '23949', + '44738', + '12436', '64794', '68741', + '15333', + '24282', '49085', '31844', + '71156', + '48441', '17100', '98207', + '44982', + '20277', '71496', '96299', + '37583', + '22206', '89174', '30589', + '61924', + '53079', '10976', '13104', + '42794', + '54772', '15809', '56434', + '39975', + '13874', '30753', '77598', + '78229', + '59478', '12345', '55547', + '57422', + '42600', '79444', '29074', + '29752', + '21676', '32096', '43044', + '39383', + '37296', '36295', '63077', + '16572', + '31275', '18701', '40197', + '48242', + '27219', '49865', '84175', + '30446', + '25165', '13807', '72142', + '70499', + '70464', '71429', '18111', + '70857', + '29545', '36425', '52706', + '36194', + '42963', '75068', '47921', + '74763', + '90990', '89456', '62073', + '88397', + '73963', '75885', '62657', + '12530', + '81146', '57434', '25099', + '41429', + '98441', '48713', '52552', + '31667', + '14072', '13903', '44709', + '85429', + '58017', '38295', '44875', + '73541', + '30091', '12707', '23762', + '62258', + '33247', '78722', '77431', + '14510', + '35656', '72428', '92082', + '35267', + '43759', '24354', '90952', + '11512', + '21242', '22579', '56114', + '32339', + '52282', '41791', '24484', + '95020', + '28408', '99710', '11899', + '43344', + '72915', '27644', '62708', + '74479', + '17177', '32619', '12351', + '91339', + '31169', '57081', '53522', + '16712', + '34419', '71779', '44187', + '46206', + '96099', '61910', '53664', + '12295', + '31837', '33096', '10813', + '63048', + '31732', '79118', '73084', + '72783', + '84952', '46965', '77956', + '39815', + '32311', '75329', '48156', + '30826', + '49661', '13736', '92076', + '74865', + '88149', '92397', '52777', + '68453', + '32012', '21222', '52721', + '24626', + '18210', '42177', '91791', + '75251', + '82075', '44372', '45542', + '20609', + '60115', '17362', '22750', + '90434', + '31852', '54071', '33762', + '14705', + '40718', '56433', '30996', + '40657', + '49056', '23585', '66455', + '41021', + '74736', '72151', '37007', + '21729', + '60177', '84558', '59027', + '93855', + '60022', '86443', '19541', + '86886', + '30532', '39062', '48532', + '34713', + '52077', '22564', '64638', + '15273', + '31677', '36138', '62367', + '60261', + '80213', '42818', '25113', + '72378', + '69802', '69096', '55443', + '28820', + '13848', '78258', '37490', + '30556', + '77380', '28447', '44550', + '26791', + '70609', '82182', '33306', + '43224', + '22322', '86959', '68519', + '14308', + '46501', '81131', '34056', + '61991', + '19896', '87804', '65774', + '92564' ) +), common_zips AS ( + SELECT ca_zip + FROM (SELECT {{ substr('ca_zip', 1, 5) }} ca_zip, + Count(*) cnt + FROM {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'customer')}} + WHERE ca_address_sk = c_current_addr_sk + AND c_preferred_cust_flag = 'Y' + GROUP BY ca_zip + HAVING Count(*) > 10) as ca +), +chosen_zips AS ( + SELECT ca_zip + FROM ca_zips + WHERE ca_zip IN (SELECT ca_zip FROM common_zips) +) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} s_store_name, + Sum(ss_net_profit) as sum_ss_net_profit +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}}, + common_zips +WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2000 + AND ( {{ substr('s_zip', 1, 2) }} = {{ substr('ca_zip', 1, 2) }} ) +GROUP BY s_store_name +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY s_store_name +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query09.sql b/dbt/models/tpc_ds/query09.sql new file mode 100644 index 0000000..4aab75f --- /dev/null +++ b/dbt/models/tpc_ds/query09.sql @@ -0,0 +1,63 @@ +-- query9 +SELECT CASE + WHEN (SELECT Count(*) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 1 AND 20) > 3672 THEN + (SELECT Avg(ss_ext_list_price) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE + ss_quantity BETWEEN 1 AND 20) + ELSE (SELECT Avg(ss_net_profit) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 1 AND 20) + END bucket1, + CASE + WHEN (SELECT Count(*) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 21 AND 40) > 3392 THEN + (SELECT Avg(ss_ext_list_price) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE + ss_quantity BETWEEN 21 AND 40) + ELSE (SELECT Avg(ss_net_profit) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 21 AND 40) + END bucket2, + CASE + WHEN (SELECT Count(*) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 41 AND 60) > 32784 THEN + (SELECT Avg(ss_ext_list_price) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE + ss_quantity BETWEEN 41 AND 60) + ELSE (SELECT Avg(ss_net_profit) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 41 AND 60) + END bucket3, + CASE + WHEN (SELECT Count(*) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 61 AND 80) > 26032 THEN + (SELECT Avg(ss_ext_list_price) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE + ss_quantity BETWEEN 61 AND 80) + ELSE (SELECT Avg(ss_net_profit) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 61 AND 80) + END bucket4, + CASE + WHEN (SELECT Count(*) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 81 AND 100) > 23982 THEN + (SELECT Avg(ss_ext_list_price) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE + ss_quantity BETWEEN 81 AND 100) + ELSE (SELECT Avg(ss_net_profit) + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 81 AND 100) + END bucket5 +FROM {{source('src__tpc_ds', 'reason')}} +WHERE r_reason_sk = 1 diff --git a/dbt/models/tpc_ds/query10.sql b/dbt/models/tpc_ds/query10.sql new file mode 100644 index 0000000..aa6ac70 --- /dev/null +++ b/dbt/models/tpc_ds/query10.sql @@ -0,0 +1,64 @@ +-- query10 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} cd_gender, + cd_marital_status, + cd_education_status, + Count(*) cnt1, + cd_purchase_estimate, + Count(*) cnt2, + cd_credit_rating, + Count(*) cnt3, + cd_dep_count, + Count(*) cnt4, + cd_dep_employed_count, + Count(*) cnt5, + cd_dep_college_count, + Count(*) cnt6 +FROM {{source('src__tpc_ds', 'customer')}} c, + {{source('src__tpc_ds', 'customer_address')}} ca, + {{source('src__tpc_ds', 'customer_demographics')}} +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_county IN ( 'Lycoming County', 'Sheridan County', + 'Kandiyohi County', + 'Pike County', + 'Greene County' ) + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 4 AND 4 + 3) + AND ( EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 4 AND 4 + 3) + OR EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 4 AND 4 + 3) ) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query11.sql b/dbt/models/tpc_ds/query11.sql new file mode 100644 index 0000000..1047068 --- /dev/null +++ b/dbt/models/tpc_ds/query11.sql @@ -0,0 +1,99 @@ +-- query11 +WITH year_total + AS (SELECT c_customer_id customer_id, + c_first_name customer_first_name + , + c_last_name + customer_last_name, + c_preferred_cust_flag + customer_preferred_cust_flag + , + c_birth_country + customer_birth_country, + c_login customer_login, + c_email_address + customer_email_address, + d_year dyear, + Sum(ss_ext_list_price - ss_ext_discount_amt) year_total, + 's' sale_type + FROM {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT c_customer_id customer_id, + c_first_name customer_first_name + , + c_last_name + customer_last_name, + c_preferred_cust_flag + customer_preferred_cust_flag + , + c_birth_country + customer_birth_country, + c_login customer_login, + c_email_address + customer_email_address, + d_year dyear, + Sum(ws_ext_list_price - ws_ext_discount_amt) year_total, + 'w' sale_type + FROM {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_birth_country +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001 + 1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / + t_w_firstyear.year_total + ELSE 0.0 + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN + t_s_secyear.year_total / + t_s_firstyear.year_total + ELSE 0.0 + END +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_birth_country +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query12.sql b/dbt/models/tpc_ds/query12.sql new file mode 100644 index 0000000..0375d5b --- /dev/null +++ b/dbt/models/tpc_ds/query12.sql @@ -0,0 +1,33 @@ +-- query12 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + i_item_id , + i_item_desc , + i_category , + i_class , + i_current_price , + Sum(ws_ext_sales_price) AS itemrevenue , + Sum(ws_ext_sales_price)*100/Sum(Sum(ws_ext_sales_price)) OVER (partition BY i_class) AS revenueratio +FROM {{source('src__tpc_ds', 'web_sales')}} , + {{source('src__tpc_ds', 'item')}} , + {{source('src__tpc_ds', 'date_dim')}} +WHERE ws_item_sk = i_item_sk +AND i_category IN ('Home', + 'Men', + 'Women') +AND ws_sold_date_sk = d_date_sk +AND Cast(d_date AS DATE) BETWEEN Cast('2000-05-11' AS DATE) AND ( + Cast('2000-06-11' AS DATE)) +GROUP BY i_item_id , + i_item_desc , + i_category , + i_class , + i_current_price +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_category , + i_class , + i_item_id , + i_item_desc , + revenueratio +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query13.sql b/dbt/models/tpc_ds/query13.sql new file mode 100644 index 0000000..0b7ce2e --- /dev/null +++ b/dbt/models/tpc_ds/query13.sql @@ -0,0 +1,44 @@ +-- query13 +SELECT Avg(ss_quantity) as avg_ss_quantity, + Avg(ss_ext_sales_price) as avg_ss_ext_sales_price, + Avg(ss_ext_wholesale_cost) as avg_ss_ext_wholesale_cost, + Sum(ss_ext_wholesale_cost) as sum_ss_ext_wholesale_cost +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'customer_demographics')}}, + {{source('src__tpc_ds', 'household_demographics')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'date_dim')}} +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND ( ( ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'U' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + AND hd_dep_count = 3 ) + OR ( ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Primary' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + AND hd_dep_count = 1 ) + OR ( ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = 'Secondary' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + AND hd_dep_count = 1 ) ) + AND ( ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'AZ', 'NE', 'IA' ) + AND ss_net_profit BETWEEN 100 AND 200 ) + OR ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'MS', 'CA', 'NV' ) + AND ss_net_profit BETWEEN 150 AND 300 ) + OR ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'GA', 'TX', 'NJ' ) + AND ss_net_profit BETWEEN 50 AND 250 ) ) diff --git a/dbt/models/tpc_ds/query14.sql b/dbt/models/tpc_ds/query14.sql new file mode 100644 index 0000000..f6b72f1 --- /dev/null +++ b/dbt/models/tpc_ds/query14.sql @@ -0,0 +1,151 @@ +-- query14 +WITH item_ss AS ( + SELECT DISTINCT + iss.i_brand_id, + iss.i_class_id, + iss.i_category_id + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}} iss, + {{source('src__tpc_ds', 'date_dim')}} d1 + WHERE ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 +), item_cs AS ( + SELECT DISTINCT + ics.i_brand_id, + ics.i_class_id, + ics.i_category_id + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'item')}} ics, + {{source('src__tpc_ds', 'date_dim')}} d2 + WHERE cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 +), item_ws AS ( + SELECT DISTINCT + iws.i_brand_id, + iws.i_class_id, + iws.i_category_id + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'item')}} iws, + {{source('src__tpc_ds', 'date_dim')}} d3 + WHERE ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2 +), item_intersect AS ( + SELECT + item_ss.i_brand_id brand_id, + item_ss.i_class_id class_id, + item_ss.i_category_id category_id + FROM item_ss + JOIN item_ws ON item_ss.i_brand_id = item_ws.i_brand_id + AND item_ss.i_class_id = item_ws.i_class_id + AND item_ss.i_category_id = item_ws.i_category_id + JOIN item_cs ON item_ss.i_brand_id = item_cs.i_brand_id + AND item_ss.i_class_id = item_cs.i_class_id + AND item_ss.i_category_id = item_cs.i_category_id +), cross_items AS ( + SELECT i_item_sk ss_item_sk + FROM {{source('src__tpc_ds', 'item')}}, + item_intersect + WHERE i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id), + avg_sales + AS (SELECT Avg(quantity * list_price) average_sales + FROM (SELECT ss_quantity quantity, + ss_list_price list_price + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT cs_quantity quantity, + cs_list_price list_price + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE cs_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT ws_quantity quantity, + ws_list_price list_price + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ws_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2) x) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} channel, + i_brand_id, + i_class_id, + i_category_id, + Sum(sales) as sum_sales, + Sum(number_sales) as sum_number_sales +FROM (SELECT 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + Sum(ss_quantity * ss_list_price) sales, + Count(*) number_sales + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING Sum(ss_quantity * ss_list_price) > (SELECT average_sales + FROM avg_sales) + UNION ALL + SELECT 'catalog' channel, + i_brand_id, + i_class_id, + i_category_id, + Sum(cs_quantity * cs_list_price) sales, + Count(*) number_sales + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE cs_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING Sum(cs_quantity * cs_list_price) > (SELECT average_sales + FROM avg_sales) + UNION ALL + SELECT 'web' channel, + i_brand_id, + i_class_id, + i_category_id, + Sum(ws_quantity * ws_list_price) sales, + Count(*) number_sales + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ws_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING Sum(ws_quantity * ws_list_price) > (SELECT average_sales + FROM avg_sales)) y +GROUP BY channel, i_brand_id, i_class_id, i_category_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY channel, + i_brand_id, + i_class_id, + i_category_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query15.sql b/dbt/models/tpc_ds/query15.sql new file mode 100644 index 0000000..25bb4cc --- /dev/null +++ b/dbt/models/tpc_ds/query15.sql @@ -0,0 +1,22 @@ +-- query15 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} ca_zip, + Sum(cs_sales_price) as sum_cs_sales_price +FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'date_dim')}} +WHERE cs_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ( {{ substr('ca_zip', 1, 5) }} IN ( '85669', '86197', '88274', '83405', + '86475', '85392', '85460', '80348', + '81792' ) + OR ca_state IN ( 'CA', 'WA', 'GA' ) + OR cs_sales_price > 500 ) + AND cs_sold_date_sk = d_date_sk + AND d_qoy = 1 + AND d_year = 1998 +GROUP BY ca_zip +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ca_zip +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query16.sql b/dbt/models/tpc_ds/query16.sql new file mode 100644 index 0000000..2e55211 --- /dev/null +++ b/dbt/models/tpc_ds/query16.sql @@ -0,0 +1,34 @@ +-- query16 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + Count(DISTINCT cs_order_number) AS order_count , + Sum(cs_ext_ship_cost) AS total_shipping_cost , + Sum(cs_net_profit) AS total_net_profit +FROM {{source('src__tpc_ds', 'catalog_sales')}} cs1 , + {{source('src__tpc_ds', 'date_dim')}} , + {{source('src__tpc_ds', 'customer_address')}} , + {{source('src__tpc_ds', 'call_center')}} +WHERE Cast(d_date AS DATE) BETWEEN Cast('2002-3-01' AS DATE) AND ( + Cast('2002-5-01' AS DATE)) +AND cs1.cs_ship_date_sk = d_date_sk +AND cs1.cs_ship_addr_sk = ca_address_sk +AND ca_state = 'IA' +AND cs1.cs_call_center_sk = cc_call_center_sk +AND cc_county IN ('Williamson County', + 'Williamson County', + 'Williamson County', + 'Williamson County', + 'Williamson County' ) +AND EXISTS + ( + SELECT * + FROM {{source('src__tpc_ds', 'catalog_sales')}} cs2 + WHERE cs1.cs_order_number = cs2.cs_order_number + AND cs1.cs_warehouse_sk <> cs2.cs_warehouse_sk) +AND NOT EXISTS + ( + SELECT * + FROM {{source('src__tpc_ds', 'catalog_returns')}} cr1 + WHERE cs1.cs_order_number = cr1.cr_order_number) +ORDER BY count(DISTINCT cs_order_number) +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query17.sql b/dbt/models/tpc_ds/query17.sql new file mode 100644 index 0000000..5471dcb --- /dev/null +++ b/dbt/models/tpc_ds/query17.sql @@ -0,0 +1,58 @@ +-- query17 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_id, + i_item_desc, + s_state, + Count(ss_quantity) AS + store_sales_quantitycount, + Avg(ss_quantity) AS + store_sales_quantityave, + {{ stddev('ss_quantity') }} AS + store_sales_quantitystdev, + {{ stddev('ss_quantity') }} / Avg(ss_quantity) AS + store_sales_quantitycov, + Count(sr_return_quantity) AS + store_returns_quantitycount, + Avg(sr_return_quantity) AS + store_returns_quantityave, + {{ stddev('sr_return_quantity') }} AS + store_returns_quantitystdev, + {{ stddev('sr_return_quantity') }} / Avg(sr_return_quantity) AS + store_returns_quantitycov, + Count(cs_quantity) AS + catalog_sales_quantitycount, + Avg(cs_quantity) AS + catalog_sales_quantityave, + {{ stddev('cs_quantity') }} / Avg(cs_quantity) AS + catalog_sales_quantitystdev, + {{ stddev('cs_quantity') }} / Avg(cs_quantity) AS + catalog_sales_quantitycov +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store_returns')}}, + {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} d1, + {{source('src__tpc_ds', 'date_dim')}} d2, + {{source('src__tpc_ds', 'date_dim')}} d3, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'item')}} +WHERE d1.d_quarter_name = '1999Q1' + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_quarter_name IN ( '1999Q1', '1999Q2', '1999Q3' ) + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_quarter_name IN ( '1999Q1', '1999Q2', '1999Q3' ) +GROUP BY i_item_id, + i_item_desc, + s_state +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id, + i_item_desc, + s_state +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query18.sql b/dbt/models/tpc_ds/query18.sql new file mode 100644 index 0000000..aac1e6a --- /dev/null +++ b/dbt/models/tpc_ds/query18.sql @@ -0,0 +1,40 @@ +-- query18 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_id, + ca_country, + ca_state, + ca_county, + Avg(cs_quantity) agg1, + Avg(cs_list_price) agg2, + Avg(cs_coupon_amt) agg3, + Avg(cs_sales_price) agg4, + Avg(cs_net_profit) agg5, + Avg(c_birth_year) agg6, + Avg(cd1.cd_dep_count) agg7 +FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'customer_demographics')}} cd1, + {{source('src__tpc_ds', 'customer_demographics')}} cd2, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'item')}} +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd1.cd_demo_sk + AND cs_bill_customer_sk = c_customer_sk + AND cd1.cd_gender = 'F' + AND cd1.cd_education_status = 'Secondary' + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_month IN ( 8, 4, 2, 5, + 11, 9 ) + AND d_year = 2001 + AND ca_state IN ( 'KS', 'IA', 'AL', 'UT', + 'VA', 'NC', 'TX' ) +GROUP BY i_item_id, ca_country, ca_state, ca_county +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ca_country, + ca_state, + ca_county, + i_item_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query19.sql b/dbt/models/tpc_ds/query19.sql new file mode 100644 index 0000000..a365b34 --- /dev/null +++ b/dbt/models/tpc_ds/query19.sql @@ -0,0 +1,33 @@ +-- query19 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_brand_id brand_id, + i_brand brand, + i_manufact_id, + i_manufact, + Sum(ss_ext_sales_price) ext_price +FROM {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'store')}} +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id = 38 + AND d_moy = 12 + AND d_year = 1998 + AND ss_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND {{ substr('ca_zip', 1, 5) }} <> {{ substr('s_zip', 1, 5) }} + AND ss_store_sk = s_store_sk +GROUP BY i_brand, + i_brand_id, + i_manufact_id, + i_manufact +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ext_price DESC, + i_brand, + i_brand_id, + i_manufact_id, + i_manufact +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query20.sql b/dbt/models/tpc_ds/query20.sql new file mode 100644 index 0000000..20b7397 --- /dev/null +++ b/dbt/models/tpc_ds/query20.sql @@ -0,0 +1,33 @@ +-- query20 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + i_item_id , + i_item_desc , + i_category , + i_class , + i_current_price , + Sum(cs_ext_sales_price) AS itemrevenue , + Sum(cs_ext_sales_price)*100/Sum(Sum(cs_ext_sales_price)) OVER (partition BY i_class) AS revenueratio +FROM {{source('src__tpc_ds', 'catalog_sales')}} , + {{source('src__tpc_ds', 'item')}} , + {{source('src__tpc_ds', 'date_dim')}} +WHERE cs_item_sk = i_item_sk +AND i_category IN ('Children', + 'Women', + 'Electronics') +AND cs_sold_date_sk = d_date_sk +AND Cast(d_date AS DATE) BETWEEN Cast('2001-02-03' AS DATE) AND ( + Cast('2001-03-03' AS DATE)) +GROUP BY i_item_id , + i_item_desc , + i_category , + i_class , + i_current_price +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_category , + i_class , + i_item_id , + i_item_desc , + revenueratio +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query21.sql b/dbt/models/tpc_ds/query21.sql new file mode 100644 index 0000000..5e2ab9a --- /dev/null +++ b/dbt/models/tpc_ds/query21.sql @@ -0,0 +1,41 @@ +-- query21 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + * +FROM ( + SELECT w_warehouse_name , + i_item_id , + Sum( + CASE + WHEN ( + Cast(d_date AS DATE) < Cast ('2000-05-13' AS DATE)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_before , + Sum( + CASE + WHEN ( + Cast(d_date AS DATE) >= Cast ('2000-05-13' AS DATE)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_after + FROM {{source('src__tpc_ds', 'inventory')}} , + {{source('src__tpc_ds', 'warehouse')}} , + {{source('src__tpc_ds', 'item')}} , + {{source('src__tpc_ds', 'date_dim')}} + WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = inv_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN (Cast ('2000-04-13' AS DATE)) AND ( + cast ('2000-06-13' AS date)) + GROUP BY w_warehouse_name, + i_item_id) x +WHERE ( + CASE + WHEN inv_before > 0 THEN inv_after / inv_before + ELSE NULL + END) BETWEEN 2.0/3.0 AND 3.0/2.0 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY w_warehouse_name , + i_item_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query22.sql b/dbt/models/tpc_ds/query22.sql new file mode 100644 index 0000000..e1cc7ac --- /dev/null +++ b/dbt/models/tpc_ds/query22.sql @@ -0,0 +1,23 @@ +-- query22 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_product_name, + i_brand, + i_class, + i_category, + Avg(inv_quantity_on_hand) qoh +FROM {{source('src__tpc_ds', 'inventory')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'warehouse')}} +WHERE inv_date_sk = d_date_sk + AND inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND d_month_seq BETWEEN 1205 AND 1205 + 11 +GROUP BY i_product_name, i_brand, i_class, i_category +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY qoh, + i_product_name, + i_brand, + i_class, + i_category +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query23.sql b/dbt/models/tpc_ds/query23.sql new file mode 100644 index 0000000..a32081e --- /dev/null +++ b/dbt/models/tpc_ds/query23.sql @@ -0,0 +1,60 @@ +-- query23 +WITH frequent_ss_items + AS (SELECT {{ substr('i_item_desc', 1, 30) }} itemdesc, + i_item_sk item_sk, + d_date solddate, + Count(*) cnt + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'item')}} + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN ( 1998, 1998 + 1, 1998 + 2, 1998 + 3 ) + GROUP BY {{ substr('i_item_desc', 1, 30) }}, + i_item_sk, + d_date + HAVING Count(*) > 4), + +max_store_sales + AS (SELECT Max(csales) tpcds_cmax + FROM (SELECT c_customer_sk, + Sum(ss_quantity * ss_sales_price) csales + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN ( 1998, 1998 + 1, 1998 + 2, 1998 + 3 ) + GROUP BY c_customer_sk) as a), +best_ss_customer + AS (SELECT c_customer_sk, + Sum(ss_quantity * ss_sales_price) ssales + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'customer')}} + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + HAVING Sum(ss_quantity * ss_sales_price) > + ( 95 / 100.0 ) * (SELECT * + FROM max_store_sales)) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} Sum(sales) as sum_sales +FROM (SELECT cs_quantity * cs_list_price sales + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE d_year = 1998 + AND d_moy = 6 + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk IN (SELECT item_sk + FROM frequent_ss_items) + AND cs_bill_customer_sk IN (SELECT c_customer_sk + FROM best_ss_customer) + UNION ALL + SELECT ws_quantity * ws_list_price sales + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE d_year = 1998 + AND d_moy = 6 + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk IN (SELECT item_sk + FROM frequent_ss_items) + AND ws_bill_customer_sk IN (SELECT c_customer_sk + FROM best_ss_customer)) as abc {{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query24.sql b/dbt/models/tpc_ds/query24.sql new file mode 100644 index 0000000..2f8bda1 --- /dev/null +++ b/dbt/models/tpc_ds/query24.sql @@ -0,0 +1,48 @@ +-- query24 +WITH ssales + AS (SELECT c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + Sum(ss_net_profit) netpaid + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store_returns')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}} + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_birth_country = Upper(ca_country) + AND s_zip = ca_zip + AND s_market_id = 6 + GROUP BY c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size) +SELECT c_last_name, + c_first_name, + s_store_name, + Sum(netpaid) paid +FROM ssales +WHERE i_color = 'papaya' +GROUP BY c_last_name, + c_first_name, + s_store_name +HAVING Sum(netpaid) > (SELECT 0.05 * Avg(netpaid) + FROM ssales) diff --git a/dbt/models/tpc_ds/query25.sql b/dbt/models/tpc_ds/query25.sql new file mode 100644 index 0000000..f4e55aa --- /dev/null +++ b/dbt/models/tpc_ds/query25.sql @@ -0,0 +1,43 @@ +-- query25 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_id, + i_item_desc, + s_store_id, + s_store_name, + Max(ss_net_profit) AS store_sales_profit, + Max(sr_net_loss) AS store_returns_loss, + Max(cs_net_profit) AS catalog_sales_profit +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store_returns')}}, + {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} d1, + {{source('src__tpc_ds', 'date_dim')}} d2, + {{source('src__tpc_ds', 'date_dim')}} d3, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'item')}} +WHERE d1.d_moy = 4 + AND d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 10 + AND d2.d_year = 2001 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_moy BETWEEN 4 AND 10 + AND d3.d_year = 2001 +GROUP BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query26.sql b/dbt/models/tpc_ds/query26.sql new file mode 100644 index 0000000..e1741e2 --- /dev/null +++ b/dbt/models/tpc_ds/query26.sql @@ -0,0 +1,26 @@ +-- query26 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_id, + Avg(cs_quantity) agg1, + Avg(cs_list_price) agg2, + Avg(cs_coupon_amt) agg3, + Avg(cs_sales_price) agg4 +FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'customer_demographics')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'promotion')}} +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd_demo_sk + AND cs_promo_sk = p_promo_sk + AND cd_gender = 'F' + AND cd_marital_status = 'W' + AND cd_education_status = 'Secondary' + AND ( p_channel_email = 'N' + OR p_channel_event = 'N' ) + AND d_year = 2000 +GROUP BY i_item_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query27.sql b/dbt/models/tpc_ds/query27.sql new file mode 100644 index 0000000..c07f6e7 --- /dev/null +++ b/dbt/models/tpc_ds/query27.sql @@ -0,0 +1,28 @@ +-- query27 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_id, + s_state, + Avg(ss_quantity) agg1, + Avg(ss_list_price) agg2, + Avg(ss_coupon_amt) agg3, + Avg(ss_sales_price) agg4 +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'customer_demographics')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'item')}} +WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND ss_cdemo_sk = cd_demo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'D' + AND cd_education_status = 'College' + AND d_year = 2000 + AND s_state IN ( 'TN', 'TN', 'TN', 'TN', + 'TN', 'TN' ) +GROUP BY i_item_id, s_state +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id, + s_state +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query28.sql b/dbt/models/tpc_ds/query28.sql new file mode 100644 index 0000000..e7869ad --- /dev/null +++ b/dbt/models/tpc_ds/query28.sql @@ -0,0 +1,51 @@ +-- query28 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} * +FROM (SELECT Avg(ss_list_price) B1_LP, + Count(ss_list_price) B1_CNT, + Count(DISTINCT ss_list_price) B1_CNTD + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 0 AND 5 + AND ( ss_list_price BETWEEN 18 AND 18 + 10 + OR ss_coupon_amt BETWEEN 1939 AND 1939 + 1000 + OR ss_wholesale_cost BETWEEN 34 AND 34 + 20 )) B1, + (SELECT Avg(ss_list_price) B2_LP, + Count(ss_list_price) B2_CNT, + Count(DISTINCT ss_list_price) B2_CNTD + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 6 AND 10 + AND ( ss_list_price BETWEEN 1 AND 1 + 10 + OR ss_coupon_amt BETWEEN 35 AND 35 + 1000 + OR ss_wholesale_cost BETWEEN 50 AND 50 + 20 )) B2, + (SELECT Avg(ss_list_price) B3_LP, + Count(ss_list_price) B3_CNT, + Count(DISTINCT ss_list_price) B3_CNTD + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 11 AND 15 + AND ( ss_list_price BETWEEN 91 AND 91 + 10 + OR ss_coupon_amt BETWEEN 1412 AND 1412 + 1000 + OR ss_wholesale_cost BETWEEN 17 AND 17 + 20 )) B3, + (SELECT Avg(ss_list_price) B4_LP, + Count(ss_list_price) B4_CNT, + Count(DISTINCT ss_list_price) B4_CNTD + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 16 AND 20 + AND ( ss_list_price BETWEEN 9 AND 9 + 10 + OR ss_coupon_amt BETWEEN 5270 AND 5270 + 1000 + OR ss_wholesale_cost BETWEEN 29 AND 29 + 20 )) B4, + (SELECT Avg(ss_list_price) B5_LP, + Count(ss_list_price) B5_CNT, + Count(DISTINCT ss_list_price) B5_CNTD + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 21 AND 25 + AND ( ss_list_price BETWEEN 45 AND 45 + 10 + OR ss_coupon_amt BETWEEN 826 AND 826 + 1000 + OR ss_wholesale_cost BETWEEN 5 AND 5 + 20 )) B5, + (SELECT Avg(ss_list_price) B6_LP, + Count(ss_list_price) B6_CNT, + Count(DISTINCT ss_list_price) B6_CNTD + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_quantity BETWEEN 26 AND 30 + AND ( ss_list_price BETWEEN 174 AND 174 + 10 + OR ss_coupon_amt BETWEEN 5548 AND 5548 + 1000 + OR ss_wholesale_cost BETWEEN 42 AND 42 + 20 )) B6 +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query29.sql b/dbt/models/tpc_ds/query29.sql new file mode 100644 index 0000000..66cf59c --- /dev/null +++ b/dbt/models/tpc_ds/query29.sql @@ -0,0 +1,42 @@ +-- query29 +SELECT i_item_id, + i_item_desc, + s_store_id, + s_store_name, + Avg(ss_quantity) AS store_sales_quantity, + Avg(sr_return_quantity) AS store_returns_quantity, + Avg(cs_quantity) AS catalog_sales_quantity +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store_returns')}}, + {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} d1, + {{source('src__tpc_ds', 'date_dim')}} d2, + {{source('src__tpc_ds', 'date_dim')}} d3, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'item')}} +WHERE d1.d_moy = 4 + AND d1.d_year = 1998 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 4 + 3 + AND d2.d_year = 1998 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_year IN ( 1998, 1998 + 1, 1998 + 2 ) +GROUP BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query30.sql b/dbt/models/tpc_ds/query30.sql new file mode 100644 index 0000000..6015bbf --- /dev/null +++ b/dbt/models/tpc_ds/query30.sql @@ -0,0 +1,51 @@ +-- query30 +WITH customer_total_return + AS (SELECT wr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + Sum(wr_return_amt) AS ctr_total_return + FROM {{source('src__tpc_ds', 'web_returns')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}} + WHERE wr_returned_date_sk = d_date_sk + AND d_year = 2000 + AND wr_returning_addr_sk = ca_address_sk + GROUP BY wr_returning_customer_sk, + ca_state) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date, + ctr_total_return +FROM customer_total_return ctr1, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'customer')}} +WHERE ctr1.ctr_total_return > (SELECT Avg(ctr_total_return) * 1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'IN' + AND ctr1.ctr_customer_sk = c_customer_sk +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date, + ctr_total_return +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query31.sql b/dbt/models/tpc_ds/query31.sql new file mode 100644 index 0000000..bbbd4e0 --- /dev/null +++ b/dbt/models/tpc_ds/query31.sql @@ -0,0 +1,77 @@ +-- query31 +WITH ss + AS (SELECT ca_county, + d_qoy, + d_year, + Sum(ss_ext_sales_price) AS store_sales + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}} + WHERE ss_sold_date_sk = d_date_sk + AND ss_addr_sk = ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year), + ws + AS (SELECT ca_county, + d_qoy, + d_year, + Sum(ws_ext_sales_price) AS web_sales + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}} + WHERE ws_sold_date_sk = d_date_sk + AND ws_bill_addr_sk = ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year) +SELECT ss1.ca_county, + ss1.d_year, + ws2.web_sales / ws1.web_sales web_q1_q2_increase, + ss2.store_sales / ss1.store_sales store_q1_q2_increase, + ws3.web_sales / ws2.web_sales web_q2_q3_increase, + ss3.store_sales / ss2.store_sales store_q2_q3_increase +FROM ss ss1, + ss ss2, + ss ss3, + ws ws1, + ws ws2, + ws ws3 +WHERE ss1.d_qoy = 1 + AND ss1.d_year = 2001 + AND ss1.ca_county = ss2.ca_county + AND ss2.d_qoy = 2 + AND ss2.d_year = 2001 + AND ss2.ca_county = ss3.ca_county + AND ss3.d_qoy = 3 + AND ss3.d_year = 2001 + AND ss1.ca_county = ws1.ca_county + AND ws1.d_qoy = 1 + AND ws1.d_year = 2001 + AND ws1.ca_county = ws2.ca_county + AND ws2.d_qoy = 2 + AND ws2.d_year = 2001 + AND ws1.ca_county = ws3.ca_county + AND ws3.d_qoy = 3 + AND ws3.d_year = 2001 + AND CASE + WHEN ws1.web_sales > 0 THEN ws2.web_sales / ws1.web_sales + ELSE NULL + END > CASE + WHEN ss1.store_sales > 0 THEN + + ss2.store_sales / ss1.store_sales + + ELSE NULL + END + AND CASE + WHEN ws2.web_sales > 0 THEN ws3.web_sales / ws2.web_sales + ELSE NULL + END > CASE + WHEN ss2.store_sales > 0 THEN + ss3.store_sales / ss2.store_sales + ELSE NULL + END +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ss1.d_year{% endif %} + diff --git a/dbt/models/tpc_ds/query32.sql b/dbt/models/tpc_ds/query32.sql new file mode 100644 index 0000000..83a4cc2 --- /dev/null +++ b/dbt/models/tpc_ds/query32.sql @@ -0,0 +1,22 @@ +-- query32 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + Sum(cs_ext_discount_amt) AS excess_discount_amount +FROM {{source('src__tpc_ds', 'catalog_sales')}} , + {{source('src__tpc_ds', 'item')}} , + {{source('src__tpc_ds', 'date_dim')}} +WHERE i_manufact_id = 610 +AND i_item_sk = cs_item_sk +AND Cast(d_date AS DATE) BETWEEN Cast('2001-03-04' AS DATE) AND ( + Cast('2001-06-03' AS DATE)) +AND d_date_sk = cs_sold_date_sk +AND cs_ext_discount_amt > + ( + SELECT 1.3 * avg(cs_ext_discount_amt) + FROM {{source('src__tpc_ds', 'catalog_sales')}} , + {{source('src__tpc_ds', 'date_dim')}} + WHERE cs_item_sk = i_item_sk + AND Cast(d_date AS DATE) BETWEEN Cast('2001-03-04' AS DATE) AND ( + Cast('2001-06-03' AS DATE)) + AND d_date_sk = cs_sold_date_sk ) +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query33.sql b/dbt/models/tpc_ds/query33.sql new file mode 100644 index 0000000..7b72cf9 --- /dev/null +++ b/dbt/models/tpc_ds/query33.sql @@ -0,0 +1,67 @@ +-- query33 +WITH ss + AS (SELECT i_manufact_id, + Sum(ss_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_manufact_id IN (SELECT i_manufact_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_category IN ( 'Books' )) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 3 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + cs + AS (SELECT i_manufact_id, + Sum(cs_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_manufact_id IN (SELECT i_manufact_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_category IN ( 'Books' )) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 3 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + ws + AS (SELECT i_manufact_id, + Sum(ws_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_manufact_id IN (SELECT i_manufact_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_category IN ( 'Books' )) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 3 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_manufact_id, + Sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_manufact_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY total_sales +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query34.sql b/dbt/models/tpc_ds/query34.sql new file mode 100644 index 0000000..915332d --- /dev/null +++ b/dbt/models/tpc_ds/query34.sql @@ -0,0 +1,48 @@ +-- query34 +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM (SELECT ss_ticket_number, + ss_customer_sk, + Count(*) cnt + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'household_demographics')}} + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND ( date_dim.d_dom BETWEEN 1 AND 3 + OR date_dim.d_dom BETWEEN 25 AND 28 ) + AND ( household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = 'unknown' ) + AND household_demographics.hd_vehicle_count > 0 + AND ( CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN + household_demographics.hd_dep_count / + household_demographics.hd_vehicle_count + ELSE NULL + END ) > 1.2 + AND date_dim.d_year IN ( 1999, 1999 + 1, 1999 + 2 ) + AND store.s_county IN ( 'Williamson County', 'Williamson County', + 'Williamson County', + 'Williamson County' + , + 'Williamson County', 'Williamson County', + 'Williamson County', + 'Williamson County' + ) + GROUP BY ss_ticket_number, + ss_customer_sk) dn, + {{source('src__tpc_ds', 'customer')}} +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 15 AND 20 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag DESC{% endif %} + diff --git a/dbt/models/tpc_ds/query35.sql b/dbt/models/tpc_ds/query35.sql new file mode 100644 index 0000000..344fe82 --- /dev/null +++ b/dbt/models/tpc_ds/query35.sql @@ -0,0 +1,60 @@ +-- query35 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + Count(*) cnt1, + {{ stddev('cd_dep_count') }} as s{{ 'Stddev_samp' if target.type != 'synapse' else 'Stdev' }}_cd_dep_count, + Avg(cd_dep_count) as avg_cd_dep_count, + Max(cd_dep_count) as max_cd_dep_count, + cd_dep_employed_count, + Count(*) cnt2, + {{ stddev('cd_dep_employed_count') }} as {{ 'Stddev_samp' if target.type != 'synapse' else 'Stdev' }}_cd_dep_employed_count, + Avg(cd_dep_employed_count) as avg_cd_dep_employed_count, + Max(cd_dep_employed_count) as max_cd_dep_employed_count, + cd_dep_college_count, + Count(*) cnt3, + {{ stddev('cd_dep_college_count') }} {{ 'Stddev_samp' if target.type != 'synapse' else 'Stdev' }}_cd_dep_college_count, + Avg(cd_dep_college_count) as avg_cd_dep_college_count, + Max(cd_dep_college_count) as max_cd_dep_college_count +FROM {{source('src__tpc_ds', 'customer')}} c, + {{source('src__tpc_ds', 'customer_address')}} ca, + {{source('src__tpc_ds', 'customer_demographics')}} +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_qoy < 4) + AND ( EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_qoy < 4) + OR EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_qoy < 4) ) +GROUP BY ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query36.sql b/dbt/models/tpc_ds/query36.sql new file mode 100644 index 0000000..7d50599 --- /dev/null +++ b/dbt/models/tpc_ds/query36.sql @@ -0,0 +1,26 @@ +-- query36 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} Sum(ss_net_profit) / Sum(ss_ext_sales_price) AS + gross_margin, + i_category, + i_class, + Rank() + OVER ( + PARTITION BY i_category, i_class + ORDER BY Sum(ss_net_profit)/Sum(ss_ext_sales_price) ASC) AS + rank_within_parent +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} d1, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'store')}} +WHERE d1.d_year = 2000 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND s_state IN ( 'TN', 'TN', 'TN', 'TN', + 'TN', 'TN', 'TN', 'TN' ) +GROUP BY i_category, i_class +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_category, + rank_within_parent +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query37.sql b/dbt/models/tpc_ds/query37.sql new file mode 100644 index 0000000..899b029 --- /dev/null +++ b/dbt/models/tpc_ds/query37.sql @@ -0,0 +1,24 @@ +-- query37 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + i_item_id , + i_item_desc , + i_current_price +FROM {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'inventory')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'catalog_sales')}} +WHERE i_current_price BETWEEN 20 AND 20 + 30 +AND inv_item_sk = i_item_sk +AND d_date_sk=inv_date_sk +AND Cast(d_date AS DATE) BETWEEN Cast('1999-03-06' AS DATE) AND Cast('1999-05-06' AS DATE) +AND i_manufact_id IN (843,815,850,840) +AND inv_quantity_on_hand BETWEEN 100 AND 500 +AND cs_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query38.sql b/dbt/models/tpc_ds/query38.sql new file mode 100644 index 0000000..b4d7ad0 --- /dev/null +++ b/dbt/models/tpc_ds/query38.sql @@ -0,0 +1,37 @@ +-- query38 +WITH g1 AS ( + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer')}} + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1188 AND 1188 + 11 +), g2 AS ( + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer')}} + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1188 AND 1188 + 11 +), g3 AS ( + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer')}} + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1188 AND 1188 + 11 +) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} Count(*) as cnt +FROM g1 +JOIN g2 ON g1.c_last_name = g2.c_last_name AND g1.c_first_name = g2.c_first_name AND g1.d_date = g2.d_date +JOIN g3 ON g1.c_last_name = g3.c_last_name AND g1.c_first_name = g3.c_first_name AND g1.d_date = g3.d_date +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query39.sql b/dbt/models/tpc_ds/query39.sql new file mode 100644 index 0000000..90d67c3 --- /dev/null +++ b/dbt/models/tpc_ds/query39.sql @@ -0,0 +1,60 @@ +-- query39 +WITH inv + AS (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean + WHEN 0 THEN NULL + ELSE stdev / mean + END cov + FROM (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + {{ stddev('inv_quantity_on_hand') }} stdev, + Avg(inv_quantity_on_hand) mean + FROM {{source('src__tpc_ds', 'inventory')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'warehouse')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year = 2002 + GROUP BY w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy) foo + WHERE CASE mean + WHEN 0 THEN 0 + ELSE stdev / mean + END > 1) +SELECT inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + inv2.w_warehouse_sk AS w_warehouse_sk_2, + inv2.i_item_sk AS i_item_sk_2, + inv2.d_moy AS d_moy_2, + inv2.mean AS mean_2, + inv2.cov AS cov_2 +FROM inv inv1, + inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy = 1 + AND inv2.d_moy = 1 + 1 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + inv2.d_moy, + inv2.mean, + inv2.cov{% endif %} + diff --git a/dbt/models/tpc_ds/query40.sql b/dbt/models/tpc_ds/query40.sql new file mode 100644 index 0000000..ee56575 --- /dev/null +++ b/dbt/models/tpc_ds/query40.sql @@ -0,0 +1,37 @@ +-- query40 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + w_state , + i_item_id , + Sum( + CASE + WHEN ( + Cast(d_date AS DATE) < Cast ('2002-06-01' AS DATE)) THEN cs_sales_price - COALESCE(cr_refunded_cash,0) + ELSE 0 + END) AS sales_before , + Sum( + CASE + WHEN ( + Cast(d_date AS DATE) >= Cast ('2002-06-01' AS DATE)) THEN cs_sales_price - COALESCE(cr_refunded_cash,0) + ELSE 0 + END) AS sales_after +FROM {{source('src__tpc_ds', 'catalog_sales')}} +LEFT OUTER JOIN {{source('src__tpc_ds', 'catalog_returns')}} +ON ( + cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk) , + {{source('src__tpc_ds', 'warehouse')}} , + {{source('src__tpc_ds', 'item')}} , + {{source('src__tpc_ds', 'date_dim')}} +WHERE i_current_price BETWEEN 0.99 AND 1.49 +AND i_item_sk = cs_item_sk +AND cs_warehouse_sk = w_warehouse_sk +AND cs_sold_date_sk = d_date_sk +AND Cast(d_date AS DATE) BETWEEN (Cast ('2002-05-01' AS DATE)) AND cast ('2002-07-01' AS date) +GROUP BY w_state, + i_item_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY w_state, + i_item_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query41.sql b/dbt/models/tpc_ds/query41.sql new file mode 100644 index 0000000..9c4786f --- /dev/null +++ b/dbt/models/tpc_ds/query41.sql @@ -0,0 +1,68 @@ +-- query41 +SELECT Distinct {{ 'TOP 100' if target.name == 'synapse' }} i_product_name +FROM {{source('src__tpc_ds', 'item')}} i1 +WHERE i_manufact_id BETWEEN 765 AND 765 + 40 + AND (SELECT Count(*) AS item_cnt + FROM {{source('src__tpc_ds', 'item')}} + WHERE ( i_manufact = i1.i_manufact + AND ( ( i_category = 'Women' + AND ( i_color = 'dim' + OR i_color = 'green' ) + AND ( i_units = 'Gross' + OR i_units = 'Dozen' ) + AND ( i_size = 'economy' + OR i_size = 'petite' ) ) + OR ( i_category = 'Women' + AND ( i_color = 'navajo' + OR i_color = 'aquamarine' ) + AND ( i_units = 'Case' + OR i_units = 'Unknown' ) + AND ( i_size = 'large' + OR i_size = 'N/A' ) ) + OR ( i_category = 'Men' + AND ( i_color = 'indian' + OR i_color = 'dark' ) + AND ( i_units = 'Oz' + OR i_units = 'Lb' ) + AND ( i_size = 'extra large' + OR i_size = 'small' ) ) + OR ( i_category = 'Men' + AND ( i_color = 'peach' + OR i_color = 'purple' ) + AND ( i_units = 'Tbl' + OR i_units = 'Bunch' ) + AND ( i_size = 'economy' + OR i_size = 'petite' ) ) ) ) + OR ( i_manufact = i1.i_manufact + AND ( ( i_category = 'Women' + AND ( i_color = 'orchid' + OR i_color = 'peru' ) + AND ( i_units = 'Carton' + OR i_units = 'Cup' ) + AND ( i_size = 'economy' + OR i_size = 'petite' ) ) + OR ( i_category = 'Women' + AND ( i_color = 'violet' + OR i_color = 'papaya' ) + AND ( i_units = 'Ounce' + OR i_units = 'Box' ) + AND ( i_size = 'large' + OR i_size = 'N/A' ) ) + OR ( i_category = 'Men' + AND ( i_color = 'drab' + OR i_color = 'grey' ) + AND ( i_units = 'Each' + OR i_units = 'N/A' ) + AND ( i_size = 'extra large' + OR i_size = 'small' ) ) + OR ( i_category = 'Men' + AND ( i_color = 'chocolate' + OR i_color = 'antique' ) + AND ( i_units = 'Dram' + OR i_units = 'Gram' ) + AND ( i_size = 'economy' + OR i_size = 'petite' ) ) ) )) > 0 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_product_name +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query42.sql b/dbt/models/tpc_ds/query42.sql new file mode 100644 index 0000000..dcc5384 --- /dev/null +++ b/dbt/models/tpc_ds/query42.sql @@ -0,0 +1,21 @@ +-- query42 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} dt.d_year, + item.i_category_id, + item.i_category, + Sum(ss_ext_sales_price) as sum_ss_ext_sales_price +FROM {{source('src__tpc_ds', 'date_dim')}} dt, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}} +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy = 12 + AND dt.d_year = 2000 +GROUP BY dt.d_year, + item.i_category_id, + item.i_category +ORDER BY Sum(ss_ext_sales_price) DESC, + dt.d_year, + item.i_category_id, + item.i_category +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query43.sql b/dbt/models/tpc_ds/query43.sql new file mode 100644 index 0000000..73202ba --- /dev/null +++ b/dbt/models/tpc_ds/query43.sql @@ -0,0 +1,52 @@ +-- query43 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} s_store_name, + s_store_id, + Sum(CASE + WHEN ( d_day_name = 'Sunday' ) THEN ss_sales_price + ELSE NULL + END) sun_sales, + Sum(CASE + WHEN ( d_day_name = 'Monday' ) THEN ss_sales_price + ELSE NULL + END) mon_sales, + Sum(CASE + WHEN ( d_day_name = 'Tuesday' ) THEN ss_sales_price + ELSE NULL + END) tue_sales, + Sum(CASE + WHEN ( d_day_name = 'Wednesday' ) THEN ss_sales_price + ELSE NULL + END) wed_sales, + Sum(CASE + WHEN ( d_day_name = 'Thursday' ) THEN ss_sales_price + ELSE NULL + END) thu_sales, + Sum(CASE + WHEN ( d_day_name = 'Friday' ) THEN ss_sales_price + ELSE NULL + END) fri_sales, + Sum(CASE + WHEN ( d_day_name = 'Saturday' ) THEN ss_sales_price + ELSE NULL + END) sat_sales +FROM {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store')}} +WHERE d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_gmt_offset = -5 + AND d_year = 2002 +GROUP BY s_store_name, + s_store_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY s_store_name, + s_store_id, + sun_sales, + mon_sales, + tue_sales, + wed_sales, + thu_sales, + fri_sales, + sat_sales +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query44.sql b/dbt/models/tpc_ds/query44.sql new file mode 100644 index 0000000..a5e3ed2 --- /dev/null +++ b/dbt/models/tpc_ds/query44.sql @@ -0,0 +1,53 @@ +-- query44 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} asceding.rnk, + i1.i_product_name best_performing, + i2.i_product_name worst_performing +FROM (SELECT * + FROM (SELECT item_sk, + Rank() + OVER ( + ORDER BY rank_col ASC) rnk + FROM (SELECT ss_item_sk item_sk, + Avg(ss_net_profit) rank_col + FROM {{source('src__tpc_ds', 'store_sales')}} ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING Avg(ss_net_profit) > 0.9 * + (SELECT Avg(ss_net_profit) + rank_col + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_store_sk = 4 + AND ss_cdemo_sk IS + NULL + GROUP BY ss_store_sk))V1) + V11 + WHERE rnk < 11) asceding, + (SELECT * + FROM (SELECT item_sk, + Rank() + OVER ( + ORDER BY rank_col DESC) rnk + FROM (SELECT ss_item_sk item_sk, + Avg(ss_net_profit) rank_col + FROM {{source('src__tpc_ds', 'store_sales')}} ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING Avg(ss_net_profit) > 0.9 * + (SELECT Avg(ss_net_profit) + rank_col + FROM {{source('src__tpc_ds', 'store_sales')}} + WHERE ss_store_sk = 4 + AND ss_cdemo_sk IS + NULL + GROUP BY ss_store_sk))V2) + V21 + WHERE rnk < 11) descending, + {{source('src__tpc_ds', 'item')}} i1, + {{source('src__tpc_ds', 'item')}} i2 +WHERE asceding.rnk = descending.rnk + AND i1.i_item_sk = asceding.item_sk + AND i2.i_item_sk = descending.item_sk +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY asceding.rnk +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query45.sql b/dbt/models/tpc_ds/query45.sql new file mode 100644 index 0000000..dd5515f --- /dev/null +++ b/dbt/models/tpc_ds/query45.sql @@ -0,0 +1,30 @@ +-- query45 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} ca_zip, + ca_state, + Sum(ws_sales_price) as sum_ws_sales_price +FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'item')}} +WHERE ws_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ws_item_sk = i_item_sk + AND ( {{ substr('ca_zip', 1, 5) }} IN ( '85669', '86197', '88274', '83405', + '86475', '85392', '85460', '80348', + '81792' ) + OR i_item_id IN (SELECT i_item_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_item_sk IN ( 2, 3, 5, 7, + 11, 13, 17, 19, + 23, 29 )) ) + AND ws_sold_date_sk = d_date_sk + AND d_qoy = 1 + AND d_year = 2000 +GROUP BY ca_zip, + ca_state +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ca_zip, + ca_state +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query46.sql b/dbt/models/tpc_ds/query46.sql new file mode 100644 index 0000000..1ba2224 --- /dev/null +++ b/dbt/models/tpc_ds/query46.sql @@ -0,0 +1,46 @@ +-- query46 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + amt, + profit +FROM (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + Sum(ss_coupon_amt) amt, + Sum(ss_net_profit) profit + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'household_demographics')}}, + {{source('src__tpc_ds', 'customer_address')}} + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND ( household_demographics.hd_dep_count = 6 + OR household_demographics.hd_vehicle_count = 0 ) + AND date_dim.d_dow IN ( 6, 0 ) + AND date_dim.d_year IN ( 2000, 2000 + 1, 2000 + 2 ) + AND store.s_city IN ( 'Midway', 'Fairview', 'Fairview', + 'Fairview', + 'Fairview' ) + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}} current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query47.sql b/dbt/models/tpc_ds/query47.sql new file mode 100644 index 0000000..8fcaa1f --- /dev/null +++ b/dbt/models/tpc_ds/query47.sql @@ -0,0 +1,74 @@ +-- query47 +WITH v1 + AS (SELECT i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy, + Sum(ss_sales_price) sum_sales, + Avg(Sum(ss_sales_price)) + OVER ( + partition BY i_category, i_brand, s_store_name, + s_company_name, + d_year) + avg_monthly_sales, + Rank() + OVER ( + partition BY i_category, i_brand, s_store_name, + s_company_name + ORDER BY d_year, d_moy) rn + FROM {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}} + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ( d_year = 1999 + OR ( d_year = 1999 - 1 + AND d_moy = 12 ) + OR ( d_year = 1999 + 1 + AND d_moy = 1 ) ) + GROUP BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy), + v2 + AS (SELECT v1.i_category, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1.s_store_name = v1_lag.s_store_name + AND v1.s_store_name = v1_lead.s_store_name + AND v1.s_company_name = v1_lag.s_company_name + AND v1.s_company_name = v1_lead.s_company_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN Abs(sum_sales - avg_monthly_sales) + / + avg_monthly_sales + ELSE NULL + END > 0.1 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY sum_sales - avg_monthly_sales, + 3 +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query48.sql b/dbt/models/tpc_ds/query48.sql new file mode 100644 index 0000000..4d7a4a8 --- /dev/null +++ b/dbt/models/tpc_ds/query48.sql @@ -0,0 +1,34 @@ +-- query48 +SELECT Sum (ss_quantity) as sumq +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'customer_demographics')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'date_dim')}} +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND ( ( cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'W' + AND cd_education_status = 'Secondary' + AND ss_sales_price BETWEEN 100.00 AND 150.00 ) + OR ( cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 50.00 AND 100.00 ) + OR ( cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 150.00 AND 200.00 ) ) + AND ( ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'TX', 'NE', 'MO' ) + AND ss_net_profit BETWEEN 0 AND 2000 ) + OR ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'CO', 'TN', 'ND' ) + AND ss_net_profit BETWEEN 150 AND 3000 ) + OR ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'OK', 'PA', 'CA' ) + AND ss_net_profit BETWEEN 50 AND 25000 ) ) diff --git a/dbt/models/tpc_ds/query49.sql b/dbt/models/tpc_ds/query49.sql new file mode 100644 index 0000000..77d6860 --- /dev/null +++ b/dbt/models/tpc_ds/query49.sql @@ -0,0 +1,119 @@ +-- query49 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} 'web' AS channel, + web.item, + web.return_ratio, + web.return_rank, + web.currency_rank +FROM (SELECT item, + return_ratio, + currency_ratio, + Rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + Rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM (SELECT ws.ws_item_sk AS item, + ( Sum(COALESCE(wr.wr_return_quantity, 0)) / + Sum(COALESCE(ws.ws_quantity, 0)) ) AS + return_ratio, + ( Sum(COALESCE(wr.wr_return_amt, 0)) / + Sum(COALESCE(ws.ws_net_paid, 0)) ) AS currency_ratio + FROM {{source('src__tpc_ds', 'web_sales')}} ws + LEFT OUTER JOIN {{source('src__tpc_ds', 'web_returns')}} wr + ON ( ws.ws_order_number = wr.wr_order_number + AND ws.ws_item_sk = wr.wr_item_sk ), + {{source('src__tpc_ds', 'date_dim')}} + WHERE wr.wr_return_amt > 10000 + AND ws.ws_net_profit > 1 + AND ws.ws_net_paid > 0 + AND ws.ws_quantity > 0 + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 12 + GROUP BY ws.ws_item_sk) in_web) web +WHERE ( web.return_rank <= 10 + OR web.currency_rank <= 10 ) +UNION ALL +SELECT 'catalog' AS channel, + catalog.item, + catalog.return_ratio, + catalog.return_rank, + catalog.currency_rank +FROM (SELECT item, + return_ratio, + currency_ratio, + Rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + Rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM (SELECT cs.cs_item_sk AS + item, + ( Sum(COALESCE(cr.cr_return_quantity, 0)) / + Sum(COALESCE(cs.cs_quantity, 0)) ) AS + return_ratio, + ( Sum(COALESCE(cr.cr_return_amount, 0)) / + Sum(COALESCE(cs.cs_net_paid, 0)) ) AS + currency_ratio + FROM {{source('src__tpc_ds', 'catalog_sales')}} cs + LEFT OUTER JOIN {{source('src__tpc_ds', 'catalog_returns')}} cr + ON ( cs.cs_order_number = cr.cr_order_number + AND cs.cs_item_sk = cr.cr_item_sk ), + {{source('src__tpc_ds', 'date_dim')}} + WHERE cr.cr_return_amount > 10000 + AND cs.cs_net_profit > 1 + AND cs.cs_net_paid > 0 + AND cs.cs_quantity > 0 + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 12 + GROUP BY cs.cs_item_sk) in_cat) catalog +WHERE ( catalog.return_rank <= 10 + OR catalog.currency_rank <= 10 ) +UNION ALL +SELECT 'store' AS channel, + store.item, + store.return_ratio, + store.return_rank, + store.currency_rank +FROM (SELECT item, + return_ratio, + currency_ratio, + Rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + Rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM (SELECT sts.ss_item_sk AS + item, + ( Sum(COALESCE(sr.sr_return_quantity, 0)) / + Sum(COALESCE(sts.ss_quantity, 0)) ) AS + return_ratio, + ( Sum(COALESCE(sr.sr_return_amt, 0)) + / Sum(COALESCE(sts.ss_net_paid, 0)) ) AS + currency_ratio + FROM {{source('src__tpc_ds', 'store_sales')}} sts + LEFT OUTER JOIN {{source('src__tpc_ds', 'store_returns')}} sr + ON ( sts.ss_ticket_number = + sr.sr_ticket_number + AND sts.ss_item_sk = sr.sr_item_sk ), + {{source('src__tpc_ds', 'date_dim')}} + WHERE sr.sr_return_amt > 10000 + AND sts.ss_net_profit > 1 + AND sts.ss_net_paid > 0 + AND sts.ss_quantity > 0 + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 12 + GROUP BY sts.ss_item_sk) in_store) store +WHERE ( store.return_rank <= 10 + OR store.currency_rank <= 10 ) +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY 1, + 4, + 5 +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query50.sql b/dbt/models/tpc_ds/query50.sql new file mode 100644 index 0000000..ebd646b --- /dev/null +++ b/dbt/models/tpc_ds/query50.sql @@ -0,0 +1,73 @@ +-- query50 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip, + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk <= 30 ) THEN 1 + ELSE 0 + END) AS days_30, + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk > 30 ) + AND ( sr_returned_date_sk - ss_sold_date_sk <= 60 ) + THEN 1 + ELSE 0 + END) AS days_31_60, + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk > 60 ) + AND ( sr_returned_date_sk - ss_sold_date_sk <= 90 ) + THEN 1 + ELSE 0 + END) AS days_61_90, + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk > 90 ) + AND ( sr_returned_date_sk - ss_sold_date_sk <= 120 ) + THEN 1 + ELSE 0 + END) AS days_91_120, + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk > 120 ) THEN 1 + ELSE 0 + END) AS days_over_120 +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store_returns')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'date_dim')}} d1, + {{source('src__tpc_ds', 'date_dim')}} d2 +WHERE d2.d_year = 2002 + AND d2.d_moy = 9 + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND sr_returned_date_sk = d2.d_date_sk + AND ss_customer_sk = sr_customer_sk + AND ss_store_sk = s_store_sk +GROUP BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query51.sql b/dbt/models/tpc_ds/query51.sql new file mode 100644 index 0000000..62dfdb1 --- /dev/null +++ b/dbt/models/tpc_ds/query51.sql @@ -0,0 +1,58 @@ +-- query51 +WITH web_v1 AS +( + SELECT ws_item_sk item_sk, + d_date, + sum(Sum(ws_sales_price)) OVER (partition BY ws_item_sk ORDER BY d_date rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) cume_sales + FROM {{source('src__tpc_ds', 'web_sales')}} , + {{source('src__tpc_ds', 'date_dim')}} + WHERE ws_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1192 AND 1192+11 + AND ws_item_sk IS NOT NULL + GROUP BY ws_item_sk, + d_date), store_v1 AS +( + SELECT ss_item_sk item_sk, + d_date, + sum(sum(ss_sales_price)) OVER (partition BY ss_item_sk ORDER BY d_date rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) cume_sales + FROM {{source('src__tpc_ds', 'store_sales')}} , + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1192 AND 1192+11 + AND ss_item_sk IS NOT NULL + GROUP BY ss_item_sk, + d_date) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + * +FROM ( + SELECT item_sk , + d_date , + web_sales , + store_sales , + max(web_sales) OVER (partition BY item_sk ORDER BY d_date rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) web_cumulative , + max(store_sales) OVER (partition BY item_sk ORDER BY d_date rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) store_cumulative + FROM ( + SELECT + CASE + WHEN web.item_sk IS NOT NULL THEN web.item_sk + ELSE store.item_sk + END item_sk , + CASE + WHEN web.d_date IS NOT NULL THEN web.d_date + ELSE store.d_date + END d_date , + web.cume_sales web_sales , + + store.cume_sales store_sales + + FROM web_v1 web + FULL OUTER JOIN store_v1 store + ON ( + web.item_sk = store.item_sk + AND web.d_date = store.d_date) )x )y +WHERE web_cumulative > store_cumulative +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY item_sk , + d_date +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query52.sql b/dbt/models/tpc_ds/query52.sql new file mode 100644 index 0000000..c79bfe8 --- /dev/null +++ b/dbt/models/tpc_ds/query52.sql @@ -0,0 +1,22 @@ +-- query52 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + Sum(ss_ext_sales_price) ext_price +FROM {{source('src__tpc_ds', 'date_dim')}} dt, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}} +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy = 11 + AND dt.d_year = 1999 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY dt.d_year, + ext_price DESC, + brand_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query53.sql b/dbt/models/tpc_ds/query53.sql new file mode 100644 index 0000000..a0be911 --- /dev/null +++ b/dbt/models/tpc_ds/query53.sql @@ -0,0 +1,48 @@ +-- query53 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} * +FROM (SELECT i_manufact_id, + Sum(ss_sales_price) sum_sales, + Avg(Sum(ss_sales_price)) + OVER ( + partition BY i_manufact_id) avg_quarterly_sales + FROM {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}} + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN ( 1199, 1199 + 1, 1199 + 2, 1199 + 3, + 1199 + 4, 1199 + 5, 1199 + 6, 1199 + 7, + 1199 + 8, 1199 + 9, 1199 + 10, 1199 + 11 ) + AND ( ( i_category IN ( 'Books', 'Children', 'Electronics' ) + AND i_class IN ( 'personal', 'portable', 'reference', + 'self-help' ) + AND i_brand IN ( 'scholaramalgamalg #14', + 'scholaramalgamalg #7' + , + 'exportiunivamalg #9', + 'scholaramalgamalg #9' ) + ) + OR ( i_category IN ( 'Women', 'Music', 'Men' ) + AND i_class IN ( 'accessories', 'classical', + 'fragrances', + 'pants' ) + AND i_brand IN ( 'amalgimporto #1', + 'edu packscholar #1', + 'exportiimporto #1', + 'importoamalg #1' ) ) ) + GROUP BY i_manufact_id, + d_qoy) tmp1 +WHERE CASE + WHEN avg_quarterly_sales > 0 THEN Abs (sum_sales - avg_quarterly_sales) + / + avg_quarterly_sales + ELSE NULL + END > 0.1 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY avg_quarterly_sales, + sum_sales, + i_manufact_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query54.sql b/dbt/models/tpc_ds/query54.sql new file mode 100644 index 0000000..7de2e70 --- /dev/null +++ b/dbt/models/tpc_ds/query54.sql @@ -0,0 +1,59 @@ +-- query54 +WITH my_customers + AS (SELECT DISTINCT c_customer_sk, + c_current_addr_sk + FROM (SELECT cs_sold_date_sk sold_date_sk, + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM {{source('src__tpc_ds', 'catalog_sales')}} + UNION ALL + SELECT ws_sold_date_sk sold_date_sk, + ws_bill_customer_sk customer_sk, + ws_item_sk item_sk + FROM {{source('src__tpc_ds', 'web_sales')}}) cs_or_ws_sales, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer')}} + WHERE sold_date_sk = d_date_sk + AND item_sk = i_item_sk + AND i_category = 'Sports' + AND i_class = 'fitness' + AND c_customer_sk = cs_or_ws_sales.customer_sk + AND d_moy = 5 + AND d_year = 2000), + my_revenue + AS (SELECT c_customer_sk, + Sum(ss_ext_sales_price) AS revenue + FROM my_customers, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c_current_addr_sk = ca_address_sk + AND ca_county = s_county + AND ca_state = s_state + AND ss_sold_date_sk = d_date_sk + AND c_customer_sk = ss_customer_sk + AND d_month_seq BETWEEN (SELECT DISTINCT d_month_seq + 1 + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_year = 2000 + AND d_moy = 5) AND + (SELECT DISTINCT + d_month_seq + 3 + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_year = 2000 + AND d_moy = 5) + GROUP BY c_customer_sk), + segments + AS (SELECT Floor(revenue / 50) AS segment + FROM my_revenue) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} segment, + Count(*) AS num_customers, + segment * 50 AS segment_base +FROM segments +GROUP BY segment +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY segment, + num_customers +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query55.sql b/dbt/models/tpc_ds/query55.sql new file mode 100644 index 0000000..bb13bde --- /dev/null +++ b/dbt/models/tpc_ds/query55.sql @@ -0,0 +1,19 @@ +-- query55 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_brand_id brand_id, + i_brand brand, + Sum(ss_ext_sales_price) ext_price +FROM {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}} +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id = 33 + AND d_moy = 12 + AND d_year = 1998 +GROUP BY i_brand, + i_brand_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ext_price DESC, + i_brand_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query56.sql b/dbt/models/tpc_ds/query56.sql new file mode 100644 index 0000000..59c0fcf --- /dev/null +++ b/dbt/models/tpc_ds/query56.sql @@ -0,0 +1,70 @@ +-- query56 +WITH ss + AS (SELECT i_item_id, + Sum(ss_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_item_id IN (SELECT i_item_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_color IN ( 'firebrick', 'rosy', 'white' ) + ) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 3 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id), + cs + AS (SELECT i_item_id, + Sum(cs_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_item_id IN (SELECT i_item_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_color IN ( 'firebrick', 'rosy', 'white' ) + ) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 3 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id), + ws + AS (SELECT i_item_id, + Sum(ws_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_item_id IN (SELECT i_item_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_color IN ( 'firebrick', 'rosy', 'white' ) + ) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 3 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_id, + Sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY total_sales +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query57.sql b/dbt/models/tpc_ds/query57.sql new file mode 100644 index 0000000..2487d3c --- /dev/null +++ b/dbt/models/tpc_ds/query57.sql @@ -0,0 +1,68 @@ +-- query57 +WITH v1 + AS (SELECT i_category, + i_brand, + cc_name, + d_year, + d_moy, + Sum(cs_sales_price) sum_sales + , + Avg(Sum(cs_sales_price)) + OVER ( + partition BY i_category, i_brand, cc_name, d_year) + avg_monthly_sales + , + Rank() + OVER ( + partition BY i_category, i_brand, cc_name + ORDER BY d_year, d_moy) rn + FROM {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'call_center')}} + WHERE cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND cc_call_center_sk = cs_call_center_sk + AND ( d_year = 2000 + OR ( d_year = 2000 - 1 + AND d_moy = 12 ) + OR ( d_year = 2000 + 1 + AND d_moy = 1 ) ) + GROUP BY i_category, + i_brand, + cc_name, + d_year, + d_moy), + v2 + AS (SELECT v1.i_brand, + v1.d_year, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1. cc_name = v1_lag. cc_name + AND v1. cc_name = v1_lead. cc_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} * +FROM v2 +WHERE d_year = 2000 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN Abs(sum_sales - avg_monthly_sales) + / + avg_monthly_sales + ELSE NULL + END > 0.1 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY sum_sales - avg_monthly_sales, + 3 +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query58.sql b/dbt/models/tpc_ds/query58.sql new file mode 100644 index 0000000..11e1cd5 --- /dev/null +++ b/dbt/models/tpc_ds/query58.sql @@ -0,0 +1,74 @@ +-- query58 +WITH ss_items + AS (SELECT i_item_id item_id, + Sum(ss_ext_sales_price) ss_item_rev + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_week_seq = (SELECT d_week_seq + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_date = '2002-02-25' + )) + AND ss_sold_date_sk = d_date_sk + GROUP BY i_item_id), + cs_items + AS (SELECT i_item_id item_id, + Sum(cs_ext_sales_price) cs_item_rev + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE cs_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_week_seq = (SELECT d_week_seq + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_date = '2002-02-25' + )) + AND cs_sold_date_sk = d_date_sk + GROUP BY i_item_id), + ws_items + AS (SELECT i_item_id item_id, + Sum(ws_ext_sales_price) ws_item_rev + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ws_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_week_seq = (SELECT d_week_seq + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_date = '2002-02-25' + )) + AND ws_sold_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} ss_items.item_id, + ss_item_rev, + ss_item_rev / ( ss_item_rev + cs_item_rev + ws_item_rev ) / 3 * + 100 ss_dev, + cs_item_rev, + cs_item_rev / ( ss_item_rev + cs_item_rev + ws_item_rev ) / 3 * + 100 cs_dev, + ws_item_rev, + ws_item_rev / ( ss_item_rev + cs_item_rev + ws_item_rev ) / 3 * + 100 ws_dev, + ( ss_item_rev + cs_item_rev + ws_item_rev ) / 3 + average +FROM ss_items, + cs_items, + ws_items +WHERE ss_items.item_id = cs_items.item_id + AND ss_items.item_id = ws_items.item_id + AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev + AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY item_id, + ss_item_rev +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query59.sql b/dbt/models/tpc_ds/query59.sql new file mode 100644 index 0000000..f9475a9 --- /dev/null +++ b/dbt/models/tpc_ds/query59.sql @@ -0,0 +1,87 @@ +-- query59 +WITH wss + AS (SELECT d_week_seq, + ss_store_sk, + Sum(CASE + WHEN ( d_day_name = 'Sunday' ) THEN ss_sales_price + ELSE NULL + END) sun_sales, + Sum(CASE + WHEN ( d_day_name = 'Monday' ) THEN ss_sales_price + ELSE NULL + END) mon_sales, + Sum(CASE + WHEN ( d_day_name = 'Tuesday' ) THEN ss_sales_price + ELSE NULL + END) tue_sales, + Sum(CASE + WHEN ( d_day_name = 'Wednesday' ) THEN ss_sales_price + ELSE NULL + END) wed_sales, + Sum(CASE + WHEN ( d_day_name = 'Thursday' ) THEN ss_sales_price + ELSE NULL + END) thu_sales, + Sum(CASE + WHEN ( d_day_name = 'Friday' ) THEN ss_sales_price + ELSE NULL + END) fri_sales, + Sum(CASE + WHEN ( d_day_name = 'Saturday' ) THEN ss_sales_price + ELSE NULL + END) sat_sales + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE d_date_sk = ss_sold_date_sk + GROUP BY d_week_seq, + ss_store_sk) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} s_store_name1, + s_store_id1, + d_week_seq1, + sun_sales1 / sun_sales2 as sun_sales1_div_sun_sales2 , + mon_sales1 / mon_sales2 as mon_sales1_div_mon_sales2 , + tue_sales1 / tue_sales2 as tue_sales1_div_tue_sales2 , + wed_sales1 / wed_sales2 as wed_sales1_div_wed_sales2 , + thu_sales1 / thu_sales2 as thu_sales1_div_thu_sales2 , + fri_sales1 / fri_sales2 as fri_sales1_div_fri_sales2 , + sat_sales1 / sat_sales2 as sat_sales1_div_sat_sales2 +FROM (SELECT s_store_name s_store_name1, + wss.d_week_seq d_week_seq1, + s_store_id s_store_id1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wss, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'date_dim')}} d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1196 AND 1196 + 11) y, + (SELECT s_store_name s_store_name2, + wss.d_week_seq d_week_seq2, + s_store_id s_store_id2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wss, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'date_dim')}} d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1196 + 12 AND 1196 + 23) x +WHERE s_store_id1 = s_store_id2 + AND d_week_seq1 = d_week_seq2 - 52 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY s_store_name1, + s_store_id1, + d_week_seq1 +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query60.sql b/dbt/models/tpc_ds/query60.sql new file mode 100644 index 0000000..dcec19a --- /dev/null +++ b/dbt/models/tpc_ds/query60.sql @@ -0,0 +1,68 @@ +-- query60 +WITH ss + AS (SELECT i_item_id, + Sum(ss_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_item_id IN (SELECT i_item_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_category IN ( 'Jewelry' )) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 8 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id), + cs + AS (SELECT i_item_id, + Sum(cs_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_item_id IN (SELECT i_item_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_category IN ( 'Jewelry' )) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 8 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id), + ws + AS (SELECT i_item_id, + Sum(ws_ext_sales_price) total_sales + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE i_item_id IN (SELECT i_item_id + FROM {{source('src__tpc_ds', 'item')}} + WHERE i_category IN ( 'Jewelry' )) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 8 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_id, + Sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id, + total_sales +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query61.sql b/dbt/models/tpc_ds/query61.sql new file mode 100644 index 0000000..82cb843 --- /dev/null +++ b/dbt/models/tpc_ds/query61.sql @@ -0,0 +1,49 @@ +-- query61 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} promotions, + total, + promotions / + total * 100 as pct +FROM (SELECT Sum(ss_ext_sales_price) promotions + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'promotion')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_promo_sk = p_promo_sk + AND ss_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -7 + AND i_category = 'Books' + AND ( p_channel_dmail = 'Y' + OR p_channel_email = 'Y' + OR p_channel_tv = 'Y' ) + AND s_gmt_offset = -7 + AND d_year = 2001 + AND d_moy = 12) promotional_sales, + (SELECT Sum(ss_ext_sales_price) total + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'item')}} + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -7 + AND i_category = 'Books' + AND s_gmt_offset = -7 + AND d_year = 2001 + AND d_moy = 12) all_sales +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY promotions, + total +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query62.sql b/dbt/models/tpc_ds/query62.sql new file mode 100644 index 0000000..ca90bd4 --- /dev/null +++ b/dbt/models/tpc_ds/query62.sql @@ -0,0 +1,47 @@ +-- query62 +SELECT {{ substr('w_warehouse_name', 1, 20) }} as substrname, + sm_type, + web_name, + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk <= 30 ) THEN 1 + ELSE 0 + END) AS days_30, + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk > 30 ) + AND ( ws_ship_date_sk - ws_sold_date_sk <= 60 ) THEN 1 + ELSE 0 + END) AS days_31_60, + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk > 60 ) + AND ( ws_ship_date_sk - ws_sold_date_sk <= 90 ) THEN 1 + ELSE 0 + END) AS days_61_90, + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk > 90 ) + AND ( ws_ship_date_sk - ws_sold_date_sk <= 120 ) THEN + 1 + ELSE 0 + END) AS days_91_120, + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk > 120 ) THEN 1 + ELSE 0 + END) AS days_over_120 +FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'warehouse')}}, + {{source('src__tpc_ds', 'ship_mode')}}, + {{source('src__tpc_ds', 'web_site')}}, + {{source('src__tpc_ds', 'date_dim')}} +WHERE d_month_seq BETWEEN 1222 AND 1222 + 11 + AND ws_ship_date_sk = d_date_sk + AND ws_warehouse_sk = w_warehouse_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND ws_web_site_sk = web_site_sk +GROUP BY {{ substr('w_warehouse_name', 1, 20) }}, + sm_type, + web_name +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY 1, + sm_type, + web_name +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query63.sql b/dbt/models/tpc_ds/query63.sql new file mode 100644 index 0000000..3552fe8 --- /dev/null +++ b/dbt/models/tpc_ds/query63.sql @@ -0,0 +1,47 @@ +-- query63 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} * +FROM (SELECT i_manager_id, + Sum(ss_sales_price) sum_sales, + Avg(Sum(ss_sales_price)) + OVER ( + partition BY i_manager_id) avg_monthly_sales + FROM {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}} + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN ( 1200, 1200 + 1, 1200 + 2, 1200 + 3, + 1200 + 4, 1200 + 5, 1200 + 6, 1200 + 7, + 1200 + 8, 1200 + 9, 1200 + 10, 1200 + 11 ) + AND ( ( i_category IN ( 'Books', 'Children', 'Electronics' ) + AND i_class IN ( 'personal', 'portable', 'reference', + 'self-help' ) + AND i_brand IN ( 'scholaramalgamalg #14', + 'scholaramalgamalg #7' + , + 'exportiunivamalg #9', + 'scholaramalgamalg #9' ) + ) + OR ( i_category IN ( 'Women', 'Music', 'Men' ) + AND i_class IN ( 'accessories', 'classical', + 'fragrances', + 'pants' ) + AND i_brand IN ( 'amalgimporto #1', + 'edu packscholar #1', + 'exportiimporto #1', + 'importoamalg #1' ) ) ) + GROUP BY i_manager_id, + d_moy) tmp1 +WHERE CASE + WHEN avg_monthly_sales > 0 THEN Abs (sum_sales - avg_monthly_sales) / + avg_monthly_sales + ELSE NULL + END > 0.1 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_manager_id, + avg_monthly_sales, + sum_sales +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query64.sql b/dbt/models/tpc_ds/query64.sql new file mode 100644 index 0000000..291b089 --- /dev/null +++ b/dbt/models/tpc_ds/query64.sql @@ -0,0 +1,124 @@ +-- query64 +WITH cs_ui + AS (SELECT cs_item_sk, + Sum(cs_ext_list_price) AS sale, + Sum(cr_refunded_cash + cr_reversed_charge + + cr_store_credit) AS refund + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'catalog_returns')}} + WHERE cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number + GROUP BY cs_item_sk + HAVING Sum(cs_ext_list_price) > 2 * Sum( + cr_refunded_cash + cr_reversed_charge + + cr_store_credit)), + cross_sales + AS (SELECT i_product_name product_name, + i_item_sk item_sk, + s_store_name store_name, + s_zip store_zip, + ad1.ca_street_number b_street_number, + ad1.ca_street_name b_streen_name, + ad1.ca_city b_city, + ad1.ca_zip b_zip, + ad2.ca_street_number c_street_number, + ad2.ca_street_name c_street_name, + ad2.ca_city c_city, + ad2.ca_zip c_zip, + d1.d_year AS syear, + d2.d_year AS fsyear, + d3.d_year s2year, + Count(*) cnt, + Sum(ss_wholesale_cost) s1, + Sum(ss_list_price) s2, + Sum(ss_coupon_amt) s3 + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store_returns')}}, + cs_ui, + {{source('src__tpc_ds', 'date_dim')}} d1, + {{source('src__tpc_ds', 'date_dim')}} d2, + {{source('src__tpc_ds', 'date_dim')}} d3, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_demographics')}} cd1, + {{source('src__tpc_ds', 'customer_demographics')}} cd2, + {{source('src__tpc_ds', 'promotion')}}, + {{source('src__tpc_ds', 'household_demographics')}} hd1, + {{source('src__tpc_ds', 'household_demographics')}} hd2, + {{source('src__tpc_ds', 'customer_address')}} ad1, + {{source('src__tpc_ds', 'customer_address')}} ad2, + {{source('src__tpc_ds', 'income_band')}} ib1, + {{source('src__tpc_ds', 'income_band')}} ib2, + {{source('src__tpc_ds', 'item')}} + WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d1.d_date_sk + AND ss_customer_sk = c_customer_sk + AND ss_cdemo_sk = cd1.cd_demo_sk + AND ss_hdemo_sk = hd1.hd_demo_sk + AND ss_addr_sk = ad1.ca_address_sk + AND ss_item_sk = i_item_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = cs_ui.cs_item_sk + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_hdemo_sk = hd2.hd_demo_sk + AND c_current_addr_sk = ad2.ca_address_sk + AND c_first_sales_date_sk = d2.d_date_sk + AND c_first_shipto_date_sk = d3.d_date_sk + AND ss_promo_sk = p_promo_sk + AND hd1.hd_income_band_sk = ib1.ib_income_band_sk + AND hd2.hd_income_band_sk = ib2.ib_income_band_sk + AND cd1.cd_marital_status <> cd2.cd_marital_status + AND i_color IN ( 'cyan', 'peach', 'blush', 'frosted', + 'powder', 'orange' ) + AND i_current_price BETWEEN 58 AND 58 + 10 + AND i_current_price BETWEEN 58 + 1 AND 58 + 15 + GROUP BY i_product_name, + i_item_sk, + s_store_name, + s_zip, + ad1.ca_street_number, + ad1.ca_street_name, + ad1.ca_city, + ad1.ca_zip, + ad2.ca_street_number, + ad2.ca_street_name, + ad2.ca_city, + ad2.ca_zip, + d1.d_year, + d2.d_year, + d3.d_year) +SELECT cs1.product_name, + cs1.store_name, + cs1.store_zip, + cs1.b_street_number, + cs1.b_streen_name, + cs1.b_city, + cs1.b_zip, + cs1.c_street_number, + cs1.c_street_name, + cs1.c_city, + cs1.c_zip, + cs1.syear, + cs1.cnt, + cs1.s1, + cs1.s2, + cs1.s3, + cs2.s1 AS s1_, + cs2.s2 AS s2_, + cs2.s3 AS s3_, + cs2.syear AS syear_, + cs2.cnt AS cnt_ +FROM cross_sales cs1, + cross_sales cs2 +WHERE cs1.item_sk = cs2.item_sk + AND cs1.syear = 2001 + AND cs2.syear = 2001 + 1 + AND cs2.cnt <= cs1.cnt + AND cs1.store_name = cs2.store_name + AND cs1.store_zip = cs2.store_zip +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY cs1.product_name, + cs1.store_name, + cs2.cnt{% endif %} + diff --git a/dbt/models/tpc_ds/query65.sql b/dbt/models/tpc_ds/query65.sql new file mode 100644 index 0000000..84d8b74 --- /dev/null +++ b/dbt/models/tpc_ds/query65.sql @@ -0,0 +1,39 @@ +-- query65 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} s_store_name, + i_item_desc, + sc.revenue, + i_current_price, + i_wholesale_cost, + i_brand +FROM {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'item')}}, + (SELECT ss_store_sk, + Avg(revenue) AS ave + FROM (SELECT ss_store_sk, + ss_item_sk, + Sum(ss_sales_price) AS revenue + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1199 AND 1199 + 11 + GROUP BY ss_store_sk, + ss_item_sk) sa + GROUP BY ss_store_sk) sb, + (SELECT ss_store_sk, + ss_item_sk, + Sum(ss_sales_price) AS revenue + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1199 AND 1199 + 11 + GROUP BY ss_store_sk, + ss_item_sk) sc +WHERE sb.ss_store_sk = sc.ss_store_sk + AND sc.revenue <= 0.1 * sb.ave + AND s_store_sk = sc.ss_store_sk + AND i_item_sk = sc.ss_item_sk +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY s_store_name, + i_item_desc +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query66.sql b/dbt/models/tpc_ds/query66.sql new file mode 100644 index 0000000..b1195c0 --- /dev/null +++ b/dbt/models/tpc_ds/query66.sql @@ -0,0 +1,304 @@ +-- query66 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + ship_carriers, + year1, + Sum(jan_sales) AS jan_sales, + Sum(feb_sales) AS feb_sales, + Sum(mar_sales) AS mar_sales, + Sum(apr_sales) AS apr_sales, + Sum(may_sales) AS may_sales, + Sum(jun_sales) AS jun_sales, + Sum(jul_sales) AS jul_sales, + Sum(aug_sales) AS aug_sales, + Sum(sep_sales) AS sep_sales, + Sum(oct_sales) AS oct_sales, + Sum(nov_sales) AS nov_sales, + Sum(dec_sales) AS dec_sales, + Sum(jan_sales / w_warehouse_sq_ft) AS jan_sales_per_sq_foot, + Sum(feb_sales / w_warehouse_sq_ft) AS feb_sales_per_sq_foot, + Sum(mar_sales / w_warehouse_sq_ft) AS mar_sales_per_sq_foot, + Sum(apr_sales / w_warehouse_sq_ft) AS apr_sales_per_sq_foot, + Sum(may_sales / w_warehouse_sq_ft) AS may_sales_per_sq_foot, + Sum(jun_sales / w_warehouse_sq_ft) AS jun_sales_per_sq_foot, + Sum(jul_sales / w_warehouse_sq_ft) AS jul_sales_per_sq_foot, + Sum(aug_sales / w_warehouse_sq_ft) AS aug_sales_per_sq_foot, + Sum(sep_sales / w_warehouse_sq_ft) AS sep_sales_per_sq_foot, + Sum(oct_sales / w_warehouse_sq_ft) AS oct_sales_per_sq_foot, + Sum(nov_sales / w_warehouse_sq_ft) AS nov_sales_per_sq_foot, + Sum(dec_sales / w_warehouse_sq_ft) AS dec_sales_per_sq_foot, + Sum(jan_net) AS jan_net, + Sum(feb_net) AS feb_net, + Sum(mar_net) AS mar_net, + Sum(apr_net) AS apr_net, + Sum(may_net) AS may_net, + Sum(jun_net) AS jun_net, + Sum(jul_net) AS jul_net, + Sum(aug_net) AS aug_net, + Sum(sep_net) AS sep_net, + Sum(oct_net) AS oct_net, + Sum(nov_net) AS nov_net, + Sum(dec_net) AS dec_net +FROM (SELECT w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + 'ZOUROS,ZHOU' AS ship_carriers, + d_year AS year1, + Sum(CASE + WHEN d_moy = 1 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS jan_sales, + Sum(CASE + WHEN d_moy = 2 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS feb_sales, + Sum(CASE + WHEN d_moy = 3 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS mar_sales, + Sum(CASE + WHEN d_moy = 4 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS apr_sales, + Sum(CASE + WHEN d_moy = 5 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS may_sales, + Sum(CASE + WHEN d_moy = 6 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS jun_sales, + Sum(CASE + WHEN d_moy = 7 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS jul_sales, + Sum(CASE + WHEN d_moy = 8 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS aug_sales, + Sum(CASE + WHEN d_moy = 9 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS sep_sales, + Sum(CASE + WHEN d_moy = 10 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS oct_sales, + Sum(CASE + WHEN d_moy = 11 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS nov_sales, + Sum(CASE + WHEN d_moy = 12 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS dec_sales, + Sum(CASE + WHEN d_moy = 1 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS jan_net, + Sum(CASE + WHEN d_moy = 2 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS feb_net, + Sum(CASE + WHEN d_moy = 3 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS mar_net, + Sum(CASE + WHEN d_moy = 4 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS apr_net, + Sum(CASE + WHEN d_moy = 5 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS may_net, + Sum(CASE + WHEN d_moy = 6 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS jun_net, + Sum(CASE + WHEN d_moy = 7 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS jul_net, + Sum(CASE + WHEN d_moy = 8 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS aug_net, + Sum(CASE + WHEN d_moy = 9 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS sep_net, + Sum(CASE + WHEN d_moy = 10 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS oct_net, + Sum(CASE + WHEN d_moy = 11 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS nov_net, + Sum(CASE + WHEN d_moy = 12 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS dec_net + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'warehouse')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'ship_mode')}} + WHERE ws_warehouse_sk = w_warehouse_sk + AND ws_sold_date_sk = d_date_sk + AND ws_sold_time_sk = t_time_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND d_year = 1998 + AND t_time BETWEEN 7249 AND 7249 + 28800 + AND sm_carrier IN ( 'ZOUROS', 'ZHOU' ) + GROUP BY w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + d_year + UNION ALL + SELECT w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + 'ZOUROS,ZHOU' AS ship_carriers, + d_year AS year1, + Sum(CASE + WHEN d_moy = 1 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS jan_sales, + Sum(CASE + WHEN d_moy = 2 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS feb_sales, + Sum(CASE + WHEN d_moy = 3 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS mar_sales, + Sum(CASE + WHEN d_moy = 4 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS apr_sales, + Sum(CASE + WHEN d_moy = 5 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS may_sales, + Sum(CASE + WHEN d_moy = 6 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS jun_sales, + Sum(CASE + WHEN d_moy = 7 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS jul_sales, + Sum(CASE + WHEN d_moy = 8 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS aug_sales, + Sum(CASE + WHEN d_moy = 9 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS sep_sales, + Sum(CASE + WHEN d_moy = 10 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS oct_sales, + Sum(CASE + WHEN d_moy = 11 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS nov_sales, + Sum(CASE + WHEN d_moy = 12 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS dec_sales, + Sum(CASE + WHEN d_moy = 1 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS jan_net, + Sum(CASE + WHEN d_moy = 2 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS feb_net, + Sum(CASE + WHEN d_moy = 3 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS mar_net, + Sum(CASE + WHEN d_moy = 4 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS apr_net, + Sum(CASE + WHEN d_moy = 5 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS may_net, + Sum(CASE + WHEN d_moy = 6 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS jun_net, + Sum(CASE + WHEN d_moy = 7 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS jul_net, + Sum(CASE + WHEN d_moy = 8 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS aug_net, + Sum(CASE + WHEN d_moy = 9 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS sep_net, + Sum(CASE + WHEN d_moy = 10 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS oct_net, + Sum(CASE + WHEN d_moy = 11 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS nov_net, + Sum(CASE + WHEN d_moy = 12 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS dec_net + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'warehouse')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'ship_mode')}} + WHERE cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND cs_sold_time_sk = t_time_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND d_year = 1998 + AND t_time BETWEEN 7249 AND 7249 + 28800 + AND sm_carrier IN ( 'ZOUROS', 'ZHOU' ) + GROUP BY w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + d_year) x +GROUP BY w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + ship_carriers, + year1 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY w_warehouse_name +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query67.sql b/dbt/models/tpc_ds/query67.sql new file mode 100644 index 0000000..d5ca74e --- /dev/null +++ b/dbt/models/tpc_ds/query67.sql @@ -0,0 +1,72 @@ +-- This model does not complete in Synapse +{{ config( + enabled=target.name != 'synapse' +) }} + +-- query67 +with dw1 as ( + select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + from {{source('src__tpc_ds', 'store_sales')}} + ,{{source('src__tpc_ds', 'date_dim')}} + ,{{source('src__tpc_ds', 'store')}} + ,{{source('src__tpc_ds', 'item')}} + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1181 and 1181+11 + group by i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id +), dw2 as ( + select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category, i_class, i_brand, i_product_name {% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +order by sumsales{% endif %} + desc) rk + from dw1 +), dw3 as ( + select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category {% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +order by sumsales{% endif %} + desc) rk + from dw2 + where rk <= 100 +) +select {{ 'TOP 100' if target.name == 'synapse' }} * +from dw2 +where rk <= 100 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query68.sql b/dbt/models/tpc_ds/query68.sql new file mode 100644 index 0000000..bfbfa1c --- /dev/null +++ b/dbt/models/tpc_ds/query68.sql @@ -0,0 +1,43 @@ +-- query68 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + extended_price, + extended_tax, + list_price +FROM (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + Sum(ss_ext_sales_price) extended_price, + Sum(ss_ext_list_price) list_price, + Sum(ss_ext_tax) extended_tax + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'household_demographics')}}, + {{source('src__tpc_ds', 'customer_address')}} + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND ( household_demographics.hd_dep_count = 8 + OR household_demographics.hd_vehicle_count = 3 ) + AND date_dim.d_year IN ( 1998, 1998 + 1, 1998 + 2 ) + AND store.s_city IN ( 'Fairview', 'Midway' ) + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}} current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY c_last_name, + ss_ticket_number +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query69.sql b/dbt/models/tpc_ds/query69.sql new file mode 100644 index 0000000..d18db4f --- /dev/null +++ b/dbt/models/tpc_ds/query69.sql @@ -0,0 +1,49 @@ +-- query69 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} cd_gender, + cd_marital_status, + cd_education_status, + Count(*) cnt1, + cd_purchase_estimate, + Count(*) cnt2, + cd_credit_rating, + Count(*) cnt3 +FROM {{source('src__tpc_ds', 'customer')}} c, + {{source('src__tpc_ds', 'customer_address')}} ca, + {{source('src__tpc_ds', 'customer_demographics')}} +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_state IN ( 'KS', 'AZ', 'NE' ) + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2004 + AND d_moy BETWEEN 3 AND 3 + 2) + AND ( NOT EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2004 + AND d_moy BETWEEN 3 AND 3 + 2) + AND NOT EXISTS (SELECT * + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2004 + AND d_moy BETWEEN 3 AND 3 + 2) ) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query70.sql b/dbt/models/tpc_ds/query70.sql new file mode 100644 index 0000000..7f03e60 --- /dev/null +++ b/dbt/models/tpc_ds/query70.sql @@ -0,0 +1,36 @@ +-- query70 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} Sum(ss_net_profit) AS total_sum, + s_state, + s_county, + Rank() + OVER ( + PARTITION BY s_state, s_county + ORDER BY Sum(ss_net_profit) DESC) AS rank_within_parent +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} d1, + {{source('src__tpc_ds', 'store')}} +WHERE d1.d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d1.d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_state IN (SELECT s_state + FROM (SELECT s_state AS + s_state, + Rank() + OVER ( + partition BY s_state + ORDER BY Sum(ss_net_profit) DESC) AS + ranking + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + GROUP BY s_state) tmp1 + WHERE ranking <= 5) +GROUP BY s_state, s_county +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY s_state, + rank_within_parent +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query71.sql b/dbt/models/tpc_ds/query71.sql new file mode 100644 index 0000000..304b601 --- /dev/null +++ b/dbt/models/tpc_ds/query71.sql @@ -0,0 +1,51 @@ +-- query71 +SELECT i_brand_id brand_id, + i_brand brand, + t_hour, + t_minute, + Sum(ext_price) ext_price +FROM {{source('src__tpc_ds', 'item')}}, + (SELECT ws_ext_sales_price AS ext_price, + ws_sold_date_sk AS sold_date_sk, + ws_item_sk AS sold_item_sk, + ws_sold_time_sk AS time_sk + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE d_date_sk = ws_sold_date_sk + AND d_moy = 11 + AND d_year = 2001 + UNION ALL + SELECT cs_ext_sales_price AS ext_price, + cs_sold_date_sk AS sold_date_sk, + cs_item_sk AS sold_item_sk, + cs_sold_time_sk AS time_sk + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE d_date_sk = cs_sold_date_sk + AND d_moy = 11 + AND d_year = 2001 + UNION ALL + SELECT ss_ext_sales_price AS ext_price, + ss_sold_date_sk AS sold_date_sk, + ss_item_sk AS sold_item_sk, + ss_sold_time_sk AS time_sk + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE d_date_sk = ss_sold_date_sk + AND d_moy = 11 + AND d_year = 2001) AS tmp, + {{source('src__tpc_ds', 'time_dim')}} +WHERE sold_item_sk = i_item_sk + AND i_manager_id = 1 + AND time_sk = t_time_sk + AND ( t_meal_time = 'breakfast' + OR t_meal_time = 'dinner' ) +GROUP BY i_brand, + i_brand_id, + t_hour, + t_minute +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ext_price DESC, + i_brand_id +{% endif %} + diff --git a/dbt/models/tpc_ds/query72.sql b/dbt/models/tpc_ds/query72.sql new file mode 100644 index 0000000..dc3b682 --- /dev/null +++ b/dbt/models/tpc_ds/query72.sql @@ -0,0 +1,50 @@ +-- query72 +WITH top_items AS ( + SELECT cs_item_sk, + cs_warehouse_sk, + d1.d_week_seq, + Sum(CASE + WHEN p_promo_sk IS NULL THEN 1 + ELSE 0 + END) no_promo, + Sum(CASE + WHEN p_promo_sk IS NOT NULL THEN 1 + ELSE 0 + END) promo, + Count(*) total_cnt + FROM {{source('src__tpc_ds', 'catalog_sales')}} + JOIN {{source('src__tpc_ds', 'inventory')}} + ON ( cs_item_sk = inv_item_sk and cs_sold_date_sk = inv_date_sk and cs_warehouse_sk = inv_warehouse_sk ) + JOIN {{source('src__tpc_ds', 'customer_demographics')}} + ON ( cs_bill_cdemo_sk = cd_demo_sk ) + JOIN {{source('src__tpc_ds', 'household_demographics')}} + ON ( cs_bill_hdemo_sk = hd_demo_sk ) + JOIN {{source('src__tpc_ds', 'date_dim')}} d1 + ON ( cs_sold_date_sk = d1.d_date_sk ) + LEFT OUTER JOIN {{source('src__tpc_ds', 'promotion')}} + ON ( cs_promo_sk = p_promo_sk ) + LEFT OUTER JOIN {{source('src__tpc_ds', 'catalog_returns')}} + ON ( cr_item_sk = cs_item_sk + AND cr_order_number = cs_order_number ) + WHERE inv_quantity_on_hand < cs_quantity + AND hd_buy_potential = '501-1000' + AND d1.d_year = 2002 + AND cd_marital_status = 'M' + GROUP BY cs_item_sk, cs_warehouse_sk, d_week_seq +) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} i_item_desc, + w_warehouse_name, + d_week_seq, + no_promo, + promo, + total_cnt +FROM top_items +JOIN {{source('src__tpc_ds', 'warehouse')}} + ON ( w_warehouse_sk = cs_warehouse_sk ) +JOIN {{source('src__tpc_ds', 'item')}} + ON ( i_item_sk = cs_item_sk ) +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY total_cnt DESC, + 1, 2, 3 +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query73.sql b/dbt/models/tpc_ds/query73.sql new file mode 100644 index 0000000..3e8b358 --- /dev/null +++ b/dbt/models/tpc_ds/query73.sql @@ -0,0 +1,41 @@ +-- query73 +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM (SELECT ss_ticket_number, + ss_customer_sk, + Count(*) cnt + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'household_demographics')}} + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND ( household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = '0-500' ) + AND household_demographics.hd_vehicle_count > 0 + AND CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN + household_demographics.hd_dep_count / + household_demographics.hd_vehicle_count + ELSE NULL + END > 1 + AND date_dim.d_year IN ( 2000, 2000 + 1, 2000 + 2 ) + AND store.s_county IN ( 'Williamson County', 'Williamson County', + 'Williamson County', + 'Williamson County' + ) + GROUP BY ss_ticket_number, + ss_customer_sk) dj, + {{source('src__tpc_ds', 'customer')}} +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 1 AND 5 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY cnt DESC, + c_last_name ASC{% endif %} + diff --git a/dbt/models/tpc_ds/query74.sql b/dbt/models/tpc_ds/query74.sql new file mode 100644 index 0000000..0f75870 --- /dev/null +++ b/dbt/models/tpc_ds/query74.sql @@ -0,0 +1,71 @@ +-- query74 +WITH year_total + AS (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year1, + Sum(ss_net_paid) year_total, + 's' sale_type + FROM {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN ( 1999, 1999 + 1 ) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year + UNION ALL + SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year1, + Sum(ws_net_paid) year_total, + 'w' sale_type + FROM {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year IN ( 1999, 1999 + 1 ) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.year1 = 1999 + AND t_s_secyear.year1 = 1999 + 1 + AND t_w_firstyear.year1 = 1999 + AND t_w_secyear.year1 = 1999 + 1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / + t_w_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN + t_s_secyear.year_total / + t_s_firstyear.year_total + ELSE NULL + END +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY 1, + 2, + 3 +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query75.sql b/dbt/models/tpc_ds/query75.sql new file mode 100644 index 0000000..3651a6c --- /dev/null +++ b/dbt/models/tpc_ds/query75.sql @@ -0,0 +1,94 @@ +-- query75 +WITH all_sales + AS (SELECT d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + Sum(sales_cnt) AS sales_cnt, + Sum(sales_amt) AS sales_amt + FROM (SELECT d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + cs_quantity - COALESCE(cr_return_quantity, 0) AS + sales_cnt, + cs_ext_sales_price - COALESCE(cr_return_amount, 0.0) AS + sales_amt + FROM {{source('src__tpc_ds', 'catalog_sales')}} + JOIN {{source('src__tpc_ds', 'item')}} + ON i_item_sk = cs_item_sk + JOIN {{source('src__tpc_ds', 'date_dim')}} + ON d_date_sk = cs_sold_date_sk + LEFT JOIN {{source('src__tpc_ds', 'catalog_returns')}} + ON ( cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk ) + WHERE i_category = 'Men' + UNION ALL + SELECT d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + ss_quantity - COALESCE(sr_return_quantity, 0) AS + sales_cnt, + ss_ext_sales_price - COALESCE(sr_return_amt, 0.0) AS + sales_amt + FROM {{source('src__tpc_ds', 'store_sales')}} + JOIN {{source('src__tpc_ds', 'item')}} + ON i_item_sk = ss_item_sk + JOIN {{source('src__tpc_ds', 'date_dim')}} + ON d_date_sk = ss_sold_date_sk + LEFT JOIN {{source('src__tpc_ds', 'store_returns')}} + ON ( ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk ) + WHERE i_category = 'Men' + UNION ALL + SELECT d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + ws_quantity - COALESCE(wr_return_quantity, 0) AS + sales_cnt, + ws_ext_sales_price - COALESCE(wr_return_amt, 0.0) AS + sales_amt + FROM {{source('src__tpc_ds', 'web_sales')}} + JOIN {{source('src__tpc_ds', 'item')}} + ON i_item_sk = ws_item_sk + JOIN {{source('src__tpc_ds', 'date_dim')}} + ON d_date_sk = ws_sold_date_sk + LEFT JOIN {{source('src__tpc_ds', 'web_returns')}} + ON ( ws_order_number = wr_order_number + AND ws_item_sk = wr_item_sk ) + WHERE i_category = 'Men') sales_detail + GROUP BY d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} prev_yr.d_year AS prev_year, + curr_yr.d_year AS year1, + curr_yr.i_brand_id, + curr_yr.i_class_id, + curr_yr.i_category_id, + curr_yr.i_manufact_id, + prev_yr.sales_cnt AS prev_yr_cnt, + curr_yr.sales_cnt AS curr_yr_cnt, + curr_yr.sales_cnt - prev_yr.sales_cnt AS sales_cnt_diff, + curr_yr.sales_amt - prev_yr.sales_amt AS sales_amt_diff +FROM all_sales curr_yr, + all_sales prev_yr +WHERE curr_yr.i_brand_id = prev_yr.i_brand_id + AND curr_yr.i_class_id = prev_yr.i_class_id + AND curr_yr.i_category_id = prev_yr.i_category_id + AND curr_yr.i_manufact_id = prev_yr.i_manufact_id + AND curr_yr.d_year = 2002 + AND prev_yr.d_year = 2002 - 1 + AND curr_yr.sales_cnt / prev_yr.sales_cnt + < 0.9 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY sales_cnt_diff +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query76.sql b/dbt/models/tpc_ds/query76.sql new file mode 100644 index 0000000..a3437af --- /dev/null +++ b/dbt/models/tpc_ds/query76.sql @@ -0,0 +1,59 @@ +-- query76 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} channel, + col_name, + d_year, + d_qoy, + i_category, + Count(*) sales_cnt, + Sum(ext_sales_price) sales_amt +FROM (SELECT 'store' AS channel, + 'ss_hdemo_sk' col_name, + d_year, + d_qoy, + i_category, + ss_ext_sales_price ext_sales_price + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_hdemo_sk IS NULL + AND ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + UNION ALL + SELECT 'web' AS channel, + 'ws_ship_hdemo_sk' col_name, + d_year, + d_qoy, + i_category, + ws_ext_sales_price ext_sales_price + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ws_ship_hdemo_sk IS NULL + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk = i_item_sk + UNION ALL + SELECT 'catalog' AS channel, + 'cs_warehouse_sk' col_name, + d_year, + d_qoy, + i_category, + cs_ext_sales_price ext_sales_price + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE cs_warehouse_sk IS NULL + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk) foo +GROUP BY channel, + col_name, + d_year, + d_qoy, + i_category +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY channel, + col_name, + d_year, + d_qoy, + i_category +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query77.sql b/dbt/models/tpc_ds/query77.sql new file mode 100644 index 0000000..78bd7d1 --- /dev/null +++ b/dbt/models/tpc_ds/query77.sql @@ -0,0 +1,110 @@ + +-- query77 +WITH ss AS +( + SELECT s_store_sk, + Sum(ss_ext_sales_price) AS sales, + Sum(ss_net_profit) AS profit + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}} + WHERE ss_sold_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN Cast('2001-08-16' AS DATE) AND ( + Cast('2001-09-15' AS DATE)) + AND ss_store_sk = s_store_sk + GROUP BY s_store_sk) , sr AS +( + SELECT s_store_sk, + sum(sr_return_amt) AS returns1, + sum(sr_net_loss) AS profit_loss + FROM {{source('src__tpc_ds', 'store_returns')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}} + WHERE sr_returned_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2001-08-16' AS date) AND ( + Cast('2001-09-15' AS DATE)) + AND sr_store_sk = s_store_sk + GROUP BY s_store_sk), cs AS +( + SELECT cs_call_center_sk, + sum(cs_ext_sales_price) AS sales, + sum(cs_net_profit) AS profit + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE cs_sold_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2001-08-16' AS date) AND ( + Cast('2001-09-15' AS DATE)) + GROUP BY cs_call_center_sk ), cr AS +( + SELECT cr_call_center_sk, + sum(cr_return_amount) AS returns1, + sum(cr_net_loss) AS profit_loss + FROM {{source('src__tpc_ds', 'catalog_returns')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE cr_returned_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2001-08-16' AS date) AND ( + Cast('2001-09-15' AS DATE)) + GROUP BY cr_call_center_sk ), ws AS +( + SELECT wp_web_page_sk, + sum(ws_ext_sales_price) AS sales, + sum(ws_net_profit) AS profit + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'web_page')}} + WHERE ws_sold_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2001-08-16' AS date) AND ( + Cast('2001-09-15' AS DATE)) + AND ws_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk), wr AS +( + SELECT wp_web_page_sk, + sum(wr_return_amt) AS returns1, + sum(wr_net_loss) AS profit_loss + FROM {{source('src__tpc_ds', 'web_returns')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'web_page')}} + WHERE wr_returned_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2001-08-16' AS date) AND ( + Cast('2001-09-15' AS DATE)) + AND wr_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + channel , + id , + sum(sales) AS sales , + sum(returns1) AS returns1 , + sum(profit) AS profit +FROM ( + SELECT '{{source('src__tpc_ds', 'store')}} channel' AS channel , + ss.s_store_sk AS id , + sales , + COALESCE(returns1, 0) AS returns1 , + (profit - COALESCE(profit_loss,0)) AS profit + FROM ss + LEFT JOIN sr + ON ss.s_store_sk = sr.s_store_sk + UNION ALL + SELECT 'catalog channel' AS channel , + cs_call_center_sk AS id , + sales , + returns1 , + (profit - profit_loss) AS profit + FROM cs , + cr + UNION ALL + SELECT 'web channel' AS channel , + ws.wp_web_page_sk AS id , + sales , + COALESCE(returns1, 0) returns1 , + (profit - COALESCE(profit_loss,0)) AS profit + FROM ws + LEFT JOIN wr + ON ws.wp_web_page_sk = wr.wp_web_page_sk ) x +GROUP BY channel, id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY channel , + id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query78.sql b/dbt/models/tpc_ds/query78.sql new file mode 100644 index 0000000..e729a0d --- /dev/null +++ b/dbt/models/tpc_ds/query78.sql @@ -0,0 +1,88 @@ +-- query78 +WITH ws + AS (SELECT d_year AS ws_sold_year, + ws_item_sk, + ws_bill_customer_sk ws_customer_sk, + Sum(ws_quantity) ws_qty, + Sum(ws_wholesale_cost) ws_wc, + Sum(ws_sales_price) ws_sp + FROM {{source('src__tpc_ds', 'web_sales')}} + LEFT JOIN {{source('src__tpc_ds', 'web_returns')}} + ON wr_order_number = ws_order_number + AND ws_item_sk = wr_item_sk + JOIN {{source('src__tpc_ds', 'date_dim')}} + ON ws_sold_date_sk = d_date_sk + WHERE wr_order_number IS NULL + GROUP BY d_year, + ws_item_sk, + ws_bill_customer_sk), + cs + AS (SELECT d_year AS cs_sold_year, + cs_item_sk, + cs_bill_customer_sk cs_customer_sk, + Sum(cs_quantity) cs_qty, + Sum(cs_wholesale_cost) cs_wc, + Sum(cs_sales_price) cs_sp + FROM {{source('src__tpc_ds', 'catalog_sales')}} + LEFT JOIN {{source('src__tpc_ds', 'catalog_returns')}} + ON cr_order_number = cs_order_number + AND cs_item_sk = cr_item_sk + JOIN {{source('src__tpc_ds', 'date_dim')}} + ON cs_sold_date_sk = d_date_sk + WHERE cr_order_number IS NULL + GROUP BY d_year, + cs_item_sk, + cs_bill_customer_sk), + ss + AS (SELECT d_year AS ss_sold_year, + ss_item_sk, + ss_customer_sk, + Sum(ss_quantity) ss_qty, + Sum(ss_wholesale_cost) ss_wc, + Sum(ss_sales_price) ss_sp + FROM {{source('src__tpc_ds', 'store_sales')}} + LEFT JOIN {{source('src__tpc_ds', 'store_returns')}} + ON sr_ticket_number = ss_ticket_number + AND ss_item_sk = sr_item_sk + JOIN {{source('src__tpc_ds', 'date_dim')}} + ON ss_sold_date_sk = d_date_sk + WHERE sr_ticket_number IS NULL + GROUP BY d_year, + ss_item_sk, + ss_customer_sk) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} ss_item_sk, + Round(ss_qty / ( COALESCE(ws_qty + cs_qty, 1) ), 2) ratio, + ss_qty store_qty, + ss_wc + store_wholesale_cost, + ss_sp + store_sales_price, + COALESCE(ws_qty, 0) + COALESCE(cs_qty, 0) + other_chan_qty, + COALESCE(ws_wc, 0) + COALESCE(cs_wc, 0) + other_chan_wholesale_cost, + COALESCE(ws_sp, 0) + COALESCE(cs_sp, 0) + other_chan_sales_price +FROM ss + LEFT JOIN ws + ON ( ws_sold_year = ss_sold_year + AND ws_item_sk = ss_item_sk + AND ws_customer_sk = ss_customer_sk ) + LEFT JOIN cs + ON ( cs_sold_year = ss_sold_year + AND cs_item_sk = cs_item_sk + AND cs_customer_sk = ss_customer_sk ) +WHERE COALESCE(ws_qty, 0) > 0 + AND COALESCE(cs_qty, 0) > 0 + AND ss_sold_year = 1999 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY ss_item_sk, + ss_qty DESC, + ss_wc DESC, + ss_sp DESC, + other_chan_qty, + other_chan_wholesale_cost, + other_chan_sales_price, + Round(ss_qty / ( COALESCE(ws_qty + cs_qty, 1) ), 2) +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query79.sql b/dbt/models/tpc_ds/query79.sql new file mode 100644 index 0000000..1037ccc --- /dev/null +++ b/dbt/models/tpc_ds/query79.sql @@ -0,0 +1,37 @@ +-- query79 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} c_last_name, + c_first_name, + {{ substr('s_city', 1, 30) }} as substr_s_city, + ss_ticket_number, + amt, + profit +FROM (SELECT ss_ticket_number, + ss_customer_sk, + store.s_city, + Sum(ss_coupon_amt) amt, + Sum(ss_net_profit) profit + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'household_demographics')}} + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND ( household_demographics.hd_dep_count = 8 + OR household_demographics.hd_vehicle_count > 4 ) + AND date_dim.d_dow = 1 + AND date_dim.d_year IN ( 2000, 2000 + 1, 2000 + 2 ) + AND store.s_number_employees BETWEEN 200 AND 295 + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + store.s_city) ms, + {{source('src__tpc_ds', 'customer')}} +WHERE ss_customer_sk = c_customer_sk +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY c_last_name, + c_first_name, + {{ substr('s_city', 1, 30) }}, + profit +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query80.sql b/dbt/models/tpc_ds/query80.sql new file mode 100644 index 0000000..0b17a1e --- /dev/null +++ b/dbt/models/tpc_ds/query80.sql @@ -0,0 +1,105 @@ +-- query80 +WITH ssr AS +( + SELECT s_store_id AS store_id, + Sum(ss_ext_sales_price) AS sales, + Sum(COALESCE(sr_return_amt, 0)) AS returns1, + Sum(ss_net_profit - COALESCE(sr_net_loss, 0)) AS profit + FROM {{source('src__tpc_ds', 'store_sales')}} + LEFT OUTER JOIN {{source('src__tpc_ds', 'store_returns')}} + ON ( + ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number), + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'promotion')}} + WHERE ss_sold_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN Cast('2000-08-26' AS DATE) AND ( + Cast('2001-09-25' AS DATE)) + AND ss_store_sk = s_store_sk + AND ss_item_sk = i_item_sk + AND i_current_price > 50 + AND ss_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY s_store_id) , csr AS +( + SELECT cp_catalog_page_id AS catalog_page_id, + sum(cs_ext_sales_price) AS sales, + sum(COALESCE(cr_return_amount, 0)) AS returns1, + sum(cs_net_profit - COALESCE(cr_net_loss, 0)) AS profit + FROM {{source('src__tpc_ds', 'catalog_sales')}} + LEFT OUTER JOIN {{source('src__tpc_ds', 'catalog_returns')}} + ON ( + cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number), + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'catalog_page')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'promotion')}} + WHERE cs_sold_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2000-08-26' AS date) AND ( + Cast('2001-09-25' AS DATE)) + AND cs_catalog_page_sk = cp_catalog_page_sk + AND cs_item_sk = i_item_sk + AND i_current_price > 50 + AND cs_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY cp_catalog_page_id) , wsr AS +( + SELECT web_site_id, + sum(ws_ext_sales_price) AS sales, + sum(COALESCE(wr_return_amt, 0)) AS returns1, + sum(ws_net_profit - COALESCE(wr_net_loss, 0)) AS profit + FROM {{source('src__tpc_ds', 'web_sales')}} + LEFT OUTER JOIN {{source('src__tpc_ds', 'web_returns')}} + ON ( + ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number), + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'web_site')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'promotion')}} + WHERE ws_sold_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN cast('2000-08-26' AS date) AND ( + Cast('2001-09-25' AS DATE)) + AND ws_web_site_sk = web_site_sk + AND ws_item_sk = i_item_sk + AND i_current_price > 50 + AND ws_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY web_site_id) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + channel , + id , + sum(sales) AS sales , + sum(returns1) AS returns1 , + sum(profit) AS profit +FROM ( + SELECT '{{source('src__tpc_ds', 'store')}} channel' AS channel , + Concat('store', store_id) AS id , + sales , + returns1 , + profit + FROM ssr + UNION ALL + SELECT 'catalog channel' AS channel , + Concat('catalog_page', catalog_page_id) AS id , + sales , + returns1 , + profit + FROM csr + UNION ALL + SELECT 'web channel' AS channel , + Concat('web_site', web_site_id) AS id , + sales , + returns1 , + profit + FROM wsr ) x +GROUP BY channel, id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY channel , + id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query81.sql b/dbt/models/tpc_ds/query81.sql new file mode 100644 index 0000000..01a8431 --- /dev/null +++ b/dbt/models/tpc_ds/query81.sql @@ -0,0 +1,63 @@ + +-- query81 +WITH customer_total_return + AS (SELECT cr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + Sum(cr_return_amt_inc_tax) AS ctr_total_return + FROM {{source('src__tpc_ds', 'catalog_returns')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer_address')}} + WHERE cr_returned_date_sk = d_date_sk + AND d_year = 1999 + AND cr_returning_addr_sk = ca_address_sk + GROUP BY cr_returning_customer_sk, + ca_state), +high_return AS ( + SELECT ctr_state AS hr_state, Avg(ctr_total_return) * 1.2 AS hr_limit + FROM customer_total_return + GROUP BY ctr_state +) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name, + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset, + ca_location_type, + ctr_total_return +FROM customer_total_return, + high_return, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'customer')}} +WHERE ctr_state = hr_state + AND ctr_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'TX' + AND ctr_total_return > hr_limit +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name, + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset, + ca_location_type, + ctr_total_return +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query82.sql b/dbt/models/tpc_ds/query82.sql new file mode 100644 index 0000000..947a72a --- /dev/null +++ b/dbt/models/tpc_ds/query82.sql @@ -0,0 +1,26 @@ + +-- query82 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + i_item_id , + i_item_desc , + i_current_price +FROM {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'inventory')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store_sales')}} +WHERE i_current_price BETWEEN 63 AND 63+30 +AND inv_item_sk = i_item_sk +AND d_date_sk=inv_date_sk +AND Cast(d_date AS DATE) BETWEEN Cast('1998-04-27' AS DATE) AND ( + Cast('1998-06-27' AS DATE)) +AND i_manufact_id IN (57,293,427,320) +AND inv_quantity_on_hand BETWEEN 100 AND 500 +AND ss_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_item_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query83.sql b/dbt/models/tpc_ds/query83.sql new file mode 100644 index 0000000..bbf6785 --- /dev/null +++ b/dbt/models/tpc_ds/query83.sql @@ -0,0 +1,77 @@ +-- query83 +WITH sr_items + AS (SELECT i_item_id item_id, + Sum(sr_return_quantity) sr_item_qty + FROM {{source('src__tpc_ds', 'store_returns')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE sr_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_week_seq IN (SELECT d_week_seq + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE + d_date IN ( '1999-06-30', + '1999-08-28', + '1999-11-18' + ))) + AND sr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + cr_items + AS (SELECT i_item_id item_id, + Sum(cr_return_quantity) cr_item_qty + FROM {{source('src__tpc_ds', 'catalog_returns')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE cr_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_week_seq IN (SELECT d_week_seq + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE + d_date IN ( '1999-06-30', + '1999-08-28', + '1999-11-18' + ))) + AND cr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + wr_items + AS (SELECT i_item_id item_id, + Sum(wr_return_quantity) wr_item_qty + FROM {{source('src__tpc_ds', 'web_returns')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE wr_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE d_week_seq IN (SELECT d_week_seq + FROM {{source('src__tpc_ds', 'date_dim')}} + WHERE + d_date IN ( '1999-06-30', + '1999-08-28', + '1999-11-18' + ))) + AND wr_returned_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} sr_items.item_id, + sr_item_qty, + sr_item_qty / ( sr_item_qty + cr_item_qty + wr_item_qty ) / 3.0 * + 100 sr_dev, + cr_item_qty, + cr_item_qty / ( sr_item_qty + cr_item_qty + wr_item_qty ) / 3.0 * + 100 cr_dev, + wr_item_qty, + wr_item_qty / ( sr_item_qty + cr_item_qty + wr_item_qty ) / 3.0 * + 100 wr_dev, + ( sr_item_qty + cr_item_qty + wr_item_qty ) / 3.0 + average +FROM sr_items, + cr_items, + wr_items +WHERE sr_items.item_id = cr_items.item_id + AND sr_items.item_id = wr_items.item_id +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY sr_items.item_id, + sr_item_qty +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query84.sql b/dbt/models/tpc_ds/query84.sql new file mode 100644 index 0000000..725d880 --- /dev/null +++ b/dbt/models/tpc_ds/query84.sql @@ -0,0 +1,21 @@ +-- query84 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} c_customer_id AS customer_id, + Concat(c_last_name, Concat(', ', c_first_name)) AS customername +FROM {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'customer_demographics')}}, + {{source('src__tpc_ds', 'household_demographics')}}, + {{source('src__tpc_ds', 'income_band')}}, + {{source('src__tpc_ds', 'store_returns')}} +WHERE ca_city = 'Green Acres' + AND c_current_addr_sk = ca_address_sk + AND ib_lower_bound >= 54986 + AND ib_upper_bound <= 54986 + 50000 + AND ib_income_band_sk = hd_income_band_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND sr_cdemo_sk = cd_demo_sk +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY c_customer_id +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query85.sql b/dbt/models/tpc_ds/query85.sql new file mode 100644 index 0000000..9c6989a --- /dev/null +++ b/dbt/models/tpc_ds/query85.sql @@ -0,0 +1,54 @@ +-- query85 +SELECT {{ substr('r_reason_desc', 1, 20) }} as substr_r_reason_desc, + Avg(ws_quantity) as avg_ws_quantity, + Avg(wr_refunded_cash) as avg_wr_refunded_cash, + Avg(wr_fee) as avg_wr_fee +FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'web_returns')}}, + {{source('src__tpc_ds', 'web_page')}}, + {{source('src__tpc_ds', 'customer_demographics')}} cd1, + {{source('src__tpc_ds', 'customer_demographics')}} cd2, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'reason')}} +WHERE ws_web_page_sk = wp_web_page_sk + AND ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND cd1.cd_demo_sk = wr_refunded_cdemo_sk + AND cd2.cd_demo_sk = wr_returning_cdemo_sk + AND ca_address_sk = wr_refunded_addr_sk + AND r_reason_sk = wr_reason_sk + AND ( ( cd1.cd_marital_status = 'W' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Primary' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 100.00 AND 150.00 ) + OR ( cd1.cd_marital_status = 'D' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Secondary' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 50.00 AND 100.00 ) + OR ( cd1.cd_marital_status = 'M' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Advanced Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 150.00 AND 200.00 ) ) + AND ( ( ca_country = 'United States' + AND ca_state IN ( 'KY', 'ME', 'IL' ) + AND ws_net_profit BETWEEN 100 AND 200 ) + OR ( ca_country = 'United States' + AND ca_state IN ( 'OK', 'NE', 'MN' ) + AND ws_net_profit BETWEEN 150 AND 300 ) + OR ( ca_country = 'United States' + AND ca_state IN ( 'FL', 'WI', 'KS' ) + AND ws_net_profit BETWEEN 50 AND 250 ) ) +GROUP BY r_reason_desc +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY {{ substr('r_reason_desc', 1, 20) }}, + Avg(ws_quantity), + Avg(wr_refunded_cash), + Avg(wr_fee) +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query86.sql b/dbt/models/tpc_ds/query86.sql new file mode 100644 index 0000000..356232f --- /dev/null +++ b/dbt/models/tpc_ds/query86.sql @@ -0,0 +1,20 @@ +-- query86 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} Sum(ws_net_paid) AS total_sum, + i_category, + i_class, + Rank() + OVER ( + PARTITION BY i_category, i_class + ORDER BY Sum(ws_net_paid) DESC) AS rank_within_parent +FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} d1, + {{source('src__tpc_ds', 'item')}} +WHERE d1.d_month_seq BETWEEN 1183 AND 1183 + 11 + AND d1.d_date_sk = ws_sold_date_sk + AND i_item_sk = ws_item_sk +GROUP BY i_category, i_class +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_category, + rank_within_parent +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query87.sql b/dbt/models/tpc_ds/query87.sql new file mode 100644 index 0000000..3054f4c --- /dev/null +++ b/dbt/models/tpc_ds/query87.sql @@ -0,0 +1,33 @@ +-- query87 +with store_customers as ( + select distinct c_last_name as sc_last, c_first_name as sc_first, d_date as sc_date + from {{source('src__tpc_ds', 'store_sales')}}, {{source('src__tpc_ds', 'date_dim')}}, {{source('src__tpc_ds', 'customer')}} + where store_sales.ss_sold_date_sk = date_dim.d_date_sk + and store_sales.ss_customer_sk = customer.c_customer_sk + and d_month_seq between 1188 and 1188+11 +), +catalog_customers as ( + select distinct c_last_name as cc_last, c_first_name as cc_first, d_date as cc_date + from {{source('src__tpc_ds', 'catalog_sales')}}, {{source('src__tpc_ds', 'date_dim')}}, {{source('src__tpc_ds', 'customer')}} + where catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + and catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + and d_month_seq between 1188 and 1188+11 +), +web_customers as ( + select distinct c_last_name as wc_last, c_first_name as wc_first, d_date as wc_date + from {{source('src__tpc_ds', 'web_sales')}}, {{source('src__tpc_ds', 'date_dim')}}, {{source('src__tpc_ds', 'customer')}} + where web_sales.ws_sold_date_sk = date_dim.d_date_sk + and web_sales.ws_bill_customer_sk = customer.c_customer_sk + and d_month_seq between 1188 and 1188+11 +) +select count(1) as cnt +from store_customers +where not exists ( + select 1 from catalog_customers + where sc_last = cc_last and sc_first = cc_first and sc_date = cc_date +) +and not exists ( + select 1 from web_customers + where sc_last = wc_last and sc_first = wc_first and sc_date = wc_date +) + diff --git a/dbt/models/tpc_ds/query88.sql b/dbt/models/tpc_ds/query88.sql new file mode 100644 index 0000000..2e17a86 --- /dev/null +++ b/dbt/models/tpc_ds/query88.sql @@ -0,0 +1,125 @@ +-- query88 +select * +from + (select count(*) h8_30_to_9 + from + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}} , + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 8 + and time_dim.t_minute >= 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s1, + (select count(*) h9_to_9_30 + from + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}} , + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 9 + and time_dim.t_minute < 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s2, + (select count(*) h9_30_to_10 + from + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}} , + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 9 + and time_dim.t_minute >= 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s3, + (select count(*) h10_to_10_30 + from + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}} , + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 10 + and time_dim.t_minute < 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s4, + (select count(*) h10_30_to_11 + from + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}} , + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 10 + and time_dim.t_minute >= 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s5, + (select count(*) h11_to_11_30 + from + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}} , + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 11 + and time_dim.t_minute < 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s6, + (select count(*) h11_30_to_12 + from + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}} , + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 11 + and time_dim.t_minute >= 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s7, + (select count(*) h12_to_12_30 + from + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}} , + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 12 + and time_dim.t_minute < 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s8 + + diff --git a/dbt/models/tpc_ds/query89.sql b/dbt/models/tpc_ds/query89.sql new file mode 100644 index 0000000..71fc753 --- /dev/null +++ b/dbt/models/tpc_ds/query89.sql @@ -0,0 +1,42 @@ +-- query89 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} * +FROM (SELECT i_category, + i_class, + i_brand, + s_store_name, + s_company_name, + d_moy, + Sum(ss_sales_price) sum_sales, + Avg(Sum(ss_sales_price)) + OVER ( + partition BY i_category, i_brand, s_store_name, s_company_name + ) + avg_monthly_sales + FROM {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'store')}} + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_year IN ( 2002 ) + AND ( ( i_category IN ( 'Home', 'Men', 'Sports' ) + AND i_class IN ( 'paint', 'accessories', 'fitness' ) ) + OR ( i_category IN ( 'Shoes', 'Jewelry', 'Women' ) + AND i_class IN ( 'mens', 'pendants', 'swimwear' ) ) ) + GROUP BY i_category, + i_class, + i_brand, + s_store_name, + s_company_name, + d_moy) tmp1 +WHERE CASE + WHEN ( avg_monthly_sales <> 0 ) THEN ( + Abs(sum_sales - avg_monthly_sales) / avg_monthly_sales ) + ELSE NULL + END > 0.1 +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY sum_sales - avg_monthly_sales, + s_store_name +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query90.sql b/dbt/models/tpc_ds/query90.sql new file mode 100644 index 0000000..39bcc6c --- /dev/null +++ b/dbt/models/tpc_ds/query90.sql @@ -0,0 +1,29 @@ + +-- query90 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} amc / pmc AS am_pm_ratio +FROM (SELECT Count(*) amc + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}}, + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'web_page')}} + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 12 AND 12 + 1 + AND household_demographics.hd_dep_count = 8 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) at1, + (SELECT Count(*) pmc + FROM {{source('src__tpc_ds', 'web_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}}, + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'web_page')}} + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 20 AND 20 + 1 + AND household_demographics.hd_dep_count = 8 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) pt +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY am_pm_ratio +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query91.sql b/dbt/models/tpc_ds/query91.sql new file mode 100644 index 0000000..a3b3424 --- /dev/null +++ b/dbt/models/tpc_ds/query91.sql @@ -0,0 +1,34 @@ +-- query91 +SELECT cc_call_center_id Call_Center, + cc_name Call_Center_Name, + cc_manager Manager, + Sum(cr_net_loss) Returns_Loss +FROM {{source('src__tpc_ds', 'call_center')}}, + {{source('src__tpc_ds', 'catalog_returns')}}, + {{source('src__tpc_ds', 'date_dim')}}, + {{source('src__tpc_ds', 'customer')}}, + {{source('src__tpc_ds', 'customer_address')}}, + {{source('src__tpc_ds', 'customer_demographics')}}, + {{source('src__tpc_ds', 'household_demographics')}} +WHERE cr_call_center_sk = cc_call_center_sk + AND cr_returned_date_sk = d_date_sk + AND cr_returning_customer_sk = c_customer_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND ca_address_sk = c_current_addr_sk + AND d_year = 1999 + AND d_moy = 12 + AND ( ( cd_marital_status = 'M' + AND cd_education_status = 'Unknown' ) + OR ( cd_marital_status = 'W' + AND cd_education_status = 'Advanced Degree' ) ) + AND hd_buy_potential LIKE 'Unknown%' + AND ca_gmt_offset = -7 +GROUP BY cc_call_center_id, + cc_name, + cc_manager, + cd_marital_status, + cd_education_status +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY Sum(cr_net_loss) DESC +{% endif %} diff --git a/dbt/models/tpc_ds/query92.sql b/dbt/models/tpc_ds/query92.sql new file mode 100644 index 0000000..a648585 --- /dev/null +++ b/dbt/models/tpc_ds/query92.sql @@ -0,0 +1,23 @@ +-- query92 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + Sum(ws_ext_discount_amt) AS excess_discount_amount +FROM {{source('src__tpc_ds', 'web_sales')}} , + {{source('src__tpc_ds', 'item')}} , + {{source('src__tpc_ds', 'date_dim')}} +WHERE i_manufact_id = 718 +AND i_item_sk = ws_item_sk +AND Cast(d_date AS DATE) BETWEEN Cast('2002-03-29' AS DATE) AND ( + Cast('2002-06-28' AS DATE)) +AND d_date_sk = ws_sold_date_sk +AND ws_ext_discount_amt > + ( + SELECT 1.3 * avg(ws_ext_discount_amt) + FROM {{source('src__tpc_ds', 'web_sales')}} , + {{source('src__tpc_ds', 'date_dim')}} + WHERE ws_item_sk = i_item_sk + AND Cast(d_date AS DATE) BETWEEN Cast('2002-03-29' AS DATE) AND ( + cast('2002-06-28' AS date)) + AND d_date_sk = ws_sold_date_sk ) +ORDER BY sum(ws_ext_discount_amt) +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query93.sql b/dbt/models/tpc_ds/query93.sql new file mode 100644 index 0000000..d24927d --- /dev/null +++ b/dbt/models/tpc_ds/query93.sql @@ -0,0 +1,24 @@ +-- query93 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} ss_customer_sk, + Sum(act_sales) sumsales +FROM (SELECT ss_item_sk, + ss_ticket_number, + ss_customer_sk, + CASE + WHEN sr_return_quantity IS NOT NULL THEN + ( ss_quantity - sr_return_quantity ) * ss_sales_price + ELSE ( ss_quantity * ss_sales_price ) + END act_sales + FROM {{source('src__tpc_ds', 'store_sales')}} + LEFT OUTER JOIN {{source('src__tpc_ds', 'store_returns')}} + ON ( sr_item_sk = ss_item_sk + AND sr_ticket_number = ss_ticket_number ), + {{source('src__tpc_ds', 'reason')}} + WHERE sr_reason_sk = r_reason_sk + AND r_reason_desc = 'reason 38') t +GROUP BY ss_customer_sk +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY sumsales, + ss_customer_sk +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query94.sql b/dbt/models/tpc_ds/query94.sql new file mode 100644 index 0000000..cba3533 --- /dev/null +++ b/dbt/models/tpc_ds/query94.sql @@ -0,0 +1,30 @@ +-- query94 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + Count(DISTINCT ws_order_number) AS order_count, + Sum(ws_ext_ship_cost) AS total_shipping_cost , + Sum(ws_net_profit) AS total_net_profit +FROM {{source('src__tpc_ds', 'web_sales')}} ws1 , + {{source('src__tpc_ds', 'date_dim')}} , + {{source('src__tpc_ds', 'customer_address')}} , + {{source('src__tpc_ds', 'web_site')}} +WHERE Cast(d_date AS DATE) BETWEEN Cast('2000-3-01' AS DATE) AND ( + Cast('2000-5-01' AS DATE)) +AND ws1.ws_ship_date_sk = d_date_sk +AND ws1.ws_ship_addr_sk = ca_address_sk +AND ca_state = 'MT' +AND ws1.ws_web_site_sk = web_site_sk +AND web_company_name = 'pri' +AND EXISTS + ( + SELECT * + FROM {{source('src__tpc_ds', 'web_sales')}} ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +AND NOT EXISTS + ( + SELECT * + FROM {{source('src__tpc_ds', 'web_returns')}} wr1 + WHERE ws1.ws_order_number = wr1.wr_order_number) +ORDER BY count(DISTINCT ws_order_number) +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query95.sql b/dbt/models/tpc_ds/query95.sql new file mode 100644 index 0000000..6fab951 --- /dev/null +++ b/dbt/models/tpc_ds/query95.sql @@ -0,0 +1,38 @@ +-- query95 +WITH ws_wh AS +( + SELECT ws1.ws_order_number, + ws1.ws_warehouse_sk wh1, + ws2.ws_warehouse_sk wh2 + FROM {{source('src__tpc_ds', 'web_sales')}} ws1, + {{source('src__tpc_ds', 'web_sales')}} ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + Count(DISTINCT ws_order_number) AS order_count, + Sum(ws_ext_ship_cost) AS total_shipping_cost, + Sum(ws_net_profit) AS total_net_profit +FROM {{source('src__tpc_ds', 'web_sales')}} ws1 , + {{source('src__tpc_ds', 'date_dim')}} , + {{source('src__tpc_ds', 'customer_address')}} , + {{source('src__tpc_ds', 'web_site')}} +WHERE Cast(d_date AS DATE) BETWEEN Cast('2000-4-01' AS DATE) AND ( + Cast('2000-6-01' AS DATE)) +AND ws1.ws_ship_date_sk = d_date_sk +AND ws1.ws_ship_addr_sk = ca_address_sk +AND ca_state = 'IN' +AND ws1.ws_web_site_sk = web_site_sk +AND web_company_name = 'pri' +AND ws1.ws_order_number IN + ( + SELECT ws_order_number + FROM ws_wh) +AND ws1.ws_order_number IN + ( + SELECT wr_order_number + FROM {{source('src__tpc_ds', 'web_returns')}}, + ws_wh + WHERE wr_order_number = ws_wh.ws_order_number) +ORDER BY count(DISTINCT ws_order_number) +{{ 'LIMIT 100' if target.type != 'synapse' }} + diff --git a/dbt/models/tpc_ds/query96.sql b/dbt/models/tpc_ds/query96.sql new file mode 100644 index 0000000..d816659 --- /dev/null +++ b/dbt/models/tpc_ds/query96.sql @@ -0,0 +1,15 @@ +-- query96 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} Count(*) as cnt +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'household_demographics')}}, + {{source('src__tpc_ds', 'time_dim')}}, + {{source('src__tpc_ds', 'store')}} +WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 15 + AND time_dim.t_minute >= 30 + AND household_demographics.hd_dep_count = 7 + AND store.s_store_name = 'ese' +ORDER BY Count(*) +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query97.sql b/dbt/models/tpc_ds/query97.sql new file mode 100644 index 0000000..bb72573 --- /dev/null +++ b/dbt/models/tpc_ds/query97.sql @@ -0,0 +1,40 @@ + +-- query97 +WITH ssci + AS (SELECT ss_customer_sk customer_sk, + ss_item_sk item_sk + FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1196 AND 1196 + 11 + GROUP BY ss_customer_sk, + ss_item_sk), + csci + AS (SELECT cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'date_dim')}} + WHERE cs_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1196 AND 1196 + 11 + GROUP BY cs_bill_customer_sk, + cs_item_sk) +SELECT {{ 'TOP 100' if target.name == 'synapse' }} Sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NULL THEN 1 + ELSE 0 + END) store_only, + Sum(CASE + WHEN ssci.customer_sk IS NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) catalog_only, + Sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) store_and_catalog +FROM ssci + FULL OUTER JOIN csci + ON ( ssci.customer_sk = csci.customer_sk + AND ssci.item_sk = csci.item_sk ) +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/query98.sql b/dbt/models/tpc_ds/query98.sql new file mode 100644 index 0000000..e011dc4 --- /dev/null +++ b/dbt/models/tpc_ds/query98.sql @@ -0,0 +1,31 @@ + +-- query98 +SELECT i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + Sum(ss_ext_sales_price) AS itemrevenue, + Sum(ss_ext_sales_price) * 100 / Sum(Sum(ss_ext_sales_price)) + OVER ( + PARTITION BY i_class) AS revenueratio +FROM {{source('src__tpc_ds', 'store_sales')}}, + {{source('src__tpc_ds', 'item')}}, + {{source('src__tpc_ds', 'date_dim')}} +WHERE ss_item_sk = i_item_sk + AND i_category IN ( 'Men', 'Home', 'Electronics' ) + AND ss_sold_date_sk = d_date_sk + AND Cast(d_date AS DATE) BETWEEN CAST('2000-05-18' AS DATE) AND ( + CAST('2000-06-18' AS DATE) ) +GROUP BY i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY i_category, + i_class, + i_item_id, + i_item_desc, + revenueratio{% endif %} + diff --git a/dbt/models/tpc_ds/query99.sql b/dbt/models/tpc_ds/query99.sql new file mode 100644 index 0000000..20a930e --- /dev/null +++ b/dbt/models/tpc_ds/query99.sql @@ -0,0 +1,46 @@ + + +-- query99 +SELECT {{ 'TOP 100' if target.name == 'synapse' }} + {{ substr('w_warehouse_name', 1, 20) }} as substr_w_warehouse_name, + sm_type, + cc_name, + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk <= 30 ) THEN 1 + ELSE 0 + END) AS days_30, + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk > 30 ) + AND ( cs_ship_date_sk - cs_sold_date_sk <= 60 ) THEN 1 + ELSE 0 + END) AS days_31_60, + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk > 60 ) + AND ( cs_ship_date_sk - cs_sold_date_sk <= 90 ) THEN 1 + ELSE 0 + END) AS days_61_90, + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk > 90 ) + AND ( cs_ship_date_sk - cs_sold_date_sk <= 120 ) THEN + 1 + ELSE 0 + END) AS days_91_120, + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk > 120 ) THEN 1 + ELSE 0 + END) AS days_over_120 +FROM {{source('src__tpc_ds', 'catalog_sales')}}, + {{source('src__tpc_ds', 'warehouse')}}, + {{source('src__tpc_ds', 'ship_mode')}}, + {{source('src__tpc_ds', 'call_center')}}, + {{source('src__tpc_ds', 'date_dim')}} +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND cs_ship_date_sk = d_date_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND cs_call_center_sk = cc_call_center_sk +GROUP BY {{ substr('w_warehouse_name', 1, 20) }}, sm_type, cc_name +{% if not (target.type == 'synapse' and model.config.materialized == 'table') %} +ORDER BY 1, 2, 3 +{% endif %} +{{ 'LIMIT 100' if target.type != 'synapse' }} diff --git a/dbt/models/tpc_ds/src__tpc_ds.yml b/dbt/models/tpc_ds/src__tpc_ds.yml new file mode 100644 index 0000000..85c4910 --- /dev/null +++ b/dbt/models/tpc_ds/src__tpc_ds.yml @@ -0,0 +1,32 @@ +version: 2 + +sources: + - name: src__tpc_ds + database: "{{ var('dataset_database', target.database) }}" # Default location is the target's database, can be overridden with dataset_database variable + schema: "{{ var('dataset_schema', target.schema) }}" # Default location is the target's schema, can be overridden with dataset_schema variable + tables: + - name: call_center + - name: catalog_page + - name: catalog_returns + - name: catalog_sales + - name: customer + - name: customer_address + - name: customer_demographics + - name: date_dim + - name: household_demographics + - name: income_band + - name: inventory + - name: item + - name: payments + - name: promotion + - name: reason + - name: ship_mode + - name: store + - name: store_returns + - name: store_sales + - name: time_dim + - name: warehouse + - name: web_page + - name: web_returns + - name: web_sales + - name: web_site