github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/workload/tpcds/queries.go (about)

     1  // Copyright 2019 The Cockroach Authors.
     2  //
     3  // Use of this software is governed by the Business Source License
     4  // included in the file licenses/BSL.txt.
     5  //
     6  // As of the Change Date specified in that file, in accordance with
     7  // the Business Source License, use of this software will be governed
     8  // by the Apache License, Version 2.0, included in the file
     9  // licenses/APL.txt.
    10  
    11  package tpcds
    12  
    13  // NumQueries specifies the number of queries in TPC-DS benchmark.
    14  const NumQueries = 99
    15  
    16  // QueriesByNumber is a mapping from the number of a TPC-DS query to the actual
    17  // query. Only queries that can be parsed by CockroachDB are present.
    18  var QueriesByNumber = map[int]string{
    19  	1:  query1,
    20  	2:  query2,
    21  	3:  query3,
    22  	4:  query4,
    23  	5:  query5,
    24  	6:  query6,
    25  	7:  query7,
    26  	8:  query8,
    27  	9:  query9,
    28  	10: query10,
    29  	11: query11,
    30  	12: query12,
    31  	13: query13,
    32  	14: query14,
    33  	15: query15,
    34  	16: query16,
    35  	17: query17,
    36  	18: query18,
    37  	19: query19,
    38  	20: query20,
    39  	21: query21,
    40  	22: query22,
    41  	23: query23,
    42  	24: query24,
    43  	25: query25,
    44  	26: query26,
    45  	// TODO(yuzefovich): adjust the query.
    46  	//27: query27,
    47  	28: query28,
    48  	29: query29,
    49  	30: query30,
    50  	31: query31,
    51  	32: query32,
    52  	33: query33,
    53  	34: query34,
    54  	35: query35,
    55  	// TODO(yuzefovich): adjust the query.
    56  	//36: query36,
    57  	37: query37,
    58  	38: query38,
    59  	39: query39,
    60  	40: query40,
    61  	41: query41,
    62  	42: query42,
    63  	43: query43,
    64  	44: query44,
    65  	45: query45,
    66  	46: query46,
    67  	47: query47,
    68  	48: query48,
    69  	49: query49,
    70  	50: query50,
    71  	51: query51,
    72  	52: query52,
    73  	53: query53,
    74  	54: query54,
    75  	55: query55,
    76  	56: query56,
    77  	57: query57,
    78  	58: query58,
    79  	59: query59,
    80  	60: query60,
    81  	61: query61,
    82  	62: query62,
    83  	63: query63,
    84  	64: query64,
    85  	65: query65,
    86  	66: query66,
    87  	67: query67,
    88  	68: query68,
    89  	69: query69,
    90  	// TODO(yuzefovich): adjust the query.
    91  	//70: query70,
    92  	71: query71,
    93  	72: query72,
    94  	73: query73,
    95  	74: query74,
    96  	75: query75,
    97  	76: query76,
    98  	77: query77,
    99  	78: query78,
   100  	79: query79,
   101  	80: query80,
   102  	81: query81,
   103  	82: query82,
   104  	83: query83,
   105  	84: query84,
   106  	85: query85,
   107  	// TODO(yuzefovich): adjust the query.
   108  	//86: query86,
   109  	87: query87,
   110  	88: query88,
   111  	89: query89,
   112  	90: query90,
   113  	91: query91,
   114  	92: query92,
   115  	93: query93,
   116  	94: query94,
   117  	95: query95,
   118  	96: query96,
   119  	97: query97,
   120  	98: query98,
   121  	99: query99,
   122  }
   123  
   124  // TODO(yuzefovich): remove once these queries are "enabled."
   125  var (
   126  	_ = query27
   127  	_ = query36
   128  	_ = query70
   129  	_ = query86
   130  )
   131  
   132  const (
   133  	query1 = `
   134  WITH
   135      customer_total_return
   136          AS (
   137              SELECT
   138                  sr_customer_sk AS ctr_customer_sk,
   139                  sr_store_sk AS ctr_store_sk,
   140                  sum(sr_fee) AS ctr_total_return
   141              FROM
   142                  store_returns, date_dim
   143              WHERE
   144                  sr_returned_date_sk = d_date_sk
   145                  AND d_year = 2000
   146              GROUP BY
   147                  sr_customer_sk, sr_store_sk
   148          )
   149  SELECT
   150      c_customer_id
   151  FROM
   152      customer_total_return AS ctr1, store, customer
   153  WHERE
   154      ctr1.ctr_total_return
   155      > (
   156              SELECT
   157                  avg(ctr_total_return) * 1.2
   158              FROM
   159                  customer_total_return AS ctr2
   160              WHERE
   161                  ctr1.ctr_store_sk = ctr2.ctr_store_sk
   162          )
   163      AND s_store_sk = ctr1.ctr_store_sk
   164      AND s_state = 'TN'
   165      AND ctr1.ctr_customer_sk = c_customer_sk
   166  ORDER BY
   167      c_customer_id
   168  LIMIT
   169      100;
   170  `
   171  
   172  	query2 = `
   173  WITH
   174  	wscs
   175  		AS (
   176  			SELECT
   177  				sold_date_sk, sales_price
   178  			FROM
   179  				(
   180  					SELECT
   181  						ws_sold_date_sk AS sold_date_sk,
   182  						ws_ext_sales_price AS sales_price
   183  					FROM
   184  						web_sales
   185  					UNION ALL
   186  						SELECT
   187  							cs_sold_date_sk AS sold_date_sk,
   188  							cs_ext_sales_price
   189  								AS sales_price
   190  						FROM
   191  							catalog_sales
   192  				)
   193  		),
   194  	wswscs
   195  		AS (
   196  			SELECT
   197  				d_week_seq,
   198  				sum(
   199  					CASE
   200  					WHEN (d_day_name = 'Sunday')
   201  					THEN sales_price
   202  					ELSE NULL
   203  					END
   204  				)
   205  					AS sun_sales,
   206  				sum(
   207  					CASE
   208  					WHEN (d_day_name = 'Monday')
   209  					THEN sales_price
   210  					ELSE NULL
   211  					END
   212  				)
   213  					AS mon_sales,
   214  				sum(
   215  					CASE
   216  					WHEN (d_day_name = 'Tuesday')
   217  					THEN sales_price
   218  					ELSE NULL
   219  					END
   220  				)
   221  					AS tue_sales,
   222  				sum(
   223  					CASE
   224  					WHEN (d_day_name = 'Wednesday')
   225  					THEN sales_price
   226  					ELSE NULL
   227  					END
   228  				)
   229  					AS wed_sales,
   230  				sum(
   231  					CASE
   232  					WHEN (d_day_name = 'Thursday')
   233  					THEN sales_price
   234  					ELSE NULL
   235  					END
   236  				)
   237  					AS thu_sales,
   238  				sum(
   239  					CASE
   240  					WHEN (d_day_name = 'Friday')
   241  					THEN sales_price
   242  					ELSE NULL
   243  					END
   244  				)
   245  					AS fri_sales,
   246  				sum(
   247  					CASE
   248  					WHEN (d_day_name = 'Saturday')
   249  					THEN sales_price
   250  					ELSE NULL
   251  					END
   252  				)
   253  					AS sat_sales
   254  			FROM
   255  				wscs, date_dim
   256  			WHERE
   257  				d_date_sk = sold_date_sk
   258  			GROUP BY
   259  				d_week_seq
   260  		)
   261  SELECT
   262  	d_week_seq1,
   263  	round(sun_sales1 / sun_sales2, 2),
   264  	round(mon_sales1 / mon_sales2, 2),
   265  	round(tue_sales1 / tue_sales2, 2),
   266  	round(wed_sales1 / wed_sales2, 2),
   267  	round(thu_sales1 / thu_sales2, 2),
   268  	round(fri_sales1 / fri_sales2, 2),
   269  	round(sat_sales1 / sat_sales2, 2)
   270  FROM
   271  	(
   272  		SELECT
   273  			wswscs.d_week_seq AS d_week_seq1,
   274  			sun_sales AS sun_sales1,
   275  			mon_sales AS mon_sales1,
   276  			tue_sales AS tue_sales1,
   277  			wed_sales AS wed_sales1,
   278  			thu_sales AS thu_sales1,
   279  			fri_sales AS fri_sales1,
   280  			sat_sales AS sat_sales1
   281  		FROM
   282  			wswscs, date_dim
   283  		WHERE
   284  			date_dim.d_week_seq = wswscs.d_week_seq
   285  			AND d_year = 1998
   286  	)
   287  		AS y,
   288  	(
   289  		SELECT
   290  			wswscs.d_week_seq AS d_week_seq2,
   291  			sun_sales AS sun_sales2,
   292  			mon_sales AS mon_sales2,
   293  			tue_sales AS tue_sales2,
   294  			wed_sales AS wed_sales2,
   295  			thu_sales AS thu_sales2,
   296  			fri_sales AS fri_sales2,
   297  			sat_sales AS sat_sales2
   298  		FROM
   299  			wswscs, date_dim
   300  		WHERE
   301  			date_dim.d_week_seq = wswscs.d_week_seq
   302  			AND d_year = 1998 + 1
   303  	)
   304  		AS z
   305  WHERE
   306  	d_week_seq1 = d_week_seq2 - 53
   307  ORDER BY
   308  	d_week_seq1;
   309  `
   310  
   311  	query3 = `
   312  SELECT
   313  	dt.d_year,
   314  	item.i_brand_id AS brand_id,
   315  	item.i_brand AS brand,
   316  	sum(ss_sales_price) AS sum_agg
   317  FROM
   318  	date_dim AS dt, store_sales, item
   319  WHERE
   320  	dt.d_date_sk = store_sales.ss_sold_date_sk
   321  	AND store_sales.ss_item_sk = item.i_item_sk
   322  	AND item.i_manufact_id = 816
   323  	AND dt.d_moy = 11
   324  GROUP BY
   325  	dt.d_year, item.i_brand, item.i_brand_id
   326  ORDER BY
   327  	dt.d_year, sum_agg DESC, brand_id
   328  LIMIT
   329  	100;
   330  `
   331  
   332  	query4 = `
   333  WITH
   334  	year_total
   335  		AS (
   336  			SELECT
   337  				c_customer_id AS customer_id,
   338  				c_first_name AS customer_first_name,
   339  				c_last_name AS customer_last_name,
   340  				c_preferred_cust_flag
   341  					AS customer_preferred_cust_flag,
   342  				c_birth_country AS customer_birth_country,
   343  				c_login AS customer_login,
   344  				c_email_address AS customer_email_address,
   345  				d_year AS dyear,
   346  				sum(
   347  					(
   348  						ss_ext_list_price
   349  						- ss_ext_wholesale_cost
   350  						- ss_ext_discount_amt
   351  						+ ss_ext_sales_price
   352  					)
   353  					/ 2
   354  				)
   355  					AS year_total,
   356  				's' AS sale_type
   357  			FROM
   358  				customer, store_sales, date_dim
   359  			WHERE
   360  				c_customer_sk = ss_customer_sk
   361  				AND ss_sold_date_sk = d_date_sk
   362  			GROUP BY
   363  				c_customer_id,
   364  				c_first_name,
   365  				c_last_name,
   366  				c_preferred_cust_flag,
   367  				c_birth_country,
   368  				c_login,
   369  				c_email_address,
   370  				d_year
   371  			UNION ALL
   372  				SELECT
   373  					c_customer_id AS customer_id,
   374  					c_first_name AS customer_first_name,
   375  					c_last_name AS customer_last_name,
   376  					c_preferred_cust_flag
   377  						AS customer_preferred_cust_flag,
   378  					c_birth_country
   379  						AS customer_birth_country,
   380  					c_login AS customer_login,
   381  					c_email_address
   382  						AS customer_email_address,
   383  					d_year AS dyear,
   384  					sum(
   385  						(
   386  							cs_ext_list_price
   387  							- cs_ext_wholesale_cost
   388  							- cs_ext_discount_amt
   389  							+ cs_ext_sales_price
   390  						)
   391  						/ 2
   392  					)
   393  						AS year_total,
   394  					'c' AS sale_type
   395  				FROM
   396  					customer, catalog_sales, date_dim
   397  				WHERE
   398  					c_customer_sk = cs_bill_customer_sk
   399  					AND cs_sold_date_sk = d_date_sk
   400  				GROUP BY
   401  					c_customer_id,
   402  					c_first_name,
   403  					c_last_name,
   404  					c_preferred_cust_flag,
   405  					c_birth_country,
   406  					c_login,
   407  					c_email_address,
   408  					d_year
   409  			UNION ALL
   410  				SELECT
   411  					c_customer_id AS customer_id,
   412  					c_first_name AS customer_first_name,
   413  					c_last_name AS customer_last_name,
   414  					c_preferred_cust_flag
   415  						AS customer_preferred_cust_flag,
   416  					c_birth_country
   417  						AS customer_birth_country,
   418  					c_login AS customer_login,
   419  					c_email_address
   420  						AS customer_email_address,
   421  					d_year AS dyear,
   422  					sum(
   423  						(
   424  							ws_ext_list_price
   425  							- ws_ext_wholesale_cost
   426  							- ws_ext_discount_amt
   427  							+ ws_ext_sales_price
   428  						)
   429  						/ 2
   430  					)
   431  						AS year_total,
   432  					'w' AS sale_type
   433  				FROM
   434  					customer, web_sales, date_dim
   435  				WHERE
   436  					c_customer_sk = ws_bill_customer_sk
   437  					AND ws_sold_date_sk = d_date_sk
   438  				GROUP BY
   439  					c_customer_id,
   440  					c_first_name,
   441  					c_last_name,
   442  					c_preferred_cust_flag,
   443  					c_birth_country,
   444  					c_login,
   445  					c_email_address,
   446  					d_year
   447  		)
   448  SELECT
   449  	t_s_secyear.customer_id,
   450  	t_s_secyear.customer_first_name,
   451  	t_s_secyear.customer_last_name,
   452  	t_s_secyear.customer_birth_country
   453  FROM
   454  	year_total AS t_s_firstyear,
   455  	year_total AS t_s_secyear,
   456  	year_total AS t_c_firstyear,
   457  	year_total AS t_c_secyear,
   458  	year_total AS t_w_firstyear,
   459  	year_total AS t_w_secyear
   460  WHERE
   461  	t_s_secyear.customer_id = t_s_firstyear.customer_id
   462  	AND t_s_firstyear.customer_id = t_c_secyear.customer_id
   463  	AND t_s_firstyear.customer_id
   464  		= t_c_firstyear.customer_id
   465  	AND t_s_firstyear.customer_id
   466  		= t_w_firstyear.customer_id
   467  	AND t_s_firstyear.customer_id = t_w_secyear.customer_id
   468  	AND t_s_firstyear.sale_type = 's'
   469  	AND t_c_firstyear.sale_type = 'c'
   470  	AND t_w_firstyear.sale_type = 'w'
   471  	AND t_s_secyear.sale_type = 's'
   472  	AND t_c_secyear.sale_type = 'c'
   473  	AND t_w_secyear.sale_type = 'w'
   474  	AND t_s_firstyear.dyear = 1999
   475  	AND t_s_secyear.dyear = 1999 + 1
   476  	AND t_c_firstyear.dyear = 1999
   477  	AND t_c_secyear.dyear = 1999 + 1
   478  	AND t_w_firstyear.dyear = 1999
   479  	AND t_w_secyear.dyear = 1999 + 1
   480  	AND t_s_firstyear.year_total > 0
   481  	AND t_c_firstyear.year_total > 0
   482  	AND t_w_firstyear.year_total > 0
   483  	AND CASE
   484  		WHEN t_c_firstyear.year_total > 0
   485  		THEN t_c_secyear.year_total
   486  		/ t_c_firstyear.year_total
   487  		ELSE NULL
   488  		END
   489  		> CASE
   490  			WHEN t_s_firstyear.year_total > 0
   491  			THEN t_s_secyear.year_total
   492  			/ t_s_firstyear.year_total
   493  			ELSE NULL
   494  			END
   495  	AND CASE
   496  		WHEN t_c_firstyear.year_total > 0
   497  		THEN t_c_secyear.year_total
   498  		/ t_c_firstyear.year_total
   499  		ELSE NULL
   500  		END
   501  		> CASE
   502  			WHEN t_w_firstyear.year_total > 0
   503  			THEN t_w_secyear.year_total
   504  			/ t_w_firstyear.year_total
   505  			ELSE NULL
   506  			END
   507  ORDER BY
   508  	t_s_secyear.customer_id,
   509  	t_s_secyear.customer_first_name,
   510  	t_s_secyear.customer_last_name,
   511  	t_s_secyear.customer_birth_country
   512  LIMIT
   513  	100;
   514  `
   515  	// NOTE: I added conversion of 14 days to an interval.
   516  	query5 = `
   517  WITH
   518  	ssr
   519  		AS (
   520  			SELECT
   521  				s_store_id,
   522  				sum(sales_price) AS sales,
   523  				sum(profit) AS profit,
   524  				sum(return_amt) AS returns,
   525  				sum(net_loss) AS profit_loss
   526  			FROM
   527  				(
   528  					SELECT
   529  						ss_store_sk AS store_sk,
   530  						ss_sold_date_sk AS date_sk,
   531  						ss_ext_sales_price AS sales_price,
   532  						ss_net_profit AS profit,
   533  						CAST(0 AS DECIMAL(7,2))
   534  							AS return_amt,
   535  						CAST(0 AS DECIMAL(7,2)) AS net_loss
   536  					FROM
   537  						store_sales
   538  					UNION ALL
   539  						SELECT
   540  							sr_store_sk AS store_sk,
   541  							sr_returned_date_sk AS date_sk,
   542  							CAST(0 AS DECIMAL(7,2))
   543  								AS sales_price,
   544  							CAST(0 AS DECIMAL(7,2))
   545  								AS profit,
   546  							sr_return_amt AS return_amt,
   547  							sr_net_loss AS net_loss
   548  						FROM
   549  							store_returns
   550  				)
   551  					AS salesreturns,
   552  				date_dim,
   553  				store
   554  			WHERE
   555  				date_sk = d_date_sk
   556  				AND d_date BETWEEN CAST('2000-08-19' AS DATE) AND (CAST('2000-08-19' AS DATE) + '14 days'::INTERVAL)
   557  				AND store_sk = s_store_sk
   558  			GROUP BY
   559  				s_store_id
   560  		),
   561  	csr
   562  		AS (
   563  			SELECT
   564  				cp_catalog_page_id,
   565  				sum(sales_price) AS sales,
   566  				sum(profit) AS profit,
   567  				sum(return_amt) AS returns,
   568  				sum(net_loss) AS profit_loss
   569  			FROM
   570  				(
   571  					SELECT
   572  						cs_catalog_page_sk AS page_sk,
   573  						cs_sold_date_sk AS date_sk,
   574  						cs_ext_sales_price AS sales_price,
   575  						cs_net_profit AS profit,
   576  						CAST(0 AS DECIMAL(7,2))
   577  							AS return_amt,
   578  						CAST(0 AS DECIMAL(7,2)) AS net_loss
   579  					FROM
   580  						catalog_sales
   581  					UNION ALL
   582  						SELECT
   583  							cr_catalog_page_sk AS page_sk,
   584  							cr_returned_date_sk AS date_sk,
   585  							CAST(0 AS DECIMAL(7,2))
   586  								AS sales_price,
   587  							CAST(0 AS DECIMAL(7,2))
   588  								AS profit,
   589  							cr_return_amount AS return_amt,
   590  							cr_net_loss AS net_loss
   591  						FROM
   592  							catalog_returns
   593  				)
   594  					AS salesreturns,
   595  				date_dim,
   596  				catalog_page
   597  			WHERE
   598  				date_sk = d_date_sk
   599  				AND d_date BETWEEN CAST('2000-08-19' AS DATE) AND (CAST('2000-08-19' AS DATE) + '14 days'::INTERVAL)
   600  				AND page_sk = cp_catalog_page_sk
   601  			GROUP BY
   602  				cp_catalog_page_id
   603  		),
   604  	wsr
   605  		AS (
   606  			SELECT
   607  				web_site_id,
   608  				sum(sales_price) AS sales,
   609  				sum(profit) AS profit,
   610  				sum(return_amt) AS returns,
   611  				sum(net_loss) AS profit_loss
   612  			FROM
   613  				(
   614  					SELECT
   615  						ws_web_site_sk AS wsr_web_site_sk,
   616  						ws_sold_date_sk AS date_sk,
   617  						ws_ext_sales_price AS sales_price,
   618  						ws_net_profit AS profit,
   619  						CAST(0 AS DECIMAL(7,2))
   620  							AS return_amt,
   621  						CAST(0 AS DECIMAL(7,2)) AS net_loss
   622  					FROM
   623  						web_sales
   624  					UNION ALL
   625  						SELECT
   626  							ws_web_site_sk
   627  								AS wsr_web_site_sk,
   628  							wr_returned_date_sk AS date_sk,
   629  							CAST(0 AS DECIMAL(7,2))
   630  								AS sales_price,
   631  							CAST(0 AS DECIMAL(7,2))
   632  								AS profit,
   633  							wr_return_amt AS return_amt,
   634  							wr_net_loss AS net_loss
   635  						FROM
   636  							web_returns
   637  							LEFT JOIN web_sales ON
   638  									wr_item_sk = ws_item_sk
   639  									AND wr_order_number
   640  										= ws_order_number
   641  				)
   642  					AS salesreturns,
   643  				date_dim,
   644  				web_site
   645  			WHERE
   646  				date_sk = d_date_sk
   647  				AND d_date BETWEEN CAST('2000-08-19' AS DATE) AND (CAST('2000-08-19' AS DATE) + '14 days'::INTERVAL)
   648  				AND wsr_web_site_sk = web_site_sk
   649  			GROUP BY
   650  				web_site_id
   651  		)
   652  SELECT
   653  	channel,
   654  	id,
   655  	sum(sales) AS sales,
   656  	sum(returns) AS returns,
   657  	sum(profit) AS profit
   658  FROM
   659  	(
   660  		SELECT
   661  			'store channel' AS channel,
   662  			'store' || s_store_id AS id,
   663  			sales,
   664  			returns,
   665  			profit - profit_loss AS profit
   666  		FROM
   667  			ssr
   668  		UNION ALL
   669  			SELECT
   670  				'catalog channel' AS channel,
   671  				'catalog_page' || cp_catalog_page_id AS id,
   672  				sales,
   673  				returns,
   674  				profit - profit_loss AS profit
   675  			FROM
   676  				csr
   677  		UNION ALL
   678  			SELECT
   679  				'web channel' AS channel,
   680  				'web_site' || web_site_id AS id,
   681  				sales,
   682  				returns,
   683  				profit - profit_loss AS profit
   684  			FROM
   685  				wsr
   686  	)
   687  		AS x
   688  GROUP BY
   689  	rollup(channel, id)
   690  ORDER BY
   691  	channel, id
   692  LIMIT
   693  	100;
   694  `
   695  
   696  	query6 = `
   697  SELECT
   698  	a.ca_state AS state, count(*) AS cnt
   699  FROM
   700  	customer_address AS a,
   701  	customer AS c,
   702  	store_sales AS s,
   703  	date_dim AS d,
   704  	item AS i
   705  WHERE
   706  	a.ca_address_sk = c.c_current_addr_sk
   707  	AND c.c_customer_sk = s.ss_customer_sk
   708  	AND s.ss_sold_date_sk = d.d_date_sk
   709  	AND s.ss_item_sk = i.i_item_sk
   710  	AND d.d_month_seq
   711  		= (
   712  				SELECT
   713  					DISTINCT d_month_seq
   714  				FROM
   715  					date_dim
   716  				WHERE
   717  					d_year = 2002 AND d_moy = 3
   718  			)
   719  	AND i.i_current_price
   720  		> 1.2
   721  			* (
   722  					SELECT
   723  						avg(j.i_current_price)
   724  					FROM
   725  						item AS j
   726  					WHERE
   727  						j.i_category = i.i_category
   728  				)
   729  GROUP BY
   730  	a.ca_state
   731  HAVING
   732  	count(*) >= 10
   733  ORDER BY
   734  	cnt, a.ca_state
   735  LIMIT
   736  	100;
   737  `
   738  
   739  	query7 = `
   740  SELECT
   741  	i_item_id,
   742  	avg(ss_quantity) AS agg1,
   743  	avg(ss_list_price) AS agg2,
   744  	avg(ss_coupon_amt) AS agg3,
   745  	avg(ss_sales_price) AS agg4
   746  FROM
   747  	store_sales,
   748  	customer_demographics,
   749  	date_dim,
   750  	item,
   751  	promotion
   752  WHERE
   753  	ss_sold_date_sk = d_date_sk
   754  	AND ss_item_sk = i_item_sk
   755  	AND ss_cdemo_sk = cd_demo_sk
   756  	AND ss_promo_sk = p_promo_sk
   757  	AND cd_gender = 'F'
   758  	AND cd_marital_status = 'W'
   759  	AND cd_education_status = 'College'
   760  	AND (p_channel_email = 'N' OR p_channel_event = 'N')
   761  	AND d_year = 2001
   762  GROUP BY
   763  	i_item_id
   764  ORDER BY
   765  	i_item_id
   766  LIMIT
   767  	100;
   768  `
   769  
   770  	query8 = `
   771  SELECT
   772  	s_store_name, sum(ss_net_profit)
   773  FROM
   774  	store_sales,
   775  	date_dim,
   776  	store,
   777  	(
   778  		SELECT
   779  			ca_zip
   780  		FROM
   781  			(
   782  				SELECT
   783  					substr(ca_zip, 1, 5) AS ca_zip
   784  				FROM
   785  					customer_address
   786  				WHERE
   787  					substr(ca_zip, 1, 5)
   788  					IN (
   789  							'47602',
   790  							'16704',
   791  							'35863',
   792  							'28577',
   793  							'83910',
   794  							'36201',
   795  							'58412',
   796  							'48162',
   797  							'28055',
   798  							'41419',
   799  							'80332',
   800  							'38607',
   801  							'77817',
   802  							'24891',
   803  							'16226',
   804  							'18410',
   805  							'21231',
   806  							'59345',
   807  							'13918',
   808  							'51089',
   809  							'20317',
   810  							'17167',
   811  							'54585',
   812  							'67881',
   813  							'78366',
   814  							'47770',
   815  							'18360',
   816  							'51717',
   817  							'73108',
   818  							'14440',
   819  							'21800',
   820  							'89338',
   821  							'45859',
   822  							'65501',
   823  							'34948',
   824  							'25973',
   825  							'73219',
   826  							'25333',
   827  							'17291',
   828  							'10374',
   829  							'18829',
   830  							'60736',
   831  							'82620',
   832  							'41351',
   833  							'52094',
   834  							'19326',
   835  							'25214',
   836  							'54207',
   837  							'40936',
   838  							'21814',
   839  							'79077',
   840  							'25178',
   841  							'75742',
   842  							'77454',
   843  							'30621',
   844  							'89193',
   845  							'27369',
   846  							'41232',
   847  							'48567',
   848  							'83041',
   849  							'71948',
   850  							'37119',
   851  							'68341',
   852  							'14073',
   853  							'16891',
   854  							'62878',
   855  							'49130',
   856  							'19833',
   857  							'24286',
   858  							'27700',
   859  							'40979',
   860  							'50412',
   861  							'81504',
   862  							'94835',
   863  							'84844',
   864  							'71954',
   865  							'39503',
   866  							'57649',
   867  							'18434',
   868  							'24987',
   869  							'12350',
   870  							'86379',
   871  							'27413',
   872  							'44529',
   873  							'98569',
   874  							'16515',
   875  							'27287',
   876  							'24255',
   877  							'21094',
   878  							'16005',
   879  							'56436',
   880  							'91110',
   881  							'68293',
   882  							'56455',
   883  							'54558',
   884  							'10298',
   885  							'83647',
   886  							'32754',
   887  							'27052',
   888  							'51766',
   889  							'19444',
   890  							'13869',
   891  							'45645',
   892  							'94791',
   893  							'57631',
   894  							'20712',
   895  							'37788',
   896  							'41807',
   897  							'46507',
   898  							'21727',
   899  							'71836',
   900  							'81070',
   901  							'50632',
   902  							'88086',
   903  							'63991',
   904  							'20244',
   905  							'31655',
   906  							'51782',
   907  							'29818',
   908  							'63792',
   909  							'68605',
   910  							'94898',
   911  							'36430',
   912  							'57025',
   913  							'20601',
   914  							'82080',
   915  							'33869',
   916  							'22728',
   917  							'35834',
   918  							'29086',
   919  							'92645',
   920  							'98584',
   921  							'98072',
   922  							'11652',
   923  							'78093',
   924  							'57553',
   925  							'43830',
   926  							'71144',
   927  							'53565',
   928  							'18700',
   929  							'90209',
   930  							'71256',
   931  							'38353',
   932  							'54364',
   933  							'28571',
   934  							'96560',
   935  							'57839',
   936  							'56355',
   937  							'50679',
   938  							'45266',
   939  							'84680',
   940  							'34306',
   941  							'34972',
   942  							'48530',
   943  							'30106',
   944  							'15371',
   945  							'92380',
   946  							'84247',
   947  							'92292',
   948  							'68852',
   949  							'13338',
   950  							'34594',
   951  							'82602',
   952  							'70073',
   953  							'98069',
   954  							'85066',
   955  							'47289',
   956  							'11686',
   957  							'98862',
   958  							'26217',
   959  							'47529',
   960  							'63294',
   961  							'51793',
   962  							'35926',
   963  							'24227',
   964  							'14196',
   965  							'24594',
   966  							'32489',
   967  							'99060',
   968  							'49472',
   969  							'43432',
   970  							'49211',
   971  							'14312',
   972  							'88137',
   973  							'47369',
   974  							'56877',
   975  							'20534',
   976  							'81755',
   977  							'15794',
   978  							'12318',
   979  							'21060',
   980  							'73134',
   981  							'41255',
   982  							'63073',
   983  							'81003',
   984  							'73873',
   985  							'66057',
   986  							'51184',
   987  							'51195',
   988  							'45676',
   989  							'92696',
   990  							'70450',
   991  							'90669',
   992  							'98338',
   993  							'25264',
   994  							'38919',
   995  							'59226',
   996  							'58581',
   997  							'60298',
   998  							'17895',
   999  							'19489',
  1000  							'52301',
  1001  							'80846',
  1002  							'95464',
  1003  							'68770',
  1004  							'51634',
  1005  							'19988',
  1006  							'18367',
  1007  							'18421',
  1008  							'11618',
  1009  							'67975',
  1010  							'25494',
  1011  							'41352',
  1012  							'95430',
  1013  							'15734',
  1014  							'62585',
  1015  							'97173',
  1016  							'33773',
  1017  							'10425',
  1018  							'75675',
  1019  							'53535',
  1020  							'17879',
  1021  							'41967',
  1022  							'12197',
  1023  							'67998',
  1024  							'79658',
  1025  							'59130',
  1026  							'72592',
  1027  							'14851',
  1028  							'43933',
  1029  							'68101',
  1030  							'50636',
  1031  							'25717',
  1032  							'71286',
  1033  							'24660',
  1034  							'58058',
  1035  							'72991',
  1036  							'95042',
  1037  							'15543',
  1038  							'33122',
  1039  							'69280',
  1040  							'11912',
  1041  							'59386',
  1042  							'27642',
  1043  							'65177',
  1044  							'17672',
  1045  							'33467',
  1046  							'64592',
  1047  							'36335',
  1048  							'54010',
  1049  							'18767',
  1050  							'63193',
  1051  							'42361',
  1052  							'49254',
  1053  							'33113',
  1054  							'33159',
  1055  							'36479',
  1056  							'59080',
  1057  							'11855',
  1058  							'81963',
  1059  							'31016',
  1060  							'49140',
  1061  							'29392',
  1062  							'41836',
  1063  							'32958',
  1064  							'53163',
  1065  							'13844',
  1066  							'73146',
  1067  							'23952',
  1068  							'65148',
  1069  							'93498',
  1070  							'14530',
  1071  							'46131',
  1072  							'58454',
  1073  							'13376',
  1074  							'13378',
  1075  							'83986',
  1076  							'12320',
  1077  							'17193',
  1078  							'59852',
  1079  							'46081',
  1080  							'98533',
  1081  							'52389',
  1082  							'13086',
  1083  							'68843',
  1084  							'31013',
  1085  							'13261',
  1086  							'60560',
  1087  							'13443',
  1088  							'45533',
  1089  							'83583',
  1090  							'11489',
  1091  							'58218',
  1092  							'19753',
  1093  							'22911',
  1094  							'25115',
  1095  							'86709',
  1096  							'27156',
  1097  							'32669',
  1098  							'13123',
  1099  							'51933',
  1100  							'39214',
  1101  							'41331',
  1102  							'66943',
  1103  							'14155',
  1104  							'69998',
  1105  							'49101',
  1106  							'70070',
  1107  							'35076',
  1108  							'14242',
  1109  							'73021',
  1110  							'59494',
  1111  							'15782',
  1112  							'29752',
  1113  							'37914',
  1114  							'74686',
  1115  							'83086',
  1116  							'34473',
  1117  							'15751',
  1118  							'81084',
  1119  							'49230',
  1120  							'91894',
  1121  							'60624',
  1122  							'17819',
  1123  							'28810',
  1124  							'63180',
  1125  							'56224',
  1126  							'39459',
  1127  							'55233',
  1128  							'75752',
  1129  							'43639',
  1130  							'55349',
  1131  							'86057',
  1132  							'62361',
  1133  							'50788',
  1134  							'31830',
  1135  							'58062',
  1136  							'18218',
  1137  							'85761',
  1138  							'60083',
  1139  							'45484',
  1140  							'21204',
  1141  							'90229',
  1142  							'70041',
  1143  							'41162',
  1144  							'35390',
  1145  							'16364',
  1146  							'39500',
  1147  							'68908',
  1148  							'26689',
  1149  							'52868',
  1150  							'81335',
  1151  							'40146',
  1152  							'11340',
  1153  							'61527',
  1154  							'61794',
  1155  							'71997',
  1156  							'30415',
  1157  							'59004',
  1158  							'29450',
  1159  							'58117',
  1160  							'69952',
  1161  							'33562',
  1162  							'83833',
  1163  							'27385',
  1164  							'61860',
  1165  							'96435',
  1166  							'48333',
  1167  							'23065',
  1168  							'32961',
  1169  							'84919',
  1170  							'61997',
  1171  							'99132',
  1172  							'22815',
  1173  							'56600',
  1174  							'68730',
  1175  							'48017',
  1176  							'95694',
  1177  							'32919',
  1178  							'88217',
  1179  							'27116',
  1180  							'28239',
  1181  							'58032',
  1182  							'18884',
  1183  							'16791',
  1184  							'21343',
  1185  							'97462',
  1186  							'18569',
  1187  							'75660',
  1188  							'15475'
  1189  						)
  1190  				INTERSECT
  1191  					SELECT
  1192  						ca_zip
  1193  					FROM
  1194  						(
  1195  							SELECT
  1196  								substr(ca_zip, 1, 5)
  1197  									AS ca_zip,
  1198  								count(*) AS cnt
  1199  							FROM
  1200  								customer_address, customer
  1201  							WHERE
  1202  								ca_address_sk
  1203  								= c_current_addr_sk
  1204  								AND c_preferred_cust_flag
  1205  									= 'Y'
  1206  							GROUP BY
  1207  								ca_zip
  1208  							HAVING
  1209  								count(*) > 10
  1210  						)
  1211  							AS a1
  1212  			)
  1213  				AS a2
  1214  	)
  1215  		AS v1
  1216  WHERE
  1217  	ss_store_sk = s_store_sk
  1218  	AND ss_sold_date_sk = d_date_sk
  1219  	AND d_qoy = 2
  1220  	AND d_year = 1998
  1221  	AND substr(s_zip, 1, 2) = substr(v1.ca_zip, 1, 2)
  1222  GROUP BY
  1223  	s_store_name
  1224  ORDER BY
  1225  	s_store_name
  1226  LIMIT
  1227  	100;
  1228  `
  1229  
  1230  	query9 = `
  1231  SELECT
  1232  	CASE
  1233  	WHEN (
  1234  		SELECT
  1235  			count(*)
  1236  		FROM
  1237  			store_sales
  1238  		WHERE
  1239  			ss_quantity BETWEEN 1 AND 20
  1240  	)
  1241  	> 1071
  1242  	THEN (
  1243  		SELECT
  1244  			avg(ss_ext_tax)
  1245  		FROM
  1246  			store_sales
  1247  		WHERE
  1248  			ss_quantity BETWEEN 1 AND 20
  1249  	)
  1250  	ELSE (
  1251  		SELECT
  1252  			avg(ss_net_paid_inc_tax)
  1253  		FROM
  1254  			store_sales
  1255  		WHERE
  1256  			ss_quantity BETWEEN 1 AND 20
  1257  	)
  1258  	END
  1259  		AS bucket1,
  1260  	CASE
  1261  	WHEN (
  1262  		SELECT
  1263  			count(*)
  1264  		FROM
  1265  			store_sales
  1266  		WHERE
  1267  			ss_quantity BETWEEN 21 AND 40
  1268  	)
  1269  	> 39161
  1270  	THEN (
  1271  		SELECT
  1272  			avg(ss_ext_tax)
  1273  		FROM
  1274  			store_sales
  1275  		WHERE
  1276  			ss_quantity BETWEEN 21 AND 40
  1277  	)
  1278  	ELSE (
  1279  		SELECT
  1280  			avg(ss_net_paid_inc_tax)
  1281  		FROM
  1282  			store_sales
  1283  		WHERE
  1284  			ss_quantity BETWEEN 21 AND 40
  1285  	)
  1286  	END
  1287  		AS bucket2,
  1288  	CASE
  1289  	WHEN (
  1290  		SELECT
  1291  			count(*)
  1292  		FROM
  1293  			store_sales
  1294  		WHERE
  1295  			ss_quantity BETWEEN 41 AND 60
  1296  	)
  1297  	> 29434
  1298  	THEN (
  1299  		SELECT
  1300  			avg(ss_ext_tax)
  1301  		FROM
  1302  			store_sales
  1303  		WHERE
  1304  			ss_quantity BETWEEN 41 AND 60
  1305  	)
  1306  	ELSE (
  1307  		SELECT
  1308  			avg(ss_net_paid_inc_tax)
  1309  		FROM
  1310  			store_sales
  1311  		WHERE
  1312  			ss_quantity BETWEEN 41 AND 60
  1313  	)
  1314  	END
  1315  		AS bucket3,
  1316  	CASE
  1317  	WHEN (
  1318  		SELECT
  1319  			count(*)
  1320  		FROM
  1321  			store_sales
  1322  		WHERE
  1323  			ss_quantity BETWEEN 61 AND 80
  1324  	)
  1325  	> 6568
  1326  	THEN (
  1327  		SELECT
  1328  			avg(ss_ext_tax)
  1329  		FROM
  1330  			store_sales
  1331  		WHERE
  1332  			ss_quantity BETWEEN 61 AND 80
  1333  	)
  1334  	ELSE (
  1335  		SELECT
  1336  			avg(ss_net_paid_inc_tax)
  1337  		FROM
  1338  			store_sales
  1339  		WHERE
  1340  			ss_quantity BETWEEN 61 AND 80
  1341  	)
  1342  	END
  1343  		AS bucket4,
  1344  	CASE
  1345  	WHEN (
  1346  		SELECT
  1347  			count(*)
  1348  		FROM
  1349  			store_sales
  1350  		WHERE
  1351  			ss_quantity BETWEEN 81 AND 100
  1352  	)
  1353  	> 21216
  1354  	THEN (
  1355  		SELECT
  1356  			avg(ss_ext_tax)
  1357  		FROM
  1358  			store_sales
  1359  		WHERE
  1360  			ss_quantity BETWEEN 81 AND 100
  1361  	)
  1362  	ELSE (
  1363  		SELECT
  1364  			avg(ss_net_paid_inc_tax)
  1365  		FROM
  1366  			store_sales
  1367  		WHERE
  1368  			ss_quantity BETWEEN 81 AND 100
  1369  	)
  1370  	END
  1371  		AS bucket5
  1372  FROM
  1373  	reason
  1374  WHERE
  1375  	r_reason_sk = 1;
  1376  `
  1377  
  1378  	query10 = `
  1379  SELECT
  1380  	cd_gender,
  1381  	cd_marital_status,
  1382  	cd_education_status,
  1383  	count(*) AS cnt1,
  1384  	cd_purchase_estimate,
  1385  	count(*) AS cnt2,
  1386  	cd_credit_rating,
  1387  	count(*) AS cnt3,
  1388  	cd_dep_count,
  1389  	count(*) AS cnt4,
  1390  	cd_dep_employed_count,
  1391  	count(*) AS cnt5,
  1392  	cd_dep_college_count,
  1393  	count(*) AS cnt6
  1394  FROM
  1395  	customer AS c,
  1396  	customer_address AS ca,
  1397  	customer_demographics
  1398  WHERE
  1399  	c.c_current_addr_sk = ca.ca_address_sk
  1400  	AND ca_county
  1401  		IN (
  1402  				'Fairfield County',
  1403  				'Campbell County',
  1404  				'Washtenaw County',
  1405  				'Escambia County',
  1406  				'Cleburne County'
  1407  			)
  1408  	AND cd_demo_sk = c.c_current_cdemo_sk
  1409  	AND EXISTS(
  1410  			SELECT
  1411  				*
  1412  			FROM
  1413  				store_sales, date_dim
  1414  			WHERE
  1415  				c.c_customer_sk = ss_customer_sk
  1416  				AND ss_sold_date_sk = d_date_sk
  1417  				AND d_year = 2001
  1418  				AND d_moy BETWEEN 3 AND (3 + 3)
  1419  		)
  1420  	AND (
  1421  			EXISTS(
  1422  				SELECT
  1423  					*
  1424  				FROM
  1425  					web_sales, date_dim
  1426  				WHERE
  1427  					c.c_customer_sk = ws_bill_customer_sk
  1428  					AND ws_sold_date_sk = d_date_sk
  1429  					AND d_year = 2001
  1430  					AND d_moy BETWEEN 3 AND (3 + 3)
  1431  			)
  1432  			OR EXISTS(
  1433  					SELECT
  1434  						*
  1435  					FROM
  1436  						catalog_sales, date_dim
  1437  					WHERE
  1438  						c.c_customer_sk
  1439  						= cs_ship_customer_sk
  1440  						AND cs_sold_date_sk = d_date_sk
  1441  						AND d_year = 2001
  1442  						AND d_moy BETWEEN 3 AND (3 + 3)
  1443  				)
  1444  		)
  1445  GROUP BY
  1446  	cd_gender,
  1447  	cd_marital_status,
  1448  	cd_education_status,
  1449  	cd_purchase_estimate,
  1450  	cd_credit_rating,
  1451  	cd_dep_count,
  1452  	cd_dep_employed_count,
  1453  	cd_dep_college_count
  1454  ORDER BY
  1455  	cd_gender,
  1456  	cd_marital_status,
  1457  	cd_education_status,
  1458  	cd_purchase_estimate,
  1459  	cd_credit_rating,
  1460  	cd_dep_count,
  1461  	cd_dep_employed_count,
  1462  	cd_dep_college_count
  1463  LIMIT
  1464  	100;
  1465  `
  1466  
  1467  	query11 = `
  1468  WITH
  1469  	year_total
  1470  		AS (
  1471  			SELECT
  1472  				c_customer_id AS customer_id,
  1473  				c_first_name AS customer_first_name,
  1474  				c_last_name AS customer_last_name,
  1475  				c_preferred_cust_flag
  1476  					AS customer_preferred_cust_flag,
  1477  				c_birth_country AS customer_birth_country,
  1478  				c_login AS customer_login,
  1479  				c_email_address AS customer_email_address,
  1480  				d_year AS dyear,
  1481  				sum(ss_ext_list_price - ss_ext_discount_amt)
  1482  					AS year_total,
  1483  				's' AS sale_type
  1484  			FROM
  1485  				customer, store_sales, date_dim
  1486  			WHERE
  1487  				c_customer_sk = ss_customer_sk
  1488  				AND ss_sold_date_sk = d_date_sk
  1489  			GROUP BY
  1490  				c_customer_id,
  1491  				c_first_name,
  1492  				c_last_name,
  1493  				c_preferred_cust_flag,
  1494  				c_birth_country,
  1495  				c_login,
  1496  				c_email_address,
  1497  				d_year
  1498  			UNION ALL
  1499  				SELECT
  1500  					c_customer_id AS customer_id,
  1501  					c_first_name AS customer_first_name,
  1502  					c_last_name AS customer_last_name,
  1503  					c_preferred_cust_flag
  1504  						AS customer_preferred_cust_flag,
  1505  					c_birth_country
  1506  						AS customer_birth_country,
  1507  					c_login AS customer_login,
  1508  					c_email_address
  1509  						AS customer_email_address,
  1510  					d_year AS dyear,
  1511  					sum(
  1512  						ws_ext_list_price
  1513  						- ws_ext_discount_amt
  1514  					)
  1515  						AS year_total,
  1516  					'w' AS sale_type
  1517  				FROM
  1518  					customer, web_sales, date_dim
  1519  				WHERE
  1520  					c_customer_sk = ws_bill_customer_sk
  1521  					AND ws_sold_date_sk = d_date_sk
  1522  				GROUP BY
  1523  					c_customer_id,
  1524  					c_first_name,
  1525  					c_last_name,
  1526  					c_preferred_cust_flag,
  1527  					c_birth_country,
  1528  					c_login,
  1529  					c_email_address,
  1530  					d_year
  1531  		)
  1532  SELECT
  1533  	t_s_secyear.customer_id,
  1534  	t_s_secyear.customer_first_name,
  1535  	t_s_secyear.customer_last_name,
  1536  	t_s_secyear.customer_email_address
  1537  FROM
  1538  	year_total AS t_s_firstyear,
  1539  	year_total AS t_s_secyear,
  1540  	year_total AS t_w_firstyear,
  1541  	year_total AS t_w_secyear
  1542  WHERE
  1543  	t_s_secyear.customer_id = t_s_firstyear.customer_id
  1544  	AND t_s_firstyear.customer_id = t_w_secyear.customer_id
  1545  	AND t_s_firstyear.customer_id
  1546  		= t_w_firstyear.customer_id
  1547  	AND t_s_firstyear.sale_type = 's'
  1548  	AND t_w_firstyear.sale_type = 'w'
  1549  	AND t_s_secyear.sale_type = 's'
  1550  	AND t_w_secyear.sale_type = 'w'
  1551  	AND t_s_firstyear.dyear = 1998
  1552  	AND t_s_secyear.dyear = 1998 + 1
  1553  	AND t_w_firstyear.dyear = 1998
  1554  	AND t_w_secyear.dyear = 1998 + 1
  1555  	AND t_s_firstyear.year_total > 0
  1556  	AND t_w_firstyear.year_total > 0
  1557  	AND CASE
  1558  		WHEN t_w_firstyear.year_total > 0
  1559  		THEN t_w_secyear.year_total
  1560  		/ t_w_firstyear.year_total
  1561  		ELSE 0.0
  1562  		END
  1563  		> CASE
  1564  			WHEN t_s_firstyear.year_total > 0
  1565  			THEN t_s_secyear.year_total
  1566  			/ t_s_firstyear.year_total
  1567  			ELSE 0.0
  1568  			END
  1569  ORDER BY
  1570  	t_s_secyear.customer_id,
  1571  	t_s_secyear.customer_first_name,
  1572  	t_s_secyear.customer_last_name,
  1573  	t_s_secyear.customer_email_address
  1574  LIMIT
  1575  	100;
  1576  `
  1577  
  1578  	// NOTE: I added conversion of 30 days to an interval.
  1579  	query12 = `
  1580  SELECT
  1581  	i_item_id,
  1582  	i_item_desc,
  1583  	i_category,
  1584  	i_class,
  1585  	i_current_price,
  1586  	sum(ws_ext_sales_price) AS itemrevenue,
  1587  	sum(ws_ext_sales_price) * 100
  1588  	/ sum(sum(ws_ext_sales_price)) OVER (
  1589  			PARTITION BY i_class
  1590  		)
  1591  		AS revenueratio
  1592  FROM
  1593  	web_sales, item, date_dim
  1594  WHERE
  1595  	ws_item_sk = i_item_sk
  1596  	AND i_category IN ('Men', 'Books', 'Electronics')
  1597  	AND ws_sold_date_sk = d_date_sk
  1598  	AND d_date BETWEEN CAST('2001-06-15' AS DATE) AND (CAST('2001-06-15' AS DATE) + '30 days'::INTERVAL)
  1599  GROUP BY
  1600  	i_item_id,
  1601  	i_item_desc,
  1602  	i_category,
  1603  	i_class,
  1604  	i_current_price
  1605  ORDER BY
  1606  	i_category,
  1607  	i_class,
  1608  	i_item_id,
  1609  	i_item_desc,
  1610  	revenueratio
  1611  LIMIT
  1612  	100;
  1613  `
  1614  
  1615  	query13 = `
  1616  SELECT
  1617  	avg(ss_quantity),
  1618  	avg(ss_ext_sales_price),
  1619  	avg(ss_ext_wholesale_cost),
  1620  	sum(ss_ext_wholesale_cost)
  1621  FROM
  1622  	store_sales,
  1623  	store,
  1624  	customer_demographics,
  1625  	household_demographics,
  1626  	customer_address,
  1627  	date_dim
  1628  WHERE
  1629  	s_store_sk = ss_store_sk
  1630  	AND ss_sold_date_sk = d_date_sk
  1631  	AND d_year = 2001
  1632  	AND (
  1633  			(
  1634  				ss_hdemo_sk = hd_demo_sk
  1635  				AND cd_demo_sk = ss_cdemo_sk
  1636  				AND cd_marital_status = 'M'
  1637  				AND cd_education_status = 'College'
  1638  				AND ss_sales_price BETWEEN 100.00 AND 150.00
  1639  				AND hd_dep_count = 3
  1640  			)
  1641  			OR (
  1642  					ss_hdemo_sk = hd_demo_sk
  1643  					AND cd_demo_sk = ss_cdemo_sk
  1644  					AND cd_marital_status = 'D'
  1645  					AND cd_education_status = 'Primary'
  1646  					AND ss_sales_price BETWEEN 50.00 AND 100.00
  1647  					AND hd_dep_count = 1
  1648  				)
  1649  			OR (
  1650  					ss_hdemo_sk = hd_demo_sk
  1651  					AND cd_demo_sk = ss_cdemo_sk
  1652  					AND cd_marital_status = 'W'
  1653  					AND cd_education_status = '2 yr Degree'
  1654  					AND ss_sales_price BETWEEN 150.00 AND 200.00
  1655  					AND hd_dep_count = 1
  1656  				)
  1657  		)
  1658  	AND (
  1659  			(
  1660  				ss_addr_sk = ca_address_sk
  1661  				AND ca_country = 'United States'
  1662  				AND ca_state IN ('IL', 'TN', 'TX')
  1663  				AND ss_net_profit BETWEEN 100 AND 200
  1664  			)
  1665  			OR (
  1666  					ss_addr_sk = ca_address_sk
  1667  					AND ca_country = 'United States'
  1668  					AND ca_state IN ('WY', 'OH', 'ID')
  1669  					AND ss_net_profit BETWEEN 150 AND 300
  1670  				)
  1671  			OR (
  1672  					ss_addr_sk = ca_address_sk
  1673  					AND ca_country = 'United States'
  1674  					AND ca_state IN ('MS', 'SC', 'IA')
  1675  					AND ss_net_profit BETWEEN 50 AND 250
  1676  				)
  1677  		);
  1678  `
  1679  
  1680  	query14 = `
  1681  WITH
  1682  	cross_items
  1683  		AS (
  1684  			SELECT
  1685  				i_item_sk AS ss_item_sk
  1686  			FROM
  1687  				item,
  1688  				(
  1689  					SELECT
  1690  						iss.i_brand_id AS brand_id,
  1691  						iss.i_class_id AS class_id,
  1692  						iss.i_category_id AS category_id
  1693  					FROM
  1694  						store_sales,
  1695  						item AS iss,
  1696  						date_dim AS d1
  1697  					WHERE
  1698  						ss_item_sk = iss.i_item_sk
  1699  						AND ss_sold_date_sk = d1.d_date_sk
  1700  						AND d1.d_year BETWEEN 1999 AND (1999 + 2)
  1701  					INTERSECT
  1702  						SELECT
  1703  							ics.i_brand_id,
  1704  							ics.i_class_id,
  1705  							ics.i_category_id
  1706  						FROM
  1707  							catalog_sales,
  1708  							item AS ics,
  1709  							date_dim AS d2
  1710  						WHERE
  1711  							cs_item_sk = ics.i_item_sk
  1712  							AND cs_sold_date_sk
  1713  								= d2.d_date_sk
  1714  							AND d2.d_year BETWEEN 1999 AND (1999 + 2)
  1715  					INTERSECT
  1716  						SELECT
  1717  							iws.i_brand_id,
  1718  							iws.i_class_id,
  1719  							iws.i_category_id
  1720  						FROM
  1721  							web_sales,
  1722  							item AS iws,
  1723  							date_dim AS d3
  1724  						WHERE
  1725  							ws_item_sk = iws.i_item_sk
  1726  							AND ws_sold_date_sk
  1727  								= d3.d_date_sk
  1728  							AND d3.d_year BETWEEN 1999 AND (1999 + 2)
  1729  				)
  1730  			WHERE
  1731  				i_brand_id = brand_id
  1732  				AND i_class_id = class_id
  1733  				AND i_category_id = category_id
  1734  		),
  1735  	avg_sales
  1736  		AS (
  1737  			SELECT
  1738  				avg(quantity * list_price) AS average_sales
  1739  			FROM
  1740  				(
  1741  					SELECT
  1742  						ss_quantity AS quantity,
  1743  						ss_list_price AS list_price
  1744  					FROM
  1745  						store_sales, date_dim
  1746  					WHERE
  1747  						ss_sold_date_sk = d_date_sk
  1748  						AND d_year BETWEEN 1999 AND (1999 + 2)
  1749  					UNION ALL
  1750  						SELECT
  1751  							cs_quantity AS quantity,
  1752  							cs_list_price AS list_price
  1753  						FROM
  1754  							catalog_sales, date_dim
  1755  						WHERE
  1756  							cs_sold_date_sk = d_date_sk
  1757  							AND d_year BETWEEN 1999 AND (1999 + 2)
  1758  					UNION ALL
  1759  						SELECT
  1760  							ws_quantity AS quantity,
  1761  							ws_list_price AS list_price
  1762  						FROM
  1763  							web_sales, date_dim
  1764  						WHERE
  1765  							ws_sold_date_sk = d_date_sk
  1766  							AND d_year BETWEEN 1999 AND (1999 + 2)
  1767  				)
  1768  					AS x
  1769  		)
  1770  SELECT
  1771  	channel,
  1772  	i_brand_id,
  1773  	i_class_id,
  1774  	i_category_id,
  1775  	sum(sales),
  1776  	sum(number_sales)
  1777  FROM
  1778  	(
  1779  		SELECT
  1780  			'store' AS channel,
  1781  			i_brand_id,
  1782  			i_class_id,
  1783  			i_category_id,
  1784  			sum(ss_quantity * ss_list_price) AS sales,
  1785  			count(*) AS number_sales
  1786  		FROM
  1787  			store_sales, item, date_dim
  1788  		WHERE
  1789  			ss_item_sk
  1790  			IN (SELECT ss_item_sk FROM cross_items)
  1791  			AND ss_item_sk = i_item_sk
  1792  			AND ss_sold_date_sk = d_date_sk
  1793  			AND d_year = 1999 + 2
  1794  			AND d_moy = 11
  1795  		GROUP BY
  1796  			i_brand_id, i_class_id, i_category_id
  1797  		HAVING
  1798  			sum(ss_quantity * ss_list_price)
  1799  			> (SELECT average_sales FROM avg_sales)
  1800  		UNION ALL
  1801  			SELECT
  1802  				'catalog' AS channel,
  1803  				i_brand_id,
  1804  				i_class_id,
  1805  				i_category_id,
  1806  				sum(cs_quantity * cs_list_price) AS sales,
  1807  				count(*) AS number_sales
  1808  			FROM
  1809  				catalog_sales, item, date_dim
  1810  			WHERE
  1811  				cs_item_sk
  1812  				IN (SELECT ss_item_sk FROM cross_items)
  1813  				AND cs_item_sk = i_item_sk
  1814  				AND cs_sold_date_sk = d_date_sk
  1815  				AND d_year = 1999 + 2
  1816  				AND d_moy = 11
  1817  			GROUP BY
  1818  				i_brand_id, i_class_id, i_category_id
  1819  			HAVING
  1820  				sum(cs_quantity * cs_list_price)
  1821  				> (SELECT average_sales FROM avg_sales)
  1822  		UNION ALL
  1823  			SELECT
  1824  				'web' AS channel,
  1825  				i_brand_id,
  1826  				i_class_id,
  1827  				i_category_id,
  1828  				sum(ws_quantity * ws_list_price) AS sales,
  1829  				count(*) AS number_sales
  1830  			FROM
  1831  				web_sales, item, date_dim
  1832  			WHERE
  1833  				ws_item_sk
  1834  				IN (SELECT ss_item_sk FROM cross_items)
  1835  				AND ws_item_sk = i_item_sk
  1836  				AND ws_sold_date_sk = d_date_sk
  1837  				AND d_year = 1999 + 2
  1838  				AND d_moy = 11
  1839  			GROUP BY
  1840  				i_brand_id, i_class_id, i_category_id
  1841  			HAVING
  1842  				sum(ws_quantity * ws_list_price)
  1843  				> (SELECT average_sales FROM avg_sales)
  1844  	)
  1845  		AS y
  1846  GROUP BY
  1847  	rollup(channel, i_brand_id, i_class_id, i_category_id)
  1848  ORDER BY
  1849  	channel, i_brand_id, i_class_id, i_category_id
  1850  LIMIT
  1851  	100;
  1852  WITH
  1853  	cross_items
  1854  		AS (
  1855  			SELECT
  1856  				i_item_sk AS ss_item_sk
  1857  			FROM
  1858  				item,
  1859  				(
  1860  					SELECT
  1861  						iss.i_brand_id AS brand_id,
  1862  						iss.i_class_id AS class_id,
  1863  						iss.i_category_id AS category_id
  1864  					FROM
  1865  						store_sales,
  1866  						item AS iss,
  1867  						date_dim AS d1
  1868  					WHERE
  1869  						ss_item_sk = iss.i_item_sk
  1870  						AND ss_sold_date_sk = d1.d_date_sk
  1871  						AND d1.d_year BETWEEN 1999 AND (1999 + 2)
  1872  					INTERSECT
  1873  						SELECT
  1874  							ics.i_brand_id,
  1875  							ics.i_class_id,
  1876  							ics.i_category_id
  1877  						FROM
  1878  							catalog_sales,
  1879  							item AS ics,
  1880  							date_dim AS d2
  1881  						WHERE
  1882  							cs_item_sk = ics.i_item_sk
  1883  							AND cs_sold_date_sk
  1884  								= d2.d_date_sk
  1885  							AND d2.d_year BETWEEN 1999 AND (1999 + 2)
  1886  					INTERSECT
  1887  						SELECT
  1888  							iws.i_brand_id,
  1889  							iws.i_class_id,
  1890  							iws.i_category_id
  1891  						FROM
  1892  							web_sales,
  1893  							item AS iws,
  1894  							date_dim AS d3
  1895  						WHERE
  1896  							ws_item_sk = iws.i_item_sk
  1897  							AND ws_sold_date_sk
  1898  								= d3.d_date_sk
  1899  							AND d3.d_year BETWEEN 1999 AND (1999 + 2)
  1900  				)
  1901  					AS x
  1902  			WHERE
  1903  				i_brand_id = brand_id
  1904  				AND i_class_id = class_id
  1905  				AND i_category_id = category_id
  1906  		),
  1907  	avg_sales
  1908  		AS (
  1909  			SELECT
  1910  				avg(quantity * list_price) AS average_sales
  1911  			FROM
  1912  				(
  1913  					SELECT
  1914  						ss_quantity AS quantity,
  1915  						ss_list_price AS list_price
  1916  					FROM
  1917  						store_sales, date_dim
  1918  					WHERE
  1919  						ss_sold_date_sk = d_date_sk
  1920  						AND d_year BETWEEN 1999 AND (1999 + 2)
  1921  					UNION ALL
  1922  						SELECT
  1923  							cs_quantity AS quantity,
  1924  							cs_list_price AS list_price
  1925  						FROM
  1926  							catalog_sales, date_dim
  1927  						WHERE
  1928  							cs_sold_date_sk = d_date_sk
  1929  							AND d_year BETWEEN 1999 AND (1999 + 2)
  1930  					UNION ALL
  1931  						SELECT
  1932  							ws_quantity AS quantity,
  1933  							ws_list_price AS list_price
  1934  						FROM
  1935  							web_sales, date_dim
  1936  						WHERE
  1937  							ws_sold_date_sk = d_date_sk
  1938  							AND d_year BETWEEN 1999 AND (1999 + 2)
  1939  				)
  1940  					AS x
  1941  		)
  1942  SELECT
  1943  	this_year.channel AS ty_channel,
  1944  	this_year.i_brand_id AS ty_brand,
  1945  	this_year.i_class_id AS ty_class,
  1946  	this_year.i_category_id AS ty_category,
  1947  	this_year.sales AS ty_sales,
  1948  	this_year.number_sales AS ty_number_sales,
  1949  	last_year.channel AS ly_channel,
  1950  	last_year.i_brand_id AS ly_brand,
  1951  	last_year.i_class_id AS ly_class,
  1952  	last_year.i_category_id AS ly_category,
  1953  	last_year.sales AS ly_sales,
  1954  	last_year.number_sales AS ly_number_sales
  1955  FROM
  1956  	(
  1957  		SELECT
  1958  			'store' AS channel,
  1959  			i_brand_id,
  1960  			i_class_id,
  1961  			i_category_id,
  1962  			sum(ss_quantity * ss_list_price) AS sales,
  1963  			count(*) AS number_sales
  1964  		FROM
  1965  			store_sales, item, date_dim
  1966  		WHERE
  1967  			ss_item_sk
  1968  			IN (SELECT ss_item_sk FROM cross_items)
  1969  			AND ss_item_sk = i_item_sk
  1970  			AND ss_sold_date_sk = d_date_sk
  1971  			AND d_week_seq
  1972  				= (
  1973  						SELECT
  1974  							d_week_seq
  1975  						FROM
  1976  							date_dim
  1977  						WHERE
  1978  							d_year = 1999 + 1
  1979  							AND d_moy = 12
  1980  							AND d_dom = 3
  1981  					)
  1982  		GROUP BY
  1983  			i_brand_id, i_class_id, i_category_id
  1984  		HAVING
  1985  			sum(ss_quantity * ss_list_price)
  1986  			> (SELECT average_sales FROM avg_sales)
  1987  	)
  1988  		AS this_year,
  1989  	(
  1990  		SELECT
  1991  			'store' AS channel,
  1992  			i_brand_id,
  1993  			i_class_id,
  1994  			i_category_id,
  1995  			sum(ss_quantity * ss_list_price) AS sales,
  1996  			count(*) AS number_sales
  1997  		FROM
  1998  			store_sales, item, date_dim
  1999  		WHERE
  2000  			ss_item_sk
  2001  			IN (SELECT ss_item_sk FROM cross_items)
  2002  			AND ss_item_sk = i_item_sk
  2003  			AND ss_sold_date_sk = d_date_sk
  2004  			AND d_week_seq
  2005  				= (
  2006  						SELECT
  2007  							d_week_seq
  2008  						FROM
  2009  							date_dim
  2010  						WHERE
  2011  							d_year = 1999
  2012  							AND d_moy = 12
  2013  							AND d_dom = 3
  2014  					)
  2015  		GROUP BY
  2016  			i_brand_id, i_class_id, i_category_id
  2017  		HAVING
  2018  			sum(ss_quantity * ss_list_price)
  2019  			> (SELECT average_sales FROM avg_sales)
  2020  	)
  2021  		AS last_year
  2022  WHERE
  2023  	this_year.i_brand_id = last_year.i_brand_id
  2024  	AND this_year.i_class_id = last_year.i_class_id
  2025  	AND this_year.i_category_id = last_year.i_category_id
  2026  ORDER BY
  2027  	this_year.channel,
  2028  	this_year.i_brand_id,
  2029  	this_year.i_class_id,
  2030  	this_year.i_category_id
  2031  LIMIT
  2032  	100;
  2033  `
  2034  
  2035  	query15 = `
  2036  SELECT
  2037  	ca_zip, sum(cs_sales_price)
  2038  FROM
  2039  	catalog_sales, customer, customer_address, date_dim
  2040  WHERE
  2041  	cs_bill_customer_sk = c_customer_sk
  2042  	AND c_current_addr_sk = ca_address_sk
  2043  	AND (
  2044  			substr(ca_zip, 1, 5)
  2045  			IN (
  2046  					'85669',
  2047  					'86197',
  2048  					'88274',
  2049  					'83405',
  2050  					'86475',
  2051  					'85392',
  2052  					'85460',
  2053  					'80348',
  2054  					'81792'
  2055  				)
  2056  			OR ca_state IN ('CA', 'WA', 'GA')
  2057  			OR cs_sales_price > 500
  2058  		)
  2059  	AND cs_sold_date_sk = d_date_sk
  2060  	AND d_qoy = 2
  2061  	AND d_year = 2001
  2062  GROUP BY
  2063  	ca_zip
  2064  ORDER BY
  2065  	ca_zip
  2066  LIMIT
  2067  	100;
  2068  `
  2069  
  2070  	// NOTE: I added conversion of 60 days to an interval.
  2071  	query16 = `
  2072  SELECT
  2073  	count(DISTINCT cs_order_number) AS "order count",
  2074  	sum(cs_ext_ship_cost) AS "total shipping cost",
  2075  	sum(cs_net_profit) AS "total net profit"
  2076  FROM
  2077  	catalog_sales AS cs1,
  2078  	date_dim,
  2079  	customer_address,
  2080  	call_center
  2081  WHERE
  2082  	d_date BETWEEN '2002-4-01' AND (CAST('2002-4-01' AS DATE) + '60 days'::INTERVAL)
  2083  	AND cs1.cs_ship_date_sk = d_date_sk
  2084  	AND cs1.cs_ship_addr_sk = ca_address_sk
  2085  	AND ca_state = 'PA'
  2086  	AND cs1.cs_call_center_sk = cc_call_center_sk
  2087  	AND cc_county
  2088  		IN (
  2089  				'Williamson County',
  2090  				'Williamson County',
  2091  				'Williamson County',
  2092  				'Williamson County',
  2093  				'Williamson County'
  2094  			)
  2095  	AND EXISTS(
  2096  			SELECT
  2097  				*
  2098  			FROM
  2099  				catalog_sales AS cs2
  2100  			WHERE
  2101  				cs1.cs_order_number = cs2.cs_order_number
  2102  				AND cs1.cs_warehouse_sk
  2103  					!= cs2.cs_warehouse_sk
  2104  		)
  2105  	AND NOT
  2106  			EXISTS(
  2107  				SELECT
  2108  					*
  2109  				FROM
  2110  					catalog_returns AS cr1
  2111  				WHERE
  2112  					cs1.cs_order_number
  2113  					= cr1.cr_order_number
  2114  			)
  2115  ORDER BY
  2116  	count(DISTINCT cs_order_number)
  2117  LIMIT
  2118  	100;
  2119  `
  2120  
  2121  	query17 = `
  2122  SELECT
  2123  	i_item_id,
  2124  	i_item_desc,
  2125  	s_state,
  2126  	count(ss_quantity) AS store_sales_quantitycount,
  2127  	avg(ss_quantity) AS store_sales_quantityave,
  2128  	stddev_samp(ss_quantity) AS store_sales_quantitystdev,
  2129  	stddev_samp(ss_quantity) / avg(ss_quantity)
  2130  		AS store_sales_quantitycov,
  2131  	count(sr_return_quantity)
  2132  		AS store_returns_quantitycount,
  2133  	avg(sr_return_quantity) AS store_returns_quantityave,
  2134  	stddev_samp(sr_return_quantity)
  2135  		AS store_returns_quantitystdev,
  2136  	stddev_samp(sr_return_quantity)
  2137  	/ avg(sr_return_quantity)
  2138  		AS store_returns_quantitycov,
  2139  	count(cs_quantity) AS catalog_sales_quantitycount,
  2140  	avg(cs_quantity) AS catalog_sales_quantityave,
  2141  	stddev_samp(cs_quantity) AS catalog_sales_quantitystdev,
  2142  	stddev_samp(cs_quantity) / avg(cs_quantity)
  2143  		AS catalog_sales_quantitycov
  2144  FROM
  2145  	store_sales,
  2146  	store_returns,
  2147  	catalog_sales,
  2148  	date_dim AS d1,
  2149  	date_dim AS d2,
  2150  	date_dim AS d3,
  2151  	store,
  2152  	item
  2153  WHERE
  2154  	d1.d_quarter_name = '2001Q1'
  2155  	AND d1.d_date_sk = ss_sold_date_sk
  2156  	AND i_item_sk = ss_item_sk
  2157  	AND s_store_sk = ss_store_sk
  2158  	AND ss_customer_sk = sr_customer_sk
  2159  	AND ss_item_sk = sr_item_sk
  2160  	AND ss_ticket_number = sr_ticket_number
  2161  	AND sr_returned_date_sk = d2.d_date_sk
  2162  	AND d2.d_quarter_name IN ('2001Q1', '2001Q2', '2001Q3')
  2163  	AND sr_customer_sk = cs_bill_customer_sk
  2164  	AND sr_item_sk = cs_item_sk
  2165  	AND cs_sold_date_sk = d3.d_date_sk
  2166  	AND d3.d_quarter_name IN ('2001Q1', '2001Q2', '2001Q3')
  2167  GROUP BY
  2168  	i_item_id, i_item_desc, s_state
  2169  ORDER BY
  2170  	i_item_id, i_item_desc, s_state
  2171  LIMIT
  2172  	100;
  2173  `
  2174  
  2175  	query18 = `
  2176  SELECT
  2177  	i_item_id,
  2178  	ca_country,
  2179  	ca_state,
  2180  	ca_county,
  2181  	avg(CAST(cs_quantity AS DECIMAL(12,2))) AS agg1,
  2182  	avg(CAST(cs_list_price AS DECIMAL(12,2))) AS agg2,
  2183  	avg(CAST(cs_coupon_amt AS DECIMAL(12,2))) AS agg3,
  2184  	avg(CAST(cs_sales_price AS DECIMAL(12,2))) AS agg4,
  2185  	avg(CAST(cs_net_profit AS DECIMAL(12,2))) AS agg5,
  2186  	avg(CAST(c_birth_year AS DECIMAL(12,2))) AS agg6,
  2187  	avg(CAST(cd1.cd_dep_count AS DECIMAL(12,2))) AS agg7
  2188  FROM
  2189  	catalog_sales,
  2190  	customer_demographics AS cd1,
  2191  	customer_demographics AS cd2,
  2192  	customer,
  2193  	customer_address,
  2194  	date_dim,
  2195  	item
  2196  WHERE
  2197  	cs_sold_date_sk = d_date_sk
  2198  	AND cs_item_sk = i_item_sk
  2199  	AND cs_bill_cdemo_sk = cd1.cd_demo_sk
  2200  	AND cs_bill_customer_sk = c_customer_sk
  2201  	AND cd1.cd_gender = 'F'
  2202  	AND cd1.cd_education_status = 'Primary'
  2203  	AND c_current_cdemo_sk = cd2.cd_demo_sk
  2204  	AND c_current_addr_sk = ca_address_sk
  2205  	AND c_birth_month IN (1, 3, 7, 11, 10, 4)
  2206  	AND d_year = 2001
  2207  	AND ca_state
  2208  		IN ('AL', 'MO', 'TN', 'GA', 'MT', 'IN', 'CA')
  2209  GROUP BY
  2210  	rollup(i_item_id, ca_country, ca_state, ca_county)
  2211  ORDER BY
  2212  	ca_country, ca_state, ca_county, i_item_id
  2213  LIMIT
  2214  	100;
  2215  `
  2216  
  2217  	query19 = `
  2218  SELECT
  2219  	i_brand_id AS brand_id,
  2220  	i_brand AS brand,
  2221  	i_manufact_id,
  2222  	i_manufact,
  2223  	sum(ss_ext_sales_price) AS ext_price
  2224  FROM
  2225  	date_dim,
  2226  	store_sales,
  2227  	item,
  2228  	customer,
  2229  	customer_address,
  2230  	store
  2231  WHERE
  2232  	d_date_sk = ss_sold_date_sk
  2233  	AND ss_item_sk = i_item_sk
  2234  	AND i_manager_id = 14
  2235  	AND d_moy = 11
  2236  	AND d_year = 2002
  2237  	AND ss_customer_sk = c_customer_sk
  2238  	AND c_current_addr_sk = ca_address_sk
  2239  	AND substr(ca_zip, 1, 5) != substr(s_zip, 1, 5)
  2240  	AND ss_store_sk = s_store_sk
  2241  GROUP BY
  2242  	i_brand, i_brand_id, i_manufact_id, i_manufact
  2243  ORDER BY
  2244  	ext_price DESC,
  2245  	i_brand,
  2246  	i_brand_id,
  2247  	i_manufact_id,
  2248  	i_manufact
  2249  LIMIT
  2250  	100;
  2251  `
  2252  
  2253  	// NOTE: I added conversion of 30 days to an interval.
  2254  	query20 = `
  2255  SELECT
  2256      i_item_id,
  2257      i_item_desc,
  2258      i_category,
  2259      i_class,
  2260      i_current_price,
  2261      sum(cs_ext_sales_price) AS itemrevenue,
  2262      sum(cs_ext_sales_price) * 100
  2263      / sum(sum(cs_ext_sales_price)) OVER (
  2264              PARTITION BY i_class
  2265          )
  2266          AS revenueratio
  2267  FROM
  2268      catalog_sales, item, date_dim
  2269  WHERE
  2270      cs_item_sk = i_item_sk
  2271      AND i_category IN ('Books', 'Music', 'Sports')
  2272      AND cs_sold_date_sk = d_date_sk
  2273      AND d_date BETWEEN CAST('2002-06-18' AS DATE) AND (CAST('2002-06-18' AS DATE) + '30 days'::INTERVAL)
  2274  GROUP BY
  2275      i_item_id,
  2276      i_item_desc,
  2277      i_category,
  2278      i_class,
  2279      i_current_price
  2280  ORDER BY
  2281      i_category,
  2282      i_class,
  2283      i_item_id,
  2284      i_item_desc,
  2285      revenueratio
  2286  LIMIT
  2287      100;
  2288  `
  2289  
  2290  	// NOTE: I added conversion of 30 days to an interval.
  2291  	query21 = `
  2292  SELECT
  2293  	*
  2294  FROM
  2295  	(
  2296  		SELECT
  2297  			w_warehouse_name,
  2298  			i_item_id,
  2299  			sum(
  2300  				CASE
  2301  				WHEN (
  2302  					CAST(d_date AS DATE)
  2303  					< CAST('1999-06-22' AS DATE)
  2304  				)
  2305  				THEN inv_quantity_on_hand
  2306  				ELSE 0
  2307  				END
  2308  			)
  2309  				AS inv_before,
  2310  			sum(
  2311  				CASE
  2312  				WHEN (
  2313  					CAST(d_date AS DATE)
  2314  					>= CAST('1999-06-22' AS DATE)
  2315  				)
  2316  				THEN inv_quantity_on_hand
  2317  				ELSE 0
  2318  				END
  2319  			)
  2320  				AS inv_after
  2321  		FROM
  2322  			inventory, warehouse, item, date_dim
  2323  		WHERE
  2324  			i_current_price BETWEEN 0.99 AND 1.49
  2325  			AND i_item_sk = inv_item_sk
  2326  			AND inv_warehouse_sk = w_warehouse_sk
  2327  			AND inv_date_sk = d_date_sk
  2328  			AND d_date BETWEEN (CAST('1999-06-22' AS DATE) - '30 days'::INTERVAL) AND (CAST('1999-06-22' AS DATE) + '30 days'::INTERVAL)
  2329  		GROUP BY
  2330  			w_warehouse_name, i_item_id
  2331  	)
  2332  		AS x
  2333  WHERE
  2334  	(CASE WHEN inv_before > 0 THEN inv_after / inv_before ELSE NULL END) BETWEEN (2.0 / 3.0) AND (3.0 / 2.0)
  2335  ORDER BY
  2336  	w_warehouse_name, i_item_id
  2337  LIMIT
  2338  	100;
  2339  `
  2340  
  2341  	query22 = `
  2342  SELECT
  2343  	i_product_name,
  2344  	i_brand,
  2345  	i_class,
  2346  	i_category,
  2347  	avg(inv_quantity_on_hand) AS qoh
  2348  FROM
  2349  	inventory, date_dim, item
  2350  WHERE
  2351  	inv_date_sk = d_date_sk
  2352  	AND inv_item_sk = i_item_sk
  2353  	AND d_month_seq BETWEEN 1200 AND (1200 + 11)
  2354  GROUP BY
  2355  	rollup(i_product_name, i_brand, i_class, i_category)
  2356  ORDER BY
  2357  	qoh, i_product_name, i_brand, i_class, i_category
  2358  LIMIT
  2359  	100;
  2360  `
  2361  
  2362  	query23 = `
  2363  WITH
  2364  	frequent_ss_items
  2365  		AS (
  2366  			SELECT
  2367  				substr(i_item_desc, 1, 30) AS itemdesc,
  2368  				i_item_sk AS item_sk,
  2369  				d_date AS solddate,
  2370  				count(*) AS cnt
  2371  			FROM
  2372  				store_sales, date_dim, item
  2373  			WHERE
  2374  				ss_sold_date_sk = d_date_sk
  2375  				AND ss_item_sk = i_item_sk
  2376  				AND d_year
  2377  					IN (2000, 2000 + 1, 2000 + 2, 2000 + 3)
  2378  			GROUP BY
  2379  				substr(i_item_desc, 1, 30),
  2380  				i_item_sk,
  2381  				d_date
  2382  			HAVING
  2383  				count(*) > 4
  2384  		),
  2385  	max_store_sales
  2386  		AS (
  2387  			SELECT
  2388  				max(csales) AS tpcds_cmax
  2389  			FROM
  2390  				(
  2391  					SELECT
  2392  						c_customer_sk,
  2393  						sum(ss_quantity * ss_sales_price)
  2394  							AS csales
  2395  					FROM
  2396  						store_sales, customer, date_dim
  2397  					WHERE
  2398  						ss_customer_sk = c_customer_sk
  2399  						AND ss_sold_date_sk = d_date_sk
  2400  						AND d_year
  2401  							IN (
  2402  									2000,
  2403  									2000 + 1,
  2404  									2000 + 2,
  2405  									2000 + 3
  2406  								)
  2407  					GROUP BY
  2408  						c_customer_sk
  2409  				)
  2410  		),
  2411  	best_ss_customer
  2412  		AS (
  2413  			SELECT
  2414  				c_customer_sk,
  2415  				sum(ss_quantity * ss_sales_price) AS ssales
  2416  			FROM
  2417  				store_sales, customer
  2418  			WHERE
  2419  				ss_customer_sk = c_customer_sk
  2420  			GROUP BY
  2421  				c_customer_sk
  2422  			HAVING
  2423  				sum(ss_quantity * ss_sales_price)
  2424  				> 95 / 100.0
  2425  					* (SELECT * FROM max_store_sales)
  2426  		)
  2427  SELECT
  2428  	sum(sales)
  2429  FROM
  2430  	(
  2431  		SELECT
  2432  			cs_quantity * cs_list_price AS sales
  2433  		FROM
  2434  			catalog_sales, date_dim
  2435  		WHERE
  2436  			d_year = 2000
  2437  			AND d_moy = 7
  2438  			AND cs_sold_date_sk = d_date_sk
  2439  			AND cs_item_sk
  2440  				IN (SELECT item_sk FROM frequent_ss_items)
  2441  			AND cs_bill_customer_sk
  2442  				IN (
  2443  						SELECT
  2444  							c_customer_sk
  2445  						FROM
  2446  							best_ss_customer
  2447  					)
  2448  		UNION ALL
  2449  			SELECT
  2450  				ws_quantity * ws_list_price AS sales
  2451  			FROM
  2452  				web_sales, date_dim
  2453  			WHERE
  2454  				d_year = 2000
  2455  				AND d_moy = 7
  2456  				AND ws_sold_date_sk = d_date_sk
  2457  				AND ws_item_sk
  2458  					IN (
  2459  							SELECT
  2460  								item_sk
  2461  							FROM
  2462  								frequent_ss_items
  2463  						)
  2464  				AND ws_bill_customer_sk
  2465  					IN (
  2466  							SELECT
  2467  								c_customer_sk
  2468  							FROM
  2469  								best_ss_customer
  2470  						)
  2471  	)
  2472  LIMIT
  2473  	100;
  2474  WITH
  2475  	frequent_ss_items
  2476  		AS (
  2477  			SELECT
  2478  				substr(i_item_desc, 1, 30) AS itemdesc,
  2479  				i_item_sk AS item_sk,
  2480  				d_date AS solddate,
  2481  				count(*) AS cnt
  2482  			FROM
  2483  				store_sales, date_dim, item
  2484  			WHERE
  2485  				ss_sold_date_sk = d_date_sk
  2486  				AND ss_item_sk = i_item_sk
  2487  				AND d_year
  2488  					IN (2000, 2000 + 1, 2000 + 2, 2000 + 3)
  2489  			GROUP BY
  2490  				substr(i_item_desc, 1, 30),
  2491  				i_item_sk,
  2492  				d_date
  2493  			HAVING
  2494  				count(*) > 4
  2495  		),
  2496  	max_store_sales
  2497  		AS (
  2498  			SELECT
  2499  				max(csales) AS tpcds_cmax
  2500  			FROM
  2501  				(
  2502  					SELECT
  2503  						c_customer_sk,
  2504  						sum(ss_quantity * ss_sales_price)
  2505  							AS csales
  2506  					FROM
  2507  						store_sales, customer, date_dim
  2508  					WHERE
  2509  						ss_customer_sk = c_customer_sk
  2510  						AND ss_sold_date_sk = d_date_sk
  2511  						AND d_year
  2512  							IN (
  2513  									2000,
  2514  									2000 + 1,
  2515  									2000 + 2,
  2516  									2000 + 3
  2517  								)
  2518  					GROUP BY
  2519  						c_customer_sk
  2520  				)
  2521  		),
  2522  	best_ss_customer
  2523  		AS (
  2524  			SELECT
  2525  				c_customer_sk,
  2526  				sum(ss_quantity * ss_sales_price) AS ssales
  2527  			FROM
  2528  				store_sales, customer
  2529  			WHERE
  2530  				ss_customer_sk = c_customer_sk
  2531  			GROUP BY
  2532  				c_customer_sk
  2533  			HAVING
  2534  				sum(ss_quantity * ss_sales_price)
  2535  				> 95 / 100.0
  2536  					* (SELECT * FROM max_store_sales)
  2537  		)
  2538  SELECT
  2539  	c_last_name, c_first_name, sales
  2540  FROM
  2541  	(
  2542  		SELECT
  2543  			c_last_name,
  2544  			c_first_name,
  2545  			sum(cs_quantity * cs_list_price) AS sales
  2546  		FROM
  2547  			catalog_sales, customer, date_dim
  2548  		WHERE
  2549  			d_year = 2000
  2550  			AND d_moy = 7
  2551  			AND cs_sold_date_sk = d_date_sk
  2552  			AND cs_item_sk
  2553  				IN (SELECT item_sk FROM frequent_ss_items)
  2554  			AND cs_bill_customer_sk
  2555  				IN (
  2556  						SELECT
  2557  							c_customer_sk
  2558  						FROM
  2559  							best_ss_customer
  2560  					)
  2561  			AND cs_bill_customer_sk = c_customer_sk
  2562  		GROUP BY
  2563  			c_last_name, c_first_name
  2564  		UNION ALL
  2565  			SELECT
  2566  				c_last_name,
  2567  				c_first_name,
  2568  				sum(ws_quantity * ws_list_price) AS sales
  2569  			FROM
  2570  				web_sales, customer, date_dim
  2571  			WHERE
  2572  				d_year = 2000
  2573  				AND d_moy = 7
  2574  				AND ws_sold_date_sk = d_date_sk
  2575  				AND ws_item_sk
  2576  					IN (
  2577  							SELECT
  2578  								item_sk
  2579  							FROM
  2580  								frequent_ss_items
  2581  						)
  2582  				AND ws_bill_customer_sk
  2583  					IN (
  2584  							SELECT
  2585  								c_customer_sk
  2586  							FROM
  2587  								best_ss_customer
  2588  						)
  2589  				AND ws_bill_customer_sk = c_customer_sk
  2590  			GROUP BY
  2591  				c_last_name, c_first_name
  2592  	)
  2593  ORDER BY
  2594  	c_last_name, c_first_name, sales
  2595  LIMIT
  2596  	100;
  2597  `
  2598  
  2599  	query24 = `
  2600  WITH
  2601  	ssales
  2602  		AS (
  2603  			SELECT
  2604  				c_last_name,
  2605  				c_first_name,
  2606  				s_store_name,
  2607  				ca_state,
  2608  				s_state,
  2609  				i_color,
  2610  				i_current_price,
  2611  				i_manager_id,
  2612  				i_units,
  2613  				i_size,
  2614  				sum(ss_net_paid) AS netpaid
  2615  			FROM
  2616  				store_sales,
  2617  				store_returns,
  2618  				store,
  2619  				item,
  2620  				customer,
  2621  				customer_address
  2622  			WHERE
  2623  				ss_ticket_number = sr_ticket_number
  2624  				AND ss_item_sk = sr_item_sk
  2625  				AND ss_customer_sk = c_customer_sk
  2626  				AND ss_item_sk = i_item_sk
  2627  				AND ss_store_sk = s_store_sk
  2628  				AND c_current_addr_sk = ca_address_sk
  2629  				AND c_birth_country != upper(ca_country)
  2630  				AND s_zip = ca_zip
  2631  				AND s_market_id = 5
  2632  			GROUP BY
  2633  				c_last_name,
  2634  				c_first_name,
  2635  				s_store_name,
  2636  				ca_state,
  2637  				s_state,
  2638  				i_color,
  2639  				i_current_price,
  2640  				i_manager_id,
  2641  				i_units,
  2642  				i_size
  2643  		)
  2644  SELECT
  2645  	c_last_name,
  2646  	c_first_name,
  2647  	s_store_name,
  2648  	sum(netpaid) AS paid
  2649  FROM
  2650  	ssales
  2651  WHERE
  2652  	i_color = 'aquamarine'
  2653  GROUP BY
  2654  	c_last_name, c_first_name, s_store_name
  2655  HAVING
  2656  	sum(netpaid) > (SELECT 0.05 * avg(netpaid) FROM ssales)
  2657  ORDER BY
  2658  	c_last_name, c_first_name, s_store_name;
  2659  WITH
  2660  	ssales
  2661  		AS (
  2662  			SELECT
  2663  				c_last_name,
  2664  				c_first_name,
  2665  				s_store_name,
  2666  				ca_state,
  2667  				s_state,
  2668  				i_color,
  2669  				i_current_price,
  2670  				i_manager_id,
  2671  				i_units,
  2672  				i_size,
  2673  				sum(ss_net_paid) AS netpaid
  2674  			FROM
  2675  				store_sales,
  2676  				store_returns,
  2677  				store,
  2678  				item,
  2679  				customer,
  2680  				customer_address
  2681  			WHERE
  2682  				ss_ticket_number = sr_ticket_number
  2683  				AND ss_item_sk = sr_item_sk
  2684  				AND ss_customer_sk = c_customer_sk
  2685  				AND ss_item_sk = i_item_sk
  2686  				AND ss_store_sk = s_store_sk
  2687  				AND c_current_addr_sk = ca_address_sk
  2688  				AND c_birth_country != upper(ca_country)
  2689  				AND s_zip = ca_zip
  2690  				AND s_market_id = 5
  2691  			GROUP BY
  2692  				c_last_name,
  2693  				c_first_name,
  2694  				s_store_name,
  2695  				ca_state,
  2696  				s_state,
  2697  				i_color,
  2698  				i_current_price,
  2699  				i_manager_id,
  2700  				i_units,
  2701  				i_size
  2702  		)
  2703  SELECT
  2704  	c_last_name,
  2705  	c_first_name,
  2706  	s_store_name,
  2707  	sum(netpaid) AS paid
  2708  FROM
  2709  	ssales
  2710  WHERE
  2711  	i_color = 'seashell'
  2712  GROUP BY
  2713  	c_last_name, c_first_name, s_store_name
  2714  HAVING
  2715  	sum(netpaid) > (SELECT 0.05 * avg(netpaid) FROM ssales)
  2716  ORDER BY
  2717  	c_last_name, c_first_name, s_store_name;
  2718  `
  2719  
  2720  	query25 = `
  2721  SELECT
  2722  	i_item_id,
  2723  	i_item_desc,
  2724  	s_store_id,
  2725  	s_store_name,
  2726  	max(ss_net_profit) AS store_sales_profit,
  2727  	max(sr_net_loss) AS store_returns_loss,
  2728  	max(cs_net_profit) AS catalog_sales_profit
  2729  FROM
  2730  	store_sales,
  2731  	store_returns,
  2732  	catalog_sales,
  2733  	date_dim AS d1,
  2734  	date_dim AS d2,
  2735  	date_dim AS d3,
  2736  	store,
  2737  	item
  2738  WHERE
  2739  	d1.d_moy = 4
  2740  	AND d1.d_year = 1999
  2741  	AND d1.d_date_sk = ss_sold_date_sk
  2742  	AND i_item_sk = ss_item_sk
  2743  	AND s_store_sk = ss_store_sk
  2744  	AND ss_customer_sk = sr_customer_sk
  2745  	AND ss_item_sk = sr_item_sk
  2746  	AND ss_ticket_number = sr_ticket_number
  2747  	AND sr_returned_date_sk = d2.d_date_sk
  2748  	AND d2.d_moy BETWEEN 4 AND 10
  2749  	AND d2.d_year = 1999
  2750  	AND sr_customer_sk = cs_bill_customer_sk
  2751  	AND sr_item_sk = cs_item_sk
  2752  	AND cs_sold_date_sk = d3.d_date_sk
  2753  	AND d3.d_moy BETWEEN 4 AND 10
  2754  	AND d3.d_year = 1999
  2755  GROUP BY
  2756  	i_item_id, i_item_desc, s_store_id, s_store_name
  2757  ORDER BY
  2758  	i_item_id, i_item_desc, s_store_id, s_store_name
  2759  LIMIT
  2760  	100;
  2761  `
  2762  
  2763  	query26 = `
  2764  SELECT
  2765  	i_item_id,
  2766  	avg(cs_quantity) AS agg1,
  2767  	avg(cs_list_price) AS agg2,
  2768  	avg(cs_coupon_amt) AS agg3,
  2769  	avg(cs_sales_price) AS agg4
  2770  FROM
  2771  	catalog_sales,
  2772  	customer_demographics,
  2773  	date_dim,
  2774  	item,
  2775  	promotion
  2776  WHERE
  2777  	cs_sold_date_sk = d_date_sk
  2778  	AND cs_item_sk = i_item_sk
  2779  	AND cs_bill_cdemo_sk = cd_demo_sk
  2780  	AND cs_promo_sk = p_promo_sk
  2781  	AND cd_gender = 'M'
  2782  	AND cd_marital_status = 'W'
  2783  	AND cd_education_status = 'Unknown'
  2784  	AND (p_channel_email = 'N' OR p_channel_event = 'N')
  2785  	AND d_year = 2002
  2786  GROUP BY
  2787  	i_item_id
  2788  ORDER BY
  2789  	i_item_id
  2790  LIMIT
  2791  	100;
  2792  `
  2793  
  2794  	// TODO(yuzefovich): modify it to be parsed by CRDB.
  2795  	query27 = `
  2796  select  i_item_id,
  2797          s_state, grouping(s_state) g_state,
  2798          avg(ss_quantity) agg1,
  2799          avg(ss_list_price) agg2,
  2800          avg(ss_coupon_amt) agg3,
  2801          avg(ss_sales_price) agg4
  2802   from store_sales, customer_demographics, date_dim, store, item
  2803   where ss_sold_date_sk = d_date_sk and
  2804         ss_item_sk = i_item_sk and
  2805         ss_store_sk = s_store_sk and
  2806         ss_cdemo_sk = cd_demo_sk and
  2807         cd_gender = 'M' and
  2808         cd_marital_status = 'W' and
  2809         cd_education_status = 'Secondary' and
  2810         d_year = 1999 and
  2811         s_state in ('TN','TN', 'TN', 'TN', 'TN', 'TN')
  2812   group by rollup (i_item_id, s_state)
  2813   order by i_item_id
  2814           ,s_state
  2815   limit 100;
  2816  `
  2817  
  2818  	query28 = `
  2819  SELECT
  2820  	*
  2821  FROM
  2822  	(
  2823  		SELECT
  2824  			avg(ss_list_price) AS b1_lp,
  2825  			count(ss_list_price) AS b1_cnt,
  2826  			count(DISTINCT ss_list_price) AS b1_cntd
  2827  		FROM
  2828  			store_sales
  2829  		WHERE
  2830  			ss_quantity BETWEEN 0 AND 5
  2831  			AND (
  2832  					ss_list_price BETWEEN 107 AND (107 + 10)
  2833  					OR ss_coupon_amt BETWEEN 1319 AND (1319 + 1000)
  2834  					OR ss_wholesale_cost BETWEEN 60 AND (60 + 20)
  2835  				)
  2836  	)
  2837  		AS b1,
  2838  	(
  2839  		SELECT
  2840  			avg(ss_list_price) AS b2_lp,
  2841  			count(ss_list_price) AS b2_cnt,
  2842  			count(DISTINCT ss_list_price) AS b2_cntd
  2843  		FROM
  2844  			store_sales
  2845  		WHERE
  2846  			ss_quantity BETWEEN 6 AND 10
  2847  			AND (
  2848  					ss_list_price BETWEEN 23 AND (23 + 10)
  2849  					OR ss_coupon_amt BETWEEN 825 AND (825 + 1000)
  2850  					OR ss_wholesale_cost BETWEEN 43 AND (43 + 20)
  2851  				)
  2852  	)
  2853  		AS b2,
  2854  	(
  2855  		SELECT
  2856  			avg(ss_list_price) AS b3_lp,
  2857  			count(ss_list_price) AS b3_cnt,
  2858  			count(DISTINCT ss_list_price) AS b3_cntd
  2859  		FROM
  2860  			store_sales
  2861  		WHERE
  2862  			ss_quantity BETWEEN 11 AND 15
  2863  			AND (
  2864  					ss_list_price BETWEEN 74 AND (74 + 10)
  2865  					OR ss_coupon_amt BETWEEN 4381 AND (4381 + 1000)
  2866  					OR ss_wholesale_cost BETWEEN 57 AND (57 + 20)
  2867  				)
  2868  	)
  2869  		AS b3,
  2870  	(
  2871  		SELECT
  2872  			avg(ss_list_price) AS b4_lp,
  2873  			count(ss_list_price) AS b4_cnt,
  2874  			count(DISTINCT ss_list_price) AS b4_cntd
  2875  		FROM
  2876  			store_sales
  2877  		WHERE
  2878  			ss_quantity BETWEEN 16 AND 20
  2879  			AND (
  2880  					ss_list_price BETWEEN 89 AND (89 + 10)
  2881  					OR ss_coupon_amt BETWEEN 3117 AND (3117 + 1000)
  2882  					OR ss_wholesale_cost BETWEEN 68 AND (68 + 20)
  2883  				)
  2884  	)
  2885  		AS b4,
  2886  	(
  2887  		SELECT
  2888  			avg(ss_list_price) AS b5_lp,
  2889  			count(ss_list_price) AS b5_cnt,
  2890  			count(DISTINCT ss_list_price) AS b5_cntd
  2891  		FROM
  2892  			store_sales
  2893  		WHERE
  2894  			ss_quantity BETWEEN 21 AND 25
  2895  			AND (
  2896  					ss_list_price BETWEEN 58 AND (58 + 10)
  2897  					OR ss_coupon_amt BETWEEN 9402 AND (9402 + 1000)
  2898  					OR ss_wholesale_cost BETWEEN 38 AND (38 + 20)
  2899  				)
  2900  	)
  2901  		AS b5,
  2902  	(
  2903  		SELECT
  2904  			avg(ss_list_price) AS b6_lp,
  2905  			count(ss_list_price) AS b6_cnt,
  2906  			count(DISTINCT ss_list_price) AS b6_cntd
  2907  		FROM
  2908  			store_sales
  2909  		WHERE
  2910  			ss_quantity BETWEEN 26 AND 30
  2911  			AND (
  2912  					ss_list_price BETWEEN 64 AND (64 + 10)
  2913  					OR ss_coupon_amt BETWEEN 5792 AND (5792 + 1000)
  2914  					OR ss_wholesale_cost BETWEEN 73 AND (73 + 20)
  2915  				)
  2916  	)
  2917  		AS b6
  2918  LIMIT
  2919  	100;
  2920  `
  2921  
  2922  	query29 = `
  2923  SELECT
  2924  	i_item_id,
  2925  	i_item_desc,
  2926  	s_store_id,
  2927  	s_store_name,
  2928  	max(ss_quantity) AS store_sales_quantity,
  2929  	max(sr_return_quantity) AS store_returns_quantity,
  2930  	max(cs_quantity) AS catalog_sales_quantity
  2931  FROM
  2932  	store_sales,
  2933  	store_returns,
  2934  	catalog_sales,
  2935  	date_dim AS d1,
  2936  	date_dim AS d2,
  2937  	date_dim AS d3,
  2938  	store,
  2939  	item
  2940  WHERE
  2941  	d1.d_moy = 4
  2942  	AND d1.d_year = 1998
  2943  	AND d1.d_date_sk = ss_sold_date_sk
  2944  	AND i_item_sk = ss_item_sk
  2945  	AND s_store_sk = ss_store_sk
  2946  	AND ss_customer_sk = sr_customer_sk
  2947  	AND ss_item_sk = sr_item_sk
  2948  	AND ss_ticket_number = sr_ticket_number
  2949  	AND sr_returned_date_sk = d2.d_date_sk
  2950  	AND d2.d_moy BETWEEN 4 AND (4 + 3)
  2951  	AND d2.d_year = 1998
  2952  	AND sr_customer_sk = cs_bill_customer_sk
  2953  	AND sr_item_sk = cs_item_sk
  2954  	AND cs_sold_date_sk = d3.d_date_sk
  2955  	AND d3.d_year IN (1998, 1998 + 1, 1998 + 2)
  2956  GROUP BY
  2957  	i_item_id, i_item_desc, s_store_id, s_store_name
  2958  ORDER BY
  2959  	i_item_id, i_item_desc, s_store_id, s_store_name
  2960  LIMIT
  2961  	100;
  2962  `
  2963  
  2964  	query30 = `
  2965  WITH
  2966  	customer_total_return
  2967  		AS (
  2968  			SELECT
  2969  				wr_returning_customer_sk AS ctr_customer_sk,
  2970  				ca_state AS ctr_state,
  2971  				sum(wr_return_amt) AS ctr_total_return
  2972  			FROM
  2973  				web_returns, date_dim, customer_address
  2974  			WHERE
  2975  				wr_returned_date_sk = d_date_sk
  2976  				AND d_year = 2000
  2977  				AND wr_returning_addr_sk = ca_address_sk
  2978  			GROUP BY
  2979  				wr_returning_customer_sk, ca_state
  2980  		)
  2981  SELECT
  2982  	c_customer_id,
  2983  	c_salutation,
  2984  	c_first_name,
  2985  	c_last_name,
  2986  	c_preferred_cust_flag,
  2987  	c_birth_day,
  2988  	c_birth_month,
  2989  	c_birth_year,
  2990  	c_birth_country,
  2991  	c_login,
  2992  	c_email_address,
  2993  	c_last_review_date_sk,
  2994  	ctr_total_return
  2995  FROM
  2996  	customer_total_return AS ctr1,
  2997  	customer_address,
  2998  	customer
  2999  WHERE
  3000  	ctr1.ctr_total_return
  3001  	> (
  3002  			SELECT
  3003  				avg(ctr_total_return) * 1.2
  3004  			FROM
  3005  				customer_total_return AS ctr2
  3006  			WHERE
  3007  				ctr1.ctr_state = ctr2.ctr_state
  3008  		)
  3009  	AND ca_address_sk = c_current_addr_sk
  3010  	AND ca_state = 'AR'
  3011  	AND ctr1.ctr_customer_sk = c_customer_sk
  3012  ORDER BY
  3013  	c_customer_id,
  3014  	c_salutation,
  3015  	c_first_name,
  3016  	c_last_name,
  3017  	c_preferred_cust_flag,
  3018  	c_birth_day,
  3019  	c_birth_month,
  3020  	c_birth_year,
  3021  	c_birth_country,
  3022  	c_login,
  3023  	c_email_address,
  3024  	c_last_review_date_sk,
  3025  	ctr_total_return
  3026  LIMIT
  3027  	100;
  3028  `
  3029  
  3030  	query31 = `
  3031  WITH
  3032  	ss
  3033  		AS (
  3034  			SELECT
  3035  				ca_county,
  3036  				d_qoy,
  3037  				d_year,
  3038  				sum(ss_ext_sales_price) AS store_sales
  3039  			FROM
  3040  				store_sales, date_dim, customer_address
  3041  			WHERE
  3042  				ss_sold_date_sk = d_date_sk
  3043  				AND ss_addr_sk = ca_address_sk
  3044  			GROUP BY
  3045  				ca_county, d_qoy, d_year
  3046  		),
  3047  	ws
  3048  		AS (
  3049  			SELECT
  3050  				ca_county,
  3051  				d_qoy,
  3052  				d_year,
  3053  				sum(ws_ext_sales_price) AS web_sales
  3054  			FROM
  3055  				web_sales, date_dim, customer_address
  3056  			WHERE
  3057  				ws_sold_date_sk = d_date_sk
  3058  				AND ws_bill_addr_sk = ca_address_sk
  3059  			GROUP BY
  3060  				ca_county, d_qoy, d_year
  3061  		)
  3062  SELECT
  3063  	ss1.ca_county,
  3064  	ss1.d_year,
  3065  	ws2.web_sales / ws1.web_sales AS web_q1_q2_increase,
  3066  	ss2.store_sales / ss1.store_sales
  3067  		AS store_q1_q2_increase,
  3068  	ws3.web_sales / ws2.web_sales AS web_q2_q3_increase,
  3069  	ss3.store_sales / ss2.store_sales
  3070  		AS store_q2_q3_increase
  3071  FROM
  3072  	ss AS ss1,
  3073  	ss AS ss2,
  3074  	ss AS ss3,
  3075  	ws AS ws1,
  3076  	ws AS ws2,
  3077  	ws AS ws3
  3078  WHERE
  3079  	ss1.d_qoy = 1
  3080  	AND ss1.d_year = 1999
  3081  	AND ss1.ca_county = ss2.ca_county
  3082  	AND ss2.d_qoy = 2
  3083  	AND ss2.d_year = 1999
  3084  	AND ss2.ca_county = ss3.ca_county
  3085  	AND ss3.d_qoy = 3
  3086  	AND ss3.d_year = 1999
  3087  	AND ss1.ca_county = ws1.ca_county
  3088  	AND ws1.d_qoy = 1
  3089  	AND ws1.d_year = 1999
  3090  	AND ws1.ca_county = ws2.ca_county
  3091  	AND ws2.d_qoy = 2
  3092  	AND ws2.d_year = 1999
  3093  	AND ws1.ca_county = ws3.ca_county
  3094  	AND ws3.d_qoy = 3
  3095  	AND ws3.d_year = 1999
  3096  	AND CASE
  3097  		WHEN ws1.web_sales > 0
  3098  		THEN ws2.web_sales / ws1.web_sales
  3099  		ELSE NULL
  3100  		END
  3101  		> CASE
  3102  			WHEN ss1.store_sales > 0
  3103  			THEN ss2.store_sales / ss1.store_sales
  3104  			ELSE NULL
  3105  			END
  3106  	AND CASE
  3107  		WHEN ws2.web_sales > 0
  3108  		THEN ws3.web_sales / ws2.web_sales
  3109  		ELSE NULL
  3110  		END
  3111  		> CASE
  3112  			WHEN ss2.store_sales > 0
  3113  			THEN ss3.store_sales / ss2.store_sales
  3114  			ELSE NULL
  3115  			END
  3116  ORDER BY
  3117  	store_q2_q3_increase;
  3118  `
  3119  
  3120  	// NOTE: I added conversion of 90 days to an interval.
  3121  	query32 = `
  3122  SELECT
  3123  	sum(cs_ext_discount_amt) AS "excess discount amount"
  3124  FROM
  3125  	catalog_sales, item, date_dim
  3126  WHERE
  3127  	i_manufact_id = 722
  3128  	AND i_item_sk = cs_item_sk
  3129  	AND d_date BETWEEN '2001-03-09' AND (CAST('2001-03-09' AS DATE) + '90 days'::INTERVAL)
  3130  	AND d_date_sk = cs_sold_date_sk
  3131  	AND cs_ext_discount_amt
  3132  		> (
  3133  				SELECT
  3134  					1.3 * avg(cs_ext_discount_amt)
  3135  				FROM
  3136  					catalog_sales, date_dim
  3137  				WHERE
  3138  					cs_item_sk = i_item_sk
  3139  					AND d_date BETWEEN '2001-03-09' AND (CAST('2001-03-09' AS DATE) + '90 days'::INTERVAL)
  3140  					AND d_date_sk = cs_sold_date_sk
  3141  			)
  3142  LIMIT
  3143  	100;
  3144  `
  3145  
  3146  	query33 = `
  3147  WITH
  3148  	ss
  3149  		AS (
  3150  			SELECT
  3151  				i_manufact_id,
  3152  				sum(ss_ext_sales_price) AS total_sales
  3153  			FROM
  3154  				store_sales,
  3155  				date_dim,
  3156  				customer_address,
  3157  				item
  3158  			WHERE
  3159  				i_manufact_id
  3160  				IN (
  3161  						SELECT
  3162  							i_manufact_id
  3163  						FROM
  3164  							item
  3165  						WHERE
  3166  							i_category IN ('Books',)
  3167  					)
  3168  				AND ss_item_sk = i_item_sk
  3169  				AND ss_sold_date_sk = d_date_sk
  3170  				AND d_year = 2001
  3171  				AND d_moy = 3
  3172  				AND ss_addr_sk = ca_address_sk
  3173  				AND ca_gmt_offset = -5
  3174  			GROUP BY
  3175  				i_manufact_id
  3176  		),
  3177  	cs
  3178  		AS (
  3179  			SELECT
  3180  				i_manufact_id,
  3181  				sum(cs_ext_sales_price) AS total_sales
  3182  			FROM
  3183  				catalog_sales,
  3184  				date_dim,
  3185  				customer_address,
  3186  				item
  3187  			WHERE
  3188  				i_manufact_id
  3189  				IN (
  3190  						SELECT
  3191  							i_manufact_id
  3192  						FROM
  3193  							item
  3194  						WHERE
  3195  							i_category IN ('Books',)
  3196  					)
  3197  				AND cs_item_sk = i_item_sk
  3198  				AND cs_sold_date_sk = d_date_sk
  3199  				AND d_year = 2001
  3200  				AND d_moy = 3
  3201  				AND cs_bill_addr_sk = ca_address_sk
  3202  				AND ca_gmt_offset = -5
  3203  			GROUP BY
  3204  				i_manufact_id
  3205  		),
  3206  	ws
  3207  		AS (
  3208  			SELECT
  3209  				i_manufact_id,
  3210  				sum(ws_ext_sales_price) AS total_sales
  3211  			FROM
  3212  				web_sales, date_dim, customer_address, item
  3213  			WHERE
  3214  				i_manufact_id
  3215  				IN (
  3216  						SELECT
  3217  							i_manufact_id
  3218  						FROM
  3219  							item
  3220  						WHERE
  3221  							i_category IN ('Books',)
  3222  					)
  3223  				AND ws_item_sk = i_item_sk
  3224  				AND ws_sold_date_sk = d_date_sk
  3225  				AND d_year = 2001
  3226  				AND d_moy = 3
  3227  				AND ws_bill_addr_sk = ca_address_sk
  3228  				AND ca_gmt_offset = -5
  3229  			GROUP BY
  3230  				i_manufact_id
  3231  		)
  3232  SELECT
  3233  	i_manufact_id, sum(total_sales) AS total_sales
  3234  FROM
  3235  	(
  3236  		SELECT * FROM ss UNION ALL SELECT * FROM cs
  3237  		UNION ALL SELECT * FROM ws
  3238  	)
  3239  		AS tmp1
  3240  GROUP BY
  3241  	i_manufact_id
  3242  ORDER BY
  3243  	total_sales
  3244  LIMIT
  3245  	100;
  3246  `
  3247  
  3248  	query34 = `
  3249  SELECT
  3250  	c_last_name,
  3251  	c_first_name,
  3252  	c_salutation,
  3253  	c_preferred_cust_flag,
  3254  	ss_ticket_number,
  3255  	cnt
  3256  FROM
  3257  	(
  3258  		SELECT
  3259  			ss_ticket_number,
  3260  			ss_customer_sk,
  3261  			count(*) AS cnt
  3262  		FROM
  3263  			store_sales,
  3264  			date_dim,
  3265  			store,
  3266  			household_demographics
  3267  		WHERE
  3268  			store_sales.ss_sold_date_sk = date_dim.d_date_sk
  3269  			AND store_sales.ss_store_sk = store.s_store_sk
  3270  			AND store_sales.ss_hdemo_sk
  3271  				= household_demographics.hd_demo_sk
  3272  			AND (
  3273  					date_dim.d_dom BETWEEN 1 AND 3
  3274  					OR date_dim.d_dom BETWEEN 25 AND 28
  3275  				)
  3276  			AND (
  3277  					household_demographics.hd_buy_potential
  3278  					= '1001-5000'
  3279  					OR household_demographics.hd_buy_potential
  3280  						= '0-500'
  3281  				)
  3282  			AND household_demographics.hd_vehicle_count > 0
  3283  			AND (
  3284  					CASE
  3285  					WHEN household_demographics.hd_vehicle_count
  3286  					> 0
  3287  					THEN household_demographics.hd_dep_count
  3288  					/ household_demographics.hd_vehicle_count
  3289  					ELSE NULL
  3290  					END
  3291  				)
  3292  				> 1.2
  3293  			AND date_dim.d_year
  3294  				IN (2000, 2000 + 1, 2000 + 2)
  3295  			AND store.s_county
  3296  				IN (
  3297  						'Williamson County',
  3298  						'Williamson County',
  3299  						'Williamson County',
  3300  						'Williamson County',
  3301  						'Williamson County',
  3302  						'Williamson County',
  3303  						'Williamson County',
  3304  						'Williamson County'
  3305  					)
  3306  		GROUP BY
  3307  			ss_ticket_number, ss_customer_sk
  3308  	)
  3309  		AS dn,
  3310  	customer
  3311  WHERE
  3312  	ss_customer_sk = c_customer_sk AND cnt BETWEEN 15 AND 20
  3313  ORDER BY
  3314  	c_last_name,
  3315  	c_first_name,
  3316  	c_salutation,
  3317  	c_preferred_cust_flag DESC,
  3318  	ss_ticket_number;
  3319  `
  3320  
  3321  	query35 = `
  3322  SELECT
  3323  	ca_state,
  3324  	cd_gender,
  3325  	cd_marital_status,
  3326  	cd_dep_count,
  3327  	count(*) AS cnt1,
  3328  	avg(cd_dep_count),
  3329  	stddev_samp(cd_dep_count),
  3330  	sum(cd_dep_count),
  3331  	cd_dep_employed_count,
  3332  	count(*) AS cnt2,
  3333  	avg(cd_dep_employed_count),
  3334  	stddev_samp(cd_dep_employed_count),
  3335  	sum(cd_dep_employed_count),
  3336  	cd_dep_college_count,
  3337  	count(*) AS cnt3,
  3338  	avg(cd_dep_college_count),
  3339  	stddev_samp(cd_dep_college_count),
  3340  	sum(cd_dep_college_count)
  3341  FROM
  3342  	customer AS c,
  3343  	customer_address AS ca,
  3344  	customer_demographics
  3345  WHERE
  3346  	c.c_current_addr_sk = ca.ca_address_sk
  3347  	AND cd_demo_sk = c.c_current_cdemo_sk
  3348  	AND EXISTS(
  3349  			SELECT
  3350  				*
  3351  			FROM
  3352  				store_sales, date_dim
  3353  			WHERE
  3354  				c.c_customer_sk = ss_customer_sk
  3355  				AND ss_sold_date_sk = d_date_sk
  3356  				AND d_year = 1999
  3357  				AND d_qoy < 4
  3358  		)
  3359  	AND (
  3360  			EXISTS(
  3361  				SELECT
  3362  					*
  3363  				FROM
  3364  					web_sales, date_dim
  3365  				WHERE
  3366  					c.c_customer_sk = ws_bill_customer_sk
  3367  					AND ws_sold_date_sk = d_date_sk
  3368  					AND d_year = 1999
  3369  					AND d_qoy < 4
  3370  			)
  3371  			OR EXISTS(
  3372  					SELECT
  3373  						*
  3374  					FROM
  3375  						catalog_sales, date_dim
  3376  					WHERE
  3377  						c.c_customer_sk
  3378  						= cs_ship_customer_sk
  3379  						AND cs_sold_date_sk = d_date_sk
  3380  						AND d_year = 1999
  3381  						AND d_qoy < 4
  3382  				)
  3383  		)
  3384  GROUP BY
  3385  	ca_state,
  3386  	cd_gender,
  3387  	cd_marital_status,
  3388  	cd_dep_count,
  3389  	cd_dep_employed_count,
  3390  	cd_dep_college_count
  3391  ORDER BY
  3392  	ca_state,
  3393  	cd_gender,
  3394  	cd_marital_status,
  3395  	cd_dep_count,
  3396  	cd_dep_employed_count,
  3397  	cd_dep_college_count
  3398  LIMIT
  3399  	100;
  3400  `
  3401  
  3402  	// TODO(yuzefovich): modify it to be parsed by CRDB.
  3403  	query36 = `
  3404  select  
  3405      sum(ss_net_profit)/sum(ss_ext_sales_price) as gross_margin
  3406     ,i_category
  3407     ,i_class
  3408     ,grouping(i_category)+grouping(i_class) as lochierarchy
  3409     ,rank() over (
  3410   	partition by grouping(i_category)+grouping(i_class),
  3411   	case when grouping(i_class) = 0 then i_category end 
  3412   	order by sum(ss_net_profit)/sum(ss_ext_sales_price) asc) as rank_within_parent
  3413   from
  3414      store_sales
  3415     ,date_dim       d1
  3416     ,item
  3417     ,store
  3418   where
  3419      d1.d_year = 2000 
  3420   and d1.d_date_sk = ss_sold_date_sk
  3421   and i_item_sk  = ss_item_sk 
  3422   and s_store_sk  = ss_store_sk
  3423   and s_state in ('TN','TN','TN','TN',
  3424                   'TN','TN','TN','TN')
  3425   group by rollup(i_category,i_class)
  3426   order by
  3427     lochierarchy desc
  3428    ,case when lochierarchy = 0 then i_category end
  3429    ,rank_within_parent
  3430    limit 100;
  3431  `
  3432  
  3433  	// NOTE: I added conversion of 90 days to an interval.
  3434  	query37 = `
  3435  SELECT
  3436  	i_item_id, i_item_desc, i_current_price
  3437  FROM
  3438  	item, inventory, date_dim, catalog_sales
  3439  WHERE
  3440  	i_current_price BETWEEN 29 AND (29 + 30)
  3441  	AND inv_item_sk = i_item_sk
  3442  	AND d_date_sk = inv_date_sk
  3443  	AND d_date BETWEEN CAST('2002-03-29' AS DATE) AND (CAST('2002-03-29' AS DATE) + '60 days'::INTERVAL)
  3444  	AND i_manufact_id IN (705, 742, 777, 944)
  3445  	AND inv_quantity_on_hand BETWEEN 100 AND 500
  3446  	AND cs_item_sk = i_item_sk
  3447  GROUP BY
  3448  	i_item_id, i_item_desc, i_current_price
  3449  ORDER BY
  3450  	i_item_id
  3451  LIMIT
  3452  	100;
  3453  `
  3454  
  3455  	query38 = `
  3456  SELECT
  3457  	count(*)
  3458  FROM
  3459  	(
  3460  		SELECT
  3461  			DISTINCT c_last_name, c_first_name, d_date
  3462  		FROM
  3463  			store_sales, date_dim, customer
  3464  		WHERE
  3465  			store_sales.ss_sold_date_sk = date_dim.d_date_sk
  3466  			AND store_sales.ss_customer_sk
  3467  				= customer.c_customer_sk
  3468  			AND d_month_seq BETWEEN 1189 AND (1189 + 11)
  3469  		INTERSECT
  3470  			SELECT
  3471  				DISTINCT c_last_name, c_first_name, d_date
  3472  			FROM
  3473  				catalog_sales, date_dim, customer
  3474  			WHERE
  3475  				catalog_sales.cs_sold_date_sk
  3476  				= date_dim.d_date_sk
  3477  				AND catalog_sales.cs_bill_customer_sk
  3478  					= customer.c_customer_sk
  3479  				AND d_month_seq BETWEEN 1189 AND (1189 + 11)
  3480  		INTERSECT
  3481  			SELECT
  3482  				DISTINCT c_last_name, c_first_name, d_date
  3483  			FROM
  3484  				web_sales, date_dim, customer
  3485  			WHERE
  3486  				web_sales.ws_sold_date_sk
  3487  				= date_dim.d_date_sk
  3488  				AND web_sales.ws_bill_customer_sk
  3489  					= customer.c_customer_sk
  3490  				AND d_month_seq BETWEEN 1189 AND (1189 + 11)
  3491  	)
  3492  		AS hot_cust
  3493  LIMIT
  3494  	100;
  3495  `
  3496  
  3497  	query39 = `
  3498  WITH
  3499  	inv
  3500  		AS (
  3501  			SELECT
  3502  				w_warehouse_name,
  3503  				w_warehouse_sk,
  3504  				i_item_sk,
  3505  				d_moy,
  3506  				stdev,
  3507  				mean,
  3508  				CASE mean
  3509  				WHEN 0 THEN NULL
  3510  				ELSE stdev / mean
  3511  				END
  3512  					AS cov
  3513  			FROM
  3514  				(
  3515  					SELECT
  3516  						w_warehouse_name,
  3517  						w_warehouse_sk,
  3518  						i_item_sk,
  3519  						d_moy,
  3520  						stddev_samp(inv_quantity_on_hand)
  3521  							AS stdev,
  3522  						avg(inv_quantity_on_hand) AS mean
  3523  					FROM
  3524  						inventory, item, warehouse, date_dim
  3525  					WHERE
  3526  						inv_item_sk = i_item_sk
  3527  						AND inv_warehouse_sk
  3528  							= w_warehouse_sk
  3529  						AND inv_date_sk = d_date_sk
  3530  						AND d_year = 2000
  3531  					GROUP BY
  3532  						w_warehouse_name,
  3533  						w_warehouse_sk,
  3534  						i_item_sk,
  3535  						d_moy
  3536  				)
  3537  					AS foo
  3538  			WHERE
  3539  				CASE mean
  3540  				WHEN 0 THEN 0
  3541  				ELSE stdev / mean
  3542  				END
  3543  				> 1
  3544  		)
  3545  SELECT
  3546  	inv1.w_warehouse_sk,
  3547  	inv1.i_item_sk,
  3548  	inv1.d_moy,
  3549  	inv1.mean,
  3550  	inv1.cov,
  3551  	inv2.w_warehouse_sk,
  3552  	inv2.i_item_sk,
  3553  	inv2.d_moy,
  3554  	inv2.mean,
  3555  	inv2.cov
  3556  FROM
  3557  	inv AS inv1, inv AS inv2
  3558  WHERE
  3559  	inv1.i_item_sk = inv2.i_item_sk
  3560  	AND inv1.w_warehouse_sk = inv2.w_warehouse_sk
  3561  	AND inv1.d_moy = 1
  3562  	AND inv2.d_moy = 1 + 1
  3563  ORDER BY
  3564  	inv1.w_warehouse_sk,
  3565  	inv1.i_item_sk,
  3566  	inv1.d_moy,
  3567  	inv1.mean,
  3568  	inv1.cov,
  3569  	inv2.d_moy,
  3570  	inv2.mean,
  3571  	inv2.cov;
  3572  WITH
  3573  	inv
  3574  		AS (
  3575  			SELECT
  3576  				w_warehouse_name,
  3577  				w_warehouse_sk,
  3578  				i_item_sk,
  3579  				d_moy,
  3580  				stdev,
  3581  				mean,
  3582  				CASE mean
  3583  				WHEN 0 THEN NULL
  3584  				ELSE stdev / mean
  3585  				END
  3586  					AS cov
  3587  			FROM
  3588  				(
  3589  					SELECT
  3590  						w_warehouse_name,
  3591  						w_warehouse_sk,
  3592  						i_item_sk,
  3593  						d_moy,
  3594  						stddev_samp(inv_quantity_on_hand)
  3595  							AS stdev,
  3596  						avg(inv_quantity_on_hand) AS mean
  3597  					FROM
  3598  						inventory, item, warehouse, date_dim
  3599  					WHERE
  3600  						inv_item_sk = i_item_sk
  3601  						AND inv_warehouse_sk
  3602  							= w_warehouse_sk
  3603  						AND inv_date_sk = d_date_sk
  3604  						AND d_year = 2000
  3605  					GROUP BY
  3606  						w_warehouse_name,
  3607  						w_warehouse_sk,
  3608  						i_item_sk,
  3609  						d_moy
  3610  				)
  3611  					AS foo
  3612  			WHERE
  3613  				CASE mean
  3614  				WHEN 0 THEN 0
  3615  				ELSE stdev / mean
  3616  				END
  3617  				> 1
  3618  		)
  3619  SELECT
  3620  	inv1.w_warehouse_sk,
  3621  	inv1.i_item_sk,
  3622  	inv1.d_moy,
  3623  	inv1.mean,
  3624  	inv1.cov,
  3625  	inv2.w_warehouse_sk,
  3626  	inv2.i_item_sk,
  3627  	inv2.d_moy,
  3628  	inv2.mean,
  3629  	inv2.cov
  3630  FROM
  3631  	inv AS inv1, inv AS inv2
  3632  WHERE
  3633  	inv1.i_item_sk = inv2.i_item_sk
  3634  	AND inv1.w_warehouse_sk = inv2.w_warehouse_sk
  3635  	AND inv1.d_moy = 1
  3636  	AND inv2.d_moy = 1 + 1
  3637  	AND inv1.cov > 1.5
  3638  ORDER BY
  3639  	inv1.w_warehouse_sk,
  3640  	inv1.i_item_sk,
  3641  	inv1.d_moy,
  3642  	inv1.mean,
  3643  	inv1.cov,
  3644  	inv2.d_moy,
  3645  	inv2.mean,
  3646  	inv2.cov;
  3647  `
  3648  
  3649  	// NOTE: I added conversion of 30 days to an interval.
  3650  	query40 = `
  3651  SELECT
  3652  	w_state,
  3653  	i_item_id,
  3654  	sum(
  3655  		CASE
  3656  		WHEN (
  3657  			CAST(d_date AS DATE)
  3658  			< CAST('2001-05-02' AS DATE)
  3659  		)
  3660  		THEN cs_sales_price - COALESCE(cr_refunded_cash, 0)
  3661  		ELSE 0
  3662  		END
  3663  	)
  3664  		AS sales_before,
  3665  	sum(
  3666  		CASE
  3667  		WHEN (
  3668  			CAST(d_date AS DATE)
  3669  			>= CAST('2001-05-02' AS DATE)
  3670  		)
  3671  		THEN cs_sales_price - COALESCE(cr_refunded_cash, 0)
  3672  		ELSE 0
  3673  		END
  3674  	)
  3675  		AS sales_after
  3676  FROM
  3677  	catalog_sales
  3678  	LEFT JOIN catalog_returns ON
  3679  			cs_order_number = cr_order_number
  3680  			AND cs_item_sk = cr_item_sk,
  3681  	warehouse,
  3682  	item,
  3683  	date_dim
  3684  WHERE
  3685  	i_current_price BETWEEN 0.99 AND 1.49
  3686  	AND i_item_sk = cs_item_sk
  3687  	AND cs_warehouse_sk = w_warehouse_sk
  3688  	AND cs_sold_date_sk = d_date_sk
  3689  	AND d_date BETWEEN (CAST('2001-05-02' AS DATE) - '30 days'::INTERVAL) AND (CAST('2001-05-02' AS DATE) + '30 days'::INTERVAL)
  3690  GROUP BY
  3691  	w_state, i_item_id
  3692  ORDER BY
  3693  	w_state, i_item_id
  3694  LIMIT
  3695  	100;
  3696  `
  3697  
  3698  	query41 = `
  3699  SELECT
  3700  	DISTINCT i_product_name
  3701  FROM
  3702  	item AS i1
  3703  WHERE
  3704  	i_manufact_id BETWEEN 704 AND (704 + 40)
  3705  	AND (
  3706  			SELECT
  3707  				count(*) AS item_cnt
  3708  			FROM
  3709  				item
  3710  			WHERE
  3711  				(
  3712  					i_manufact = i1.i_manufact
  3713  					AND (
  3714  							(
  3715  								i_category = 'Women'
  3716  								AND (
  3717  										i_color = 'forest'
  3718  										OR i_color = 'lime'
  3719  									)
  3720  								AND (
  3721  										i_units = 'Pallet'
  3722  										OR i_units = 'Pound'
  3723  									)
  3724  								AND (
  3725  										i_size = 'economy'
  3726  										OR i_size = 'small'
  3727  									)
  3728  							)
  3729  							OR (
  3730  									i_category = 'Women'
  3731  									AND (
  3732  											i_color = 'navy'
  3733  											OR i_color
  3734  												= 'slate'
  3735  										)
  3736  									AND (
  3737  											i_units
  3738  											= 'Gross'
  3739  											OR i_units
  3740  												= 'Bunch'
  3741  										)
  3742  									AND (
  3743  											i_size
  3744  											= 'extra large'
  3745  											OR i_size
  3746  												= 'petite'
  3747  										)
  3748  								)
  3749  							OR (
  3750  									i_category = 'Men'
  3751  									AND (
  3752  											i_color
  3753  											= 'powder'
  3754  											OR i_color
  3755  												= 'sky'
  3756  										)
  3757  									AND (
  3758  											i_units
  3759  											= 'Dozen'
  3760  											OR i_units
  3761  												= 'Lb'
  3762  										)
  3763  									AND (
  3764  											i_size = 'N/A'
  3765  											OR i_size
  3766  												= 'large'
  3767  										)
  3768  								)
  3769  							OR (
  3770  									i_category = 'Men'
  3771  									AND (
  3772  											i_color
  3773  											= 'maroon'
  3774  											OR i_color
  3775  												= 'smoke'
  3776  										)
  3777  									AND (
  3778  											i_units
  3779  											= 'Ounce'
  3780  											OR i_units
  3781  												= 'Case'
  3782  										)
  3783  									AND (
  3784  											i_size
  3785  											= 'economy'
  3786  											OR i_size
  3787  												= 'small'
  3788  										)
  3789  								)
  3790  						)
  3791  				)
  3792  				OR (
  3793  						i_manufact = i1.i_manufact
  3794  						AND (
  3795  								(
  3796  									i_category = 'Women'
  3797  									AND (
  3798  											i_color = 'dark'
  3799  											OR i_color
  3800  												= 'aquamarine'
  3801  										)
  3802  									AND (
  3803  											i_units = 'Ton'
  3804  											OR i_units
  3805  												= 'Tbl'
  3806  										)
  3807  									AND (
  3808  											i_size
  3809  											= 'economy'
  3810  											OR i_size
  3811  												= 'small'
  3812  										)
  3813  								)
  3814  								OR (
  3815  										i_category = 'Women'
  3816  										AND (
  3817  												i_color
  3818  												= 'frosted'
  3819  												OR i_color
  3820  													= 'plum'
  3821  											)
  3822  										AND (
  3823  												i_units
  3824  												= 'Dram'
  3825  												OR i_units
  3826  													= 'Box'
  3827  											)
  3828  										AND (
  3829  												i_size
  3830  												= 'extra large'
  3831  												OR i_size
  3832  													= 'petite'
  3833  											)
  3834  									)
  3835  								OR (
  3836  										i_category = 'Men'
  3837  										AND (
  3838  												i_color
  3839  												= 'papaya'
  3840  												OR i_color
  3841  													= 'peach'
  3842  											)
  3843  										AND (
  3844  												i_units
  3845  												= 'Bundle'
  3846  												OR i_units
  3847  													= 'Carton'
  3848  											)
  3849  										AND (
  3850  												i_size
  3851  												= 'N/A'
  3852  												OR i_size
  3853  													= 'large'
  3854  											)
  3855  									)
  3856  								OR (
  3857  										i_category = 'Men'
  3858  										AND (
  3859  												i_color
  3860  												= 'firebrick'
  3861  												OR i_color
  3862  													= 'sienna'
  3863  											)
  3864  										AND (
  3865  												i_units
  3866  												= 'Cup'
  3867  												OR i_units
  3868  													= 'Each'
  3869  											)
  3870  										AND (
  3871  												i_size
  3872  												= 'economy'
  3873  												OR i_size
  3874  													= 'small'
  3875  											)
  3876  									)
  3877  							)
  3878  					)
  3879  		)
  3880  		> 0
  3881  ORDER BY
  3882  	i_product_name
  3883  LIMIT
  3884  	100;
  3885  `
  3886  
  3887  	query42 = `
  3888  SELECT
  3889  	dt.d_year,
  3890  	item.i_category_id,
  3891  	item.i_category,
  3892  	sum(ss_ext_sales_price)
  3893  FROM
  3894  	date_dim AS dt, store_sales, item
  3895  WHERE
  3896  	dt.d_date_sk = store_sales.ss_sold_date_sk
  3897  	AND store_sales.ss_item_sk = item.i_item_sk
  3898  	AND item.i_manager_id = 1
  3899  	AND dt.d_moy = 11
  3900  	AND dt.d_year = 1998
  3901  GROUP BY
  3902  	dt.d_year, item.i_category_id, item.i_category
  3903  ORDER BY
  3904  	sum(ss_ext_sales_price) DESC,
  3905  	dt.d_year,
  3906  	item.i_category_id,
  3907  	item.i_category
  3908  LIMIT
  3909  	100;
  3910  `
  3911  
  3912  	query43 = `
  3913  SELECT
  3914  	s_store_name,
  3915  	s_store_id,
  3916  	sum(
  3917  		CASE
  3918  		WHEN (d_day_name = 'Sunday') THEN ss_sales_price
  3919  		ELSE NULL
  3920  		END
  3921  	)
  3922  		AS sun_sales,
  3923  	sum(
  3924  		CASE
  3925  		WHEN (d_day_name = 'Monday') THEN ss_sales_price
  3926  		ELSE NULL
  3927  		END
  3928  	)
  3929  		AS mon_sales,
  3930  	sum(
  3931  		CASE
  3932  		WHEN (d_day_name = 'Tuesday') THEN ss_sales_price
  3933  		ELSE NULL
  3934  		END
  3935  	)
  3936  		AS tue_sales,
  3937  	sum(
  3938  		CASE
  3939  		WHEN (d_day_name = 'Wednesday') THEN ss_sales_price
  3940  		ELSE NULL
  3941  		END
  3942  	)
  3943  		AS wed_sales,
  3944  	sum(
  3945  		CASE
  3946  		WHEN (d_day_name = 'Thursday') THEN ss_sales_price
  3947  		ELSE NULL
  3948  		END
  3949  	)
  3950  		AS thu_sales,
  3951  	sum(
  3952  		CASE
  3953  		WHEN (d_day_name = 'Friday') THEN ss_sales_price
  3954  		ELSE NULL
  3955  		END
  3956  	)
  3957  		AS fri_sales,
  3958  	sum(
  3959  		CASE
  3960  		WHEN (d_day_name = 'Saturday') THEN ss_sales_price
  3961  		ELSE NULL
  3962  		END
  3963  	)
  3964  		AS sat_sales
  3965  FROM
  3966  	date_dim, store_sales, store
  3967  WHERE
  3968  	d_date_sk = ss_sold_date_sk
  3969  	AND s_store_sk = ss_store_sk
  3970  	AND s_gmt_offset = -5
  3971  	AND d_year = 2000
  3972  GROUP BY
  3973  	s_store_name, s_store_id
  3974  ORDER BY
  3975  	s_store_name,
  3976  	s_store_id,
  3977  	sun_sales,
  3978  	mon_sales,
  3979  	tue_sales,
  3980  	wed_sales,
  3981  	thu_sales,
  3982  	fri_sales,
  3983  	sat_sales
  3984  LIMIT
  3985  	100;
  3986  `
  3987  
  3988  	query44 = `
  3989  SELECT
  3990  	asceding.rnk,
  3991  	i1.i_product_name AS best_performing,
  3992  	i2.i_product_name AS worst_performing
  3993  FROM
  3994  	(
  3995  		SELECT
  3996  			*
  3997  		FROM
  3998  			(
  3999  				SELECT
  4000  					item_sk,
  4001  					rank() OVER (ORDER BY rank_col ASC)
  4002  						AS rnk
  4003  				FROM
  4004  					(
  4005  						SELECT
  4006  							ss_item_sk AS item_sk,
  4007  							avg(ss_net_profit) AS rank_col
  4008  						FROM
  4009  							store_sales AS ss1
  4010  						WHERE
  4011  							ss_store_sk = 4
  4012  						GROUP BY
  4013  							ss_item_sk
  4014  						HAVING
  4015  							avg(ss_net_profit)
  4016  							> 0.9
  4017  								* (
  4018  										SELECT
  4019  											avg(
  4020  												ss_net_profit
  4021  											)
  4022  												AS rank_col
  4023  										FROM
  4024  											store_sales
  4025  										WHERE
  4026  											ss_store_sk = 4
  4027  											AND ss_hdemo_sk
  4028  												IS NULL
  4029  										GROUP BY
  4030  											ss_store_sk
  4031  									)
  4032  					)
  4033  						AS v1
  4034  			)
  4035  				AS v11
  4036  		WHERE
  4037  			rnk < 11
  4038  	)
  4039  		AS asceding,
  4040  	(
  4041  		SELECT
  4042  			*
  4043  		FROM
  4044  			(
  4045  				SELECT
  4046  					item_sk,
  4047  					rank() OVER (ORDER BY rank_col DESC)
  4048  						AS rnk
  4049  				FROM
  4050  					(
  4051  						SELECT
  4052  							ss_item_sk AS item_sk,
  4053  							avg(ss_net_profit) AS rank_col
  4054  						FROM
  4055  							store_sales AS ss1
  4056  						WHERE
  4057  							ss_store_sk = 4
  4058  						GROUP BY
  4059  							ss_item_sk
  4060  						HAVING
  4061  							avg(ss_net_profit)
  4062  							> 0.9
  4063  								* (
  4064  										SELECT
  4065  											avg(
  4066  												ss_net_profit
  4067  											)
  4068  												AS rank_col
  4069  										FROM
  4070  											store_sales
  4071  										WHERE
  4072  											ss_store_sk = 4
  4073  											AND ss_hdemo_sk
  4074  												IS NULL
  4075  										GROUP BY
  4076  											ss_store_sk
  4077  									)
  4078  					)
  4079  						AS v2
  4080  			)
  4081  				AS v21
  4082  		WHERE
  4083  			rnk < 11
  4084  	)
  4085  		AS descending,
  4086  	item AS i1,
  4087  	item AS i2
  4088  WHERE
  4089  	asceding.rnk = descending.rnk
  4090  	AND i1.i_item_sk = asceding.item_sk
  4091  	AND i2.i_item_sk = descending.item_sk
  4092  ORDER BY
  4093  	asceding.rnk
  4094  LIMIT
  4095  	100;
  4096  `
  4097  
  4098  	query45 = `
  4099  SELECT
  4100  	ca_zip, ca_city, sum(ws_sales_price)
  4101  FROM
  4102  	web_sales, customer, customer_address, date_dim, item
  4103  WHERE
  4104  	ws_bill_customer_sk = c_customer_sk
  4105  	AND c_current_addr_sk = ca_address_sk
  4106  	AND ws_item_sk = i_item_sk
  4107  	AND (
  4108  			substr(ca_zip, 1, 5)
  4109  			IN (
  4110  					'85669',
  4111  					'86197',
  4112  					'88274',
  4113  					'83405',
  4114  					'86475',
  4115  					'85392',
  4116  					'85460',
  4117  					'80348',
  4118  					'81792'
  4119  				)
  4120  			OR i_item_id
  4121  				IN (
  4122  						SELECT
  4123  							i_item_id
  4124  						FROM
  4125  							item
  4126  						WHERE
  4127  							i_item_sk
  4128  							IN (
  4129  									2,
  4130  									3,
  4131  									5,
  4132  									7,
  4133  									11,
  4134  									13,
  4135  									17,
  4136  									19,
  4137  									23,
  4138  									29
  4139  								)
  4140  					)
  4141  		)
  4142  	AND ws_sold_date_sk = d_date_sk
  4143  	AND d_qoy = 1
  4144  	AND d_year = 2000
  4145  GROUP BY
  4146  	ca_zip, ca_city
  4147  ORDER BY
  4148  	ca_zip, ca_city
  4149  LIMIT
  4150  	100;
  4151  `
  4152  
  4153  	query46 = `
  4154  SELECT
  4155  	c_last_name,
  4156  	c_first_name,
  4157  	ca_city,
  4158  	bought_city,
  4159  	ss_ticket_number,
  4160  	amt,
  4161  	profit
  4162  FROM
  4163  	(
  4164  		SELECT
  4165  			ss_ticket_number,
  4166  			ss_customer_sk,
  4167  			ca_city AS bought_city,
  4168  			sum(ss_coupon_amt) AS amt,
  4169  			sum(ss_net_profit) AS profit
  4170  		FROM
  4171  			store_sales,
  4172  			date_dim,
  4173  			store,
  4174  			household_demographics,
  4175  			customer_address
  4176  		WHERE
  4177  			store_sales.ss_sold_date_sk = date_dim.d_date_sk
  4178  			AND store_sales.ss_store_sk = store.s_store_sk
  4179  			AND store_sales.ss_hdemo_sk
  4180  				= household_demographics.hd_demo_sk
  4181  			AND store_sales.ss_addr_sk
  4182  				= customer_address.ca_address_sk
  4183  			AND (
  4184  					household_demographics.hd_dep_count = 8
  4185  					OR household_demographics.hd_vehicle_count
  4186  						= 0
  4187  				)
  4188  			AND date_dim.d_dow IN (6, 0)
  4189  			AND date_dim.d_year
  4190  				IN (2000, 2000 + 1, 2000 + 2)
  4191  			AND store.s_city
  4192  				IN (
  4193  						'Midway',
  4194  						'Fairview',
  4195  						'Fairview',
  4196  						'Fairview',
  4197  						'Fairview'
  4198  					)
  4199  		GROUP BY
  4200  			ss_ticket_number,
  4201  			ss_customer_sk,
  4202  			ss_addr_sk,
  4203  			ca_city
  4204  	)
  4205  		AS dn,
  4206  	customer,
  4207  	customer_address AS current_addr
  4208  WHERE
  4209  	ss_customer_sk = c_customer_sk
  4210  	AND customer.c_current_addr_sk
  4211  		= current_addr.ca_address_sk
  4212  	AND current_addr.ca_city != bought_city
  4213  ORDER BY
  4214  	c_last_name,
  4215  	c_first_name,
  4216  	ca_city,
  4217  	bought_city,
  4218  	ss_ticket_number
  4219  LIMIT
  4220  	100;
  4221  `
  4222  
  4223  	query47 = `
  4224  WITH
  4225  	v1
  4226  		AS (
  4227  			SELECT
  4228  				i_category,
  4229  				i_brand,
  4230  				s_store_name,
  4231  				s_company_name,
  4232  				d_year,
  4233  				d_moy,
  4234  				sum(ss_sales_price) AS sum_sales,
  4235  				avg(sum(ss_sales_price)) OVER (
  4236  					PARTITION BY
  4237  						i_category,
  4238  						i_brand,
  4239  						s_store_name,
  4240  						s_company_name,
  4241  						d_year
  4242  				)
  4243  					AS avg_monthly_sales,
  4244  				rank() OVER (
  4245  					PARTITION BY
  4246  						i_category,
  4247  						i_brand,
  4248  						s_store_name,
  4249  						s_company_name
  4250  					ORDER BY
  4251  						d_year, d_moy
  4252  				)
  4253  					AS rn
  4254  			FROM
  4255  				item, store_sales, date_dim, store
  4256  			WHERE
  4257  				ss_item_sk = i_item_sk
  4258  				AND ss_sold_date_sk = d_date_sk
  4259  				AND ss_store_sk = s_store_sk
  4260  				AND (
  4261  						d_year = 2000
  4262  						OR (
  4263  								d_year = 2000 - 1
  4264  								AND d_moy = 12
  4265  							)
  4266  						OR (d_year = 2000 + 1 AND d_moy = 1)
  4267  					)
  4268  			GROUP BY
  4269  				i_category,
  4270  				i_brand,
  4271  				s_store_name,
  4272  				s_company_name,
  4273  				d_year,
  4274  				d_moy
  4275  		),
  4276  	v2
  4277  		AS (
  4278  			SELECT
  4279  				v1.s_store_name,
  4280  				v1.s_company_name,
  4281  				v1.d_year,
  4282  				v1.avg_monthly_sales,
  4283  				v1.sum_sales,
  4284  				v1_lag.sum_sales AS psum,
  4285  				v1_lead.sum_sales AS nsum
  4286  			FROM
  4287  				v1, v1 AS v1_lag, v1 AS v1_lead
  4288  			WHERE
  4289  				v1.i_category = v1_lag.i_category
  4290  				AND v1.i_category = v1_lead.i_category
  4291  				AND v1.i_brand = v1_lag.i_brand
  4292  				AND v1.i_brand = v1_lead.i_brand
  4293  				AND v1.s_store_name = v1_lag.s_store_name
  4294  				AND v1.s_store_name = v1_lead.s_store_name
  4295  				AND v1.s_company_name
  4296  					= v1_lag.s_company_name
  4297  				AND v1.s_company_name
  4298  					= v1_lead.s_company_name
  4299  				AND v1.rn = v1_lag.rn + 1
  4300  				AND v1.rn = v1_lead.rn - 1
  4301  		)
  4302  SELECT
  4303  	*
  4304  FROM
  4305  	v2
  4306  WHERE
  4307  	d_year = 2000
  4308  	AND avg_monthly_sales > 0
  4309  	AND CASE
  4310  		WHEN avg_monthly_sales > 0
  4311  		THEN abs(sum_sales - avg_monthly_sales)
  4312  		/ avg_monthly_sales
  4313  		ELSE NULL
  4314  		END
  4315  		> 0.1
  4316  ORDER BY
  4317  	sum_sales - avg_monthly_sales, nsum
  4318  LIMIT
  4319  	100;
  4320  `
  4321  
  4322  	query48 = `
  4323  SELECT
  4324  	sum(ss_quantity)
  4325  FROM
  4326  	store_sales,
  4327  	store,
  4328  	customer_demographics,
  4329  	customer_address,
  4330  	date_dim
  4331  WHERE
  4332  	s_store_sk = ss_store_sk
  4333  	AND ss_sold_date_sk = d_date_sk
  4334  	AND d_year = 2001
  4335  	AND (
  4336  			(
  4337  				cd_demo_sk = ss_cdemo_sk
  4338  				AND cd_marital_status = 'S'
  4339  				AND cd_education_status = 'Secondary'
  4340  				AND ss_sales_price BETWEEN 100.00 AND 150.00
  4341  			)
  4342  			OR (
  4343  					cd_demo_sk = ss_cdemo_sk
  4344  					AND cd_marital_status = 'M'
  4345  					AND cd_education_status = '2 yr Degree'
  4346  					AND ss_sales_price BETWEEN 50.00 AND 100.00
  4347  				)
  4348  			OR (
  4349  					cd_demo_sk = ss_cdemo_sk
  4350  					AND cd_marital_status = 'D'
  4351  					AND cd_education_status
  4352  						= 'Advanced Degree'
  4353  					AND ss_sales_price BETWEEN 150.00 AND 200.00
  4354  				)
  4355  		)
  4356  	AND (
  4357  			(
  4358  				ss_addr_sk = ca_address_sk
  4359  				AND ca_country = 'United States'
  4360  				AND ca_state IN ('ND', 'NY', 'SD')
  4361  				AND ss_net_profit BETWEEN 0 AND 2000
  4362  			)
  4363  			OR (
  4364  					ss_addr_sk = ca_address_sk
  4365  					AND ca_country = 'United States'
  4366  					AND ca_state IN ('MD', 'GA', 'KS')
  4367  					AND ss_net_profit BETWEEN 150 AND 3000
  4368  				)
  4369  			OR (
  4370  					ss_addr_sk = ca_address_sk
  4371  					AND ca_country = 'United States'
  4372  					AND ca_state IN ('CO', 'MN', 'NC')
  4373  					AND ss_net_profit BETWEEN 50 AND 25000
  4374  				)
  4375  		);
  4376  `
  4377  
  4378  	query49 = `
  4379  SELECT
  4380  	channel, item, return_ratio, return_rank, currency_rank
  4381  FROM
  4382  	(
  4383  		SELECT
  4384  			'web' AS channel,
  4385  			web.item,
  4386  			web.return_ratio,
  4387  			web.return_rank,
  4388  			web.currency_rank
  4389  		FROM
  4390  			(
  4391  				SELECT
  4392  					item,
  4393  					return_ratio,
  4394  					currency_ratio,
  4395  					rank() OVER (ORDER BY return_ratio)
  4396  						AS return_rank,
  4397  					rank() OVER (ORDER BY currency_ratio)
  4398  						AS currency_rank
  4399  				FROM
  4400  					(
  4401  						SELECT
  4402  							ws.ws_item_sk AS item,
  4403  							CAST(
  4404  								sum(
  4405  									COALESCE(
  4406  										wr.wr_return_quantity,
  4407  										0
  4408  									)
  4409  								)
  4410  									AS DECIMAL(15,4)
  4411  							)
  4412  							/ CAST(
  4413  									sum(
  4414  										COALESCE(
  4415  											ws.ws_quantity,
  4416  											0
  4417  										)
  4418  									)
  4419  										AS DECIMAL(15,4)
  4420  								)
  4421  								AS return_ratio,
  4422  							CAST(
  4423  								sum(
  4424  									COALESCE(
  4425  										wr.wr_return_amt,
  4426  										0
  4427  									)
  4428  								)
  4429  									AS DECIMAL(15,4)
  4430  							)
  4431  							/ CAST(
  4432  									sum(
  4433  										COALESCE(
  4434  											ws.ws_net_paid,
  4435  											0
  4436  										)
  4437  									)
  4438  										AS DECIMAL(15,4)
  4439  								)
  4440  								AS currency_ratio
  4441  						FROM
  4442  							web_sales AS ws
  4443  							LEFT JOIN web_returns AS wr ON
  4444  									ws.ws_order_number
  4445  									= wr.wr_order_number
  4446  									AND ws.ws_item_sk
  4447  										= wr.wr_item_sk,
  4448  							date_dim
  4449  						WHERE
  4450  							wr.wr_return_amt > 10000
  4451  							AND ws.ws_net_profit > 1
  4452  							AND ws.ws_net_paid > 0
  4453  							AND ws.ws_quantity > 0
  4454  							AND ws_sold_date_sk = d_date_sk
  4455  							AND d_year = 1998
  4456  							AND d_moy = 11
  4457  						GROUP BY
  4458  							ws.ws_item_sk
  4459  					)
  4460  						AS in_web
  4461  			)
  4462  				AS web
  4463  		WHERE
  4464  			web.return_rank <= 10 OR web.currency_rank <= 10
  4465  		UNION
  4466  			SELECT
  4467  				'catalog' AS channel,
  4468  				catalog.item,
  4469  				catalog.return_ratio,
  4470  				catalog.return_rank,
  4471  				catalog.currency_rank
  4472  			FROM
  4473  				(
  4474  					SELECT
  4475  						item,
  4476  						return_ratio,
  4477  						currency_ratio,
  4478  						rank() OVER (ORDER BY return_ratio)
  4479  							AS return_rank,
  4480  						rank() OVER (
  4481  							ORDER BY currency_ratio
  4482  						)
  4483  							AS currency_rank
  4484  					FROM
  4485  						(
  4486  							SELECT
  4487  								cs.cs_item_sk AS item,
  4488  								CAST(
  4489  									sum(
  4490  										COALESCE(
  4491  											cr.cr_return_quantity,
  4492  											0
  4493  										)
  4494  									)
  4495  										AS DECIMAL(15,4)
  4496  								)
  4497  								/ CAST(
  4498  										sum(
  4499  											COALESCE(
  4500  												cs.cs_quantity,
  4501  												0
  4502  											)
  4503  										)
  4504  											AS DECIMAL(15,4)
  4505  									)
  4506  									AS return_ratio,
  4507  								CAST(
  4508  									sum(
  4509  										COALESCE(
  4510  											cr.cr_return_amount,
  4511  											0
  4512  										)
  4513  									)
  4514  										AS DECIMAL(15,4)
  4515  								)
  4516  								/ CAST(
  4517  										sum(
  4518  											COALESCE(
  4519  												cs.cs_net_paid,
  4520  												0
  4521  											)
  4522  										)
  4523  											AS DECIMAL(15,4)
  4524  									)
  4525  									AS currency_ratio
  4526  							FROM
  4527  								catalog_sales AS cs
  4528  								LEFT JOIN catalog_returns
  4529  										AS cr ON
  4530  										cs.cs_order_number
  4531  										= cr.cr_order_number
  4532  										AND cs.cs_item_sk
  4533  											= cr.cr_item_sk,
  4534  								date_dim
  4535  							WHERE
  4536  								cr.cr_return_amount > 10000
  4537  								AND cs.cs_net_profit > 1
  4538  								AND cs.cs_net_paid > 0
  4539  								AND cs.cs_quantity > 0
  4540  								AND cs_sold_date_sk
  4541  									= d_date_sk
  4542  								AND d_year = 1998
  4543  								AND d_moy = 11
  4544  							GROUP BY
  4545  								cs.cs_item_sk
  4546  						)
  4547  							AS in_cat
  4548  				)
  4549  					AS catalog
  4550  			WHERE
  4551  				catalog.return_rank <= 10
  4552  				OR catalog.currency_rank <= 10
  4553  		UNION
  4554  			SELECT
  4555  				'store' AS channel,
  4556  				store.item,
  4557  				store.return_ratio,
  4558  				store.return_rank,
  4559  				store.currency_rank
  4560  			FROM
  4561  				(
  4562  					SELECT
  4563  						item,
  4564  						return_ratio,
  4565  						currency_ratio,
  4566  						rank() OVER (ORDER BY return_ratio)
  4567  							AS return_rank,
  4568  						rank() OVER (
  4569  							ORDER BY currency_ratio
  4570  						)
  4571  							AS currency_rank
  4572  					FROM
  4573  						(
  4574  							SELECT
  4575  								sts.ss_item_sk AS item,
  4576  								CAST(
  4577  									sum(
  4578  										COALESCE(
  4579  											sr.sr_return_quantity,
  4580  											0
  4581  										)
  4582  									)
  4583  										AS DECIMAL(15,4)
  4584  								)
  4585  								/ CAST(
  4586  										sum(
  4587  											COALESCE(
  4588  												sts.ss_quantity,
  4589  												0
  4590  											)
  4591  										)
  4592  											AS DECIMAL(15,4)
  4593  									)
  4594  									AS return_ratio,
  4595  								CAST(
  4596  									sum(
  4597  										COALESCE(
  4598  											sr.sr_return_amt,
  4599  											0
  4600  										)
  4601  									)
  4602  										AS DECIMAL(15,4)
  4603  								)
  4604  								/ CAST(
  4605  										sum(
  4606  											COALESCE(
  4607  												sts.ss_net_paid,
  4608  												0
  4609  											)
  4610  										)
  4611  											AS DECIMAL(15,4)
  4612  									)
  4613  									AS currency_ratio
  4614  							FROM
  4615  								store_sales AS sts
  4616  								LEFT JOIN store_returns
  4617  										AS sr ON
  4618  										sts.ss_ticket_number
  4619  										= sr.sr_ticket_number
  4620  										AND sts.ss_item_sk
  4621  											= sr.sr_item_sk,
  4622  								date_dim
  4623  							WHERE
  4624  								sr.sr_return_amt > 10000
  4625  								AND sts.ss_net_profit > 1
  4626  								AND sts.ss_net_paid > 0
  4627  								AND sts.ss_quantity > 0
  4628  								AND ss_sold_date_sk
  4629  									= d_date_sk
  4630  								AND d_year = 1998
  4631  								AND d_moy = 11
  4632  							GROUP BY
  4633  								sts.ss_item_sk
  4634  						)
  4635  							AS in_store
  4636  				)
  4637  					AS store
  4638  			WHERE
  4639  				store.return_rank <= 10
  4640  				OR store.currency_rank <= 10
  4641  	)
  4642  ORDER BY
  4643  	1, 4, 5, 2
  4644  LIMIT
  4645  	100;
  4646  `
  4647  
  4648  	query50 = `
  4649  SELECT
  4650  	s_store_name,
  4651  	s_company_id,
  4652  	s_street_number,
  4653  	s_street_name,
  4654  	s_street_type,
  4655  	s_suite_number,
  4656  	s_city,
  4657  	s_county,
  4658  	s_state,
  4659  	s_zip,
  4660  	sum(
  4661  		CASE
  4662  		WHEN (sr_returned_date_sk - ss_sold_date_sk <= 30)
  4663  		THEN 1
  4664  		ELSE 0
  4665  		END
  4666  	)
  4667  		AS "30 days",
  4668  	sum(
  4669  		CASE
  4670  		WHEN sr_returned_date_sk - ss_sold_date_sk > 30
  4671  		AND sr_returned_date_sk - ss_sold_date_sk <= 60
  4672  		THEN 1
  4673  		ELSE 0
  4674  		END
  4675  	)
  4676  		AS "31-60 days",
  4677  	sum(
  4678  		CASE
  4679  		WHEN sr_returned_date_sk - ss_sold_date_sk > 60
  4680  		AND sr_returned_date_sk - ss_sold_date_sk <= 90
  4681  		THEN 1
  4682  		ELSE 0
  4683  		END
  4684  	)
  4685  		AS "61-90 days",
  4686  	sum(
  4687  		CASE
  4688  		WHEN sr_returned_date_sk - ss_sold_date_sk > 90
  4689  		AND sr_returned_date_sk - ss_sold_date_sk <= 120
  4690  		THEN 1
  4691  		ELSE 0
  4692  		END
  4693  	)
  4694  		AS "91-120 days",
  4695  	sum(
  4696  		CASE
  4697  		WHEN (sr_returned_date_sk - ss_sold_date_sk > 120)
  4698  		THEN 1
  4699  		ELSE 0
  4700  		END
  4701  	)
  4702  		AS ">120 days"
  4703  FROM
  4704  	store_sales,
  4705  	store_returns,
  4706  	store,
  4707  	date_dim AS d1,
  4708  	date_dim AS d2
  4709  WHERE
  4710  	d2.d_year = 2001
  4711  	AND d2.d_moy = 8
  4712  	AND ss_ticket_number = sr_ticket_number
  4713  	AND ss_item_sk = sr_item_sk
  4714  	AND ss_sold_date_sk = d1.d_date_sk
  4715  	AND sr_returned_date_sk = d2.d_date_sk
  4716  	AND ss_customer_sk = sr_customer_sk
  4717  	AND ss_store_sk = s_store_sk
  4718  GROUP BY
  4719  	s_store_name,
  4720  	s_company_id,
  4721  	s_street_number,
  4722  	s_street_name,
  4723  	s_street_type,
  4724  	s_suite_number,
  4725  	s_city,
  4726  	s_county,
  4727  	s_state,
  4728  	s_zip
  4729  ORDER BY
  4730  	s_store_name,
  4731  	s_company_id,
  4732  	s_street_number,
  4733  	s_street_name,
  4734  	s_street_type,
  4735  	s_suite_number,
  4736  	s_city,
  4737  	s_county,
  4738  	s_state,
  4739  	s_zip
  4740  LIMIT
  4741  	100;
  4742  `
  4743  
  4744  	query51 = `
  4745  WITH
  4746  	web_v1
  4747  		AS (
  4748  			SELECT
  4749  				ws_item_sk AS item_sk,
  4750  				d_date,
  4751  				sum(sum(ws_sales_price)) OVER (
  4752  					PARTITION BY
  4753  						ws_item_sk
  4754  					ORDER BY
  4755  						d_date
  4756  					ROWS
  4757  						BETWEEN
  4758  							UNBOUNDED PRECEDING
  4759  						AND
  4760  							CURRENT ROW
  4761  				)
  4762  					AS cume_sales
  4763  			FROM
  4764  				web_sales, date_dim
  4765  			WHERE
  4766  				ws_sold_date_sk = d_date_sk
  4767  				AND d_month_seq BETWEEN 1212 AND (1212 + 11)
  4768  				AND ws_item_sk IS NOT NULL
  4769  			GROUP BY
  4770  				ws_item_sk, d_date
  4771  		),
  4772  	store_v1
  4773  		AS (
  4774  			SELECT
  4775  				ss_item_sk AS item_sk,
  4776  				d_date,
  4777  				sum(sum(ss_sales_price)) OVER (
  4778  					PARTITION BY
  4779  						ss_item_sk
  4780  					ORDER BY
  4781  						d_date
  4782  					ROWS
  4783  						BETWEEN
  4784  							UNBOUNDED PRECEDING
  4785  						AND
  4786  							CURRENT ROW
  4787  				)
  4788  					AS cume_sales
  4789  			FROM
  4790  				store_sales, date_dim
  4791  			WHERE
  4792  				ss_sold_date_sk = d_date_sk
  4793  				AND d_month_seq BETWEEN 1212 AND (1212 + 11)
  4794  				AND ss_item_sk IS NOT NULL
  4795  			GROUP BY
  4796  				ss_item_sk, d_date
  4797  		)
  4798  SELECT
  4799  	*
  4800  FROM
  4801  	(
  4802  		SELECT
  4803  			item_sk,
  4804  			d_date,
  4805  			web_sales,
  4806  			store_sales,
  4807  			max(web_sales) OVER (
  4808  				PARTITION BY
  4809  					item_sk
  4810  				ORDER BY
  4811  					d_date
  4812  				ROWS
  4813  					BETWEEN
  4814  						UNBOUNDED PRECEDING
  4815  					AND
  4816  						CURRENT ROW
  4817  			)
  4818  				AS web_cumulative,
  4819  			max(store_sales) OVER (
  4820  				PARTITION BY
  4821  					item_sk
  4822  				ORDER BY
  4823  					d_date
  4824  				ROWS
  4825  					BETWEEN
  4826  						UNBOUNDED PRECEDING
  4827  					AND
  4828  						CURRENT ROW
  4829  			)
  4830  				AS store_cumulative
  4831  		FROM
  4832  			(
  4833  				SELECT
  4834  					CASE
  4835  					WHEN web.item_sk IS NOT NULL
  4836  					THEN web.item_sk
  4837  					ELSE store.item_sk
  4838  					END
  4839  						AS item_sk,
  4840  					CASE
  4841  					WHEN web.d_date IS NOT NULL
  4842  					THEN web.d_date
  4843  					ELSE store.d_date
  4844  					END
  4845  						AS d_date,
  4846  					web.cume_sales AS web_sales,
  4847  					store.cume_sales AS store_sales
  4848  				FROM
  4849  					web_v1 AS web
  4850  					FULL JOIN store_v1 AS store ON
  4851  							web.item_sk = store.item_sk
  4852  							AND web.d_date = store.d_date
  4853  			)
  4854  				AS x
  4855  	)
  4856  		AS y
  4857  WHERE
  4858  	web_cumulative > store_cumulative
  4859  ORDER BY
  4860  	item_sk, d_date
  4861  LIMIT
  4862  	100;
  4863  `
  4864  
  4865  	query52 = `
  4866  SELECT
  4867  	dt.d_year,
  4868  	item.i_brand_id AS brand_id,
  4869  	item.i_brand AS brand,
  4870  	sum(ss_ext_sales_price) AS ext_price
  4871  FROM
  4872  	date_dim AS dt, store_sales, item
  4873  WHERE
  4874  	dt.d_date_sk = store_sales.ss_sold_date_sk
  4875  	AND store_sales.ss_item_sk = item.i_item_sk
  4876  	AND item.i_manager_id = 1
  4877  	AND dt.d_moy = 12
  4878  	AND dt.d_year = 2000
  4879  GROUP BY
  4880  	dt.d_year, item.i_brand, item.i_brand_id
  4881  ORDER BY
  4882  	dt.d_year, ext_price DESC, brand_id
  4883  LIMIT
  4884  	100;
  4885  `
  4886  
  4887  	query53 = `
  4888  SELECT
  4889  	*
  4890  FROM
  4891  	(
  4892  		SELECT
  4893  			i_manufact_id,
  4894  			sum(ss_sales_price) AS sum_sales,
  4895  			avg(sum(ss_sales_price)) OVER (
  4896  				PARTITION BY i_manufact_id
  4897  			)
  4898  				AS avg_quarterly_sales
  4899  		FROM
  4900  			item, store_sales, date_dim, store
  4901  		WHERE
  4902  			ss_item_sk = i_item_sk
  4903  			AND ss_sold_date_sk = d_date_sk
  4904  			AND ss_store_sk = s_store_sk
  4905  			AND d_month_seq
  4906  				IN (
  4907  						1186,
  4908  						1186 + 1,
  4909  						1186 + 2,
  4910  						1186 + 3,
  4911  						1186 + 4,
  4912  						1186 + 5,
  4913  						1186 + 6,
  4914  						1186 + 7,
  4915  						1186 + 8,
  4916  						1186 + 9,
  4917  						1186 + 10,
  4918  						1186 + 11
  4919  					)
  4920  			AND (
  4921  					(
  4922  						i_category
  4923  						IN (
  4924  								'Books',
  4925  								'Children',
  4926  								'Electronics'
  4927  							)
  4928  						AND i_class
  4929  							IN (
  4930  									'personal',
  4931  									'portable',
  4932  									'reference',
  4933  									'self-help'
  4934  								)
  4935  						AND i_brand
  4936  							IN (
  4937  									'scholaramalgamalg #14',
  4938  									'scholaramalgamalg #7',
  4939  									'exportiunivamalg #9',
  4940  									'scholaramalgamalg #9'
  4941  								)
  4942  					)
  4943  					OR (
  4944  							i_category
  4945  							IN ('Women', 'Music', 'Men')
  4946  							AND i_class
  4947  								IN (
  4948  										'accessories',
  4949  										'classical',
  4950  										'fragrances',
  4951  										'pants'
  4952  									)
  4953  							AND i_brand
  4954  								IN (
  4955  										'amalgimporto #1',
  4956  										'edu packscholar #1',
  4957  										'exportiimporto #1',
  4958  										'importoamalg #1'
  4959  									)
  4960  						)
  4961  				)
  4962  		GROUP BY
  4963  			i_manufact_id, d_qoy
  4964  	)
  4965  		AS tmp1
  4966  WHERE
  4967  	CASE
  4968  	WHEN avg_quarterly_sales > 0
  4969  	THEN abs(sum_sales - avg_quarterly_sales)
  4970  	/ avg_quarterly_sales
  4971  	ELSE NULL
  4972  	END
  4973  	> 0.1
  4974  ORDER BY
  4975  	avg_quarterly_sales, sum_sales, i_manufact_id
  4976  LIMIT
  4977  	100;
  4978  `
  4979  
  4980  	query54 = `
  4981  WITH
  4982  	my_customers
  4983  		AS (
  4984  			SELECT
  4985  				DISTINCT c_customer_sk, c_current_addr_sk
  4986  			FROM
  4987  				(
  4988  					SELECT
  4989  						cs_sold_date_sk AS sold_date_sk,
  4990  						cs_bill_customer_sk AS customer_sk,
  4991  						cs_item_sk AS item_sk
  4992  					FROM
  4993  						catalog_sales
  4994  					UNION ALL
  4995  						SELECT
  4996  							ws_sold_date_sk AS sold_date_sk,
  4997  							ws_bill_customer_sk
  4998  								AS customer_sk,
  4999  							ws_item_sk AS item_sk
  5000  						FROM
  5001  							web_sales
  5002  				)
  5003  					AS cs_or_ws_sales,
  5004  				item,
  5005  				date_dim,
  5006  				customer
  5007  			WHERE
  5008  				sold_date_sk = d_date_sk
  5009  				AND item_sk = i_item_sk
  5010  				AND i_category = 'Music'
  5011  				AND i_class = 'country'
  5012  				AND c_customer_sk
  5013  					= cs_or_ws_sales.customer_sk
  5014  				AND d_moy = 1
  5015  				AND d_year = 1999
  5016  		),
  5017  	my_revenue
  5018  		AS (
  5019  			SELECT
  5020  				c_customer_sk,
  5021  				sum(ss_ext_sales_price) AS revenue
  5022  			FROM
  5023  				my_customers,
  5024  				store_sales,
  5025  				customer_address,
  5026  				store,
  5027  				date_dim
  5028  			WHERE
  5029  				c_current_addr_sk = ca_address_sk
  5030  				AND ca_county = s_county
  5031  				AND ca_state = s_state
  5032  				AND ss_sold_date_sk = d_date_sk
  5033  				AND c_customer_sk = ss_customer_sk
  5034  				AND d_month_seq BETWEEN (SELECT DISTINCT d_month_seq + 1 FROM date_dim WHERE (d_year = 1999) AND (d_moy = 1)) AND (SELECT DISTINCT d_month_seq + 3 FROM date_dim WHERE (d_year = 1999) AND (d_moy = 1))
  5035  			GROUP BY
  5036  				c_customer_sk
  5037  		),
  5038  	segments
  5039  		AS (
  5040  			SELECT
  5041  				CAST((revenue / 50) AS INT8) AS segment
  5042  			FROM
  5043  				my_revenue
  5044  		)
  5045  SELECT
  5046  	segment,
  5047  	count(*) AS num_customers,
  5048  	segment * 50 AS segment_base
  5049  FROM
  5050  	segments
  5051  GROUP BY
  5052  	segment
  5053  ORDER BY
  5054  	segment, num_customers
  5055  LIMIT
  5056  	100;
  5057  `
  5058  
  5059  	query55 = `
  5060  SELECT
  5061  	i_brand_id AS brand_id,
  5062  	i_brand AS brand,
  5063  	sum(ss_ext_sales_price) AS ext_price
  5064  FROM
  5065  	date_dim, store_sales, item
  5066  WHERE
  5067  	d_date_sk = ss_sold_date_sk
  5068  	AND ss_item_sk = i_item_sk
  5069  	AND i_manager_id = 52
  5070  	AND d_moy = 11
  5071  	AND d_year = 2000
  5072  GROUP BY
  5073  	i_brand, i_brand_id
  5074  ORDER BY
  5075  	ext_price DESC, i_brand_id
  5076  LIMIT
  5077  	100;
  5078  `
  5079  
  5080  	query56 = `
  5081  WITH
  5082  	ss
  5083  		AS (
  5084  			SELECT
  5085  				i_item_id,
  5086  				sum(ss_ext_sales_price) AS total_sales
  5087  			FROM
  5088  				store_sales,
  5089  				date_dim,
  5090  				customer_address,
  5091  				item
  5092  			WHERE
  5093  				i_item_id
  5094  				IN (
  5095  						SELECT
  5096  							i_item_id
  5097  						FROM
  5098  							item
  5099  						WHERE
  5100  							i_color
  5101  							IN ('powder', 'orchid', 'pink')
  5102  					)
  5103  				AND ss_item_sk = i_item_sk
  5104  				AND ss_sold_date_sk = d_date_sk
  5105  				AND d_year = 2000
  5106  				AND d_moy = 3
  5107  				AND ss_addr_sk = ca_address_sk
  5108  				AND ca_gmt_offset = -6
  5109  			GROUP BY
  5110  				i_item_id
  5111  		),
  5112  	cs
  5113  		AS (
  5114  			SELECT
  5115  				i_item_id,
  5116  				sum(cs_ext_sales_price) AS total_sales
  5117  			FROM
  5118  				catalog_sales,
  5119  				date_dim,
  5120  				customer_address,
  5121  				item
  5122  			WHERE
  5123  				i_item_id
  5124  				IN (
  5125  						SELECT
  5126  							i_item_id
  5127  						FROM
  5128  							item
  5129  						WHERE
  5130  							i_color
  5131  							IN ('powder', 'orchid', 'pink')
  5132  					)
  5133  				AND cs_item_sk = i_item_sk
  5134  				AND cs_sold_date_sk = d_date_sk
  5135  				AND d_year = 2000
  5136  				AND d_moy = 3
  5137  				AND cs_bill_addr_sk = ca_address_sk
  5138  				AND ca_gmt_offset = -6
  5139  			GROUP BY
  5140  				i_item_id
  5141  		),
  5142  	ws
  5143  		AS (
  5144  			SELECT
  5145  				i_item_id,
  5146  				sum(ws_ext_sales_price) AS total_sales
  5147  			FROM
  5148  				web_sales, date_dim, customer_address, item
  5149  			WHERE
  5150  				i_item_id
  5151  				IN (
  5152  						SELECT
  5153  							i_item_id
  5154  						FROM
  5155  							item
  5156  						WHERE
  5157  							i_color
  5158  							IN ('powder', 'orchid', 'pink')
  5159  					)
  5160  				AND ws_item_sk = i_item_sk
  5161  				AND ws_sold_date_sk = d_date_sk
  5162  				AND d_year = 2000
  5163  				AND d_moy = 3
  5164  				AND ws_bill_addr_sk = ca_address_sk
  5165  				AND ca_gmt_offset = -6
  5166  			GROUP BY
  5167  				i_item_id
  5168  		)
  5169  SELECT
  5170  	i_item_id, sum(total_sales) AS total_sales
  5171  FROM
  5172  	(
  5173  		SELECT * FROM ss UNION ALL SELECT * FROM cs
  5174  		UNION ALL SELECT * FROM ws
  5175  	)
  5176  		AS tmp1
  5177  GROUP BY
  5178  	i_item_id
  5179  ORDER BY
  5180  	total_sales, i_item_id
  5181  LIMIT
  5182  	100;
  5183  `
  5184  
  5185  	query57 = `
  5186  WITH
  5187  	v1
  5188  		AS (
  5189  			SELECT
  5190  				i_category,
  5191  				i_brand,
  5192  				cc_name,
  5193  				d_year,
  5194  				d_moy,
  5195  				sum(cs_sales_price) AS sum_sales,
  5196  				avg(sum(cs_sales_price)) OVER (
  5197  					PARTITION BY
  5198  						i_category, i_brand, cc_name, d_year
  5199  				)
  5200  					AS avg_monthly_sales,
  5201  				rank() OVER (
  5202  					PARTITION BY
  5203  						i_category, i_brand, cc_name
  5204  					ORDER BY
  5205  						d_year, d_moy
  5206  				)
  5207  					AS rn
  5208  			FROM
  5209  				item, catalog_sales, date_dim, call_center
  5210  			WHERE
  5211  				cs_item_sk = i_item_sk
  5212  				AND cs_sold_date_sk = d_date_sk
  5213  				AND cc_call_center_sk = cs_call_center_sk
  5214  				AND (
  5215  						d_year = 2001
  5216  						OR (
  5217  								d_year = 2001 - 1
  5218  								AND d_moy = 12
  5219  							)
  5220  						OR (d_year = 2001 + 1 AND d_moy = 1)
  5221  					)
  5222  			GROUP BY
  5223  				i_category, i_brand, cc_name, d_year, d_moy
  5224  		),
  5225  	v2
  5226  		AS (
  5227  			SELECT
  5228  				v1.i_category,
  5229  				v1.i_brand,
  5230  				v1.cc_name,
  5231  				v1.d_year,
  5232  				v1.avg_monthly_sales,
  5233  				v1.sum_sales,
  5234  				v1_lag.sum_sales AS psum,
  5235  				v1_lead.sum_sales AS nsum
  5236  			FROM
  5237  				v1, v1 AS v1_lag, v1 AS v1_lead
  5238  			WHERE
  5239  				v1.i_category = v1_lag.i_category
  5240  				AND v1.i_category = v1_lead.i_category
  5241  				AND v1.i_brand = v1_lag.i_brand
  5242  				AND v1.i_brand = v1_lead.i_brand
  5243  				AND v1.cc_name = v1_lag.cc_name
  5244  				AND v1.cc_name = v1_lead.cc_name
  5245  				AND v1.rn = v1_lag.rn + 1
  5246  				AND v1.rn = v1_lead.rn - 1
  5247  		)
  5248  SELECT
  5249  	*
  5250  FROM
  5251  	v2
  5252  WHERE
  5253  	d_year = 2001
  5254  	AND avg_monthly_sales > 0
  5255  	AND CASE
  5256  		WHEN avg_monthly_sales > 0
  5257  		THEN abs(sum_sales - avg_monthly_sales)
  5258  		/ avg_monthly_sales
  5259  		ELSE NULL
  5260  		END
  5261  		> 0.1
  5262  ORDER BY
  5263  	sum_sales - avg_monthly_sales, avg_monthly_sales
  5264  LIMIT
  5265  	100;
  5266  `
  5267  
  5268  	query58 = `
  5269  WITH
  5270  	ss_items
  5271  		AS (
  5272  			SELECT
  5273  				i_item_id AS item_id,
  5274  				sum(ss_ext_sales_price) AS ss_item_rev
  5275  			FROM
  5276  				store_sales, item, date_dim
  5277  			WHERE
  5278  				ss_item_sk = i_item_sk
  5279  				AND d_date
  5280  					IN (
  5281  							SELECT
  5282  								d_date
  5283  							FROM
  5284  								date_dim
  5285  							WHERE
  5286  								d_week_seq
  5287  								= (
  5288  										SELECT
  5289  											d_week_seq
  5290  										FROM
  5291  											date_dim
  5292  										WHERE
  5293  											d_date
  5294  											= '2001-06-16'
  5295  									)
  5296  						)
  5297  				AND ss_sold_date_sk = d_date_sk
  5298  			GROUP BY
  5299  				i_item_id
  5300  		),
  5301  	cs_items
  5302  		AS (
  5303  			SELECT
  5304  				i_item_id AS item_id,
  5305  				sum(cs_ext_sales_price) AS cs_item_rev
  5306  			FROM
  5307  				catalog_sales, item, date_dim
  5308  			WHERE
  5309  				cs_item_sk = i_item_sk
  5310  				AND d_date
  5311  					IN (
  5312  							SELECT
  5313  								d_date
  5314  							FROM
  5315  								date_dim
  5316  							WHERE
  5317  								d_week_seq
  5318  								= (
  5319  										SELECT
  5320  											d_week_seq
  5321  										FROM
  5322  											date_dim
  5323  										WHERE
  5324  											d_date
  5325  											= '2001-06-16'
  5326  									)
  5327  						)
  5328  				AND cs_sold_date_sk = d_date_sk
  5329  			GROUP BY
  5330  				i_item_id
  5331  		),
  5332  	ws_items
  5333  		AS (
  5334  			SELECT
  5335  				i_item_id AS item_id,
  5336  				sum(ws_ext_sales_price) AS ws_item_rev
  5337  			FROM
  5338  				web_sales, item, date_dim
  5339  			WHERE
  5340  				ws_item_sk = i_item_sk
  5341  				AND d_date
  5342  					IN (
  5343  							SELECT
  5344  								d_date
  5345  							FROM
  5346  								date_dim
  5347  							WHERE
  5348  								d_week_seq
  5349  								= (
  5350  										SELECT
  5351  											d_week_seq
  5352  										FROM
  5353  											date_dim
  5354  										WHERE
  5355  											d_date
  5356  											= '2001-06-16'
  5357  									)
  5358  						)
  5359  				AND ws_sold_date_sk = d_date_sk
  5360  			GROUP BY
  5361  				i_item_id
  5362  		)
  5363  SELECT
  5364  	ss_items.item_id,
  5365  	ss_item_rev,
  5366  	ss_item_rev
  5367  	/ ((ss_item_rev + cs_item_rev + ws_item_rev) / 3)
  5368  	* 100
  5369  		AS ss_dev,
  5370  	cs_item_rev,
  5371  	cs_item_rev
  5372  	/ ((ss_item_rev + cs_item_rev + ws_item_rev) / 3)
  5373  	* 100
  5374  		AS cs_dev,
  5375  	ws_item_rev,
  5376  	ws_item_rev
  5377  	/ ((ss_item_rev + cs_item_rev + ws_item_rev) / 3)
  5378  	* 100
  5379  		AS ws_dev,
  5380  	(ss_item_rev + cs_item_rev + ws_item_rev) / 3 AS average
  5381  FROM
  5382  	ss_items, cs_items, ws_items
  5383  WHERE
  5384  	ss_items.item_id = cs_items.item_id
  5385  	AND ss_items.item_id = ws_items.item_id
  5386  	AND ss_item_rev BETWEEN (0.9 * cs_item_rev) AND (1.1 * cs_item_rev)
  5387  	AND ss_item_rev BETWEEN (0.9 * ws_item_rev) AND (1.1 * ws_item_rev)
  5388  	AND cs_item_rev BETWEEN (0.9 * ss_item_rev) AND (1.1 * ss_item_rev)
  5389  	AND cs_item_rev BETWEEN (0.9 * ws_item_rev) AND (1.1 * ws_item_rev)
  5390  	AND ws_item_rev BETWEEN (0.9 * ss_item_rev) AND (1.1 * ss_item_rev)
  5391  	AND ws_item_rev BETWEEN (0.9 * cs_item_rev) AND (1.1 * cs_item_rev)
  5392  ORDER BY
  5393  	item_id, ss_item_rev
  5394  LIMIT
  5395  	100;
  5396  `
  5397  
  5398  	query59 = `
  5399  WITH
  5400  	wss
  5401  		AS (
  5402  			SELECT
  5403  				d_week_seq,
  5404  				ss_store_sk,
  5405  				sum(
  5406  					CASE
  5407  					WHEN (d_day_name = 'Sunday')
  5408  					THEN ss_sales_price
  5409  					ELSE NULL
  5410  					END
  5411  				)
  5412  					AS sun_sales,
  5413  				sum(
  5414  					CASE
  5415  					WHEN (d_day_name = 'Monday')
  5416  					THEN ss_sales_price
  5417  					ELSE NULL
  5418  					END
  5419  				)
  5420  					AS mon_sales,
  5421  				sum(
  5422  					CASE
  5423  					WHEN (d_day_name = 'Tuesday')
  5424  					THEN ss_sales_price
  5425  					ELSE NULL
  5426  					END
  5427  				)
  5428  					AS tue_sales,
  5429  				sum(
  5430  					CASE
  5431  					WHEN (d_day_name = 'Wednesday')
  5432  					THEN ss_sales_price
  5433  					ELSE NULL
  5434  					END
  5435  				)
  5436  					AS wed_sales,
  5437  				sum(
  5438  					CASE
  5439  					WHEN (d_day_name = 'Thursday')
  5440  					THEN ss_sales_price
  5441  					ELSE NULL
  5442  					END
  5443  				)
  5444  					AS thu_sales,
  5445  				sum(
  5446  					CASE
  5447  					WHEN (d_day_name = 'Friday')
  5448  					THEN ss_sales_price
  5449  					ELSE NULL
  5450  					END
  5451  				)
  5452  					AS fri_sales,
  5453  				sum(
  5454  					CASE
  5455  					WHEN (d_day_name = 'Saturday')
  5456  					THEN ss_sales_price
  5457  					ELSE NULL
  5458  					END
  5459  				)
  5460  					AS sat_sales
  5461  			FROM
  5462  				store_sales, date_dim
  5463  			WHERE
  5464  				d_date_sk = ss_sold_date_sk
  5465  			GROUP BY
  5466  				d_week_seq, ss_store_sk
  5467  		)
  5468  SELECT
  5469  	s_store_name1,
  5470  	s_store_id1,
  5471  	d_week_seq1,
  5472  	sun_sales1 / sun_sales2,
  5473  	mon_sales1 / mon_sales2,
  5474  	tue_sales1 / tue_sales2,
  5475  	wed_sales1 / wed_sales2,
  5476  	thu_sales1 / thu_sales2,
  5477  	fri_sales1 / fri_sales2,
  5478  	sat_sales1 / sat_sales2
  5479  FROM
  5480  	(
  5481  		SELECT
  5482  			s_store_name AS s_store_name1,
  5483  			wss.d_week_seq AS d_week_seq1,
  5484  			s_store_id AS s_store_id1,
  5485  			sun_sales AS sun_sales1,
  5486  			mon_sales AS mon_sales1,
  5487  			tue_sales AS tue_sales1,
  5488  			wed_sales AS wed_sales1,
  5489  			thu_sales AS thu_sales1,
  5490  			fri_sales AS fri_sales1,
  5491  			sat_sales AS sat_sales1
  5492  		FROM
  5493  			wss, store, date_dim AS d
  5494  		WHERE
  5495  			d.d_week_seq = wss.d_week_seq
  5496  			AND ss_store_sk = s_store_sk
  5497  			AND d_month_seq BETWEEN 1195 AND (1195 + 11)
  5498  	)
  5499  		AS y,
  5500  	(
  5501  		SELECT
  5502  			s_store_name AS s_store_name2,
  5503  			wss.d_week_seq AS d_week_seq2,
  5504  			s_store_id AS s_store_id2,
  5505  			sun_sales AS sun_sales2,
  5506  			mon_sales AS mon_sales2,
  5507  			tue_sales AS tue_sales2,
  5508  			wed_sales AS wed_sales2,
  5509  			thu_sales AS thu_sales2,
  5510  			fri_sales AS fri_sales2,
  5511  			sat_sales AS sat_sales2
  5512  		FROM
  5513  			wss, store, date_dim AS d
  5514  		WHERE
  5515  			d.d_week_seq = wss.d_week_seq
  5516  			AND ss_store_sk = s_store_sk
  5517  			AND d_month_seq BETWEEN (1195 + 12) AND (1195 + 23)
  5518  	)
  5519  		AS x
  5520  WHERE
  5521  	s_store_id1 = s_store_id2
  5522  	AND d_week_seq1 = d_week_seq2 - 52
  5523  ORDER BY
  5524  	s_store_name1, s_store_id1, d_week_seq1
  5525  LIMIT
  5526  	100;
  5527  `
  5528  
  5529  	query60 = `
  5530  WITH
  5531  	ss
  5532  		AS (
  5533  			SELECT
  5534  				i_item_id,
  5535  				sum(ss_ext_sales_price) AS total_sales
  5536  			FROM
  5537  				store_sales,
  5538  				date_dim,
  5539  				customer_address,
  5540  				item
  5541  			WHERE
  5542  				i_item_id
  5543  				IN (
  5544  						SELECT
  5545  							i_item_id
  5546  						FROM
  5547  							item
  5548  						WHERE
  5549  							i_category IN ('Jewelry',)
  5550  					)
  5551  				AND ss_item_sk = i_item_sk
  5552  				AND ss_sold_date_sk = d_date_sk
  5553  				AND d_year = 2000
  5554  				AND d_moy = 10
  5555  				AND ss_addr_sk = ca_address_sk
  5556  				AND ca_gmt_offset = -5
  5557  			GROUP BY
  5558  				i_item_id
  5559  		),
  5560  	cs
  5561  		AS (
  5562  			SELECT
  5563  				i_item_id,
  5564  				sum(cs_ext_sales_price) AS total_sales
  5565  			FROM
  5566  				catalog_sales,
  5567  				date_dim,
  5568  				customer_address,
  5569  				item
  5570  			WHERE
  5571  				i_item_id
  5572  				IN (
  5573  						SELECT
  5574  							i_item_id
  5575  						FROM
  5576  							item
  5577  						WHERE
  5578  							i_category IN ('Jewelry',)
  5579  					)
  5580  				AND cs_item_sk = i_item_sk
  5581  				AND cs_sold_date_sk = d_date_sk
  5582  				AND d_year = 2000
  5583  				AND d_moy = 10
  5584  				AND cs_bill_addr_sk = ca_address_sk
  5585  				AND ca_gmt_offset = -5
  5586  			GROUP BY
  5587  				i_item_id
  5588  		),
  5589  	ws
  5590  		AS (
  5591  			SELECT
  5592  				i_item_id,
  5593  				sum(ws_ext_sales_price) AS total_sales
  5594  			FROM
  5595  				web_sales, date_dim, customer_address, item
  5596  			WHERE
  5597  				i_item_id
  5598  				IN (
  5599  						SELECT
  5600  							i_item_id
  5601  						FROM
  5602  							item
  5603  						WHERE
  5604  							i_category IN ('Jewelry',)
  5605  					)
  5606  				AND ws_item_sk = i_item_sk
  5607  				AND ws_sold_date_sk = d_date_sk
  5608  				AND d_year = 2000
  5609  				AND d_moy = 10
  5610  				AND ws_bill_addr_sk = ca_address_sk
  5611  				AND ca_gmt_offset = -5
  5612  			GROUP BY
  5613  				i_item_id
  5614  		)
  5615  SELECT
  5616  	i_item_id, sum(total_sales) AS total_sales
  5617  FROM
  5618  	(
  5619  		SELECT * FROM ss UNION ALL SELECT * FROM cs
  5620  		UNION ALL SELECT * FROM ws
  5621  	)
  5622  		AS tmp1
  5623  GROUP BY
  5624  	i_item_id
  5625  ORDER BY
  5626  	i_item_id, total_sales
  5627  LIMIT
  5628  	100;
  5629  `
  5630  
  5631  	query61 = `
  5632  SELECT
  5633  	promotions,
  5634  	total,
  5635  	CAST(promotions AS DECIMAL(15,4))
  5636  	/ CAST(total AS DECIMAL(15,4))
  5637  	* 100
  5638  FROM
  5639  	(
  5640  		SELECT
  5641  			sum(ss_ext_sales_price) AS promotions
  5642  		FROM
  5643  			store_sales,
  5644  			store,
  5645  			promotion,
  5646  			date_dim,
  5647  			customer,
  5648  			customer_address,
  5649  			item
  5650  		WHERE
  5651  			ss_sold_date_sk = d_date_sk
  5652  			AND ss_store_sk = s_store_sk
  5653  			AND ss_promo_sk = p_promo_sk
  5654  			AND ss_customer_sk = c_customer_sk
  5655  			AND ca_address_sk = c_current_addr_sk
  5656  			AND ss_item_sk = i_item_sk
  5657  			AND ca_gmt_offset = -7
  5658  			AND i_category = 'Home'
  5659  			AND (
  5660  					p_channel_dmail = 'Y'
  5661  					OR p_channel_email = 'Y'
  5662  					OR p_channel_tv = 'Y'
  5663  				)
  5664  			AND s_gmt_offset = -7
  5665  			AND d_year = 2000
  5666  			AND d_moy = 12
  5667  	)
  5668  		AS promotional_sales,
  5669  	(
  5670  		SELECT
  5671  			sum(ss_ext_sales_price) AS total
  5672  		FROM
  5673  			store_sales,
  5674  			store,
  5675  			date_dim,
  5676  			customer,
  5677  			customer_address,
  5678  			item
  5679  		WHERE
  5680  			ss_sold_date_sk = d_date_sk
  5681  			AND ss_store_sk = s_store_sk
  5682  			AND ss_customer_sk = c_customer_sk
  5683  			AND ca_address_sk = c_current_addr_sk
  5684  			AND ss_item_sk = i_item_sk
  5685  			AND ca_gmt_offset = -7
  5686  			AND i_category = 'Home'
  5687  			AND s_gmt_offset = -7
  5688  			AND d_year = 2000
  5689  			AND d_moy = 12
  5690  	)
  5691  		AS all_sales
  5692  ORDER BY
  5693  	promotions, total
  5694  LIMIT
  5695  	100;
  5696  `
  5697  
  5698  	query62 = `
  5699  SELECT
  5700  	substr(w_warehouse_name, 1, 20),
  5701  	sm_type,
  5702  	web_name,
  5703  	sum(
  5704  		CASE
  5705  		WHEN (ws_ship_date_sk - ws_sold_date_sk <= 30)
  5706  		THEN 1
  5707  		ELSE 0
  5708  		END
  5709  	)
  5710  		AS "30 days",
  5711  	sum(
  5712  		CASE
  5713  		WHEN ws_ship_date_sk - ws_sold_date_sk > 30
  5714  		AND ws_ship_date_sk - ws_sold_date_sk <= 60
  5715  		THEN 1
  5716  		ELSE 0
  5717  		END
  5718  	)
  5719  		AS "31-60 days",
  5720  	sum(
  5721  		CASE
  5722  		WHEN ws_ship_date_sk - ws_sold_date_sk > 60
  5723  		AND ws_ship_date_sk - ws_sold_date_sk <= 90
  5724  		THEN 1
  5725  		ELSE 0
  5726  		END
  5727  	)
  5728  		AS "61-90 days",
  5729  	sum(
  5730  		CASE
  5731  		WHEN ws_ship_date_sk - ws_sold_date_sk > 90
  5732  		AND ws_ship_date_sk - ws_sold_date_sk <= 120
  5733  		THEN 1
  5734  		ELSE 0
  5735  		END
  5736  	)
  5737  		AS "91-120 days",
  5738  	sum(
  5739  		CASE
  5740  		WHEN (ws_ship_date_sk - ws_sold_date_sk > 120)
  5741  		THEN 1
  5742  		ELSE 0
  5743  		END
  5744  	)
  5745  		AS ">120 days"
  5746  FROM
  5747  	web_sales, warehouse, ship_mode, web_site, date_dim
  5748  WHERE
  5749  	d_month_seq BETWEEN 1223 AND (1223 + 11)
  5750  	AND ws_ship_date_sk = d_date_sk
  5751  	AND ws_warehouse_sk = w_warehouse_sk
  5752  	AND ws_ship_mode_sk = sm_ship_mode_sk
  5753  	AND ws_web_site_sk = web_site_sk
  5754  GROUP BY
  5755  	substr(w_warehouse_name, 1, 20), sm_type, web_name
  5756  ORDER BY
  5757  	substr(w_warehouse_name, 1, 20), sm_type, web_name
  5758  LIMIT
  5759  	100;
  5760  `
  5761  
  5762  	query63 = `
  5763  SELECT
  5764  	*
  5765  FROM
  5766  	(
  5767  		SELECT
  5768  			i_manager_id,
  5769  			sum(ss_sales_price) AS sum_sales,
  5770  			avg(sum(ss_sales_price)) OVER (
  5771  				PARTITION BY i_manager_id
  5772  			)
  5773  				AS avg_monthly_sales
  5774  		FROM
  5775  			item, store_sales, date_dim, store
  5776  		WHERE
  5777  			ss_item_sk = i_item_sk
  5778  			AND ss_sold_date_sk = d_date_sk
  5779  			AND ss_store_sk = s_store_sk
  5780  			AND d_month_seq
  5781  				IN (
  5782  						1222,
  5783  						1222 + 1,
  5784  						1222 + 2,
  5785  						1222 + 3,
  5786  						1222 + 4,
  5787  						1222 + 5,
  5788  						1222 + 6,
  5789  						1222 + 7,
  5790  						1222 + 8,
  5791  						1222 + 9,
  5792  						1222 + 10,
  5793  						1222 + 11
  5794  					)
  5795  			AND (
  5796  					(
  5797  						i_category
  5798  						IN (
  5799  								'Books',
  5800  								'Children',
  5801  								'Electronics'
  5802  							)
  5803  						AND i_class
  5804  							IN (
  5805  									'personal',
  5806  									'portable',
  5807  									'reference',
  5808  									'self-help'
  5809  								)
  5810  						AND i_brand
  5811  							IN (
  5812  									'scholaramalgamalg #14',
  5813  									'scholaramalgamalg #7',
  5814  									'exportiunivamalg #9',
  5815  									'scholaramalgamalg #9'
  5816  								)
  5817  					)
  5818  					OR (
  5819  							i_category
  5820  							IN ('Women', 'Music', 'Men')
  5821  							AND i_class
  5822  								IN (
  5823  										'accessories',
  5824  										'classical',
  5825  										'fragrances',
  5826  										'pants'
  5827  									)
  5828  							AND i_brand
  5829  								IN (
  5830  										'amalgimporto #1',
  5831  										'edu packscholar #1',
  5832  										'exportiimporto #1',
  5833  										'importoamalg #1'
  5834  									)
  5835  						)
  5836  				)
  5837  		GROUP BY
  5838  			i_manager_id, d_moy
  5839  	)
  5840  		AS tmp1
  5841  WHERE
  5842  	CASE
  5843  	WHEN avg_monthly_sales > 0
  5844  	THEN abs(sum_sales - avg_monthly_sales)
  5845  	/ avg_monthly_sales
  5846  	ELSE NULL
  5847  	END
  5848  	> 0.1
  5849  ORDER BY
  5850  	i_manager_id, avg_monthly_sales, sum_sales
  5851  LIMIT
  5852  	100;
  5853  `
  5854  
  5855  	query64 = `
  5856  WITH
  5857  	cs_ui
  5858  		AS (
  5859  			SELECT
  5860  				cs_item_sk,
  5861  				sum(cs_ext_list_price) AS sale,
  5862  				sum(
  5863  					cr_refunded_cash
  5864  					+ cr_reversed_charge
  5865  					+ cr_store_credit
  5866  				)
  5867  					AS refund
  5868  			FROM
  5869  				catalog_sales, catalog_returns
  5870  			WHERE
  5871  				cs_item_sk = cr_item_sk
  5872  				AND cs_order_number = cr_order_number
  5873  			GROUP BY
  5874  				cs_item_sk
  5875  			HAVING
  5876  				sum(cs_ext_list_price)
  5877  				> 2
  5878  					* sum(
  5879  							cr_refunded_cash
  5880  							+ cr_reversed_charge
  5881  							+ cr_store_credit
  5882  						)
  5883  		),
  5884  	cross_sales
  5885  		AS (
  5886  			SELECT
  5887  				i_product_name AS product_name,
  5888  				i_item_sk AS item_sk,
  5889  				s_store_name AS store_name,
  5890  				s_zip AS store_zip,
  5891  				ad1.ca_street_number AS b_street_number,
  5892  				ad1.ca_street_name AS b_street_name,
  5893  				ad1.ca_city AS b_city,
  5894  				ad1.ca_zip AS b_zip,
  5895  				ad2.ca_street_number AS c_street_number,
  5896  				ad2.ca_street_name AS c_street_name,
  5897  				ad2.ca_city AS c_city,
  5898  				ad2.ca_zip AS c_zip,
  5899  				d1.d_year AS syear,
  5900  				d2.d_year AS fsyear,
  5901  				d3.d_year AS s2year,
  5902  				count(*) AS cnt,
  5903  				sum(ss_wholesale_cost) AS s1,
  5904  				sum(ss_list_price) AS s2,
  5905  				sum(ss_coupon_amt) AS s3
  5906  			FROM
  5907  				store_sales,
  5908  				store_returns,
  5909  				cs_ui,
  5910  				date_dim AS d1,
  5911  				date_dim AS d2,
  5912  				date_dim AS d3,
  5913  				store,
  5914  				customer,
  5915  				customer_demographics AS cd1,
  5916  				customer_demographics AS cd2,
  5917  				promotion,
  5918  				household_demographics AS hd1,
  5919  				household_demographics AS hd2,
  5920  				customer_address AS ad1,
  5921  				customer_address AS ad2,
  5922  				income_band AS ib1,
  5923  				income_band AS ib2,
  5924  				item
  5925  			WHERE
  5926  				ss_store_sk = s_store_sk
  5927  				AND ss_sold_date_sk = d1.d_date_sk
  5928  				AND ss_customer_sk = c_customer_sk
  5929  				AND ss_cdemo_sk = cd1.cd_demo_sk
  5930  				AND ss_hdemo_sk = hd1.hd_demo_sk
  5931  				AND ss_addr_sk = ad1.ca_address_sk
  5932  				AND ss_item_sk = i_item_sk
  5933  				AND ss_item_sk = sr_item_sk
  5934  				AND ss_ticket_number = sr_ticket_number
  5935  				AND ss_item_sk = cs_ui.cs_item_sk
  5936  				AND c_current_cdemo_sk = cd2.cd_demo_sk
  5937  				AND c_current_hdemo_sk = hd2.hd_demo_sk
  5938  				AND c_current_addr_sk = ad2.ca_address_sk
  5939  				AND c_first_sales_date_sk = d2.d_date_sk
  5940  				AND c_first_shipto_date_sk = d3.d_date_sk
  5941  				AND ss_promo_sk = p_promo_sk
  5942  				AND hd1.hd_income_band_sk
  5943  					= ib1.ib_income_band_sk
  5944  				AND hd2.hd_income_band_sk
  5945  					= ib2.ib_income_band_sk
  5946  				AND cd1.cd_marital_status
  5947  					!= cd2.cd_marital_status
  5948  				AND i_color
  5949  					IN (
  5950  							'orange',
  5951  							'lace',
  5952  							'lawn',
  5953  							'misty',
  5954  							'blush',
  5955  							'pink'
  5956  						)
  5957  				AND i_current_price BETWEEN 48 AND (48 + 10)
  5958  				AND i_current_price BETWEEN (48 + 1) AND (48 + 15)
  5959  			GROUP BY
  5960  				i_product_name,
  5961  				i_item_sk,
  5962  				s_store_name,
  5963  				s_zip,
  5964  				ad1.ca_street_number,
  5965  				ad1.ca_street_name,
  5966  				ad1.ca_city,
  5967  				ad1.ca_zip,
  5968  				ad2.ca_street_number,
  5969  				ad2.ca_street_name,
  5970  				ad2.ca_city,
  5971  				ad2.ca_zip,
  5972  				d1.d_year,
  5973  				d2.d_year,
  5974  				d3.d_year
  5975  		)
  5976  SELECT
  5977  	cs1.product_name,
  5978  	cs1.store_name,
  5979  	cs1.store_zip,
  5980  	cs1.b_street_number,
  5981  	cs1.b_street_name,
  5982  	cs1.b_city,
  5983  	cs1.b_zip,
  5984  	cs1.c_street_number,
  5985  	cs1.c_street_name,
  5986  	cs1.c_city,
  5987  	cs1.c_zip,
  5988  	cs1.syear,
  5989  	cs1.cnt,
  5990  	cs1.s1 AS s11,
  5991  	cs1.s2 AS s21,
  5992  	cs1.s3 AS s31,
  5993  	cs2.s1 AS s12,
  5994  	cs2.s2 AS s22,
  5995  	cs2.s3 AS s32,
  5996  	cs2.syear,
  5997  	cs2.cnt
  5998  FROM
  5999  	cross_sales AS cs1, cross_sales AS cs2
  6000  WHERE
  6001  	cs1.item_sk = cs2.item_sk
  6002  	AND cs1.syear = 1999
  6003  	AND cs2.syear = 1999 + 1
  6004  	AND cs2.cnt <= cs1.cnt
  6005  	AND cs1.store_name = cs2.store_name
  6006  	AND cs1.store_zip = cs2.store_zip
  6007  ORDER BY
  6008  	cs1.product_name,
  6009  	cs1.store_name,
  6010  	cs2.cnt,
  6011  	cs1.s1,
  6012  	cs2.s1;
  6013  `
  6014  
  6015  	query65 = `
  6016  SELECT
  6017  	s_store_name,
  6018  	i_item_desc,
  6019  	sc.revenue,
  6020  	i_current_price,
  6021  	i_wholesale_cost,
  6022  	i_brand
  6023  FROM
  6024  	store,
  6025  	item,
  6026  	(
  6027  		SELECT
  6028  			ss_store_sk, avg(revenue) AS ave
  6029  		FROM
  6030  			(
  6031  				SELECT
  6032  					ss_store_sk,
  6033  					ss_item_sk,
  6034  					sum(ss_sales_price) AS revenue
  6035  				FROM
  6036  					store_sales, date_dim
  6037  				WHERE
  6038  					ss_sold_date_sk = d_date_sk
  6039  					AND d_month_seq BETWEEN 1176 AND (1176 + 11)
  6040  				GROUP BY
  6041  					ss_store_sk, ss_item_sk
  6042  			)
  6043  				AS sa
  6044  		GROUP BY
  6045  			ss_store_sk
  6046  	)
  6047  		AS sb,
  6048  	(
  6049  		SELECT
  6050  			ss_store_sk,
  6051  			ss_item_sk,
  6052  			sum(ss_sales_price) AS revenue
  6053  		FROM
  6054  			store_sales, date_dim
  6055  		WHERE
  6056  			ss_sold_date_sk = d_date_sk
  6057  			AND d_month_seq BETWEEN 1176 AND (1176 + 11)
  6058  		GROUP BY
  6059  			ss_store_sk, ss_item_sk
  6060  	)
  6061  		AS sc
  6062  WHERE
  6063  	sb.ss_store_sk = sc.ss_store_sk
  6064  	AND sc.revenue <= 0.1 * sb.ave
  6065  	AND s_store_sk = sc.ss_store_sk
  6066  	AND i_item_sk = sc.ss_item_sk
  6067  ORDER BY
  6068  	s_store_name, i_item_desc
  6069  LIMIT
  6070  	100;
  6071  `
  6072  
  6073  	query66 = `
  6074  SELECT
  6075  	w_warehouse_name,
  6076  	w_warehouse_sq_ft,
  6077  	w_city,
  6078  	w_county,
  6079  	w_state,
  6080  	w_country,
  6081  	ship_carriers,
  6082  	year,
  6083  	sum(jan_sales) AS jan_sales,
  6084  	sum(feb_sales) AS feb_sales,
  6085  	sum(mar_sales) AS mar_sales,
  6086  	sum(apr_sales) AS apr_sales,
  6087  	sum(may_sales) AS may_sales,
  6088  	sum(jun_sales) AS jun_sales,
  6089  	sum(jul_sales) AS jul_sales,
  6090  	sum(aug_sales) AS aug_sales,
  6091  	sum(sep_sales) AS sep_sales,
  6092  	sum(oct_sales) AS oct_sales,
  6093  	sum(nov_sales) AS nov_sales,
  6094  	sum(dec_sales) AS dec_sales,
  6095  	sum(jan_sales / w_warehouse_sq_ft)
  6096  		AS jan_sales_per_sq_foot,
  6097  	sum(feb_sales / w_warehouse_sq_ft)
  6098  		AS feb_sales_per_sq_foot,
  6099  	sum(mar_sales / w_warehouse_sq_ft)
  6100  		AS mar_sales_per_sq_foot,
  6101  	sum(apr_sales / w_warehouse_sq_ft)
  6102  		AS apr_sales_per_sq_foot,
  6103  	sum(may_sales / w_warehouse_sq_ft)
  6104  		AS may_sales_per_sq_foot,
  6105  	sum(jun_sales / w_warehouse_sq_ft)
  6106  		AS jun_sales_per_sq_foot,
  6107  	sum(jul_sales / w_warehouse_sq_ft)
  6108  		AS jul_sales_per_sq_foot,
  6109  	sum(aug_sales / w_warehouse_sq_ft)
  6110  		AS aug_sales_per_sq_foot,
  6111  	sum(sep_sales / w_warehouse_sq_ft)
  6112  		AS sep_sales_per_sq_foot,
  6113  	sum(oct_sales / w_warehouse_sq_ft)
  6114  		AS oct_sales_per_sq_foot,
  6115  	sum(nov_sales / w_warehouse_sq_ft)
  6116  		AS nov_sales_per_sq_foot,
  6117  	sum(dec_sales / w_warehouse_sq_ft)
  6118  		AS dec_sales_per_sq_foot,
  6119  	sum(jan_net) AS jan_net,
  6120  	sum(feb_net) AS feb_net,
  6121  	sum(mar_net) AS mar_net,
  6122  	sum(apr_net) AS apr_net,
  6123  	sum(may_net) AS may_net,
  6124  	sum(jun_net) AS jun_net,
  6125  	sum(jul_net) AS jul_net,
  6126  	sum(aug_net) AS aug_net,
  6127  	sum(sep_net) AS sep_net,
  6128  	sum(oct_net) AS oct_net,
  6129  	sum(nov_net) AS nov_net,
  6130  	sum(dec_net) AS dec_net
  6131  FROM
  6132  	(
  6133  		SELECT
  6134  			w_warehouse_name,
  6135  			w_warehouse_sq_ft,
  6136  			w_city,
  6137  			w_county,
  6138  			w_state,
  6139  			w_country,
  6140  			'ORIENTAL' || ',' || 'BOXBUNDLES'
  6141  				AS ship_carriers,
  6142  			d_year AS year,
  6143  			sum(
  6144  				CASE
  6145  				WHEN d_moy = 1
  6146  				THEN ws_ext_sales_price * ws_quantity
  6147  				ELSE 0
  6148  				END
  6149  			)
  6150  				AS jan_sales,
  6151  			sum(
  6152  				CASE
  6153  				WHEN d_moy = 2
  6154  				THEN ws_ext_sales_price * ws_quantity
  6155  				ELSE 0
  6156  				END
  6157  			)
  6158  				AS feb_sales,
  6159  			sum(
  6160  				CASE
  6161  				WHEN d_moy = 3
  6162  				THEN ws_ext_sales_price * ws_quantity
  6163  				ELSE 0
  6164  				END
  6165  			)
  6166  				AS mar_sales,
  6167  			sum(
  6168  				CASE
  6169  				WHEN d_moy = 4
  6170  				THEN ws_ext_sales_price * ws_quantity
  6171  				ELSE 0
  6172  				END
  6173  			)
  6174  				AS apr_sales,
  6175  			sum(
  6176  				CASE
  6177  				WHEN d_moy = 5
  6178  				THEN ws_ext_sales_price * ws_quantity
  6179  				ELSE 0
  6180  				END
  6181  			)
  6182  				AS may_sales,
  6183  			sum(
  6184  				CASE
  6185  				WHEN d_moy = 6
  6186  				THEN ws_ext_sales_price * ws_quantity
  6187  				ELSE 0
  6188  				END
  6189  			)
  6190  				AS jun_sales,
  6191  			sum(
  6192  				CASE
  6193  				WHEN d_moy = 7
  6194  				THEN ws_ext_sales_price * ws_quantity
  6195  				ELSE 0
  6196  				END
  6197  			)
  6198  				AS jul_sales,
  6199  			sum(
  6200  				CASE
  6201  				WHEN d_moy = 8
  6202  				THEN ws_ext_sales_price * ws_quantity
  6203  				ELSE 0
  6204  				END
  6205  			)
  6206  				AS aug_sales,
  6207  			sum(
  6208  				CASE
  6209  				WHEN d_moy = 9
  6210  				THEN ws_ext_sales_price * ws_quantity
  6211  				ELSE 0
  6212  				END
  6213  			)
  6214  				AS sep_sales,
  6215  			sum(
  6216  				CASE
  6217  				WHEN d_moy = 10
  6218  				THEN ws_ext_sales_price * ws_quantity
  6219  				ELSE 0
  6220  				END
  6221  			)
  6222  				AS oct_sales,
  6223  			sum(
  6224  				CASE
  6225  				WHEN d_moy = 11
  6226  				THEN ws_ext_sales_price * ws_quantity
  6227  				ELSE 0
  6228  				END
  6229  			)
  6230  				AS nov_sales,
  6231  			sum(
  6232  				CASE
  6233  				WHEN d_moy = 12
  6234  				THEN ws_ext_sales_price * ws_quantity
  6235  				ELSE 0
  6236  				END
  6237  			)
  6238  				AS dec_sales,
  6239  			sum(
  6240  				CASE
  6241  				WHEN d_moy = 1
  6242  				THEN ws_net_paid_inc_ship * ws_quantity
  6243  				ELSE 0
  6244  				END
  6245  			)
  6246  				AS jan_net,
  6247  			sum(
  6248  				CASE
  6249  				WHEN d_moy = 2
  6250  				THEN ws_net_paid_inc_ship * ws_quantity
  6251  				ELSE 0
  6252  				END
  6253  			)
  6254  				AS feb_net,
  6255  			sum(
  6256  				CASE
  6257  				WHEN d_moy = 3
  6258  				THEN ws_net_paid_inc_ship * ws_quantity
  6259  				ELSE 0
  6260  				END
  6261  			)
  6262  				AS mar_net,
  6263  			sum(
  6264  				CASE
  6265  				WHEN d_moy = 4
  6266  				THEN ws_net_paid_inc_ship * ws_quantity
  6267  				ELSE 0
  6268  				END
  6269  			)
  6270  				AS apr_net,
  6271  			sum(
  6272  				CASE
  6273  				WHEN d_moy = 5
  6274  				THEN ws_net_paid_inc_ship * ws_quantity
  6275  				ELSE 0
  6276  				END
  6277  			)
  6278  				AS may_net,
  6279  			sum(
  6280  				CASE
  6281  				WHEN d_moy = 6
  6282  				THEN ws_net_paid_inc_ship * ws_quantity
  6283  				ELSE 0
  6284  				END
  6285  			)
  6286  				AS jun_net,
  6287  			sum(
  6288  				CASE
  6289  				WHEN d_moy = 7
  6290  				THEN ws_net_paid_inc_ship * ws_quantity
  6291  				ELSE 0
  6292  				END
  6293  			)
  6294  				AS jul_net,
  6295  			sum(
  6296  				CASE
  6297  				WHEN d_moy = 8
  6298  				THEN ws_net_paid_inc_ship * ws_quantity
  6299  				ELSE 0
  6300  				END
  6301  			)
  6302  				AS aug_net,
  6303  			sum(
  6304  				CASE
  6305  				WHEN d_moy = 9
  6306  				THEN ws_net_paid_inc_ship * ws_quantity
  6307  				ELSE 0
  6308  				END
  6309  			)
  6310  				AS sep_net,
  6311  			sum(
  6312  				CASE
  6313  				WHEN d_moy = 10
  6314  				THEN ws_net_paid_inc_ship * ws_quantity
  6315  				ELSE 0
  6316  				END
  6317  			)
  6318  				AS oct_net,
  6319  			sum(
  6320  				CASE
  6321  				WHEN d_moy = 11
  6322  				THEN ws_net_paid_inc_ship * ws_quantity
  6323  				ELSE 0
  6324  				END
  6325  			)
  6326  				AS nov_net,
  6327  			sum(
  6328  				CASE
  6329  				WHEN d_moy = 12
  6330  				THEN ws_net_paid_inc_ship * ws_quantity
  6331  				ELSE 0
  6332  				END
  6333  			)
  6334  				AS dec_net
  6335  		FROM
  6336  			web_sales,
  6337  			warehouse,
  6338  			date_dim,
  6339  			time_dim,
  6340  			ship_mode
  6341  		WHERE
  6342  			ws_warehouse_sk = w_warehouse_sk
  6343  			AND ws_sold_date_sk = d_date_sk
  6344  			AND ws_sold_time_sk = t_time_sk
  6345  			AND ws_ship_mode_sk = sm_ship_mode_sk
  6346  			AND d_year = 2001
  6347  			AND t_time BETWEEN 42970 AND (42970 + 28800)
  6348  			AND sm_carrier IN ('ORIENTAL', 'BOXBUNDLES')
  6349  		GROUP BY
  6350  			w_warehouse_name,
  6351  			w_warehouse_sq_ft,
  6352  			w_city,
  6353  			w_county,
  6354  			w_state,
  6355  			w_country,
  6356  			d_year
  6357  		UNION ALL
  6358  			SELECT
  6359  				w_warehouse_name,
  6360  				w_warehouse_sq_ft,
  6361  				w_city,
  6362  				w_county,
  6363  				w_state,
  6364  				w_country,
  6365  				'ORIENTAL' || ',' || 'BOXBUNDLES'
  6366  					AS ship_carriers,
  6367  				d_year AS year,
  6368  				sum(
  6369  					CASE
  6370  					WHEN d_moy = 1
  6371  					THEN cs_ext_list_price * cs_quantity
  6372  					ELSE 0
  6373  					END
  6374  				)
  6375  					AS jan_sales,
  6376  				sum(
  6377  					CASE
  6378  					WHEN d_moy = 2
  6379  					THEN cs_ext_list_price * cs_quantity
  6380  					ELSE 0
  6381  					END
  6382  				)
  6383  					AS feb_sales,
  6384  				sum(
  6385  					CASE
  6386  					WHEN d_moy = 3
  6387  					THEN cs_ext_list_price * cs_quantity
  6388  					ELSE 0
  6389  					END
  6390  				)
  6391  					AS mar_sales,
  6392  				sum(
  6393  					CASE
  6394  					WHEN d_moy = 4
  6395  					THEN cs_ext_list_price * cs_quantity
  6396  					ELSE 0
  6397  					END
  6398  				)
  6399  					AS apr_sales,
  6400  				sum(
  6401  					CASE
  6402  					WHEN d_moy = 5
  6403  					THEN cs_ext_list_price * cs_quantity
  6404  					ELSE 0
  6405  					END
  6406  				)
  6407  					AS may_sales,
  6408  				sum(
  6409  					CASE
  6410  					WHEN d_moy = 6
  6411  					THEN cs_ext_list_price * cs_quantity
  6412  					ELSE 0
  6413  					END
  6414  				)
  6415  					AS jun_sales,
  6416  				sum(
  6417  					CASE
  6418  					WHEN d_moy = 7
  6419  					THEN cs_ext_list_price * cs_quantity
  6420  					ELSE 0
  6421  					END
  6422  				)
  6423  					AS jul_sales,
  6424  				sum(
  6425  					CASE
  6426  					WHEN d_moy = 8
  6427  					THEN cs_ext_list_price * cs_quantity
  6428  					ELSE 0
  6429  					END
  6430  				)
  6431  					AS aug_sales,
  6432  				sum(
  6433  					CASE
  6434  					WHEN d_moy = 9
  6435  					THEN cs_ext_list_price * cs_quantity
  6436  					ELSE 0
  6437  					END
  6438  				)
  6439  					AS sep_sales,
  6440  				sum(
  6441  					CASE
  6442  					WHEN d_moy = 10
  6443  					THEN cs_ext_list_price * cs_quantity
  6444  					ELSE 0
  6445  					END
  6446  				)
  6447  					AS oct_sales,
  6448  				sum(
  6449  					CASE
  6450  					WHEN d_moy = 11
  6451  					THEN cs_ext_list_price * cs_quantity
  6452  					ELSE 0
  6453  					END
  6454  				)
  6455  					AS nov_sales,
  6456  				sum(
  6457  					CASE
  6458  					WHEN d_moy = 12
  6459  					THEN cs_ext_list_price * cs_quantity
  6460  					ELSE 0
  6461  					END
  6462  				)
  6463  					AS dec_sales,
  6464  				sum(
  6465  					CASE
  6466  					WHEN d_moy = 1
  6467  					THEN cs_net_paid * cs_quantity
  6468  					ELSE 0
  6469  					END
  6470  				)
  6471  					AS jan_net,
  6472  				sum(
  6473  					CASE
  6474  					WHEN d_moy = 2
  6475  					THEN cs_net_paid * cs_quantity
  6476  					ELSE 0
  6477  					END
  6478  				)
  6479  					AS feb_net,
  6480  				sum(
  6481  					CASE
  6482  					WHEN d_moy = 3
  6483  					THEN cs_net_paid * cs_quantity
  6484  					ELSE 0
  6485  					END
  6486  				)
  6487  					AS mar_net,
  6488  				sum(
  6489  					CASE
  6490  					WHEN d_moy = 4
  6491  					THEN cs_net_paid * cs_quantity
  6492  					ELSE 0
  6493  					END
  6494  				)
  6495  					AS apr_net,
  6496  				sum(
  6497  					CASE
  6498  					WHEN d_moy = 5
  6499  					THEN cs_net_paid * cs_quantity
  6500  					ELSE 0
  6501  					END
  6502  				)
  6503  					AS may_net,
  6504  				sum(
  6505  					CASE
  6506  					WHEN d_moy = 6
  6507  					THEN cs_net_paid * cs_quantity
  6508  					ELSE 0
  6509  					END
  6510  				)
  6511  					AS jun_net,
  6512  				sum(
  6513  					CASE
  6514  					WHEN d_moy = 7
  6515  					THEN cs_net_paid * cs_quantity
  6516  					ELSE 0
  6517  					END
  6518  				)
  6519  					AS jul_net,
  6520  				sum(
  6521  					CASE
  6522  					WHEN d_moy = 8
  6523  					THEN cs_net_paid * cs_quantity
  6524  					ELSE 0
  6525  					END
  6526  				)
  6527  					AS aug_net,
  6528  				sum(
  6529  					CASE
  6530  					WHEN d_moy = 9
  6531  					THEN cs_net_paid * cs_quantity
  6532  					ELSE 0
  6533  					END
  6534  				)
  6535  					AS sep_net,
  6536  				sum(
  6537  					CASE
  6538  					WHEN d_moy = 10
  6539  					THEN cs_net_paid * cs_quantity
  6540  					ELSE 0
  6541  					END
  6542  				)
  6543  					AS oct_net,
  6544  				sum(
  6545  					CASE
  6546  					WHEN d_moy = 11
  6547  					THEN cs_net_paid * cs_quantity
  6548  					ELSE 0
  6549  					END
  6550  				)
  6551  					AS nov_net,
  6552  				sum(
  6553  					CASE
  6554  					WHEN d_moy = 12
  6555  					THEN cs_net_paid * cs_quantity
  6556  					ELSE 0
  6557  					END
  6558  				)
  6559  					AS dec_net
  6560  			FROM
  6561  				catalog_sales,
  6562  				warehouse,
  6563  				date_dim,
  6564  				time_dim,
  6565  				ship_mode
  6566  			WHERE
  6567  				cs_warehouse_sk = w_warehouse_sk
  6568  				AND cs_sold_date_sk = d_date_sk
  6569  				AND cs_sold_time_sk = t_time_sk
  6570  				AND cs_ship_mode_sk = sm_ship_mode_sk
  6571  				AND d_year = 2001
  6572  				AND t_time BETWEEN 42970 AND (42970 + 28800)
  6573  				AND sm_carrier IN ('ORIENTAL', 'BOXBUNDLES')
  6574  			GROUP BY
  6575  				w_warehouse_name,
  6576  				w_warehouse_sq_ft,
  6577  				w_city,
  6578  				w_county,
  6579  				w_state,
  6580  				w_country,
  6581  				d_year
  6582  	)
  6583  		AS x
  6584  GROUP BY
  6585  	w_warehouse_name,
  6586  	w_warehouse_sq_ft,
  6587  	w_city,
  6588  	w_county,
  6589  	w_state,
  6590  	w_country,
  6591  	ship_carriers,
  6592  	year
  6593  ORDER BY
  6594  	w_warehouse_name
  6595  LIMIT
  6596  	100;
  6597  `
  6598  
  6599  	query67 = `
  6600  SELECT
  6601  	*
  6602  FROM
  6603  	(
  6604  		SELECT
  6605  			i_category,
  6606  			i_class,
  6607  			i_brand,
  6608  			i_product_name,
  6609  			d_year,
  6610  			d_qoy,
  6611  			d_moy,
  6612  			s_store_id,
  6613  			sumsales,
  6614  			rank() OVER (
  6615  				PARTITION BY
  6616  					i_category
  6617  				ORDER BY
  6618  					sumsales DESC
  6619  			)
  6620  				AS rk
  6621  		FROM
  6622  			(
  6623  				SELECT
  6624  					i_category,
  6625  					i_class,
  6626  					i_brand,
  6627  					i_product_name,
  6628  					d_year,
  6629  					d_qoy,
  6630  					d_moy,
  6631  					s_store_id,
  6632  					sum(
  6633  						COALESCE(
  6634  							ss_sales_price * ss_quantity,
  6635  							0
  6636  						)
  6637  					)
  6638  						AS sumsales
  6639  				FROM
  6640  					store_sales, date_dim, store, item
  6641  				WHERE
  6642  					ss_sold_date_sk = d_date_sk
  6643  					AND ss_item_sk = i_item_sk
  6644  					AND ss_store_sk = s_store_sk
  6645  					AND d_month_seq BETWEEN 1217 AND (1217 + 11)
  6646  				GROUP BY
  6647  					rollup(
  6648  						i_category,
  6649  						i_class,
  6650  						i_brand,
  6651  						i_product_name,
  6652  						d_year,
  6653  						d_qoy,
  6654  						d_moy,
  6655  						s_store_id
  6656  					)
  6657  			)
  6658  				AS dw1
  6659  	)
  6660  		AS dw2
  6661  WHERE
  6662  	rk <= 100
  6663  ORDER BY
  6664  	i_category,
  6665  	i_class,
  6666  	i_brand,
  6667  	i_product_name,
  6668  	d_year,
  6669  	d_qoy,
  6670  	d_moy,
  6671  	s_store_id,
  6672  	sumsales,
  6673  	rk
  6674  LIMIT
  6675  	100;
  6676  `
  6677  
  6678  	query68 = `
  6679  SELECT
  6680  	c_last_name,
  6681  	c_first_name,
  6682  	ca_city,
  6683  	bought_city,
  6684  	ss_ticket_number,
  6685  	extended_price,
  6686  	extended_tax,
  6687  	list_price
  6688  FROM
  6689  	(
  6690  		SELECT
  6691  			ss_ticket_number,
  6692  			ss_customer_sk,
  6693  			ca_city AS bought_city,
  6694  			sum(ss_ext_sales_price) AS extended_price,
  6695  			sum(ss_ext_list_price) AS list_price,
  6696  			sum(ss_ext_tax) AS extended_tax
  6697  		FROM
  6698  			store_sales,
  6699  			date_dim,
  6700  			store,
  6701  			household_demographics,
  6702  			customer_address
  6703  		WHERE
  6704  			store_sales.ss_sold_date_sk = date_dim.d_date_sk
  6705  			AND store_sales.ss_store_sk = store.s_store_sk
  6706  			AND store_sales.ss_hdemo_sk
  6707  				= household_demographics.hd_demo_sk
  6708  			AND store_sales.ss_addr_sk
  6709  				= customer_address.ca_address_sk
  6710  			AND date_dim.d_dom BETWEEN 1 AND 2
  6711  			AND (
  6712  					household_demographics.hd_dep_count = 3
  6713  					OR household_demographics.hd_vehicle_count
  6714  						= 4
  6715  				)
  6716  			AND date_dim.d_year
  6717  				IN (1998, 1998 + 1, 1998 + 2)
  6718  			AND store.s_city IN ('Fairview', 'Midway')
  6719  		GROUP BY
  6720  			ss_ticket_number,
  6721  			ss_customer_sk,
  6722  			ss_addr_sk,
  6723  			ca_city
  6724  	)
  6725  		AS dn,
  6726  	customer,
  6727  	customer_address AS current_addr
  6728  WHERE
  6729  	ss_customer_sk = c_customer_sk
  6730  	AND customer.c_current_addr_sk
  6731  		= current_addr.ca_address_sk
  6732  	AND current_addr.ca_city != bought_city
  6733  ORDER BY
  6734  	c_last_name, ss_ticket_number
  6735  LIMIT
  6736  	100;
  6737  `
  6738  
  6739  	query69 = `
  6740  SELECT
  6741  	cd_gender,
  6742  	cd_marital_status,
  6743  	cd_education_status,
  6744  	count(*) AS cnt1,
  6745  	cd_purchase_estimate,
  6746  	count(*) AS cnt2,
  6747  	cd_credit_rating,
  6748  	count(*) AS cnt3
  6749  FROM
  6750  	customer AS c,
  6751  	customer_address AS ca,
  6752  	customer_demographics
  6753  WHERE
  6754  	c.c_current_addr_sk = ca.ca_address_sk
  6755  	AND ca_state IN ('IL', 'TX', 'ME')
  6756  	AND cd_demo_sk = c.c_current_cdemo_sk
  6757  	AND EXISTS(
  6758  			SELECT
  6759  				*
  6760  			FROM
  6761  				store_sales, date_dim
  6762  			WHERE
  6763  				c.c_customer_sk = ss_customer_sk
  6764  				AND ss_sold_date_sk = d_date_sk
  6765  				AND d_year = 2002
  6766  				AND d_moy BETWEEN 1 AND (1 + 2)
  6767  		)
  6768  	AND (
  6769  			NOT
  6770  				EXISTS(
  6771  					SELECT
  6772  						*
  6773  					FROM
  6774  						web_sales, date_dim
  6775  					WHERE
  6776  						c.c_customer_sk
  6777  						= ws_bill_customer_sk
  6778  						AND ws_sold_date_sk = d_date_sk
  6779  						AND d_year = 2002
  6780  						AND d_moy BETWEEN 1 AND (1 + 2)
  6781  				)
  6782  			AND NOT
  6783  					EXISTS(
  6784  						SELECT
  6785  							*
  6786  						FROM
  6787  							catalog_sales, date_dim
  6788  						WHERE
  6789  							c.c_customer_sk
  6790  							= cs_ship_customer_sk
  6791  							AND cs_sold_date_sk = d_date_sk
  6792  							AND d_year = 2002
  6793  							AND d_moy BETWEEN 1 AND (1 + 2)
  6794  					)
  6795  		)
  6796  GROUP BY
  6797  	cd_gender,
  6798  	cd_marital_status,
  6799  	cd_education_status,
  6800  	cd_purchase_estimate,
  6801  	cd_credit_rating
  6802  ORDER BY
  6803  	cd_gender,
  6804  	cd_marital_status,
  6805  	cd_education_status,
  6806  	cd_purchase_estimate,
  6807  	cd_credit_rating
  6808  LIMIT
  6809  	100;
  6810  `
  6811  
  6812  	// TODO(yuzefovich): modify it to be parsed by CRDB.
  6813  	query70 = `
  6814  select  
  6815      sum(ss_net_profit) as total_sum
  6816     ,s_state
  6817     ,s_county
  6818     ,grouping(s_state)+grouping(s_county) as lochierarchy
  6819     ,rank() over (
  6820   	partition by grouping(s_state)+grouping(s_county),
  6821   	case when grouping(s_county) = 0 then s_state end 
  6822   	order by sum(ss_net_profit) desc) as rank_within_parent
  6823   from
  6824      store_sales
  6825     ,date_dim       d1
  6826     ,store
  6827   where
  6828      d1.d_month_seq between 1220 and 1220+11
  6829   and d1.d_date_sk = ss_sold_date_sk
  6830   and s_store_sk  = ss_store_sk
  6831   and s_state in
  6832               ( select s_state
  6833                 from  (select s_state as s_state,
  6834   			    rank() over ( partition by s_state order by sum(ss_net_profit) desc) as ranking
  6835                        from   store_sales, store, date_dim
  6836                        where  d_month_seq between 1220 and 1220+11
  6837   			    and d_date_sk = ss_sold_date_sk
  6838   			    and s_store_sk  = ss_store_sk
  6839                        group by s_state
  6840                       ) tmp1 
  6841                 where ranking <= 5
  6842               )
  6843   group by rollup(s_state,s_county)
  6844   order by
  6845     lochierarchy desc
  6846    ,case when lochierarchy = 0 then s_state end
  6847    ,rank_within_parent
  6848   limit 100;
  6849  `
  6850  
  6851  	// NOTE: this query has been modified by appending two extra columns to
  6852  	// ORDER BY clause so that it had deterministic output.
  6853  	query71 = `
  6854  SELECT
  6855  	i_brand_id AS brand_id,
  6856  	i_brand AS brand,
  6857  	t_hour,
  6858  	t_minute,
  6859  	sum(ext_price) AS ext_price
  6860  FROM
  6861  	item,
  6862  	(
  6863  		SELECT
  6864  			ws_ext_sales_price AS ext_price,
  6865  			ws_sold_date_sk AS sold_date_sk,
  6866  			ws_item_sk AS sold_item_sk,
  6867  			ws_sold_time_sk AS time_sk
  6868  		FROM
  6869  			web_sales, date_dim
  6870  		WHERE
  6871  			d_date_sk = ws_sold_date_sk
  6872  			AND d_moy = 12
  6873  			AND d_year = 2002
  6874  		UNION ALL
  6875  			SELECT
  6876  				cs_ext_sales_price AS ext_price,
  6877  				cs_sold_date_sk AS sold_date_sk,
  6878  				cs_item_sk AS sold_item_sk,
  6879  				cs_sold_time_sk AS time_sk
  6880  			FROM
  6881  				catalog_sales, date_dim
  6882  			WHERE
  6883  				d_date_sk = cs_sold_date_sk
  6884  				AND d_moy = 12
  6885  				AND d_year = 2002
  6886  		UNION ALL
  6887  			SELECT
  6888  				ss_ext_sales_price AS ext_price,
  6889  				ss_sold_date_sk AS sold_date_sk,
  6890  				ss_item_sk AS sold_item_sk,
  6891  				ss_sold_time_sk AS time_sk
  6892  			FROM
  6893  				store_sales, date_dim
  6894  			WHERE
  6895  				d_date_sk = ss_sold_date_sk
  6896  				AND d_moy = 12
  6897  				AND d_year = 2002
  6898  	)
  6899  		AS tmp,
  6900  	time_dim
  6901  WHERE
  6902  	sold_item_sk = i_item_sk
  6903  	AND i_manager_id = 1
  6904  	AND time_sk = t_time_sk
  6905  	AND (
  6906  			t_meal_time = 'breakfast'
  6907  			OR t_meal_time = 'dinner'
  6908  		)
  6909  GROUP BY
  6910  	i_brand, i_brand_id, t_hour, t_minute
  6911  ORDER BY
  6912  	ext_price DESC, i_brand_id, t_hour, t_minute;
  6913  `
  6914  
  6915  	query72 = `
  6916  SELECT
  6917  	i_item_desc,
  6918  	w_warehouse_name,
  6919  	d1.d_week_seq,
  6920  	sum(CASE WHEN p_promo_sk IS NULL THEN 1 ELSE 0 END)
  6921  		AS no_promo,
  6922  	sum(CASE WHEN p_promo_sk IS NOT NULL THEN 1 ELSE 0 END)
  6923  		AS promo,
  6924  	count(*) AS total_cnt
  6925  FROM
  6926  	catalog_sales
  6927  	JOIN inventory ON cs_item_sk = inv_item_sk
  6928  	JOIN warehouse ON w_warehouse_sk = inv_warehouse_sk
  6929  	JOIN item ON i_item_sk = cs_item_sk
  6930  	JOIN customer_demographics ON
  6931  			cs_bill_cdemo_sk = cd_demo_sk
  6932  	JOIN household_demographics ON
  6933  			cs_bill_hdemo_sk = hd_demo_sk
  6934  	JOIN date_dim AS d1 ON cs_sold_date_sk = d1.d_date_sk
  6935  	JOIN date_dim AS d2 ON inv_date_sk = d2.d_date_sk
  6936  	JOIN date_dim AS d3 ON cs_ship_date_sk = d3.d_date_sk
  6937  	LEFT JOIN promotion ON cs_promo_sk = p_promo_sk
  6938  	LEFT JOIN catalog_returns ON
  6939  			cr_item_sk = cs_item_sk
  6940  			AND cr_order_number = cs_order_number
  6941  WHERE
  6942  	d1.d_week_seq = d2.d_week_seq
  6943  	AND inv_quantity_on_hand < cs_quantity
  6944  	AND d3.d_date > d1.d_date + 5
  6945  	AND hd_buy_potential = '1001-5000'
  6946  	AND d1.d_year = 1998
  6947  	AND cd_marital_status = 'S'
  6948  GROUP BY
  6949  	i_item_desc, w_warehouse_name, d1.d_week_seq
  6950  ORDER BY
  6951  	total_cnt DESC,
  6952  	i_item_desc,
  6953  	w_warehouse_name,
  6954  	d_week_seq
  6955  LIMIT
  6956  	100;
  6957  `
  6958  
  6959  	query73 = `
  6960  SELECT
  6961  	c_last_name,
  6962  	c_first_name,
  6963  	c_salutation,
  6964  	c_preferred_cust_flag,
  6965  	ss_ticket_number,
  6966  	cnt
  6967  FROM
  6968  	(
  6969  		SELECT
  6970  			ss_ticket_number,
  6971  			ss_customer_sk,
  6972  			count(*) AS cnt
  6973  		FROM
  6974  			store_sales,
  6975  			date_dim,
  6976  			store,
  6977  			household_demographics
  6978  		WHERE
  6979  			store_sales.ss_sold_date_sk = date_dim.d_date_sk
  6980  			AND store_sales.ss_store_sk = store.s_store_sk
  6981  			AND store_sales.ss_hdemo_sk
  6982  				= household_demographics.hd_demo_sk
  6983  			AND date_dim.d_dom BETWEEN 1 AND 2
  6984  			AND (
  6985  					household_demographics.hd_buy_potential
  6986  					= '1001-5000'
  6987  					OR household_demographics.hd_buy_potential
  6988  						= '5001-10000'
  6989  				)
  6990  			AND household_demographics.hd_vehicle_count > 0
  6991  			AND CASE
  6992  				WHEN household_demographics.hd_vehicle_count
  6993  				> 0
  6994  				THEN household_demographics.hd_dep_count
  6995  				/ household_demographics.hd_vehicle_count
  6996  				ELSE NULL
  6997  				END
  6998  				> 1
  6999  			AND date_dim.d_year
  7000  				IN (2000, 2000 + 1, 2000 + 2)
  7001  			AND store.s_county
  7002  				IN (
  7003  						'Williamson County',
  7004  						'Williamson County',
  7005  						'Williamson County',
  7006  						'Williamson County'
  7007  					)
  7008  		GROUP BY
  7009  			ss_ticket_number, ss_customer_sk
  7010  	)
  7011  		AS dj,
  7012  	customer
  7013  WHERE
  7014  	ss_customer_sk = c_customer_sk AND cnt BETWEEN 1 AND 5
  7015  ORDER BY
  7016  	cnt DESC, c_last_name ASC;
  7017  `
  7018  
  7019  	query74 = `
  7020  WITH
  7021  	year_total
  7022  		AS (
  7023  			SELECT
  7024  				c_customer_id AS customer_id,
  7025  				c_first_name AS customer_first_name,
  7026  				c_last_name AS customer_last_name,
  7027  				d_year AS year,
  7028  				max(ss_net_paid) AS year_total,
  7029  				's' AS sale_type
  7030  			FROM
  7031  				customer, store_sales, date_dim
  7032  			WHERE
  7033  				c_customer_sk = ss_customer_sk
  7034  				AND ss_sold_date_sk = d_date_sk
  7035  				AND d_year IN (1999, 1999 + 1)
  7036  			GROUP BY
  7037  				c_customer_id,
  7038  				c_first_name,
  7039  				c_last_name,
  7040  				d_year
  7041  			UNION ALL
  7042  				SELECT
  7043  					c_customer_id AS customer_id,
  7044  					c_first_name AS customer_first_name,
  7045  					c_last_name AS customer_last_name,
  7046  					d_year AS year,
  7047  					max(ws_net_paid) AS year_total,
  7048  					'w' AS sale_type
  7049  				FROM
  7050  					customer, web_sales, date_dim
  7051  				WHERE
  7052  					c_customer_sk = ws_bill_customer_sk
  7053  					AND ws_sold_date_sk = d_date_sk
  7054  					AND d_year IN (1999, 1999 + 1)
  7055  				GROUP BY
  7056  					c_customer_id,
  7057  					c_first_name,
  7058  					c_last_name,
  7059  					d_year
  7060  		)
  7061  SELECT
  7062  	t_s_secyear.customer_id,
  7063  	t_s_secyear.customer_first_name,
  7064  	t_s_secyear.customer_last_name
  7065  FROM
  7066  	year_total AS t_s_firstyear,
  7067  	year_total AS t_s_secyear,
  7068  	year_total AS t_w_firstyear,
  7069  	year_total AS t_w_secyear
  7070  WHERE
  7071  	t_s_secyear.customer_id = t_s_firstyear.customer_id
  7072  	AND t_s_firstyear.customer_id = t_w_secyear.customer_id
  7073  	AND t_s_firstyear.customer_id
  7074  		= t_w_firstyear.customer_id
  7075  	AND t_s_firstyear.sale_type = 's'
  7076  	AND t_w_firstyear.sale_type = 'w'
  7077  	AND t_s_secyear.sale_type = 's'
  7078  	AND t_w_secyear.sale_type = 'w'
  7079  	AND t_s_firstyear.year = 1999
  7080  	AND t_s_secyear.year = 1999 + 1
  7081  	AND t_w_firstyear.year = 1999
  7082  	AND t_w_secyear.year = 1999 + 1
  7083  	AND t_s_firstyear.year_total > 0
  7084  	AND t_w_firstyear.year_total > 0
  7085  	AND CASE
  7086  		WHEN t_w_firstyear.year_total > 0
  7087  		THEN t_w_secyear.year_total
  7088  		/ t_w_firstyear.year_total
  7089  		ELSE NULL
  7090  		END
  7091  		> CASE
  7092  			WHEN t_s_firstyear.year_total > 0
  7093  			THEN t_s_secyear.year_total
  7094  			/ t_s_firstyear.year_total
  7095  			ELSE NULL
  7096  			END
  7097  ORDER BY
  7098  	1, 3, 2
  7099  LIMIT
  7100  	100;
  7101  `
  7102  
  7103  	query75 = `
  7104  WITH
  7105  	all_sales
  7106  		AS (
  7107  			SELECT
  7108  				d_year,
  7109  				i_brand_id,
  7110  				i_class_id,
  7111  				i_category_id,
  7112  				i_manufact_id,
  7113  				sum(sales_cnt) AS sales_cnt,
  7114  				sum(sales_amt) AS sales_amt
  7115  			FROM
  7116  				(
  7117  					SELECT
  7118  						d_year,
  7119  						i_brand_id,
  7120  						i_class_id,
  7121  						i_category_id,
  7122  						i_manufact_id,
  7123  						cs_quantity
  7124  						- COALESCE(cr_return_quantity, 0)
  7125  							AS sales_cnt,
  7126  						cs_ext_sales_price
  7127  						- COALESCE(cr_return_amount, 0.0)
  7128  							AS sales_amt
  7129  					FROM
  7130  						catalog_sales
  7131  						JOIN item ON i_item_sk = cs_item_sk
  7132  						JOIN date_dim ON
  7133  								d_date_sk = cs_sold_date_sk
  7134  						LEFT JOIN catalog_returns ON
  7135  								cs_order_number
  7136  								= cr_order_number
  7137  								AND cs_item_sk = cr_item_sk
  7138  					WHERE
  7139  						i_category = 'Sports'
  7140  					UNION
  7141  						SELECT
  7142  							d_year,
  7143  							i_brand_id,
  7144  							i_class_id,
  7145  							i_category_id,
  7146  							i_manufact_id,
  7147  							ss_quantity
  7148  							- COALESCE(
  7149  									sr_return_quantity,
  7150  									0
  7151  								)
  7152  								AS sales_cnt,
  7153  							ss_ext_sales_price
  7154  							- COALESCE(sr_return_amt, 0.0)
  7155  								AS sales_amt
  7156  						FROM
  7157  							store_sales
  7158  							JOIN item ON
  7159  									i_item_sk = ss_item_sk
  7160  							JOIN date_dim ON
  7161  									d_date_sk
  7162  									= ss_sold_date_sk
  7163  							LEFT JOIN store_returns ON
  7164  									ss_ticket_number
  7165  									= sr_ticket_number
  7166  									AND ss_item_sk
  7167  										= sr_item_sk
  7168  						WHERE
  7169  							i_category = 'Sports'
  7170  					UNION
  7171  						SELECT
  7172  							d_year,
  7173  							i_brand_id,
  7174  							i_class_id,
  7175  							i_category_id,
  7176  							i_manufact_id,
  7177  							ws_quantity
  7178  							- COALESCE(
  7179  									wr_return_quantity,
  7180  									0
  7181  								)
  7182  								AS sales_cnt,
  7183  							ws_ext_sales_price
  7184  							- COALESCE(wr_return_amt, 0.0)
  7185  								AS sales_amt
  7186  						FROM
  7187  							web_sales
  7188  							JOIN item ON
  7189  									i_item_sk = ws_item_sk
  7190  							JOIN date_dim ON
  7191  									d_date_sk
  7192  									= ws_sold_date_sk
  7193  							LEFT JOIN web_returns ON
  7194  									ws_order_number
  7195  									= wr_order_number
  7196  									AND ws_item_sk
  7197  										= wr_item_sk
  7198  						WHERE
  7199  							i_category = 'Sports'
  7200  				)
  7201  					AS sales_detail
  7202  			GROUP BY
  7203  				d_year,
  7204  				i_brand_id,
  7205  				i_class_id,
  7206  				i_category_id,
  7207  				i_manufact_id
  7208  		)
  7209  SELECT
  7210  	prev_yr.d_year AS prev_year,
  7211  	curr_yr.d_year AS year,
  7212  	curr_yr.i_brand_id,
  7213  	curr_yr.i_class_id,
  7214  	curr_yr.i_category_id,
  7215  	curr_yr.i_manufact_id,
  7216  	prev_yr.sales_cnt AS prev_yr_cnt,
  7217  	curr_yr.sales_cnt AS curr_yr_cnt,
  7218  	curr_yr.sales_cnt - prev_yr.sales_cnt AS sales_cnt_diff,
  7219  	curr_yr.sales_amt - prev_yr.sales_amt AS sales_amt_diff
  7220  FROM
  7221  	all_sales AS curr_yr, all_sales AS prev_yr
  7222  WHERE
  7223  	curr_yr.i_brand_id = prev_yr.i_brand_id
  7224  	AND curr_yr.i_class_id = prev_yr.i_class_id
  7225  	AND curr_yr.i_category_id = prev_yr.i_category_id
  7226  	AND curr_yr.i_manufact_id = prev_yr.i_manufact_id
  7227  	AND curr_yr.d_year = 2002
  7228  	AND prev_yr.d_year = 2002 - 1
  7229  	AND CAST(curr_yr.sales_cnt AS DECIMAL(17,2))
  7230  		/ CAST(prev_yr.sales_cnt AS DECIMAL(17,2))
  7231  		< 0.9
  7232  ORDER BY
  7233  	sales_cnt_diff, sales_amt_diff
  7234  LIMIT
  7235  	100;
  7236  `
  7237  
  7238  	query76 = `
  7239  SELECT
  7240  	channel,
  7241  	col_name,
  7242  	d_year,
  7243  	d_qoy,
  7244  	i_category,
  7245  	count(*) AS sales_cnt,
  7246  	sum(ext_sales_price) AS sales_amt
  7247  FROM
  7248  	(
  7249  		SELECT
  7250  			'store' AS channel,
  7251  			'ss_customer_sk' AS col_name,
  7252  			d_year,
  7253  			d_qoy,
  7254  			i_category,
  7255  			ss_ext_sales_price AS ext_sales_price
  7256  		FROM
  7257  			store_sales, item, date_dim
  7258  		WHERE
  7259  			ss_customer_sk IS NULL
  7260  			AND ss_sold_date_sk = d_date_sk
  7261  			AND ss_item_sk = i_item_sk
  7262  		UNION ALL
  7263  			SELECT
  7264  				'web' AS channel,
  7265  				'ws_promo_sk' AS col_name,
  7266  				d_year,
  7267  				d_qoy,
  7268  				i_category,
  7269  				ws_ext_sales_price AS ext_sales_price
  7270  			FROM
  7271  				web_sales, item, date_dim
  7272  			WHERE
  7273  				ws_promo_sk IS NULL
  7274  				AND ws_sold_date_sk = d_date_sk
  7275  				AND ws_item_sk = i_item_sk
  7276  		UNION ALL
  7277  			SELECT
  7278  				'catalog' AS channel,
  7279  				'cs_bill_customer_sk' AS col_name,
  7280  				d_year,
  7281  				d_qoy,
  7282  				i_category,
  7283  				cs_ext_sales_price AS ext_sales_price
  7284  			FROM
  7285  				catalog_sales, item, date_dim
  7286  			WHERE
  7287  				cs_bill_customer_sk IS NULL
  7288  				AND cs_sold_date_sk = d_date_sk
  7289  				AND cs_item_sk = i_item_sk
  7290  	)
  7291  		AS foo
  7292  GROUP BY
  7293  	channel, col_name, d_year, d_qoy, i_category
  7294  ORDER BY
  7295  	channel, col_name, d_year, d_qoy, i_category
  7296  LIMIT
  7297  	100;
  7298  `
  7299  
  7300  	// NOTE: I added conversion of 30 days to an interval.
  7301  	query77 = `
  7302  WITH
  7303  	ss
  7304  		AS (
  7305  			SELECT
  7306  				s_store_sk,
  7307  				sum(ss_ext_sales_price) AS sales,
  7308  				sum(ss_net_profit) AS profit
  7309  			FROM
  7310  				store_sales, date_dim, store
  7311  			WHERE
  7312  				ss_sold_date_sk = d_date_sk
  7313  				AND d_date BETWEEN CAST('2000-08-10' AS DATE) AND (CAST('2000-08-10' AS DATE) + '30 days'::INTERVAL)
  7314  				AND ss_store_sk = s_store_sk
  7315  			GROUP BY
  7316  				s_store_sk
  7317  		),
  7318  	sr
  7319  		AS (
  7320  			SELECT
  7321  				s_store_sk,
  7322  				sum(sr_return_amt) AS returns,
  7323  				sum(sr_net_loss) AS profit_loss
  7324  			FROM
  7325  				store_returns, date_dim, store
  7326  			WHERE
  7327  				sr_returned_date_sk = d_date_sk
  7328  				AND d_date BETWEEN CAST('2000-08-10' AS DATE) AND (CAST('2000-08-10' AS DATE) + '30 days'::INTERVAL)
  7329  				AND sr_store_sk = s_store_sk
  7330  			GROUP BY
  7331  				s_store_sk
  7332  		),
  7333  	cs
  7334  		AS (
  7335  			SELECT
  7336  				cs_call_center_sk,
  7337  				sum(cs_ext_sales_price) AS sales,
  7338  				sum(cs_net_profit) AS profit
  7339  			FROM
  7340  				catalog_sales, date_dim
  7341  			WHERE
  7342  				cs_sold_date_sk = d_date_sk
  7343  				AND d_date BETWEEN CAST('2000-08-10' AS DATE) AND (CAST('2000-08-10' AS DATE) + '30 days'::INTERVAL)
  7344  			GROUP BY
  7345  				cs_call_center_sk
  7346  		),
  7347  	cr
  7348  		AS (
  7349  			SELECT
  7350  				cr_call_center_sk,
  7351  				sum(cr_return_amount) AS returns,
  7352  				sum(cr_net_loss) AS profit_loss
  7353  			FROM
  7354  				catalog_returns, date_dim
  7355  			WHERE
  7356  				cr_returned_date_sk = d_date_sk
  7357  				AND d_date BETWEEN CAST('2000-08-10' AS DATE) AND (CAST('2000-08-10' AS DATE) + '30 days'::INTERVAL)
  7358  			GROUP BY
  7359  				cr_call_center_sk
  7360  		),
  7361  	ws
  7362  		AS (
  7363  			SELECT
  7364  				wp_web_page_sk,
  7365  				sum(ws_ext_sales_price) AS sales,
  7366  				sum(ws_net_profit) AS profit
  7367  			FROM
  7368  				web_sales, date_dim, web_page
  7369  			WHERE
  7370  				ws_sold_date_sk = d_date_sk
  7371  				AND d_date BETWEEN CAST('2000-08-10' AS DATE) AND (CAST('2000-08-10' AS DATE) + '30 days'::INTERVAL)
  7372  				AND ws_web_page_sk = wp_web_page_sk
  7373  			GROUP BY
  7374  				wp_web_page_sk
  7375  		),
  7376  	wr
  7377  		AS (
  7378  			SELECT
  7379  				wp_web_page_sk,
  7380  				sum(wr_return_amt) AS returns,
  7381  				sum(wr_net_loss) AS profit_loss
  7382  			FROM
  7383  				web_returns, date_dim, web_page
  7384  			WHERE
  7385  				wr_returned_date_sk = d_date_sk
  7386  				AND d_date BETWEEN CAST('2000-08-10' AS DATE) AND (CAST('2000-08-10' AS DATE) + '30 days'::INTERVAL)
  7387  				AND wr_web_page_sk = wp_web_page_sk
  7388  			GROUP BY
  7389  				wp_web_page_sk
  7390  		)
  7391  SELECT
  7392  	channel,
  7393  	id,
  7394  	sum(sales) AS sales,
  7395  	sum(returns) AS returns,
  7396  	sum(profit) AS profit
  7397  FROM
  7398  	(
  7399  		SELECT
  7400  			'store channel' AS channel,
  7401  			ss.s_store_sk AS id,
  7402  			sales,
  7403  			COALESCE(returns, 0) AS returns,
  7404  			profit - COALESCE(profit_loss, 0) AS profit
  7405  		FROM
  7406  			ss LEFT JOIN sr ON ss.s_store_sk = sr.s_store_sk
  7407  		UNION ALL
  7408  			SELECT
  7409  				'catalog channel' AS channel,
  7410  				cs_call_center_sk AS id,
  7411  				sales,
  7412  				returns,
  7413  				profit - profit_loss AS profit
  7414  			FROM
  7415  				cs, cr
  7416  		UNION ALL
  7417  			SELECT
  7418  				'web channel' AS channel,
  7419  				ws.wp_web_page_sk AS id,
  7420  				sales,
  7421  				COALESCE(returns, 0) AS returns,
  7422  				profit - COALESCE(profit_loss, 0) AS profit
  7423  			FROM
  7424  				ws
  7425  				LEFT JOIN wr ON
  7426  						ws.wp_web_page_sk
  7427  						= wr.wp_web_page_sk
  7428  	)
  7429  		AS x
  7430  GROUP BY
  7431  	rollup(channel, id)
  7432  ORDER BY
  7433  	channel, id
  7434  LIMIT
  7435  	100;
  7436  `
  7437  
  7438  	query78 = `
  7439  WITH
  7440  	ws
  7441  		AS (
  7442  			SELECT
  7443  				d_year AS ws_sold_year,
  7444  				ws_item_sk,
  7445  				ws_bill_customer_sk AS ws_customer_sk,
  7446  				sum(ws_quantity) AS ws_qty,
  7447  				sum(ws_wholesale_cost) AS ws_wc,
  7448  				sum(ws_sales_price) AS ws_sp
  7449  			FROM
  7450  				web_sales
  7451  				LEFT JOIN web_returns ON
  7452  						wr_order_number = ws_order_number
  7453  						AND ws_item_sk = wr_item_sk
  7454  				JOIN date_dim ON ws_sold_date_sk = d_date_sk
  7455  			WHERE
  7456  				wr_order_number IS NULL
  7457  			GROUP BY
  7458  				d_year, ws_item_sk, ws_bill_customer_sk
  7459  		),
  7460  	cs
  7461  		AS (
  7462  			SELECT
  7463  				d_year AS cs_sold_year,
  7464  				cs_item_sk,
  7465  				cs_bill_customer_sk AS cs_customer_sk,
  7466  				sum(cs_quantity) AS cs_qty,
  7467  				sum(cs_wholesale_cost) AS cs_wc,
  7468  				sum(cs_sales_price) AS cs_sp
  7469  			FROM
  7470  				catalog_sales
  7471  				LEFT JOIN catalog_returns ON
  7472  						cr_order_number = cs_order_number
  7473  						AND cs_item_sk = cr_item_sk
  7474  				JOIN date_dim ON cs_sold_date_sk = d_date_sk
  7475  			WHERE
  7476  				cr_order_number IS NULL
  7477  			GROUP BY
  7478  				d_year, cs_item_sk, cs_bill_customer_sk
  7479  		),
  7480  	ss
  7481  		AS (
  7482  			SELECT
  7483  				d_year AS ss_sold_year,
  7484  				ss_item_sk,
  7485  				ss_customer_sk,
  7486  				sum(ss_quantity) AS ss_qty,
  7487  				sum(ss_wholesale_cost) AS ss_wc,
  7488  				sum(ss_sales_price) AS ss_sp
  7489  			FROM
  7490  				store_sales
  7491  				LEFT JOIN store_returns ON
  7492  						sr_ticket_number = ss_ticket_number
  7493  						AND ss_item_sk = sr_item_sk
  7494  				JOIN date_dim ON ss_sold_date_sk = d_date_sk
  7495  			WHERE
  7496  				sr_ticket_number IS NULL
  7497  			GROUP BY
  7498  				d_year, ss_item_sk, ss_customer_sk
  7499  		)
  7500  SELECT
  7501  	ss_customer_sk,
  7502  	round(
  7503  		ss_qty
  7504  		/ (COALESCE(ws_qty, 0) + COALESCE(cs_qty, 0)),
  7505  		2
  7506  	)
  7507  		AS ratio,
  7508  	ss_qty AS store_qty,
  7509  	ss_wc AS store_wholesale_cost,
  7510  	ss_sp AS store_sales_price,
  7511  	COALESCE(ws_qty, 0) + COALESCE(cs_qty, 0)
  7512  		AS other_chan_qty,
  7513  	COALESCE(ws_wc, 0) + COALESCE(cs_wc, 0)
  7514  		AS other_chan_wholesale_cost,
  7515  	COALESCE(ws_sp, 0) + COALESCE(cs_sp, 0)
  7516  		AS other_chan_sales_price
  7517  FROM
  7518  	ss
  7519  	LEFT JOIN ws ON
  7520  			ws_sold_year = ss_sold_year
  7521  			AND ws_item_sk = ss_item_sk
  7522  			AND ws_customer_sk = ss_customer_sk
  7523  	LEFT JOIN cs ON
  7524  			cs_sold_year = ss_sold_year
  7525  			AND cs_item_sk = ss_item_sk
  7526  			AND cs_customer_sk = ss_customer_sk
  7527  WHERE
  7528  	(COALESCE(ws_qty, 0) > 0 OR COALESCE(cs_qty, 0) > 0)
  7529  	AND ss_sold_year = 1998
  7530  ORDER BY
  7531  	ss_customer_sk,
  7532  	ss_qty DESC,
  7533  	ss_wc DESC,
  7534  	ss_sp DESC,
  7535  	other_chan_qty,
  7536  	other_chan_wholesale_cost,
  7537  	other_chan_sales_price,
  7538  	ratio
  7539  LIMIT
  7540  	100;
  7541  `
  7542  
  7543  	// NOTE: this query has been modified by appending one extra column to
  7544  	// ORDER BY clause so that it had deterministic output.
  7545  	query79 = `
  7546  SELECT
  7547  	c_last_name,
  7548  	c_first_name,
  7549  	substr(s_city, 1, 30),
  7550  	ss_ticket_number,
  7551  	amt,
  7552  	profit
  7553  FROM
  7554  	(
  7555  		SELECT
  7556  			ss_ticket_number,
  7557  			ss_customer_sk,
  7558  			store.s_city,
  7559  			sum(ss_coupon_amt) AS amt,
  7560  			sum(ss_net_profit) AS profit
  7561  		FROM
  7562  			store_sales,
  7563  			date_dim,
  7564  			store,
  7565  			household_demographics
  7566  		WHERE
  7567  			store_sales.ss_sold_date_sk = date_dim.d_date_sk
  7568  			AND store_sales.ss_store_sk = store.s_store_sk
  7569  			AND store_sales.ss_hdemo_sk
  7570  				= household_demographics.hd_demo_sk
  7571  			AND (
  7572  					household_demographics.hd_dep_count = 7
  7573  					OR household_demographics.hd_vehicle_count
  7574  						> -1
  7575  				)
  7576  			AND date_dim.d_dow = 1
  7577  			AND date_dim.d_year
  7578  				IN (2000, 2000 + 1, 2000 + 2)
  7579  			AND store.s_number_employees BETWEEN 200 AND 295
  7580  		GROUP BY
  7581  			ss_ticket_number,
  7582  			ss_customer_sk,
  7583  			ss_addr_sk,
  7584  			store.s_city
  7585  	)
  7586  		AS ms,
  7587  	customer
  7588  WHERE
  7589  	ss_customer_sk = c_customer_sk
  7590  ORDER BY
  7591  	c_last_name, c_first_name, substr(s_city, 1, 30), profit, ss_ticket_number
  7592  LIMIT
  7593  	100;
  7594  `
  7595  
  7596  	// NOTE: I added conversion of 30 days to an interval.
  7597  	query80 = `
  7598  WITH
  7599  	ssr
  7600  		AS (
  7601  			SELECT
  7602  				s_store_id AS store_id,
  7603  				sum(ss_ext_sales_price) AS sales,
  7604  				sum(COALESCE(sr_return_amt, 0)) AS returns,
  7605  				sum(
  7606  					ss_net_profit - COALESCE(sr_net_loss, 0)
  7607  				)
  7608  					AS profit
  7609  			FROM
  7610  				store_sales
  7611  				LEFT JOIN store_returns ON
  7612  						ss_item_sk = sr_item_sk
  7613  						AND ss_ticket_number
  7614  							= sr_ticket_number,
  7615  				date_dim,
  7616  				store,
  7617  				item,
  7618  				promotion
  7619  			WHERE
  7620  				ss_sold_date_sk = d_date_sk
  7621  				AND d_date BETWEEN CAST('2002-08-14' AS DATE) AND (CAST('2002-08-14' AS DATE) + '30 days'::INTERVAL)
  7622  				AND ss_store_sk = s_store_sk
  7623  				AND ss_item_sk = i_item_sk
  7624  				AND i_current_price > 50
  7625  				AND ss_promo_sk = p_promo_sk
  7626  				AND p_channel_tv = 'N'
  7627  			GROUP BY
  7628  				s_store_id
  7629  		),
  7630  	csr
  7631  		AS (
  7632  			SELECT
  7633  				cp_catalog_page_id AS catalog_page_id,
  7634  				sum(cs_ext_sales_price) AS sales,
  7635  				sum(COALESCE(cr_return_amount, 0))
  7636  					AS returns,
  7637  				sum(
  7638  					cs_net_profit - COALESCE(cr_net_loss, 0)
  7639  				)
  7640  					AS profit
  7641  			FROM
  7642  				catalog_sales
  7643  				LEFT JOIN catalog_returns ON
  7644  						cs_item_sk = cr_item_sk
  7645  						AND cs_order_number
  7646  							= cr_order_number,
  7647  				date_dim,
  7648  				catalog_page,
  7649  				item,
  7650  				promotion
  7651  			WHERE
  7652  				cs_sold_date_sk = d_date_sk
  7653  				AND d_date BETWEEN CAST('2002-08-14' AS DATE) AND (CAST('2002-08-14' AS DATE) + '30 days'::INTERVAL)
  7654  				AND cs_catalog_page_sk = cp_catalog_page_sk
  7655  				AND cs_item_sk = i_item_sk
  7656  				AND i_current_price > 50
  7657  				AND cs_promo_sk = p_promo_sk
  7658  				AND p_channel_tv = 'N'
  7659  			GROUP BY
  7660  				cp_catalog_page_id
  7661  		),
  7662  	wsr
  7663  		AS (
  7664  			SELECT
  7665  				web_site_id,
  7666  				sum(ws_ext_sales_price) AS sales,
  7667  				sum(COALESCE(wr_return_amt, 0)) AS returns,
  7668  				sum(
  7669  					ws_net_profit - COALESCE(wr_net_loss, 0)
  7670  				)
  7671  					AS profit
  7672  			FROM
  7673  				web_sales
  7674  				LEFT JOIN web_returns ON
  7675  						ws_item_sk = wr_item_sk
  7676  						AND ws_order_number
  7677  							= wr_order_number,
  7678  				date_dim,
  7679  				web_site,
  7680  				item,
  7681  				promotion
  7682  			WHERE
  7683  				ws_sold_date_sk = d_date_sk
  7684  				AND d_date BETWEEN CAST('2002-08-14' AS DATE) AND (CAST('2002-08-14' AS DATE) + '30 days'::INTERVAL)
  7685  				AND ws_web_site_sk = web_site_sk
  7686  				AND ws_item_sk = i_item_sk
  7687  				AND i_current_price > 50
  7688  				AND ws_promo_sk = p_promo_sk
  7689  				AND p_channel_tv = 'N'
  7690  			GROUP BY
  7691  				web_site_id
  7692  		)
  7693  SELECT
  7694  	channel,
  7695  	id,
  7696  	sum(sales) AS sales,
  7697  	sum(returns) AS returns,
  7698  	sum(profit) AS profit
  7699  FROM
  7700  	(
  7701  		SELECT
  7702  			'store channel' AS channel,
  7703  			'store' || store_id AS id,
  7704  			sales,
  7705  			returns,
  7706  			profit
  7707  		FROM
  7708  			ssr
  7709  		UNION ALL
  7710  			SELECT
  7711  				'catalog channel' AS channel,
  7712  				'catalog_page' || catalog_page_id AS id,
  7713  				sales,
  7714  				returns,
  7715  				profit
  7716  			FROM
  7717  				csr
  7718  		UNION ALL
  7719  			SELECT
  7720  				'web channel' AS channel,
  7721  				'web_site' || web_site_id AS id,
  7722  				sales,
  7723  				returns,
  7724  				profit
  7725  			FROM
  7726  				wsr
  7727  	)
  7728  		AS x
  7729  GROUP BY
  7730  	rollup(channel, id)
  7731  ORDER BY
  7732  	channel, id
  7733  LIMIT
  7734  	100;
  7735  `
  7736  
  7737  	query81 = `
  7738  WITH
  7739  	customer_total_return
  7740  		AS (
  7741  			SELECT
  7742  				cr_returning_customer_sk AS ctr_customer_sk,
  7743  				ca_state AS ctr_state,
  7744  				sum(cr_return_amt_inc_tax)
  7745  					AS ctr_total_return
  7746  			FROM
  7747  				catalog_returns, date_dim, customer_address
  7748  			WHERE
  7749  				cr_returned_date_sk = d_date_sk
  7750  				AND d_year = 2001
  7751  				AND cr_returning_addr_sk = ca_address_sk
  7752  			GROUP BY
  7753  				cr_returning_customer_sk, ca_state
  7754  		)
  7755  SELECT
  7756  	c_customer_id,
  7757  	c_salutation,
  7758  	c_first_name,
  7759  	c_last_name,
  7760  	ca_street_number,
  7761  	ca_street_name,
  7762  	ca_street_type,
  7763  	ca_suite_number,
  7764  	ca_city,
  7765  	ca_county,
  7766  	ca_state,
  7767  	ca_zip,
  7768  	ca_country,
  7769  	ca_gmt_offset,
  7770  	ca_location_type,
  7771  	ctr_total_return
  7772  FROM
  7773  	customer_total_return AS ctr1,
  7774  	customer_address,
  7775  	customer
  7776  WHERE
  7777  	ctr1.ctr_total_return
  7778  	> (
  7779  			SELECT
  7780  				avg(ctr_total_return) * 1.2
  7781  			FROM
  7782  				customer_total_return AS ctr2
  7783  			WHERE
  7784  				ctr1.ctr_state = ctr2.ctr_state
  7785  		)
  7786  	AND ca_address_sk = c_current_addr_sk
  7787  	AND ca_state = 'TN'
  7788  	AND ctr1.ctr_customer_sk = c_customer_sk
  7789  ORDER BY
  7790  	c_customer_id,
  7791  	c_salutation,
  7792  	c_first_name,
  7793  	c_last_name,
  7794  	ca_street_number,
  7795  	ca_street_name,
  7796  	ca_street_type,
  7797  	ca_suite_number,
  7798  	ca_city,
  7799  	ca_county,
  7800  	ca_state,
  7801  	ca_zip,
  7802  	ca_country,
  7803  	ca_gmt_offset,
  7804  	ca_location_type,
  7805  	ctr_total_return
  7806  LIMIT
  7807  	100;
  7808  `
  7809  
  7810  	// NOTE: I added conversion of 60 days to an interval.
  7811  	query82 = `
  7812  SELECT
  7813  	i_item_id, i_item_desc, i_current_price
  7814  FROM
  7815  	item, inventory, date_dim, store_sales
  7816  WHERE
  7817  	i_current_price BETWEEN 58 AND (58 + 30)
  7818  	AND inv_item_sk = i_item_sk
  7819  	AND d_date_sk = inv_date_sk
  7820  	AND d_date BETWEEN CAST('2001-01-13' AS DATE) AND (CAST('2001-01-13' AS DATE) + '60 days'::INTERVAL)
  7821  	AND i_manufact_id IN (259, 559, 580, 485)
  7822  	AND inv_quantity_on_hand BETWEEN 100 AND 500
  7823  	AND ss_item_sk = i_item_sk
  7824  GROUP BY
  7825  	i_item_id, i_item_desc, i_current_price
  7826  ORDER BY
  7827  	i_item_id
  7828  LIMIT
  7829  	100;
  7830  `
  7831  
  7832  	query83 = `
  7833  WITH
  7834  	sr_items
  7835  		AS (
  7836  			SELECT
  7837  				i_item_id AS item_id,
  7838  				sum(sr_return_quantity) AS sr_item_qty
  7839  			FROM
  7840  				store_returns, item, date_dim
  7841  			WHERE
  7842  				sr_item_sk = i_item_sk
  7843  				AND d_date
  7844  					IN (
  7845  							SELECT
  7846  								d_date
  7847  							FROM
  7848  								date_dim
  7849  							WHERE
  7850  								d_week_seq
  7851  								IN (
  7852  										SELECT
  7853  											d_week_seq
  7854  										FROM
  7855  											date_dim
  7856  										WHERE
  7857  											d_date
  7858  											IN (
  7859  													'2001-07-13',
  7860  													'2001-09-10',
  7861  													'2001-11-16'
  7862  												)
  7863  									)
  7864  						)
  7865  				AND sr_returned_date_sk = d_date_sk
  7866  			GROUP BY
  7867  				i_item_id
  7868  		),
  7869  	cr_items
  7870  		AS (
  7871  			SELECT
  7872  				i_item_id AS item_id,
  7873  				sum(cr_return_quantity) AS cr_item_qty
  7874  			FROM
  7875  				catalog_returns, item, date_dim
  7876  			WHERE
  7877  				cr_item_sk = i_item_sk
  7878  				AND d_date
  7879  					IN (
  7880  							SELECT
  7881  								d_date
  7882  							FROM
  7883  								date_dim
  7884  							WHERE
  7885  								d_week_seq
  7886  								IN (
  7887  										SELECT
  7888  											d_week_seq
  7889  										FROM
  7890  											date_dim
  7891  										WHERE
  7892  											d_date
  7893  											IN (
  7894  													'2001-07-13',
  7895  													'2001-09-10',
  7896  													'2001-11-16'
  7897  												)
  7898  									)
  7899  						)
  7900  				AND cr_returned_date_sk = d_date_sk
  7901  			GROUP BY
  7902  				i_item_id
  7903  		),
  7904  	wr_items
  7905  		AS (
  7906  			SELECT
  7907  				i_item_id AS item_id,
  7908  				sum(wr_return_quantity) AS wr_item_qty
  7909  			FROM
  7910  				web_returns, item, date_dim
  7911  			WHERE
  7912  				wr_item_sk = i_item_sk
  7913  				AND d_date
  7914  					IN (
  7915  							SELECT
  7916  								d_date
  7917  							FROM
  7918  								date_dim
  7919  							WHERE
  7920  								d_week_seq
  7921  								IN (
  7922  										SELECT
  7923  											d_week_seq
  7924  										FROM
  7925  											date_dim
  7926  										WHERE
  7927  											d_date
  7928  											IN (
  7929  													'2001-07-13',
  7930  													'2001-09-10',
  7931  													'2001-11-16'
  7932  												)
  7933  									)
  7934  						)
  7935  				AND wr_returned_date_sk = d_date_sk
  7936  			GROUP BY
  7937  				i_item_id
  7938  		)
  7939  SELECT
  7940  	sr_items.item_id,
  7941  	sr_item_qty,
  7942  	sr_item_qty
  7943  	/ (sr_item_qty + cr_item_qty + wr_item_qty)
  7944  	/ 3.0
  7945  	* 100
  7946  		AS sr_dev,
  7947  	cr_item_qty,
  7948  	cr_item_qty
  7949  	/ (sr_item_qty + cr_item_qty + wr_item_qty)
  7950  	/ 3.0
  7951  	* 100
  7952  		AS cr_dev,
  7953  	wr_item_qty,
  7954  	wr_item_qty
  7955  	/ (sr_item_qty + cr_item_qty + wr_item_qty)
  7956  	/ 3.0
  7957  	* 100
  7958  		AS wr_dev,
  7959  	(sr_item_qty + cr_item_qty + wr_item_qty) / 3.0
  7960  		AS average
  7961  FROM
  7962  	sr_items, cr_items, wr_items
  7963  WHERE
  7964  	sr_items.item_id = cr_items.item_id
  7965  	AND sr_items.item_id = wr_items.item_id
  7966  ORDER BY
  7967  	sr_items.item_id, sr_item_qty
  7968  LIMIT
  7969  	100;
  7970  `
  7971  
  7972  	query84 = `
  7973  SELECT
  7974  	c_customer_id AS customer_id,
  7975  	COALESCE(c_last_name, '')
  7976  	|| ', '
  7977  	|| COALESCE(c_first_name, '')
  7978  		AS customername
  7979  FROM
  7980  	customer,
  7981  	customer_address,
  7982  	customer_demographics,
  7983  	household_demographics,
  7984  	income_band,
  7985  	store_returns
  7986  WHERE
  7987  	ca_city = 'Woodland'
  7988  	AND c_current_addr_sk = ca_address_sk
  7989  	AND ib_lower_bound >= 60306
  7990  	AND ib_upper_bound <= 60306 + 50000
  7991  	AND ib_income_band_sk = hd_income_band_sk
  7992  	AND cd_demo_sk = c_current_cdemo_sk
  7993  	AND hd_demo_sk = c_current_hdemo_sk
  7994  	AND sr_cdemo_sk = cd_demo_sk
  7995  ORDER BY
  7996  	c_customer_id
  7997  LIMIT
  7998  	100;
  7999  `
  8000  
  8001  	query85 = `
  8002  SELECT
  8003  	substr(r_reason_desc, 1, 20),
  8004  	avg(ws_quantity),
  8005  	avg(wr_refunded_cash),
  8006  	avg(wr_fee)
  8007  FROM
  8008  	web_sales,
  8009  	web_returns,
  8010  	web_page,
  8011  	customer_demographics AS cd1,
  8012  	customer_demographics AS cd2,
  8013  	customer_address,
  8014  	date_dim,
  8015  	reason
  8016  WHERE
  8017  	ws_web_page_sk = wp_web_page_sk
  8018  	AND ws_item_sk = wr_item_sk
  8019  	AND ws_order_number = wr_order_number
  8020  	AND ws_sold_date_sk = d_date_sk
  8021  	AND d_year = 1998
  8022  	AND cd1.cd_demo_sk = wr_refunded_cdemo_sk
  8023  	AND cd2.cd_demo_sk = wr_returning_cdemo_sk
  8024  	AND ca_address_sk = wr_refunded_addr_sk
  8025  	AND r_reason_sk = wr_reason_sk
  8026  	AND (
  8027  			(
  8028  				cd1.cd_marital_status = 'D'
  8029  				AND cd1.cd_marital_status
  8030  					= cd2.cd_marital_status
  8031  				AND cd1.cd_education_status = 'Primary'
  8032  				AND cd1.cd_education_status
  8033  					= cd2.cd_education_status
  8034  				AND ws_sales_price BETWEEN 100.00 AND 150.00
  8035  			)
  8036  			OR (
  8037  					cd1.cd_marital_status = 'S'
  8038  					AND cd1.cd_marital_status
  8039  						= cd2.cd_marital_status
  8040  					AND cd1.cd_education_status = 'College'
  8041  					AND cd1.cd_education_status
  8042  						= cd2.cd_education_status
  8043  					AND ws_sales_price BETWEEN 50.00 AND 100.00
  8044  				)
  8045  			OR (
  8046  					cd1.cd_marital_status = 'U'
  8047  					AND cd1.cd_marital_status
  8048  						= cd2.cd_marital_status
  8049  					AND cd1.cd_education_status
  8050  						= 'Advanced Degree'
  8051  					AND cd1.cd_education_status
  8052  						= cd2.cd_education_status
  8053  					AND ws_sales_price BETWEEN 150.00 AND 200.00
  8054  				)
  8055  		)
  8056  	AND (
  8057  			(
  8058  				ca_country = 'United States'
  8059  				AND ca_state IN ('NC', 'TX', 'IA')
  8060  				AND ws_net_profit BETWEEN 100 AND 200
  8061  			)
  8062  			OR (
  8063  					ca_country = 'United States'
  8064  					AND ca_state IN ('WI', 'WV', 'GA')
  8065  					AND ws_net_profit BETWEEN 150 AND 300
  8066  				)
  8067  			OR (
  8068  					ca_country = 'United States'
  8069  					AND ca_state IN ('OK', 'VA', 'KY')
  8070  					AND ws_net_profit BETWEEN 50 AND 250
  8071  				)
  8072  		)
  8073  GROUP BY
  8074  	r_reason_desc
  8075  ORDER BY
  8076  	substr(r_reason_desc, 1, 20),
  8077  	avg(ws_quantity),
  8078  	avg(wr_refunded_cash),
  8079  	avg(wr_fee)
  8080  LIMIT
  8081  	100;
  8082  `
  8083  
  8084  	// TODO(yuzefovich): modify it to be parsed by CRDB.
  8085  	query86 = `
  8086  select   
  8087      sum(ws_net_paid) as total_sum
  8088     ,i_category
  8089     ,i_class
  8090     ,grouping(i_category)+grouping(i_class) as lochierarchy
  8091     ,rank() over (
  8092   	partition by grouping(i_category)+grouping(i_class),
  8093   	case when grouping(i_class) = 0 then i_category end 
  8094   	order by sum(ws_net_paid) desc) as rank_within_parent
  8095   from
  8096      web_sales
  8097     ,date_dim       d1
  8098     ,item
  8099   where
  8100      d1.d_month_seq between 1186 and 1186+11
  8101   and d1.d_date_sk = ws_sold_date_sk
  8102   and i_item_sk  = ws_item_sk
  8103   group by rollup(i_category,i_class)
  8104   order by
  8105     lochierarchy desc,
  8106     case when lochierarchy = 0 then i_category end,
  8107     rank_within_parent
  8108   limit 100;
  8109  `
  8110  
  8111  	query87 = `
  8112  SELECT
  8113  	count(*)
  8114  FROM
  8115  	(
  8116  		(
  8117  			SELECT
  8118  				DISTINCT c_last_name, c_first_name, d_date
  8119  			FROM
  8120  				store_sales, date_dim, customer
  8121  			WHERE
  8122  				store_sales.ss_sold_date_sk
  8123  				= date_dim.d_date_sk
  8124  				AND store_sales.ss_customer_sk
  8125  					= customer.c_customer_sk
  8126  				AND d_month_seq BETWEEN 1202 AND (1202 + 11)
  8127  		)
  8128  		EXCEPT
  8129  			(
  8130  				SELECT
  8131  					DISTINCT
  8132  					c_last_name,
  8133  					c_first_name,
  8134  					d_date
  8135  				FROM
  8136  					catalog_sales, date_dim, customer
  8137  				WHERE
  8138  					catalog_sales.cs_sold_date_sk
  8139  					= date_dim.d_date_sk
  8140  					AND catalog_sales.cs_bill_customer_sk
  8141  						= customer.c_customer_sk
  8142  					AND d_month_seq BETWEEN 1202 AND (1202 + 11)
  8143  			)
  8144  		EXCEPT
  8145  			(
  8146  				SELECT
  8147  					DISTINCT
  8148  					c_last_name,
  8149  					c_first_name,
  8150  					d_date
  8151  				FROM
  8152  					web_sales, date_dim, customer
  8153  				WHERE
  8154  					web_sales.ws_sold_date_sk
  8155  					= date_dim.d_date_sk
  8156  					AND web_sales.ws_bill_customer_sk
  8157  						= customer.c_customer_sk
  8158  					AND d_month_seq BETWEEN 1202 AND (1202 + 11)
  8159  			)
  8160  	)
  8161  		AS cool_cust;
  8162  `
  8163  
  8164  	query88 = `
  8165  SELECT
  8166  	*
  8167  FROM
  8168  	(
  8169  		SELECT
  8170  			count(*) AS h8_30_to_9
  8171  		FROM
  8172  			store_sales,
  8173  			household_demographics,
  8174  			time_dim,
  8175  			store
  8176  		WHERE
  8177  			ss_sold_time_sk = time_dim.t_time_sk
  8178  			AND ss_hdemo_sk
  8179  				= household_demographics.hd_demo_sk
  8180  			AND ss_store_sk = s_store_sk
  8181  			AND time_dim.t_hour = 8
  8182  			AND time_dim.t_minute >= 30
  8183  			AND (
  8184  					(
  8185  						household_demographics.hd_dep_count
  8186  						= 0
  8187  						AND household_demographics.hd_vehicle_count
  8188  							<= 0 + 2
  8189  					)
  8190  					OR (
  8191  							household_demographics.hd_dep_count
  8192  							= -1
  8193  							AND household_demographics.hd_vehicle_count
  8194  								<= -1 + 2
  8195  						)
  8196  					OR (
  8197  							household_demographics.hd_dep_count
  8198  							= 3
  8199  							AND household_demographics.hd_vehicle_count
  8200  								<= 3 + 2
  8201  						)
  8202  				)
  8203  			AND store.s_store_name = 'ese'
  8204  	)
  8205  		AS s1,
  8206  	(
  8207  		SELECT
  8208  			count(*) AS h9_to_9_30
  8209  		FROM
  8210  			store_sales,
  8211  			household_demographics,
  8212  			time_dim,
  8213  			store
  8214  		WHERE
  8215  			ss_sold_time_sk = time_dim.t_time_sk
  8216  			AND ss_hdemo_sk
  8217  				= household_demographics.hd_demo_sk
  8218  			AND ss_store_sk = s_store_sk
  8219  			AND time_dim.t_hour = 9
  8220  			AND time_dim.t_minute < 30
  8221  			AND (
  8222  					(
  8223  						household_demographics.hd_dep_count
  8224  						= 0
  8225  						AND household_demographics.hd_vehicle_count
  8226  							<= 0 + 2
  8227  					)
  8228  					OR (
  8229  							household_demographics.hd_dep_count
  8230  							= -1
  8231  							AND household_demographics.hd_vehicle_count
  8232  								<= -1 + 2
  8233  						)
  8234  					OR (
  8235  							household_demographics.hd_dep_count
  8236  							= 3
  8237  							AND household_demographics.hd_vehicle_count
  8238  								<= 3 + 2
  8239  						)
  8240  				)
  8241  			AND store.s_store_name = 'ese'
  8242  	)
  8243  		AS s2,
  8244  	(
  8245  		SELECT
  8246  			count(*) AS h9_30_to_10
  8247  		FROM
  8248  			store_sales,
  8249  			household_demographics,
  8250  			time_dim,
  8251  			store
  8252  		WHERE
  8253  			ss_sold_time_sk = time_dim.t_time_sk
  8254  			AND ss_hdemo_sk
  8255  				= household_demographics.hd_demo_sk
  8256  			AND ss_store_sk = s_store_sk
  8257  			AND time_dim.t_hour = 9
  8258  			AND time_dim.t_minute >= 30
  8259  			AND (
  8260  					(
  8261  						household_demographics.hd_dep_count
  8262  						= 0
  8263  						AND household_demographics.hd_vehicle_count
  8264  							<= 0 + 2
  8265  					)
  8266  					OR (
  8267  							household_demographics.hd_dep_count
  8268  							= -1
  8269  							AND household_demographics.hd_vehicle_count
  8270  								<= -1 + 2
  8271  						)
  8272  					OR (
  8273  							household_demographics.hd_dep_count
  8274  							= 3
  8275  							AND household_demographics.hd_vehicle_count
  8276  								<= 3 + 2
  8277  						)
  8278  				)
  8279  			AND store.s_store_name = 'ese'
  8280  	)
  8281  		AS s3,
  8282  	(
  8283  		SELECT
  8284  			count(*) AS h10_to_10_30
  8285  		FROM
  8286  			store_sales,
  8287  			household_demographics,
  8288  			time_dim,
  8289  			store
  8290  		WHERE
  8291  			ss_sold_time_sk = time_dim.t_time_sk
  8292  			AND ss_hdemo_sk
  8293  				= household_demographics.hd_demo_sk
  8294  			AND ss_store_sk = s_store_sk
  8295  			AND time_dim.t_hour = 10
  8296  			AND time_dim.t_minute < 30
  8297  			AND (
  8298  					(
  8299  						household_demographics.hd_dep_count
  8300  						= 0
  8301  						AND household_demographics.hd_vehicle_count
  8302  							<= 0 + 2
  8303  					)
  8304  					OR (
  8305  							household_demographics.hd_dep_count
  8306  							= -1
  8307  							AND household_demographics.hd_vehicle_count
  8308  								<= -1 + 2
  8309  						)
  8310  					OR (
  8311  							household_demographics.hd_dep_count
  8312  							= 3
  8313  							AND household_demographics.hd_vehicle_count
  8314  								<= 3 + 2
  8315  						)
  8316  				)
  8317  			AND store.s_store_name = 'ese'
  8318  	)
  8319  		AS s4,
  8320  	(
  8321  		SELECT
  8322  			count(*) AS h10_30_to_11
  8323  		FROM
  8324  			store_sales,
  8325  			household_demographics,
  8326  			time_dim,
  8327  			store
  8328  		WHERE
  8329  			ss_sold_time_sk = time_dim.t_time_sk
  8330  			AND ss_hdemo_sk
  8331  				= household_demographics.hd_demo_sk
  8332  			AND ss_store_sk = s_store_sk
  8333  			AND time_dim.t_hour = 10
  8334  			AND time_dim.t_minute >= 30
  8335  			AND (
  8336  					(
  8337  						household_demographics.hd_dep_count
  8338  						= 0
  8339  						AND household_demographics.hd_vehicle_count
  8340  							<= 0 + 2
  8341  					)
  8342  					OR (
  8343  							household_demographics.hd_dep_count
  8344  							= -1
  8345  							AND household_demographics.hd_vehicle_count
  8346  								<= -1 + 2
  8347  						)
  8348  					OR (
  8349  							household_demographics.hd_dep_count
  8350  							= 3
  8351  							AND household_demographics.hd_vehicle_count
  8352  								<= 3 + 2
  8353  						)
  8354  				)
  8355  			AND store.s_store_name = 'ese'
  8356  	)
  8357  		AS s5,
  8358  	(
  8359  		SELECT
  8360  			count(*) AS h11_to_11_30
  8361  		FROM
  8362  			store_sales,
  8363  			household_demographics,
  8364  			time_dim,
  8365  			store
  8366  		WHERE
  8367  			ss_sold_time_sk = time_dim.t_time_sk
  8368  			AND ss_hdemo_sk
  8369  				= household_demographics.hd_demo_sk
  8370  			AND ss_store_sk = s_store_sk
  8371  			AND time_dim.t_hour = 11
  8372  			AND time_dim.t_minute < 30
  8373  			AND (
  8374  					(
  8375  						household_demographics.hd_dep_count
  8376  						= 0
  8377  						AND household_demographics.hd_vehicle_count
  8378  							<= 0 + 2
  8379  					)
  8380  					OR (
  8381  							household_demographics.hd_dep_count
  8382  							= -1
  8383  							AND household_demographics.hd_vehicle_count
  8384  								<= -1 + 2
  8385  						)
  8386  					OR (
  8387  							household_demographics.hd_dep_count
  8388  							= 3
  8389  							AND household_demographics.hd_vehicle_count
  8390  								<= 3 + 2
  8391  						)
  8392  				)
  8393  			AND store.s_store_name = 'ese'
  8394  	)
  8395  		AS s6,
  8396  	(
  8397  		SELECT
  8398  			count(*) AS h11_30_to_12
  8399  		FROM
  8400  			store_sales,
  8401  			household_demographics,
  8402  			time_dim,
  8403  			store
  8404  		WHERE
  8405  			ss_sold_time_sk = time_dim.t_time_sk
  8406  			AND ss_hdemo_sk
  8407  				= household_demographics.hd_demo_sk
  8408  			AND ss_store_sk = s_store_sk
  8409  			AND time_dim.t_hour = 11
  8410  			AND time_dim.t_minute >= 30
  8411  			AND (
  8412  					(
  8413  						household_demographics.hd_dep_count
  8414  						= 0
  8415  						AND household_demographics.hd_vehicle_count
  8416  							<= 0 + 2
  8417  					)
  8418  					OR (
  8419  							household_demographics.hd_dep_count
  8420  							= -1
  8421  							AND household_demographics.hd_vehicle_count
  8422  								<= -1 + 2
  8423  						)
  8424  					OR (
  8425  							household_demographics.hd_dep_count
  8426  							= 3
  8427  							AND household_demographics.hd_vehicle_count
  8428  								<= 3 + 2
  8429  						)
  8430  				)
  8431  			AND store.s_store_name = 'ese'
  8432  	)
  8433  		AS s7,
  8434  	(
  8435  		SELECT
  8436  			count(*) AS h12_to_12_30
  8437  		FROM
  8438  			store_sales,
  8439  			household_demographics,
  8440  			time_dim,
  8441  			store
  8442  		WHERE
  8443  			ss_sold_time_sk = time_dim.t_time_sk
  8444  			AND ss_hdemo_sk
  8445  				= household_demographics.hd_demo_sk
  8446  			AND ss_store_sk = s_store_sk
  8447  			AND time_dim.t_hour = 12
  8448  			AND time_dim.t_minute < 30
  8449  			AND (
  8450  					(
  8451  						household_demographics.hd_dep_count
  8452  						= 0
  8453  						AND household_demographics.hd_vehicle_count
  8454  							<= 0 + 2
  8455  					)
  8456  					OR (
  8457  							household_demographics.hd_dep_count
  8458  							= -1
  8459  							AND household_demographics.hd_vehicle_count
  8460  								<= -1 + 2
  8461  						)
  8462  					OR (
  8463  							household_demographics.hd_dep_count
  8464  							= 3
  8465  							AND household_demographics.hd_vehicle_count
  8466  								<= 3 + 2
  8467  						)
  8468  				)
  8469  			AND store.s_store_name = 'ese'
  8470  	)
  8471  		AS s8;
  8472  `
  8473  
  8474  	query89 = `
  8475  SELECT
  8476  	*
  8477  FROM
  8478  	(
  8479  		SELECT
  8480  			i_category,
  8481  			i_class,
  8482  			i_brand,
  8483  			s_store_name,
  8484  			s_company_name,
  8485  			d_moy,
  8486  			sum(ss_sales_price) AS sum_sales,
  8487  			avg(sum(ss_sales_price)) OVER (
  8488  				PARTITION BY
  8489  					i_category,
  8490  					i_brand,
  8491  					s_store_name,
  8492  					s_company_name
  8493  			)
  8494  				AS avg_monthly_sales
  8495  		FROM
  8496  			item, store_sales, date_dim, store
  8497  		WHERE
  8498  			ss_item_sk = i_item_sk
  8499  			AND ss_sold_date_sk = d_date_sk
  8500  			AND ss_store_sk = s_store_sk
  8501  			AND d_year IN (2001,)
  8502  			AND (
  8503  					(
  8504  						i_category
  8505  						IN (
  8506  								'Books',
  8507  								'Children',
  8508  								'Electronics'
  8509  							)
  8510  						AND i_class
  8511  							IN (
  8512  									'history',
  8513  									'school-uniforms',
  8514  									'audio'
  8515  								)
  8516  					)
  8517  					OR (
  8518  							i_category
  8519  							IN ('Men', 'Sports', 'Shoes')
  8520  							AND i_class
  8521  								IN (
  8522  										'pants',
  8523  										'tennis',
  8524  										'womens'
  8525  									)
  8526  						)
  8527  				)
  8528  		GROUP BY
  8529  			i_category,
  8530  			i_class,
  8531  			i_brand,
  8532  			s_store_name,
  8533  			s_company_name,
  8534  			d_moy
  8535  	)
  8536  		AS tmp1
  8537  WHERE
  8538  	CASE
  8539  	WHEN (avg_monthly_sales != 0)
  8540  	THEN (
  8541  		abs(sum_sales - avg_monthly_sales)
  8542  		/ avg_monthly_sales
  8543  	)
  8544  	ELSE NULL
  8545  	END
  8546  	> 0.1
  8547  ORDER BY
  8548  	sum_sales - avg_monthly_sales, s_store_name
  8549  LIMIT
  8550  	100;
  8551  `
  8552  
  8553  	query90 = `
  8554  SELECT
  8555  	CAST(amc AS DECIMAL(15,4)) / CAST(pmc AS DECIMAL(15,4))
  8556  		AS am_pm_ratio
  8557  FROM
  8558  	(
  8559  		SELECT
  8560  			count(*) AS amc
  8561  		FROM
  8562  			web_sales,
  8563  			household_demographics,
  8564  			time_dim,
  8565  			web_page
  8566  		WHERE
  8567  			ws_sold_time_sk = time_dim.t_time_sk
  8568  			AND ws_ship_hdemo_sk
  8569  				= household_demographics.hd_demo_sk
  8570  			AND ws_web_page_sk = web_page.wp_web_page_sk
  8571  			AND time_dim.t_hour BETWEEN 12 AND (12 + 1)
  8572  			AND household_demographics.hd_dep_count = 6
  8573  			AND web_page.wp_char_count BETWEEN 5000 AND 5200
  8574  	)
  8575  		AS at,
  8576  	(
  8577  		SELECT
  8578  			count(*) AS pmc
  8579  		FROM
  8580  			web_sales,
  8581  			household_demographics,
  8582  			time_dim,
  8583  			web_page
  8584  		WHERE
  8585  			ws_sold_time_sk = time_dim.t_time_sk
  8586  			AND ws_ship_hdemo_sk
  8587  				= household_demographics.hd_demo_sk
  8588  			AND ws_web_page_sk = web_page.wp_web_page_sk
  8589  			AND time_dim.t_hour BETWEEN 14 AND (14 + 1)
  8590  			AND household_demographics.hd_dep_count = 6
  8591  			AND web_page.wp_char_count BETWEEN 5000 AND 5200
  8592  	)
  8593  		AS pt
  8594  ORDER BY
  8595  	am_pm_ratio
  8596  LIMIT
  8597  	100;
  8598  `
  8599  
  8600  	query91 = `
  8601  SELECT
  8602  	cc_call_center_id AS call_center,
  8603  	cc_name AS call_center_name,
  8604  	cc_manager AS manager,
  8605  	sum(cr_net_loss) AS returns_loss
  8606  FROM
  8607  	call_center,
  8608  	catalog_returns,
  8609  	date_dim,
  8610  	customer,
  8611  	customer_address,
  8612  	customer_demographics,
  8613  	household_demographics
  8614  WHERE
  8615  	cr_call_center_sk = cc_call_center_sk
  8616  	AND cr_returned_date_sk = d_date_sk
  8617  	AND cr_returning_customer_sk = c_customer_sk
  8618  	AND cd_demo_sk = c_current_cdemo_sk
  8619  	AND hd_demo_sk = c_current_hdemo_sk
  8620  	AND ca_address_sk = c_current_addr_sk
  8621  	AND d_year = 2000
  8622  	AND d_moy = 12
  8623  	AND (
  8624  			(
  8625  				cd_marital_status = 'M'
  8626  				AND cd_education_status = 'Unknown'
  8627  			)
  8628  			OR (
  8629  					cd_marital_status = 'W'
  8630  					AND cd_education_status
  8631  						= 'Advanced Degree'
  8632  				)
  8633  		)
  8634  	AND hd_buy_potential LIKE 'Unknown%'
  8635  	AND ca_gmt_offset = -7
  8636  GROUP BY
  8637  	cc_call_center_id,
  8638  	cc_name,
  8639  	cc_manager,
  8640  	cd_marital_status,
  8641  	cd_education_status
  8642  ORDER BY
  8643  	sum(cr_net_loss) DESC;
  8644  `
  8645  
  8646  	// NOTE: I added conversion of 90 days to an interval.
  8647  	query92 = `
  8648  SELECT
  8649  	sum(ws_ext_discount_amt) AS "Excess Discount Amount"
  8650  FROM
  8651  	web_sales, item, date_dim
  8652  WHERE
  8653  	i_manufact_id = 714
  8654  	AND i_item_sk = ws_item_sk
  8655  	AND d_date BETWEEN '2000-02-01' AND (CAST('2000-02-01' AS DATE) + '90 days'::INTERVAL)
  8656  	AND d_date_sk = ws_sold_date_sk
  8657  	AND ws_ext_discount_amt
  8658  		> (
  8659  				SELECT
  8660  					1.3 * avg(ws_ext_discount_amt)
  8661  				FROM
  8662  					web_sales, date_dim
  8663  				WHERE
  8664  					ws_item_sk = i_item_sk
  8665  					AND d_date BETWEEN '2000-02-01' AND (CAST('2000-02-01' AS DATE) + '90 days'::INTERVAL)
  8666  					AND d_date_sk = ws_sold_date_sk
  8667  			)
  8668  ORDER BY
  8669  	sum(ws_ext_discount_amt)
  8670  LIMIT
  8671  	100;
  8672  `
  8673  
  8674  	query93 = `
  8675  SELECT
  8676  	ss_customer_sk, sum(act_sales) AS sumsales
  8677  FROM
  8678  	(
  8679  		SELECT
  8680  			ss_item_sk,
  8681  			ss_ticket_number,
  8682  			ss_customer_sk,
  8683  			CASE
  8684  			WHEN sr_return_quantity IS NOT NULL
  8685  			THEN (ss_quantity - sr_return_quantity)
  8686  			* ss_sales_price
  8687  			ELSE (ss_quantity * ss_sales_price)
  8688  			END
  8689  				AS act_sales
  8690  		FROM
  8691  			store_sales
  8692  			LEFT JOIN store_returns ON
  8693  					sr_item_sk = ss_item_sk
  8694  					AND sr_ticket_number = ss_ticket_number,
  8695  			reason
  8696  		WHERE
  8697  			sr_reason_sk = r_reason_sk
  8698  			AND r_reason_desc = 'reason 58'
  8699  	)
  8700  		AS t
  8701  GROUP BY
  8702  	ss_customer_sk
  8703  ORDER BY
  8704  	sumsales, ss_customer_sk
  8705  LIMIT
  8706  	100;
  8707  `
  8708  
  8709  	// NOTE: I added conversion of 60 days to an interval.
  8710  	query94 = `
  8711  SELECT
  8712  	count(DISTINCT ws_order_number) AS "order count",
  8713  	sum(ws_ext_ship_cost) AS "total shipping cost",
  8714  	sum(ws_net_profit) AS "total net profit"
  8715  FROM
  8716  	web_sales AS ws1, date_dim, customer_address, web_site
  8717  WHERE
  8718  	d_date BETWEEN '2002-5-01' AND (CAST('2002-5-01' AS DATE) + '60 days'::INTERVAL)
  8719  	AND ws1.ws_ship_date_sk = d_date_sk
  8720  	AND ws1.ws_ship_addr_sk = ca_address_sk
  8721  	AND ca_state = 'OK'
  8722  	AND ws1.ws_web_site_sk = web_site_sk
  8723  	AND web_company_name = 'pri'
  8724  	AND EXISTS(
  8725  			SELECT
  8726  				*
  8727  			FROM
  8728  				web_sales AS ws2
  8729  			WHERE
  8730  				ws1.ws_order_number = ws2.ws_order_number
  8731  				AND ws1.ws_warehouse_sk
  8732  					!= ws2.ws_warehouse_sk
  8733  		)
  8734  	AND NOT
  8735  			EXISTS(
  8736  				SELECT
  8737  					*
  8738  				FROM
  8739  					web_returns AS wr1
  8740  				WHERE
  8741  					ws1.ws_order_number
  8742  					= wr1.wr_order_number
  8743  			)
  8744  ORDER BY
  8745  	count(DISTINCT ws_order_number)
  8746  LIMIT
  8747  	100;
  8748  `
  8749  
  8750  	// NOTE: I added conversion of 60 days to an interval.
  8751  	query95 = `
  8752  WITH
  8753  	ws_wh
  8754  		AS (
  8755  			SELECT
  8756  				ws1.ws_order_number,
  8757  				ws1.ws_warehouse_sk AS wh1,
  8758  				ws2.ws_warehouse_sk AS wh2
  8759  			FROM
  8760  				web_sales AS ws1, web_sales AS ws2
  8761  			WHERE
  8762  				ws1.ws_order_number = ws2.ws_order_number
  8763  				AND ws1.ws_warehouse_sk
  8764  					!= ws2.ws_warehouse_sk
  8765  		)
  8766  SELECT
  8767  	count(DISTINCT ws_order_number) AS "order count",
  8768  	sum(ws_ext_ship_cost) AS "total shipping cost",
  8769  	sum(ws_net_profit) AS "total net profit"
  8770  FROM
  8771  	web_sales AS ws1, date_dim, customer_address, web_site
  8772  WHERE
  8773  	d_date BETWEEN '2001-4-01' AND (CAST('2001-4-01' AS DATE) + '60 days'::INTERVAL)
  8774  	AND ws1.ws_ship_date_sk = d_date_sk
  8775  	AND ws1.ws_ship_addr_sk = ca_address_sk
  8776  	AND ca_state = 'VA'
  8777  	AND ws1.ws_web_site_sk = web_site_sk
  8778  	AND web_company_name = 'pri'
  8779  	AND ws1.ws_order_number
  8780  		IN (SELECT ws_order_number FROM ws_wh)
  8781  	AND ws1.ws_order_number
  8782  		IN (
  8783  				SELECT
  8784  					wr_order_number
  8785  				FROM
  8786  					web_returns, ws_wh
  8787  				WHERE
  8788  					wr_order_number = ws_wh.ws_order_number
  8789  			)
  8790  ORDER BY
  8791  	count(DISTINCT ws_order_number)
  8792  LIMIT
  8793  	100;
  8794  `
  8795  
  8796  	query96 = `
  8797  SELECT
  8798  	count(*)
  8799  FROM
  8800  	store_sales, household_demographics, time_dim, store
  8801  WHERE
  8802  	ss_sold_time_sk = time_dim.t_time_sk
  8803  	AND ss_hdemo_sk = household_demographics.hd_demo_sk
  8804  	AND ss_store_sk = s_store_sk
  8805  	AND time_dim.t_hour = 8
  8806  	AND time_dim.t_minute >= 30
  8807  	AND household_demographics.hd_dep_count = 0
  8808  	AND store.s_store_name = 'ese'
  8809  ORDER BY
  8810  	count(*)
  8811  LIMIT
  8812  	100;
  8813  `
  8814  
  8815  	query97 = `
  8816  WITH
  8817  	ssci
  8818  		AS (
  8819  			SELECT
  8820  				ss_customer_sk AS customer_sk,
  8821  				ss_item_sk AS item_sk
  8822  			FROM
  8823  				store_sales, date_dim
  8824  			WHERE
  8825  				ss_sold_date_sk = d_date_sk
  8826  				AND d_month_seq BETWEEN 1199 AND (1199 + 11)
  8827  			GROUP BY
  8828  				ss_customer_sk, ss_item_sk
  8829  		),
  8830  	csci
  8831  		AS (
  8832  			SELECT
  8833  				cs_bill_customer_sk AS customer_sk,
  8834  				cs_item_sk AS item_sk
  8835  			FROM
  8836  				catalog_sales, date_dim
  8837  			WHERE
  8838  				cs_sold_date_sk = d_date_sk
  8839  				AND d_month_seq BETWEEN 1199 AND (1199 + 11)
  8840  			GROUP BY
  8841  				cs_bill_customer_sk, cs_item_sk
  8842  		)
  8843  SELECT
  8844  	sum(
  8845  		CASE
  8846  		WHEN ssci.customer_sk IS NOT NULL
  8847  		AND csci.customer_sk IS NULL
  8848  		THEN 1
  8849  		ELSE 0
  8850  		END
  8851  	)
  8852  		AS store_only,
  8853  	sum(
  8854  		CASE
  8855  		WHEN ssci.customer_sk IS NULL
  8856  		AND csci.customer_sk IS NOT NULL
  8857  		THEN 1
  8858  		ELSE 0
  8859  		END
  8860  	)
  8861  		AS catalog_only,
  8862  	sum(
  8863  		CASE
  8864  		WHEN ssci.customer_sk IS NOT NULL
  8865  		AND csci.customer_sk IS NOT NULL
  8866  		THEN 1
  8867  		ELSE 0
  8868  		END
  8869  	)
  8870  		AS store_and_catalog
  8871  FROM
  8872  	ssci
  8873  	FULL JOIN csci ON
  8874  			ssci.customer_sk = csci.customer_sk
  8875  			AND ssci.item_sk = csci.item_sk
  8876  LIMIT
  8877  	100;
  8878  `
  8879  
  8880  	// NOTE: I added conversion of 30 days to an interval.
  8881  	query98 = `
  8882  SELECT
  8883  	i_item_id,
  8884  	i_item_desc,
  8885  	i_category,
  8886  	i_class,
  8887  	i_current_price,
  8888  	sum(ss_ext_sales_price) AS itemrevenue,
  8889  	sum(ss_ext_sales_price) * 100
  8890  	/ sum(sum(ss_ext_sales_price)) OVER (
  8891  			PARTITION BY i_class
  8892  		)
  8893  		AS revenueratio
  8894  FROM
  8895  	store_sales, item, date_dim
  8896  WHERE
  8897  	ss_item_sk = i_item_sk
  8898  	AND i_category IN ('Men', 'Sports', 'Jewelry')
  8899  	AND ss_sold_date_sk = d_date_sk
  8900  	AND d_date BETWEEN CAST('1999-02-05' AS DATE) AND (CAST('1999-02-05' AS DATE) + '30 days'::INTERVAL)
  8901  GROUP BY
  8902  	i_item_id,
  8903  	i_item_desc,
  8904  	i_category,
  8905  	i_class,
  8906  	i_current_price
  8907  ORDER BY
  8908  	i_category,
  8909  	i_class,
  8910  	i_item_id,
  8911  	i_item_desc,
  8912  	revenueratio;
  8913  `
  8914  
  8915  	query99 = `
  8916  SELECT
  8917  	substr(w_warehouse_name, 1, 20),
  8918  	sm_type,
  8919  	cc_name,
  8920  	sum(
  8921  		CASE
  8922  		WHEN (cs_ship_date_sk - cs_sold_date_sk <= 30)
  8923  		THEN 1
  8924  		ELSE 0
  8925  		END
  8926  	)
  8927  		AS "30 days",
  8928  	sum(
  8929  		CASE
  8930  		WHEN cs_ship_date_sk - cs_sold_date_sk > 30
  8931  		AND cs_ship_date_sk - cs_sold_date_sk <= 60
  8932  		THEN 1
  8933  		ELSE 0
  8934  		END
  8935  	)
  8936  		AS "31-60 days",
  8937  	sum(
  8938  		CASE
  8939  		WHEN cs_ship_date_sk - cs_sold_date_sk > 60
  8940  		AND cs_ship_date_sk - cs_sold_date_sk <= 90
  8941  		THEN 1
  8942  		ELSE 0
  8943  		END
  8944  	)
  8945  		AS "61-90 days",
  8946  	sum(
  8947  		CASE
  8948  		WHEN cs_ship_date_sk - cs_sold_date_sk > 90
  8949  		AND cs_ship_date_sk - cs_sold_date_sk <= 120
  8950  		THEN 1
  8951  		ELSE 0
  8952  		END
  8953  	)
  8954  		AS "91-120 days",
  8955  	sum(
  8956  		CASE
  8957  		WHEN (cs_ship_date_sk - cs_sold_date_sk > 120)
  8958  		THEN 1
  8959  		ELSE 0
  8960  		END
  8961  	)
  8962  		AS ">120 days"
  8963  FROM
  8964  	catalog_sales,
  8965  	warehouse,
  8966  	ship_mode,
  8967  	call_center,
  8968  	date_dim
  8969  WHERE
  8970  	d_month_seq BETWEEN 1194 AND (1194 + 11)
  8971  	AND cs_ship_date_sk = d_date_sk
  8972  	AND cs_warehouse_sk = w_warehouse_sk
  8973  	AND cs_ship_mode_sk = sm_ship_mode_sk
  8974  	AND cs_call_center_sk = cc_call_center_sk
  8975  GROUP BY
  8976  	substr(w_warehouse_name, 1, 20), sm_type, cc_name
  8977  ORDER BY
  8978  	substr(w_warehouse_name, 1, 20), sm_type, cc_name
  8979  LIMIT
  8980  	100;
  8981  `
  8982  )