-
Notifications
You must be signed in to change notification settings - Fork 10
TPCDS Queries
Harish Butani edited this page Nov 22, 2020
·
4 revisions
generated at Sat Nov 21 21:22:43 PST 2020; commit is 6204be5c0f5ff827c1ea318df1cf897484ab5539
[[TOC]]
with customer_total_return as
(select sr_customer_sk as ctr_customer_sk
,sr_store_sk as ctr_store_sk
,sum(SR_RETURN_AMT) as ctr_total_return
from store_returns
,date_dim
where sr_returned_date_sk = d_date_sk
and d_year =2000
group by sr_customer_sk
,sr_store_sk)
select c_customer_id
from customer_total_return ctr1
,store
,customer
where ctr1.ctr_total_return > (select avg(ctr_total_return)*1.2
from customer_total_return ctr2
where ctr1.ctr_store_sk = ctr2.ctr_store_sk)
and s_store_sk = ctr1.ctr_store_sk
and s_state = 'TN'
and ctr1.ctr_customer_sk = c_customer_sk
order by c_customer_id
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [1]: [c_customer_id#279]
OraPlan: 00 OraSingleQueryBlock [c_customer_id#279], [oracolumnref(c_customer_id#279)], orabinaryopexpression((isnotnull(ctr_total_return#200) AND (isnotnull(S_STATE#273) AND (S_STATE#273 = TN))))
01 :- OraSingleQueryBlock [sr_customer_sk#204 AS ctr_customer_sk#198, sr_store_sk#208 AS ctr_store_sk#199, sum(SR_RETURN_AMT#212) AS ctr_total_return#200], [oraalias(sr_customer_sk#204 AS ctr_customer_sk#198), oraalias(sr_store_sk#208 AS ctr_store_sk#199), oraalias(sum(SR_RETURN_AMT#212) AS ctr_total_return#200)], orabinaryopexpression(((isnotnull(SR_STORE_SK#208) AND isnotnull(SR_CUSTOMER_SK#204)) AND (isnotnull(D_YEAR#227) AND (D_YEAR#227 = 2000.000000000000000000)))), List(oracolumnref(sr_customer_sk#204), oracolumnref(sr_store_sk#208))
02 : :- OraTableScan TPCDS.STORE_RETURNS, [SR_CUSTOMER_SK#204, SR_STORE_SK#208, SR_RETURN_AMT#212, SR_RETURNED_DATE_SK#201]
03 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#221, D_YEAR#227]
04 :- OraSingleQueryBlock [(CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#347, ctr_store_sk#199#349], [oracolumnref((CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#347), oracolumnref(ctr_store_sk#199#349)], orapostfixunaryopexpression(isnotnull((CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#347))
05 : +- OraSingleQueryBlock [CheckOverflow((promote_precision(avg(ctr_total_return#200)) * 1.2000000000000000000000), DecimalType(38,20), true) AS (CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#347, ctr_store_sk#199 AS ctr_store_sk#199#349], [oraalias(CheckOverflow((promote_precision(avg(ctr_total_return#200)) * 1.2000000000000000000000), DecimalType(38,20), true) AS (CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#347), oraalias(ctr_store_sk#199 AS ctr_store_sk#199#349)], List(oracolumnref(ctr_store_sk#199))
06 : +- OraSingleQueryBlock [sr_store_sk#304 AS ctr_store_sk#199, sum(SR_RETURN_AMT#308) AS ctr_total_return#200], [oraalias(sr_store_sk#304 AS ctr_store_sk#199), oraalias(sum(SR_RETURN_AMT#308) AS ctr_total_return#200)], orabinaryopexpression((isnotnull(SR_STORE_SK#304) AND (isnotnull(D_YEAR#323) AND (D_YEAR#323 = 2000.000000000000000000)))), List(oracolumnref(sr_customer_sk#300), oracolumnref(sr_store_sk#304))
07 : :- OraTableScan TPCDS.STORE_RETURNS, [SR_CUSTOMER_SK#300, SR_STORE_SK#304, SR_RETURN_AMT#308, SR_RETURNED_DATE_SK#297]
08 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#317, D_YEAR#323]
09 :- OraTableScan TPCDS.STORE, [S_STORE_SK#249, S_STATE#273]
10 +- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#278, C_CUSTOMER_ID#279]
ReadSchema: struct<c_customer_id:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2000.000000000000000000, 2000.000000000000000000, TN
oraPushdownSQL: select "C_CUSTOMER_ID"
from ( select "SR_CUSTOMER_SK" AS "ctr_customer_sk", "SR_STORE_SK" AS "ctr_store_sk", SUM("SR_RETURN_AMT") AS "ctr_total_return"
from TPCDS.STORE_RETURNS join TPCDS.DATE_DIM on ("SR_RETURNED_DATE_SK" = "D_DATE_SK")
where ((("SR_STORE_SK" IS NOT NULL AND "SR_CUSTOMER_SK" IS NOT NULL) AND "SR_RETURNED_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "SR_CUSTOMER_SK", "SR_STORE_SK" ) join ( select "1_sparkora", "2_sparkora"
from ( select (AVG("ctr_total_return") * 1.2000000000000000000000) AS "1_sparkora", "ctr_store_sk" AS "2_sparkora"
from ( select "SR_STORE_SK" AS "ctr_store_sk", SUM("SR_RETURN_AMT") AS "ctr_total_return"
from TPCDS.STORE_RETURNS join TPCDS.DATE_DIM on ("SR_RETURNED_DATE_SK" = "D_DATE_SK")
where (("SR_STORE_SK" IS NOT NULL AND ("SR_RETURNED_DATE_SK" IS NOT NULL AND "SR_RETURNED_DATE_SK" IS NOT NULL)) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "SR_CUSTOMER_SK", "SR_STORE_SK" ) group by "ctr_store_sk" )
where "1_sparkora" IS NOT NULL ) on (("ctr_store_sk" = "2_sparkora") AND ("ctr_total_return" > "1_sparkora")) join TPCDS.STORE on ("ctr_store_sk" = "S_STORE_SK") join TPCDS.CUSTOMER on ("ctr_customer_sk" = "C_CUSTOMER_SK")
where ("ctr_total_return" IS NOT NULL AND ("S_STATE" IS NOT NULL AND ("S_STATE" = ?)))
(2) Project [codegen id : 1]
Output [1]: [c_customer_id#279]
Input [1]: [c_customer_id#279]
(3) TakeOrderedAndProject
Input [1]: [c_customer_id#279]
Arguments: 100, [c_customer_id#279 ASC NULLS FIRST], [c_customer_id#279]
select "C_CUSTOMER_ID"
from ( select "SR_CUSTOMER_SK" AS "ctr_customer_sk", "SR_STORE_SK" AS "ctr_store_sk", SUM("SR_RETURN_AMT") AS "ctr_total_return"
from TPCDS.STORE_RETURNS join TPCDS.DATE_DIM on ("SR_RETURNED_DATE_SK" = "D_DATE_SK")
where ((("SR_STORE_SK" IS NOT NULL AND "SR_CUSTOMER_SK" IS NOT NULL) AND "SR_RETURNED_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2000.000000000000000000))) group by "SR_CUSTOMER_SK", "SR_STORE_SK" ) join ( select "1_sparkora", "2_sparkora"
from ( select (AVG("ctr_total_return") * 1.2000000000000000000000) AS "1_sparkora", "ctr_store_sk" AS "2_sparkora"
from ( select "SR_STORE_SK" AS "ctr_store_sk", SUM("SR_RETURN_AMT") AS "ctr_total_return"
from TPCDS.STORE_RETURNS join TPCDS.DATE_DIM on ("SR_RETURNED_DATE_SK" = "D_DATE_SK")
where (("SR_STORE_SK" IS NOT NULL AND ("SR_RETURNED_DATE_SK" IS NOT NULL AND "SR_RETURNED_DATE_SK" IS NOT NULL)) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2000.000000000000000000))) group by "SR_CUSTOMER_SK", "SR_STORE_SK" ) group by "ctr_store_sk" )
where "1_sparkora" IS NOT NULL ) on (("ctr_store_sk" = "2_sparkora") AND ("ctr_total_return" > "1_sparkora")) join TPCDS.STORE on ("ctr_store_sk" = "S_STORE_SK") join TPCDS.CUSTOMER on ("ctr_customer_sk" = "C_CUSTOMER_SK")
where ("ctr_total_return" IS NOT NULL AND ("S_STATE" IS NOT NULL AND ("S_STATE" = 'TN')))
== Physical Plan ==
TakeOrderedAndProject (43)
+- * Project (42)
+- * SortMergeJoin Inner (41)
:- * Sort (37)
: +- * Project (36)
: +- * SortMergeJoin Inner (35)
: :- * Project (30)
: : +- * SortMergeJoin Inner (29)
: : :- * Sort (13)
: : : +- * Filter (12)
: : : +- * HashAggregate (11)
: : : +- * HashAggregate (10)
: : : +- * Project (9)
: : : +- * SortMergeJoin Inner (8)
: : : :- * Sort (3)
: : : : +- * Filter (2)
: : : : +- BatchScan (1)
: : : +- * Sort (7)
: : : +- * Project (6)
: : : +- * Filter (5)
: : : +- BatchScan (4)
: : +- * Sort (28)
: : +- * Filter (27)
: : +- * HashAggregate (26)
: : +- * HashAggregate (25)
: : +- * HashAggregate (24)
: : +- * HashAggregate (23)
: : +- * Project (22)
: : +- * SortMergeJoin Inner (21)
: : :- * Sort (16)
: : : +- * Filter (15)
: : : +- BatchScan (14)
: : +- * Sort (20)
: : +- * Project (19)
: : +- * Filter (18)
: : +- BatchScan (17)
: +- * Sort (34)
: +- * Project (33)
: +- * Filter (32)
: +- BatchScan (31)
+- * Sort (40)
+- * Project (39)
+- BatchScan (38)
(1) BatchScan
Output [4]: [SR_CUSTOMER_SK#7, SR_STORE_SK#11, SR_RETURN_AMT#15, SR_RETURNED_DATE_SK#4]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_RETURNS, [SR_CUSTOMER_SK#165, SR_STORE_SK#166, SR_RETURN_AMT#167, SR_RETURNED_DATE_SK#168], [oracolumnref(SR_CUSTOMER_SK#165), oracolumnref(SR_STORE_SK#166), oracolumnref(SR_RETURN_AMT#167), oracolumnref(SR_RETURNED_DATE_SK#168)], orabinaryopexpression((isnotnull(SR_STORE_SK#11) AND isnotnull(SR_CUSTOMER_SK#7)))
PartitionSchema: struct<SR_RETURNED_DATE_SK:decimal(38,18)>
ReadSchema: struct<SR_CUSTOMER_SK:decimal(38,18),SR_STORE_SK:decimal(38,18),SR_RETURN_AMT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SR_CUSTOMER_SK", "SR_STORE_SK", "SR_RETURN_AMT", "SR_RETURNED_DATE_SK"
from TPCDS.STORE_RETURNS
where ("SR_STORE_SK" IS NOT NULL AND "SR_CUSTOMER_SK" IS NOT NULL) and "SR_RETURNED_DATE_SK" IS NOT NULL
(2) Filter [codegen id : 1]
Input [4]: [SR_CUSTOMER_SK#7, SR_STORE_SK#11, SR_RETURN_AMT#15, SR_RETURNED_DATE_SK#4]
Condition : (isnotnull(SR_STORE_SK#11) AND isnotnull(SR_CUSTOMER_SK#7))
(3) Sort [codegen id : 1]
Input [4]: [SR_CUSTOMER_SK#7, SR_STORE_SK#11, SR_RETURN_AMT#15, SR_RETURNED_DATE_SK#4]
Arguments: [sr_returned_date_sk#4 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [2]: [D_DATE_SK#24, D_YEAR#30]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#173, D_YEAR#174], [oracolumnref(D_DATE_SK#173), oracolumnref(D_YEAR#174)], orabinaryopexpression((isnotnull(D_YEAR#30) AND (D_YEAR#30 = 2000.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2000.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(5) Filter [codegen id : 2]
Input [2]: [D_DATE_SK#24, D_YEAR#30]
Condition : (isnotnull(D_YEAR#30) AND (D_YEAR#30 = 2000.000000000000000000))
(6) Project [codegen id : 2]
Output [1]: [D_DATE_SK#24]
Input [2]: [D_DATE_SK#24, D_YEAR#30]
(7) Sort [codegen id : 2]
Input [1]: [D_DATE_SK#24]
Arguments: [d_date_sk#24 ASC NULLS FIRST], false, 0
(8) SortMergeJoin [codegen id : 3]
Left keys [1]: [sr_returned_date_sk#4]
Right keys [1]: [d_date_sk#24]
Join condition: None
(9) Project [codegen id : 3]
Output [3]: [SR_CUSTOMER_SK#7, SR_STORE_SK#11, SR_RETURN_AMT#15]
Input [5]: [SR_CUSTOMER_SK#7, SR_STORE_SK#11, SR_RETURN_AMT#15, SR_RETURNED_DATE_SK#4, D_DATE_SK#24]
(10) HashAggregate [codegen id : 3]
Input [3]: [SR_CUSTOMER_SK#7, SR_STORE_SK#11, SR_RETURN_AMT#15]
Keys [2]: [sr_customer_sk#7, sr_store_sk#11]
Functions [1]: [partial_sum(SR_RETURN_AMT#15)]
Aggregate Attributes [2]: [sum#185, isEmpty#186]
Results [4]: [sr_customer_sk#7, sr_store_sk#11, sum#187, isEmpty#188]
(11) HashAggregate [codegen id : 3]
Input [4]: [sr_customer_sk#7, sr_store_sk#11, sum#187, isEmpty#188]
Keys [2]: [sr_customer_sk#7, sr_store_sk#11]
Functions [1]: [sum(SR_RETURN_AMT#15)]
Aggregate Attributes [1]: [sum(SR_RETURN_AMT#15)#99]
Results [3]: [sr_customer_sk#7 AS ctr_customer_sk#1, sr_store_sk#11 AS ctr_store_sk#2, sum(SR_RETURN_AMT#15)#99 AS ctr_total_return#3]
(12) Filter [codegen id : 3]
Input [3]: [ctr_customer_sk#1, ctr_store_sk#2, ctr_total_return#3]
Condition : isnotnull(ctr_total_return#3)
(13) Sort [codegen id : 3]
Input [3]: [ctr_customer_sk#1, ctr_store_sk#2, ctr_total_return#3]
Arguments: [ctr_store_sk#2 ASC NULLS FIRST], false, 0
(14) BatchScan
Output [4]: [SR_CUSTOMER_SK#103, SR_STORE_SK#107, SR_RETURN_AMT#111, SR_RETURNED_DATE_SK#100]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_RETURNS, [SR_CUSTOMER_SK#153, SR_STORE_SK#154, SR_RETURN_AMT#155, SR_RETURNED_DATE_SK#156], [oracolumnref(SR_CUSTOMER_SK#153), oracolumnref(SR_STORE_SK#154), oracolumnref(SR_RETURN_AMT#155), oracolumnref(SR_RETURNED_DATE_SK#156)], orapostfixunaryopexpression(isnotnull(SR_STORE_SK#107))
PartitionSchema: struct<SR_RETURNED_DATE_SK:decimal(38,18)>
ReadSchema: struct<SR_CUSTOMER_SK:decimal(38,18),SR_STORE_SK:decimal(38,18),SR_RETURN_AMT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SR_CUSTOMER_SK", "SR_STORE_SK", "SR_RETURN_AMT", "SR_RETURNED_DATE_SK"
from TPCDS.STORE_RETURNS
where "SR_STORE_SK" IS NOT NULL and ("SR_RETURNED_DATE_SK" IS NOT NULL AND "SR_RETURNED_DATE_SK" IS NOT NULL)
(15) Filter [codegen id : 4]
Input [4]: [SR_CUSTOMER_SK#103, SR_STORE_SK#107, SR_RETURN_AMT#111, SR_RETURNED_DATE_SK#100]
Condition : isnotnull(sr_store_sk#107)
(16) Sort [codegen id : 4]
Input [4]: [SR_CUSTOMER_SK#103, SR_STORE_SK#107, SR_RETURN_AMT#111, SR_RETURNED_DATE_SK#100]
Arguments: [sr_returned_date_sk#100 ASC NULLS FIRST], false, 0
(17) BatchScan
Output [2]: [D_DATE_SK#120, D_YEAR#126]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#161, D_YEAR#162], [oracolumnref(D_DATE_SK#161), oracolumnref(D_YEAR#162)], orabinaryopexpression((isnotnull(D_YEAR#126) AND (D_YEAR#126 = 2000.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2000.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(18) Filter [codegen id : 5]
Input [2]: [D_DATE_SK#120, D_YEAR#126]
Condition : (isnotnull(D_YEAR#126) AND (D_YEAR#126 = 2000.000000000000000000))
(19) Project [codegen id : 5]
Output [1]: [D_DATE_SK#120]
Input [2]: [D_DATE_SK#120, D_YEAR#126]
(20) Sort [codegen id : 5]
Input [1]: [D_DATE_SK#120]
Arguments: [d_date_sk#120 ASC NULLS FIRST], false, 0
(21) SortMergeJoin [codegen id : 6]
Left keys [1]: [sr_returned_date_sk#100]
Right keys [1]: [d_date_sk#120]
Join condition: None
(22) Project [codegen id : 6]
Output [3]: [SR_CUSTOMER_SK#103, SR_STORE_SK#107, SR_RETURN_AMT#111]
Input [5]: [SR_CUSTOMER_SK#103, SR_STORE_SK#107, SR_RETURN_AMT#111, SR_RETURNED_DATE_SK#100, D_DATE_SK#120]
(23) HashAggregate [codegen id : 6]
Input [3]: [SR_CUSTOMER_SK#103, SR_STORE_SK#107, SR_RETURN_AMT#111]
Keys [2]: [sr_customer_sk#103, sr_store_sk#107]
Functions [1]: [partial_sum(SR_RETURN_AMT#111)]
Aggregate Attributes [2]: [sum#193, isEmpty#194]
Results [4]: [sr_customer_sk#103, sr_store_sk#107, sum#195, isEmpty#196]
(24) HashAggregate [codegen id : 6]
Input [4]: [sr_customer_sk#103, sr_store_sk#107, sum#195, isEmpty#196]
Keys [2]: [sr_customer_sk#103, sr_store_sk#107]
Functions [1]: [sum(SR_RETURN_AMT#111)]
Aggregate Attributes [1]: [sum(SR_RETURN_AMT#111)#148]
Results [2]: [sr_store_sk#107 AS ctr_store_sk#2, sum(SR_RETURN_AMT#111)#148 AS ctr_total_return#3]
(25) HashAggregate [codegen id : 6]
Input [2]: [ctr_store_sk#2, ctr_total_return#3]
Keys [1]: [ctr_store_sk#2]
Functions [1]: [partial_avg(ctr_total_return#3)]
Aggregate Attributes [2]: [sum#189, count#190L]
Results [3]: [ctr_store_sk#2, sum#191, count#192L]
(26) HashAggregate [codegen id : 6]
Input [3]: [ctr_store_sk#2, sum#191, count#192L]
Keys [1]: [ctr_store_sk#2]
Functions [1]: [avg(ctr_total_return#3)]
Aggregate Attributes [1]: [avg(ctr_total_return#3)#149]
Results [2]: [CheckOverflow((promote_precision(avg(ctr_total_return#3)#149) * 1.2000000000000000000000), DecimalType(38,20), true) AS (CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#150, ctr_store_sk#2 AS ctr_store_sk#2#152]
(27) Filter [codegen id : 6]
Input [2]: [(CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#150, ctr_store_sk#2#152]
Condition : isnotnull((CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#150)
(28) Sort [codegen id : 6]
Input [2]: [(CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#150, ctr_store_sk#2#152]
Arguments: [ctr_store_sk#2#152 ASC NULLS FIRST], false, 0
(29) SortMergeJoin [codegen id : 7]
Left keys [1]: [ctr_store_sk#2]
Right keys [1]: [ctr_store_sk#2#152]
Join condition: (cast(ctr_total_return#3 as decimal(38,20)) > (CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#150)
(30) Project [codegen id : 7]
Output [2]: [ctr_customer_sk#1, ctr_store_sk#2]
Input [5]: [ctr_customer_sk#1, ctr_store_sk#2, ctr_total_return#3, (CAST(avg(ctr_total_return) AS DECIMAL(38,22)) * CAST(1.2 AS DECIMAL(38,22)))#150, ctr_store_sk#2#152]
(31) BatchScan
Output [2]: [S_STORE_SK#52, S_STATE#76]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE, [S_STORE_SK#177, S_STATE#178], [oracolumnref(S_STORE_SK#177), oracolumnref(S_STATE#178)], orabinaryopexpression((isnotnull(S_STATE#76) AND (S_STATE#76 = TN)))
PartitionSchema: struct<>
ReadSchema: struct<S_STORE_SK:decimal(38,18),S_STATE:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: TN
oraPushdownSQL: select "S_STORE_SK", "S_STATE"
from TPCDS.STORE
where ("S_STATE" IS NOT NULL AND ("S_STATE" = ?))
(32) Filter [codegen id : 8]
Input [2]: [S_STORE_SK#52, S_STATE#76]
Condition : (isnotnull(S_STATE#76) AND (S_STATE#76 = TN))
(33) Project [codegen id : 8]
Output [1]: [S_STORE_SK#52]
Input [2]: [S_STORE_SK#52, S_STATE#76]
(34) Sort [codegen id : 8]
Input [1]: [S_STORE_SK#52]
Arguments: [s_store_sk#52 ASC NULLS FIRST], false, 0
(35) SortMergeJoin [codegen id : 9]
Left keys [1]: [ctr_store_sk#2]
Right keys [1]: [s_store_sk#52]
Join condition: None
(36) Project [codegen id : 9]
Output [1]: [ctr_customer_sk#1]
Input [3]: [ctr_customer_sk#1, ctr_store_sk#2, S_STORE_SK#52]
(37) Sort [codegen id : 9]
Input [1]: [ctr_customer_sk#1]
Arguments: [ctr_customer_sk#1 ASC NULLS FIRST], false, 0
(38) BatchScan
Output [2]: [C_CUSTOMER_SK#81, C_CUSTOMER_ID#82]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#181, C_CUSTOMER_ID#182], [oracolumnref(C_CUSTOMER_SK#181), oracolumnref(C_CUSTOMER_ID#182)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID"
from TPCDS.CUSTOMER
(39) Project [codegen id : 10]
Output [2]: [C_CUSTOMER_SK#81, C_CUSTOMER_ID#82]
Input [2]: [C_CUSTOMER_SK#81, C_CUSTOMER_ID#82]
(40) Sort [codegen id : 10]
Input [2]: [C_CUSTOMER_SK#81, C_CUSTOMER_ID#82]
Arguments: [c_customer_sk#81 ASC NULLS FIRST], false, 0
(41) SortMergeJoin [codegen id : 11]
Left keys [1]: [ctr_customer_sk#1]
Right keys [1]: [c_customer_sk#81]
Join condition: None
(42) Project [codegen id : 11]
Output [1]: [c_customer_id#82]
Input [3]: [ctr_customer_sk#1, C_CUSTOMER_SK#81, C_CUSTOMER_ID#82]
(43) TakeOrderedAndProject
Input [1]: [c_customer_id#82]
Arguments: 100, [c_customer_id#82 ASC NULLS FIRST], [c_customer_id#82]
with wscs as
(select sold_date_sk
,sales_price
from (select ws_sold_date_sk sold_date_sk
,ws_ext_sales_price sales_price
from web_sales
union all
select cs_sold_date_sk sold_date_sk
,cs_ext_sales_price sales_price
from catalog_sales) x ),
wswscs as
(select d_week_seq,
sum(case when (d_day_name='Sunday') then sales_price else null end) sun_sales,
sum(case when (d_day_name='Monday') then sales_price else null end) mon_sales,
sum(case when (d_day_name='Tuesday') then sales_price else null end) tue_sales,
sum(case when (d_day_name='Wednesday') then sales_price else null end) wed_sales,
sum(case when (d_day_name='Thursday') then sales_price else null end) thu_sales,
sum(case when (d_day_name='Friday') then sales_price else null end) fri_sales,
sum(case when (d_day_name='Saturday') then sales_price else null end) sat_sales
from wscs
,date_dim
where d_date_sk = sold_date_sk
group by d_week_seq)
select d_week_seq1
,round(sun_sales1/sun_sales2,2)
,round(mon_sales1/mon_sales2,2)
,round(tue_sales1/tue_sales2,2)
,round(wed_sales1/wed_sales2,2)
,round(thu_sales1/thu_sales2,2)
,round(fri_sales1/fri_sales2,2)
,round(sat_sales1/sat_sales2,2)
from
(select wswscs.d_week_seq d_week_seq1
,sun_sales sun_sales1
,mon_sales mon_sales1
,tue_sales tue_sales1
,wed_sales wed_sales1
,thu_sales thu_sales1
,fri_sales fri_sales1
,sat_sales sat_sales1
from wswscs,date_dim
where date_dim.d_week_seq = wswscs.d_week_seq and
d_year = 2001) y,
(select wswscs.d_week_seq d_week_seq2
,sun_sales sun_sales2
,mon_sales mon_sales2
,tue_sales tue_sales2
,wed_sales wed_sales2
,thu_sales thu_sales2
,fri_sales fri_sales2
,sat_sales sat_sales2
from wswscs
,date_dim
where date_dim.d_week_seq = wswscs.d_week_seq and
d_year = 2001+1) z
where d_week_seq1=d_week_seq2-53
order by d_week_seq1;
== Physical Plan ==
* Sort (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [16]: [d_week_seq1#806, sun_sales1#807, mon_sales1#808, tue_sales1#809, wed_sales1#810, thu_sales1#811, fri_sales1#812, sat_sales1#813, d_week_seq2#814, sun_sales2#815, mon_sales2#816, tue_sales2#817, wed_sales2#818, thu_sales2#819, fri_sales2#820, sat_sales2#821]
OraPlan: 00 OraSingleQueryBlock [d_week_seq1#806, sun_sales1#807, mon_sales1#808, tue_sales1#809, wed_sales1#810, thu_sales1#811, fri_sales1#812, sat_sales1#813, d_week_seq2#814, sun_sales2#815, mon_sales2#816, tue_sales2#817, wed_sales2#818, thu_sales2#819, fri_sales2#820, sat_sales2#821], [oracolumnref(d_week_seq1#806), oracolumnref(sun_sales1#807), oracolumnref(mon_sales1#808), oracolumnref(tue_sales1#809), oracolumnref(wed_sales1#810), oracolumnref(thu_sales1#811), oracolumnref(fri_sales1#812), oracolumnref(sat_sales1#813), oracolumnref(d_week_seq2#814), oracolumnref(sun_sales2#815), oracolumnref(mon_sales2#816), oracolumnref(tue_sales2#817), oracolumnref(wed_sales2#818), oracolumnref(thu_sales2#819), oracolumnref(fri_sales2#820), oracolumnref(sat_sales2#821)]
01 :- OraSingleQueryBlock [d_week_seq#905 AS d_week_seq1#806, sun_sales#826 AS sun_sales1#807, mon_sales#827 AS mon_sales1#808, tue_sales#828 AS tue_sales1#809, wed_sales#829 AS wed_sales1#810, thu_sales#830 AS thu_sales1#811, fri_sales#831 AS fri_sales1#812, sat_sales#832 AS sat_sales1#813], [oraalias(d_week_seq#905 AS d_week_seq1#806), oraalias(sun_sales#826 AS sun_sales1#807), oraalias(mon_sales#827 AS mon_sales1#808), oraalias(tue_sales#828 AS tue_sales1#809), oraalias(wed_sales#829 AS wed_sales1#810), oraalias(thu_sales#830 AS thu_sales1#811), oraalias(fri_sales#831 AS fri_sales1#812), oraalias(sat_sales#832 AS sat_sales1#813)], orabinaryopexpression(((isnotnull(D_YEAR#935) AND (D_YEAR#935 = 2001.000000000000000000)) AND isnotnull(D_WEEK_SEQ#933)))
02 : :- OraSingleQueryBlock [d_week_seq#905, sum(CASE WHEN (d_day_name#915 = Sunday) THEN sales_price#823 ELSE null END) AS sun_sales#826, sum(CASE WHEN (d_day_name#915 = Monday) THEN sales_price#823 ELSE null END) AS mon_sales#827, sum(CASE WHEN (d_day_name#915 = Tuesday) THEN sales_price#823 ELSE null END) AS tue_sales#828, sum(CASE WHEN (d_day_name#915 = Wednesday) THEN sales_price#823 ELSE null END) AS wed_sales#829, sum(CASE WHEN (d_day_name#915 = Thursday) THEN sales_price#823 ELSE null END) AS thu_sales#830, sum(CASE WHEN (d_day_name#915 = Friday) THEN sales_price#823 ELSE null END) AS fri_sales#831, sum(CASE WHEN (d_day_name#915 = Saturday) THEN sales_price#823 ELSE null END) AS sat_sales#832], [oracolumnref(d_week_seq#905), oraalias(sum(CASE WHEN (d_day_name#915 = Sunday) THEN sales_price#823 ELSE null END) AS sun_sales#826), oraalias(sum(CASE WHEN (d_day_name#915 = Monday) THEN sales_price#823 ELSE null END) AS mon_sales#827), oraalias(sum(CASE WHEN (d_day_name#915 = Tuesday) THEN sales_price#823 ELSE null END) AS tue_sales#828), oraalias(sum(CASE WHEN (d_day_name#915 = Wednesday) THEN sales_price#823 ELSE null END) AS wed_sales#829), oraalias(sum(CASE WHEN (d_day_name#915 = Thursday) THEN sales_price#823 ELSE null END) AS thu_sales#830), oraalias(sum(CASE WHEN (d_day_name#915 = Friday) THEN sales_price#823 ELSE null END) AS fri_sales#831), oraalias(sum(CASE WHEN (d_day_name#915 = Saturday) THEN sales_price#823 ELSE null END) AS sat_sales#832)], orapostfixunaryopexpression(isnotnull(D_WEEK_SEQ#905)), List(oracolumnref(d_week_seq#905))
03 : : :- OraCompositeQueryBlock Union false, false, [sold_date_sk#822, sales_price#823], SQLSnippet(value: UNION ALL, parameters: ArrayBuffer())
04 : : : :- OraSingleQueryBlock [WS_SOLD_DATE_SK#833 AS sold_date_sk#822, WS_EXT_SALES_PRICE#856 AS sales_price#823], [oraalias(WS_SOLD_DATE_SK#833 AS sold_date_sk#822), oraalias(WS_EXT_SALES_PRICE#856 AS sales_price#823)], orapostfixunaryopexpression(isnotnull(WS_SOLD_DATE_SK#833))
05 : : : : +- OraTableScan TPCDS.WEB_SALES, [WS_EXT_SALES_PRICE#856, WS_SOLD_DATE_SK#833]
06 : : : +- OraSingleQueryBlock [CS_SOLD_DATE_SK#867 AS sold_date_sk#824, CS_EXT_SALES_PRICE#890 AS sales_price#825], [oraalias(CS_SOLD_DATE_SK#867 AS sold_date_sk#824), oraalias(CS_EXT_SALES_PRICE#890 AS sales_price#825)], orapostfixunaryopexpression(isnotnull(CS_SOLD_DATE_SK#867))
07 : : : +- OraTableScan TPCDS.CATALOG_SALES, [CS_EXT_SALES_PRICE#890, CS_SOLD_DATE_SK#867]
08 : : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#901, D_WEEK_SEQ#905, D_DAY_NAME#915]
09 : +- OraTableScan TPCDS.DATE_DIM, [D_WEEK_SEQ#933, D_YEAR#935]
10 +- OraSingleQueryBlock [d_week_seq#1029 AS d_week_seq2#814, sun_sales#826 AS sun_sales2#815, mon_sales#827 AS mon_sales2#816, tue_sales#828 AS tue_sales2#817, wed_sales#829 AS wed_sales2#818, thu_sales#830 AS thu_sales2#819, fri_sales#831 AS fri_sales2#820, sat_sales#832 AS sat_sales2#821], [oraalias(d_week_seq#1029 AS d_week_seq2#814), oraalias(sun_sales#826 AS sun_sales2#815), oraalias(mon_sales#827 AS mon_sales2#816), oraalias(tue_sales#828 AS tue_sales2#817), oraalias(wed_sales#829 AS wed_sales2#818), oraalias(thu_sales#830 AS thu_sales2#819), oraalias(fri_sales#831 AS fri_sales2#820), oraalias(sat_sales#832 AS sat_sales2#821)], orabinaryopexpression(((isnotnull(D_YEAR#1059) AND (D_YEAR#1059 = 2002.000000000000000000)) AND isnotnull(D_WEEK_SEQ#1057)))
11 :- OraSingleQueryBlock [d_week_seq#1029, sum(CASE WHEN (d_day_name#1039 = Sunday) THEN sales_price#823 ELSE null END) AS sun_sales#826, sum(CASE WHEN (d_day_name#1039 = Monday) THEN sales_price#823 ELSE null END) AS mon_sales#827, sum(CASE WHEN (d_day_name#1039 = Tuesday) THEN sales_price#823 ELSE null END) AS tue_sales#828, sum(CASE WHEN (d_day_name#1039 = Wednesday) THEN sales_price#823 ELSE null END) AS wed_sales#829, sum(CASE WHEN (d_day_name#1039 = Thursday) THEN sales_price#823 ELSE null END) AS thu_sales#830, sum(CASE WHEN (d_day_name#1039 = Friday) THEN sales_price#823 ELSE null END) AS fri_sales#831, sum(CASE WHEN (d_day_name#1039 = Saturday) THEN sales_price#823 ELSE null END) AS sat_sales#832], [oracolumnref(d_week_seq#1029), oraalias(sum(CASE WHEN (d_day_name#1039 = Sunday) THEN sales_price#823 ELSE null END) AS sun_sales#826), oraalias(sum(CASE WHEN (d_day_name#1039 = Monday) THEN sales_price#823 ELSE null END) AS mon_sales#827), oraalias(sum(CASE WHEN (d_day_name#1039 = Tuesday) THEN sales_price#823 ELSE null END) AS tue_sales#828), oraalias(sum(CASE WHEN (d_day_name#1039 = Wednesday) THEN sales_price#823 ELSE null END) AS wed_sales#829), oraalias(sum(CASE WHEN (d_day_name#1039 = Thursday) THEN sales_price#823 ELSE null END) AS thu_sales#830), oraalias(sum(CASE WHEN (d_day_name#1039 = Friday) THEN sales_price#823 ELSE null END) AS fri_sales#831), oraalias(sum(CASE WHEN (d_day_name#1039 = Saturday) THEN sales_price#823 ELSE null END) AS sat_sales#832)], orapostfixunaryopexpression(isnotnull(D_WEEK_SEQ#1029)), List(oracolumnref(d_week_seq#1029))
12 : :- OraCompositeQueryBlock Union false, false, [sold_date_sk#822, sales_price#823], SQLSnippet(value: UNION ALL, parameters: ArrayBuffer())
13 : : :- OraSingleQueryBlock [WS_SOLD_DATE_SK#957 AS sold_date_sk#822, WS_EXT_SALES_PRICE#980 AS sales_price#823], [oraalias(WS_SOLD_DATE_SK#957 AS sold_date_sk#822), oraalias(WS_EXT_SALES_PRICE#980 AS sales_price#823)], orapostfixunaryopexpression(isnotnull(WS_SOLD_DATE_SK#957))
14 : : : +- OraTableScan TPCDS.WEB_SALES, [WS_EXT_SALES_PRICE#980, WS_SOLD_DATE_SK#957]
15 : : +- OraSingleQueryBlock [CS_SOLD_DATE_SK#991 AS sold_date_sk#824, CS_EXT_SALES_PRICE#1014 AS sales_price#825], [oraalias(CS_SOLD_DATE_SK#991 AS sold_date_sk#824), oraalias(CS_EXT_SALES_PRICE#1014 AS sales_price#825)], orapostfixunaryopexpression(isnotnull(CS_SOLD_DATE_SK#991))
16 : : +- OraTableScan TPCDS.CATALOG_SALES, [CS_EXT_SALES_PRICE#1014, CS_SOLD_DATE_SK#991]
17 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#1025, D_WEEK_SEQ#1029, D_DAY_NAME#1039]
18 +- OraTableScan TPCDS.DATE_DIM, [D_WEEK_SEQ#1057, D_YEAR#1059]
ReadSchema: struct<d_week_seq1:decimal(38,18),sun_sales1:decimal(38,18),mon_sales1:decimal(38,18),tue_sales1:decimal(38,18),wed_sales1:decimal(38,18),thu_sales1:decimal(38,18),fri_sales1:decimal(38,18),sat_sales1:decimal(38,18),d_week_seq2:decimal(38,18),sun_sales2:decimal(38,18),mon_sales2:decimal(38,18),tue_sales2:decimal(38,18),wed_sales2:decimal(38,18),thu_sales2:decimal(38,18),fri_sales2:decimal(38,18),sat_sales2:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000, 2002.000000000000000000
oraPushdownSQL: select "d_week_seq1", "sun_sales1", "mon_sales1", "tue_sales1", "wed_sales1", "thu_sales1", "fri_sales1", "sat_sales1", "d_week_seq2", "sun_sales2", "mon_sales2", "tue_sales2", "wed_sales2", "thu_sales2", "fri_sales2", "sat_sales2"
from ( select "sparkora_0"."D_WEEK_SEQ" AS "d_week_seq1", "sun_sales" AS "sun_sales1", "mon_sales" AS "mon_sales1", "tue_sales" AS "tue_sales1", "wed_sales" AS "wed_sales1", "thu_sales" AS "thu_sales1", "fri_sales" AS "fri_sales1", "sat_sales" AS "sat_sales1"
from ( select "D_WEEK_SEQ", SUM(CASE WHEN ("D_DAY_NAME" = 'Sunday') THEN "sales_price" ELSE null END) AS "sun_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Monday') THEN "sales_price" ELSE null END) AS "mon_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Tuesday') THEN "sales_price" ELSE null END) AS "tue_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Wednesday') THEN "sales_price" ELSE null END) AS "wed_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Thursday') THEN "sales_price" ELSE null END) AS "thu_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Friday') THEN "sales_price" ELSE null END) AS "fri_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Saturday') THEN "sales_price" ELSE null END) AS "sat_sales"
from ( select "WS_SOLD_DATE_SK" AS "sold_date_sk", "WS_EXT_SALES_PRICE" AS "sales_price"
from TPCDS.WEB_SALES
where "WS_SOLD_DATE_SK" IS NOT NULL UNION ALL select "CS_SOLD_DATE_SK" AS "sold_date_sk", "CS_EXT_SALES_PRICE" AS "sales_price"
from TPCDS.CATALOG_SALES
where "CS_SOLD_DATE_SK" IS NOT NULL ) join TPCDS.DATE_DIM on ("sold_date_sk" = "D_DATE_SK")
where "D_WEEK_SEQ" IS NOT NULL group by "D_WEEK_SEQ" ) "sparkora_0" join TPCDS.DATE_DIM "sparkora_1" on ("sparkora_0"."D_WEEK_SEQ" = "sparkora_1"."D_WEEK_SEQ")
where (("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?)) AND "sparkora_1"."D_WEEK_SEQ" IS NOT NULL) ) join ( select "sparkora_0"."D_WEEK_SEQ" AS "d_week_seq2", "sun_sales" AS "sun_sales2", "mon_sales" AS "mon_sales2", "tue_sales" AS "tue_sales2", "wed_sales" AS "wed_sales2", "thu_sales" AS "thu_sales2", "fri_sales" AS "fri_sales2", "sat_sales" AS "sat_sales2"
from ( select "D_WEEK_SEQ", SUM(CASE WHEN ("D_DAY_NAME" = 'Sunday') THEN "sales_price" ELSE null END) AS "sun_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Monday') THEN "sales_price" ELSE null END) AS "mon_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Tuesday') THEN "sales_price" ELSE null END) AS "tue_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Wednesday') THEN "sales_price" ELSE null END) AS "wed_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Thursday') THEN "sales_price" ELSE null END) AS "thu_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Friday') THEN "sales_price" ELSE null END) AS "fri_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Saturday') THEN "sales_price" ELSE null END) AS "sat_sales"
from ( select "WS_SOLD_DATE_SK" AS "sold_date_sk", "WS_EXT_SALES_PRICE" AS "sales_price"
from TPCDS.WEB_SALES
where "WS_SOLD_DATE_SK" IS NOT NULL UNION ALL select "CS_SOLD_DATE_SK" AS "sold_date_sk", "CS_EXT_SALES_PRICE" AS "sales_price"
from TPCDS.CATALOG_SALES
where "CS_SOLD_DATE_SK" IS NOT NULL ) join TPCDS.DATE_DIM on ("sold_date_sk" = "D_DATE_SK")
where "D_WEEK_SEQ" IS NOT NULL group by "D_WEEK_SEQ" ) "sparkora_0" join TPCDS.DATE_DIM "sparkora_1" on ("sparkora_0"."D_WEEK_SEQ" = "sparkora_1"."D_WEEK_SEQ")
where (("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?)) AND "sparkora_1"."D_WEEK_SEQ" IS NOT NULL) ) on ("d_week_seq1" = ("d_week_seq2" - 53.00000000000000000))
(2) Project [codegen id : 1]
Output [8]: [d_week_seq1#806, round(CheckOverflow((promote_precision(sun_sales1#807) / promote_precision(sun_sales2#815)), DecimalType(38,6), true), 2) AS round((sun_sales1 / sun_sales2), 2)#1095, round(CheckOverflow((promote_precision(mon_sales1#808) / promote_precision(mon_sales2#816)), DecimalType(38,6), true), 2) AS round((mon_sales1 / mon_sales2), 2)#1096, round(CheckOverflow((promote_precision(tue_sales1#809) / promote_precision(tue_sales2#817)), DecimalType(38,6), true), 2) AS round((tue_sales1 / tue_sales2), 2)#1097, round(CheckOverflow((promote_precision(wed_sales1#810) / promote_precision(wed_sales2#818)), DecimalType(38,6), true), 2) AS round((wed_sales1 / wed_sales2), 2)#1098, round(CheckOverflow((promote_precision(thu_sales1#811) / promote_precision(thu_sales2#819)), DecimalType(38,6), true), 2) AS round((thu_sales1 / thu_sales2), 2)#1099, round(CheckOverflow((promote_precision(fri_sales1#812) / promote_precision(fri_sales2#820)), DecimalType(38,6), true), 2) AS round((fri_sales1 / fri_sales2), 2)#1100, round(CheckOverflow((promote_precision(sat_sales1#813) / promote_precision(sat_sales2#821)), DecimalType(38,6), true), 2) AS round((sat_sales1 / sat_sales2), 2)#1101]
Input [16]: [d_week_seq1#806, sun_sales1#807, mon_sales1#808, tue_sales1#809, wed_sales1#810, thu_sales1#811, fri_sales1#812, sat_sales1#813, d_week_seq2#814, sun_sales2#815, mon_sales2#816, tue_sales2#817, wed_sales2#818, thu_sales2#819, fri_sales2#820, sat_sales2#821]
(3) Sort [codegen id : 1]
Input [8]: [d_week_seq1#806, round((sun_sales1 / sun_sales2), 2)#1095, round((mon_sales1 / mon_sales2), 2)#1096, round((tue_sales1 / tue_sales2), 2)#1097, round((wed_sales1 / wed_sales2), 2)#1098, round((thu_sales1 / thu_sales2), 2)#1099, round((fri_sales1 / fri_sales2), 2)#1100, round((sat_sales1 / sat_sales2), 2)#1101]
Arguments: [d_week_seq1#806 ASC NULLS FIRST], true, 0
select "d_week_seq1", "sun_sales1", "mon_sales1", "tue_sales1", "wed_sales1", "thu_sales1", "fri_sales1", "sat_sales1", "d_week_seq2", "sun_sales2", "mon_sales2", "tue_sales2", "wed_sales2", "thu_sales2", "fri_sales2", "sat_sales2"
from ( select "sparkora_0"."D_WEEK_SEQ" AS "d_week_seq1", "sun_sales" AS "sun_sales1", "mon_sales" AS "mon_sales1", "tue_sales" AS "tue_sales1", "wed_sales" AS "wed_sales1", "thu_sales" AS "thu_sales1", "fri_sales" AS "fri_sales1", "sat_sales" AS "sat_sales1"
from ( select "D_WEEK_SEQ", SUM(CASE WHEN ("D_DAY_NAME" = 'Sunday') THEN "sales_price" ELSE null END) AS "sun_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Monday') THEN "sales_price" ELSE null END) AS "mon_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Tuesday') THEN "sales_price" ELSE null END) AS "tue_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Wednesday') THEN "sales_price" ELSE null END) AS "wed_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Thursday') THEN "sales_price" ELSE null END) AS "thu_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Friday') THEN "sales_price" ELSE null END) AS "fri_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Saturday') THEN "sales_price" ELSE null END) AS "sat_sales"
from ( select "WS_SOLD_DATE_SK" AS "sold_date_sk", "WS_EXT_SALES_PRICE" AS "sales_price"
from TPCDS.WEB_SALES
where "WS_SOLD_DATE_SK" IS NOT NULL UNION ALL select "CS_SOLD_DATE_SK" AS "sold_date_sk", "CS_EXT_SALES_PRICE" AS "sales_price"
from TPCDS.CATALOG_SALES
where "CS_SOLD_DATE_SK" IS NOT NULL ) join TPCDS.DATE_DIM on ("sold_date_sk" = "D_DATE_SK")
where "D_WEEK_SEQ" IS NOT NULL group by "D_WEEK_SEQ" ) "sparkora_0" join TPCDS.DATE_DIM "sparkora_1" on ("sparkora_0"."D_WEEK_SEQ" = "sparkora_1"."D_WEEK_SEQ")
where (("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2001.000000000000000000)) AND "sparkora_1"."D_WEEK_SEQ" IS NOT NULL) ) join ( select "sparkora_0"."D_WEEK_SEQ" AS "d_week_seq2", "sun_sales" AS "sun_sales2", "mon_sales" AS "mon_sales2", "tue_sales" AS "tue_sales2", "wed_sales" AS "wed_sales2", "thu_sales" AS "thu_sales2", "fri_sales" AS "fri_sales2", "sat_sales" AS "sat_sales2"
from ( select "D_WEEK_SEQ", SUM(CASE WHEN ("D_DAY_NAME" = 'Sunday') THEN "sales_price" ELSE null END) AS "sun_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Monday') THEN "sales_price" ELSE null END) AS "mon_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Tuesday') THEN "sales_price" ELSE null END) AS "tue_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Wednesday') THEN "sales_price" ELSE null END) AS "wed_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Thursday') THEN "sales_price" ELSE null END) AS "thu_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Friday') THEN "sales_price" ELSE null END) AS "fri_sales", SUM(CASE WHEN ("D_DAY_NAME" = 'Saturday') THEN "sales_price" ELSE null END) AS "sat_sales"
from ( select "WS_SOLD_DATE_SK" AS "sold_date_sk", "WS_EXT_SALES_PRICE" AS "sales_price"
from TPCDS.WEB_SALES
where "WS_SOLD_DATE_SK" IS NOT NULL UNION ALL select "CS_SOLD_DATE_SK" AS "sold_date_sk", "CS_EXT_SALES_PRICE" AS "sales_price"
from TPCDS.CATALOG_SALES
where "CS_SOLD_DATE_SK" IS NOT NULL ) join TPCDS.DATE_DIM on ("sold_date_sk" = "D_DATE_SK")
where "D_WEEK_SEQ" IS NOT NULL group by "D_WEEK_SEQ" ) "sparkora_0" join TPCDS.DATE_DIM "sparkora_1" on ("sparkora_0"."D_WEEK_SEQ" = "sparkora_1"."D_WEEK_SEQ")
where (("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2002.000000000000000000)) AND "sparkora_1"."D_WEEK_SEQ" IS NOT NULL) ) on ("d_week_seq1" = ("d_week_seq2" - 53.00000000000000000))
== Physical Plan ==
* Sort (54)
+- Exchange (53)
+- * Project (52)
+- * SortMergeJoin Inner (51)
:- * Project (24)
: +- * SortMergeJoin Inner (23)
: :- * Sort (17)
: : +- * HashAggregate (16)
: : +- Exchange (15)
: : +- * HashAggregate (14)
: : +- * Project (13)
: : +- * SortMergeJoin Inner (12)
: : :- * Sort (7)
: : : +- Exchange (6)
: : : +- Union (5)
: : : :- * Project (2)
: : : : +- BatchScan (1)
: : : +- * Project (4)
: : : +- BatchScan (3)
: : +- * Sort (11)
: : +- Exchange (10)
: : +- * Filter (9)
: : +- BatchScan (8)
: +- * Sort (22)
: +- Exchange (21)
: +- * Project (20)
: +- * Filter (19)
: +- BatchScan (18)
+- * Sort (50)
+- Exchange (49)
+- * Project (48)
+- * SortMergeJoin Inner (47)
:- * Sort (41)
: +- * HashAggregate (40)
: +- Exchange (39)
: +- * HashAggregate (38)
: +- * Project (37)
: +- * SortMergeJoin Inner (36)
: :- * Sort (31)
: : +- Exchange (30)
: : +- Union (29)
: : :- * Project (26)
: : : +- BatchScan (25)
: : +- * Project (28)
: : +- BatchScan (27)
: +- * Sort (35)
: +- Exchange (34)
: +- * Filter (33)
: +- BatchScan (32)
+- * Sort (46)
+- Exchange (45)
+- * Project (44)
+- * Filter (43)
+- BatchScan (42)
(1) BatchScan
Output [2]: [WS_EXT_SALES_PRICE#432, WS_SOLD_DATE_SK#409]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_EXT_SALES_PRICE#686, WS_SOLD_DATE_SK#687], [oracolumnref(WS_EXT_SALES_PRICE#686), oracolumnref(WS_SOLD_DATE_SK#687)]
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_EXT_SALES_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_EXT_SALES_PRICE", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_SOLD_DATE_SK" IS NOT NULL
(2) Project [codegen id : 1]
Output [2]: [WS_SOLD_DATE_SK#409 AS sold_date_sk#398, WS_EXT_SALES_PRICE#432 AS sales_price#399]
Input [2]: [WS_EXT_SALES_PRICE#432, WS_SOLD_DATE_SK#409]
(3) BatchScan
Output [2]: [CS_EXT_SALES_PRICE#466, CS_SOLD_DATE_SK#443]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CATALOG_SALES, [CS_EXT_SALES_PRICE#690, CS_SOLD_DATE_SK#691], [oracolumnref(CS_EXT_SALES_PRICE#690), oracolumnref(CS_SOLD_DATE_SK#691)]
PartitionSchema: struct<CS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<CS_EXT_SALES_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CS_EXT_SALES_PRICE", "CS_SOLD_DATE_SK"
from TPCDS.CATALOG_SALES
where "CS_SOLD_DATE_SK" IS NOT NULL
(4) Project [codegen id : 2]
Output [2]: [CS_SOLD_DATE_SK#443 AS sold_date_sk#400, CS_EXT_SALES_PRICE#466 AS sales_price#401]
Input [2]: [CS_EXT_SALES_PRICE#466, CS_SOLD_DATE_SK#443]
(5) Union
(6) Exchange
Input [2]: [sold_date_sk#398, sales_price#399]
Arguments: hashpartitioning(sold_date_sk#398, 5), true, [id=#442]
(7) Sort [codegen id : 3]
Input [2]: [sold_date_sk#398, sales_price#399]
Arguments: [sold_date_sk#398 ASC NULLS FIRST], false, 0
(8) BatchScan
Output [3]: [D_DATE_SK#477, D_WEEK_SEQ#481, D_DAY_NAME#491]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#694, D_WEEK_SEQ#695, D_DAY_NAME#696], [oracolumnref(D_DATE_SK#694), oracolumnref(D_WEEK_SEQ#695), oracolumnref(D_DAY_NAME#696)], orapostfixunaryopexpression(isnotnull(D_WEEK_SEQ#481))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_WEEK_SEQ:decimal(38,18),D_DAY_NAME:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "D_DATE_SK", "D_WEEK_SEQ", "D_DAY_NAME"
from TPCDS.DATE_DIM
where "D_WEEK_SEQ" IS NOT NULL
(9) Filter [codegen id : 4]
Input [3]: [D_DATE_SK#477, D_WEEK_SEQ#481, D_DAY_NAME#491]
Condition : isnotnull(D_WEEK_SEQ#481)
(10) Exchange
Input [3]: [D_DATE_SK#477, D_WEEK_SEQ#481, D_DAY_NAME#491]
Arguments: hashpartitioning(d_date_sk#477, 5), true, [id=#450]
(11) Sort [codegen id : 5]
Input [3]: [D_DATE_SK#477, D_WEEK_SEQ#481, D_DAY_NAME#491]
Arguments: [d_date_sk#477 ASC NULLS FIRST], false, 0
(12) SortMergeJoin [codegen id : 6]
Left keys [1]: [sold_date_sk#398]
Right keys [1]: [d_date_sk#477]
Join condition: None
(13) Project [codegen id : 6]
Output [3]: [sales_price#399, D_WEEK_SEQ#481, D_DAY_NAME#491]
Input [5]: [sold_date_sk#398, sales_price#399, D_DATE_SK#477, D_WEEK_SEQ#481, D_DAY_NAME#491]
(14) HashAggregate [codegen id : 6]
Input [3]: [sales_price#399, D_WEEK_SEQ#481, D_DAY_NAME#491]
Keys [1]: [d_week_seq#481]
Functions [7]: [partial_sum(CASE WHEN (d_day_name#491 = Sunday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#491 = Monday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#491 = Tuesday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#491 = Wednesday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#491 = Thursday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#491 = Friday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#491 = Saturday) THEN sales_price#399 ELSE null END)]
Aggregate Attributes [14]: [sum#722, isEmpty#723, sum#724, isEmpty#725, sum#726, isEmpty#727, sum#728, isEmpty#729, sum#730, isEmpty#731, sum#732, isEmpty#733, sum#734, isEmpty#735]
Results [15]: [d_week_seq#481, sum#736, isEmpty#737, sum#738, isEmpty#739, sum#740, isEmpty#741, sum#742, isEmpty#743, sum#744, isEmpty#745, sum#746, isEmpty#747, sum#748, isEmpty#749]
(15) Exchange
Input [15]: [d_week_seq#481, sum#736, isEmpty#737, sum#738, isEmpty#739, sum#740, isEmpty#741, sum#742, isEmpty#743, sum#744, isEmpty#745, sum#746, isEmpty#747, sum#748, isEmpty#749]
Arguments: hashpartitioning(d_week_seq#481, 5), true, [id=#459]
(16) HashAggregate [codegen id : 7]
Input [15]: [d_week_seq#481, sum#736, isEmpty#737, sum#738, isEmpty#739, sum#740, isEmpty#741, sum#742, isEmpty#743, sum#744, isEmpty#745, sum#746, isEmpty#747, sum#748, isEmpty#749]
Keys [1]: [d_week_seq#481]
Functions [7]: [sum(CASE WHEN (d_day_name#491 = Sunday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#491 = Monday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#491 = Tuesday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#491 = Wednesday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#491 = Thursday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#491 = Friday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#491 = Saturday) THEN sales_price#399 ELSE null END)]
Aggregate Attributes [7]: [sum(CASE WHEN (d_day_name#491 = Sunday) THEN sales_price#399 ELSE null END)#657, sum(CASE WHEN (d_day_name#491 = Monday) THEN sales_price#399 ELSE null END)#658, sum(CASE WHEN (d_day_name#491 = Tuesday) THEN sales_price#399 ELSE null END)#659, sum(CASE WHEN (d_day_name#491 = Wednesday) THEN sales_price#399 ELSE null END)#660, sum(CASE WHEN (d_day_name#491 = Thursday) THEN sales_price#399 ELSE null END)#661, sum(CASE WHEN (d_day_name#491 = Friday) THEN sales_price#399 ELSE null END)#662, sum(CASE WHEN (d_day_name#491 = Saturday) THEN sales_price#399 ELSE null END)#663]
Results [8]: [d_week_seq#481, sum(CASE WHEN (d_day_name#491 = Sunday) THEN sales_price#399 ELSE null END)#657 AS sun_sales#402, sum(CASE WHEN (d_day_name#491 = Monday) THEN sales_price#399 ELSE null END)#658 AS mon_sales#403, sum(CASE WHEN (d_day_name#491 = Tuesday) THEN sales_price#399 ELSE null END)#659 AS tue_sales#404, sum(CASE WHEN (d_day_name#491 = Wednesday) THEN sales_price#399 ELSE null END)#660 AS wed_sales#405, sum(CASE WHEN (d_day_name#491 = Thursday) THEN sales_price#399 ELSE null END)#661 AS thu_sales#406, sum(CASE WHEN (d_day_name#491 = Friday) THEN sales_price#399 ELSE null END)#662 AS fri_sales#407, sum(CASE WHEN (d_day_name#491 = Saturday) THEN sales_price#399 ELSE null END)#663 AS sat_sales#408]
(17) Sort [codegen id : 7]
Input [8]: [d_week_seq#481, sun_sales#402, mon_sales#403, tue_sales#404, wed_sales#405, thu_sales#406, fri_sales#407, sat_sales#408]
Arguments: [d_week_seq#481 ASC NULLS FIRST], false, 0
(18) BatchScan
Output [2]: [D_WEEK_SEQ#509, D_YEAR#511]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_WEEK_SEQ#700, D_YEAR#701], [oracolumnref(D_WEEK_SEQ#700), oracolumnref(D_YEAR#701)], orabinaryopexpression(((isnotnull(D_YEAR#511) AND (D_YEAR#511 = 2001.000000000000000000)) AND isnotnull(D_WEEK_SEQ#509)))
PartitionSchema: struct<>
ReadSchema: struct<D_WEEK_SEQ:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000
oraPushdownSQL: select "D_WEEK_SEQ", "D_YEAR"
from TPCDS.DATE_DIM
where (("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?)) AND "D_WEEK_SEQ" IS NOT NULL)
(19) Filter [codegen id : 8]
Input [2]: [D_WEEK_SEQ#509, D_YEAR#511]
Condition : ((isnotnull(D_YEAR#511) AND (D_YEAR#511 = 2001.000000000000000000)) AND isnotnull(D_WEEK_SEQ#509))
(20) Project [codegen id : 8]
Output [1]: [D_WEEK_SEQ#509]
Input [2]: [D_WEEK_SEQ#509, D_YEAR#511]
(21) Exchange
Input [1]: [D_WEEK_SEQ#509]
Arguments: hashpartitioning(d_week_seq#509, 5), true, [id=#469]
(22) Sort [codegen id : 9]
Input [1]: [D_WEEK_SEQ#509]
Arguments: [d_week_seq#509 ASC NULLS FIRST], false, 0
(23) SortMergeJoin [codegen id : 10]
Left keys [1]: [d_week_seq#481]
Right keys [1]: [d_week_seq#509]
Join condition: None
(24) Project [codegen id : 10]
Output [8]: [d_week_seq#481 AS d_week_seq1#382, sun_sales#402 AS sun_sales1#383, mon_sales#403 AS mon_sales1#384, tue_sales#404 AS tue_sales1#385, wed_sales#405 AS wed_sales1#386, thu_sales#406 AS thu_sales1#387, fri_sales#407 AS fri_sales1#388, sat_sales#408 AS sat_sales1#389]
Input [9]: [d_week_seq#481, sun_sales#402, mon_sales#403, tue_sales#404, wed_sales#405, thu_sales#406, fri_sales#407, sat_sales#408, D_WEEK_SEQ#509]
(25) BatchScan
Output [2]: [WS_EXT_SALES_PRICE#556, WS_SOLD_DATE_SK#533]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_EXT_SALES_PRICE#704, WS_SOLD_DATE_SK#705], [oracolumnref(WS_EXT_SALES_PRICE#704), oracolumnref(WS_SOLD_DATE_SK#705)]
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_EXT_SALES_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_EXT_SALES_PRICE", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_SOLD_DATE_SK" IS NOT NULL
(26) Project [codegen id : 11]
Output [2]: [WS_SOLD_DATE_SK#533 AS sold_date_sk#398, WS_EXT_SALES_PRICE#556 AS sales_price#399]
Input [2]: [WS_EXT_SALES_PRICE#556, WS_SOLD_DATE_SK#533]
(27) BatchScan
Output [2]: [CS_EXT_SALES_PRICE#590, CS_SOLD_DATE_SK#567]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CATALOG_SALES, [CS_EXT_SALES_PRICE#708, CS_SOLD_DATE_SK#709], [oracolumnref(CS_EXT_SALES_PRICE#708), oracolumnref(CS_SOLD_DATE_SK#709)]
PartitionSchema: struct<CS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<CS_EXT_SALES_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CS_EXT_SALES_PRICE", "CS_SOLD_DATE_SK"
from TPCDS.CATALOG_SALES
where "CS_SOLD_DATE_SK" IS NOT NULL
(28) Project [codegen id : 12]
Output [2]: [CS_SOLD_DATE_SK#567 AS sold_date_sk#400, CS_EXT_SALES_PRICE#590 AS sales_price#401]
Input [2]: [CS_EXT_SALES_PRICE#590, CS_SOLD_DATE_SK#567]
(29) Union
(30) Exchange
Input [2]: [sold_date_sk#398, sales_price#399]
Arguments: hashpartitioning(sold_date_sk#398, 5), true, [id=#485]
(31) Sort [codegen id : 13]
Input [2]: [sold_date_sk#398, sales_price#399]
Arguments: [sold_date_sk#398 ASC NULLS FIRST], false, 0
(32) BatchScan
Output [3]: [D_DATE_SK#601, D_WEEK_SEQ#605, D_DAY_NAME#615]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#712, D_WEEK_SEQ#713, D_DAY_NAME#714], [oracolumnref(D_DATE_SK#712), oracolumnref(D_WEEK_SEQ#713), oracolumnref(D_DAY_NAME#714)], orapostfixunaryopexpression(isnotnull(D_WEEK_SEQ#605))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_WEEK_SEQ:decimal(38,18),D_DAY_NAME:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "D_DATE_SK", "D_WEEK_SEQ", "D_DAY_NAME"
from TPCDS.DATE_DIM
where "D_WEEK_SEQ" IS NOT NULL
(33) Filter [codegen id : 14]
Input [3]: [D_DATE_SK#601, D_WEEK_SEQ#605, D_DAY_NAME#615]
Condition : isnotnull(D_WEEK_SEQ#605)
(34) Exchange
Input [3]: [D_DATE_SK#601, D_WEEK_SEQ#605, D_DAY_NAME#615]
Arguments: hashpartitioning(d_date_sk#601, 5), true, [id=#493]
(35) Sort [codegen id : 15]
Input [3]: [D_DATE_SK#601, D_WEEK_SEQ#605, D_DAY_NAME#615]
Arguments: [d_date_sk#601 ASC NULLS FIRST], false, 0
(36) SortMergeJoin [codegen id : 16]
Left keys [1]: [sold_date_sk#398]
Right keys [1]: [d_date_sk#601]
Join condition: None
(37) Project [codegen id : 16]
Output [3]: [sales_price#399, D_WEEK_SEQ#605, D_DAY_NAME#615]
Input [5]: [sold_date_sk#398, sales_price#399, D_DATE_SK#601, D_WEEK_SEQ#605, D_DAY_NAME#615]
(38) HashAggregate [codegen id : 16]
Input [3]: [sales_price#399, D_WEEK_SEQ#605, D_DAY_NAME#615]
Keys [1]: [d_week_seq#605]
Functions [7]: [partial_sum(CASE WHEN (d_day_name#615 = Sunday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#615 = Monday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#615 = Tuesday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#615 = Wednesday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#615 = Thursday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#615 = Friday) THEN sales_price#399 ELSE null END), partial_sum(CASE WHEN (d_day_name#615 = Saturday) THEN sales_price#399 ELSE null END)]
Aggregate Attributes [14]: [sum#750, isEmpty#751, sum#752, isEmpty#753, sum#754, isEmpty#755, sum#756, isEmpty#757, sum#758, isEmpty#759, sum#760, isEmpty#761, sum#762, isEmpty#763]
Results [15]: [d_week_seq#605, sum#764, isEmpty#765, sum#766, isEmpty#767, sum#768, isEmpty#769, sum#770, isEmpty#771, sum#772, isEmpty#773, sum#774, isEmpty#775, sum#776, isEmpty#777]
(39) Exchange
Input [15]: [d_week_seq#605, sum#764, isEmpty#765, sum#766, isEmpty#767, sum#768, isEmpty#769, sum#770, isEmpty#771, sum#772, isEmpty#773, sum#774, isEmpty#775, sum#776, isEmpty#777]
Arguments: hashpartitioning(d_week_seq#605, 5), true, [id=#502]
(40) HashAggregate [codegen id : 17]
Input [15]: [d_week_seq#605, sum#764, isEmpty#765, sum#766, isEmpty#767, sum#768, isEmpty#769, sum#770, isEmpty#771, sum#772, isEmpty#773, sum#774, isEmpty#775, sum#776, isEmpty#777]
Keys [1]: [d_week_seq#605]
Functions [7]: [sum(CASE WHEN (d_day_name#615 = Sunday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#615 = Monday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#615 = Tuesday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#615 = Wednesday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#615 = Thursday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#615 = Friday) THEN sales_price#399 ELSE null END), sum(CASE WHEN (d_day_name#615 = Saturday) THEN sales_price#399 ELSE null END)]
Aggregate Attributes [7]: [sum(CASE WHEN (d_day_name#615 = Sunday) THEN sales_price#399 ELSE null END)#664, sum(CASE WHEN (d_day_name#615 = Monday) THEN sales_price#399 ELSE null END)#665, sum(CASE WHEN (d_day_name#615 = Tuesday) THEN sales_price#399 ELSE null END)#666, sum(CASE WHEN (d_day_name#615 = Wednesday) THEN sales_price#399 ELSE null END)#667, sum(CASE WHEN (d_day_name#615 = Thursday) THEN sales_price#399 ELSE null END)#668, sum(CASE WHEN (d_day_name#615 = Friday) THEN sales_price#399 ELSE null END)#669, sum(CASE WHEN (d_day_name#615 = Saturday) THEN sales_price#399 ELSE null END)#670]
Results [8]: [d_week_seq#605, sum(CASE WHEN (d_day_name#615 = Sunday) THEN sales_price#399 ELSE null END)#664 AS sun_sales#402, sum(CASE WHEN (d_day_name#615 = Monday) THEN sales_price#399 ELSE null END)#665 AS mon_sales#403, sum(CASE WHEN (d_day_name#615 = Tuesday) THEN sales_price#399 ELSE null END)#666 AS tue_sales#404, sum(CASE WHEN (d_day_name#615 = Wednesday) THEN sales_price#399 ELSE null END)#667 AS wed_sales#405, sum(CASE WHEN (d_day_name#615 = Thursday) THEN sales_price#399 ELSE null END)#668 AS thu_sales#406, sum(CASE WHEN (d_day_name#615 = Friday) THEN sales_price#399 ELSE null END)#669 AS fri_sales#407, sum(CASE WHEN (d_day_name#615 = Saturday) THEN sales_price#399 ELSE null END)#670 AS sat_sales#408]
(41) Sort [codegen id : 17]
Input [8]: [d_week_seq#605, sun_sales#402, mon_sales#403, tue_sales#404, wed_sales#405, thu_sales#406, fri_sales#407, sat_sales#408]
Arguments: [d_week_seq#605 ASC NULLS FIRST], false, 0
(42) BatchScan
Output [2]: [D_WEEK_SEQ#633, D_YEAR#635]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_WEEK_SEQ#718, D_YEAR#719], [oracolumnref(D_WEEK_SEQ#718), oracolumnref(D_YEAR#719)], orabinaryopexpression(((isnotnull(D_YEAR#635) AND (D_YEAR#635 = 2002.000000000000000000)) AND isnotnull(D_WEEK_SEQ#633)))
PartitionSchema: struct<>
ReadSchema: struct<D_WEEK_SEQ:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000
oraPushdownSQL: select "D_WEEK_SEQ", "D_YEAR"
from TPCDS.DATE_DIM
where (("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?)) AND "D_WEEK_SEQ" IS NOT NULL)
(43) Filter [codegen id : 18]
Input [2]: [D_WEEK_SEQ#633, D_YEAR#635]
Condition : ((isnotnull(D_YEAR#635) AND (D_YEAR#635 = 2002.000000000000000000)) AND isnotnull(D_WEEK_SEQ#633))
(44) Project [codegen id : 18]
Output [1]: [D_WEEK_SEQ#633]
Input [2]: [D_WEEK_SEQ#633, D_YEAR#635]
(45) Exchange
Input [1]: [D_WEEK_SEQ#633]
Arguments: hashpartitioning(d_week_seq#633, 5), true, [id=#512]
(46) Sort [codegen id : 19]
Input [1]: [D_WEEK_SEQ#633]
Arguments: [d_week_seq#633 ASC NULLS FIRST], false, 0
(47) SortMergeJoin [codegen id : 20]
Left keys [1]: [d_week_seq#605]
Right keys [1]: [d_week_seq#633]
Join condition: None
(48) Project [codegen id : 20]
Output [8]: [d_week_seq#605 AS d_week_seq2#390, sun_sales#402 AS sun_sales2#391, mon_sales#403 AS mon_sales2#392, tue_sales#404 AS tue_sales2#393, wed_sales#405 AS wed_sales2#394, thu_sales#406 AS thu_sales2#395, fri_sales#407 AS fri_sales2#396, sat_sales#408 AS sat_sales2#397]
Input [9]: [d_week_seq#605, sun_sales#402, mon_sales#403, tue_sales#404, wed_sales#405, thu_sales#406, fri_sales#407, sat_sales#408, D_WEEK_SEQ#633]
(49) Exchange
Input [8]: [d_week_seq2#390, sun_sales2#391, mon_sales2#392, tue_sales2#393, wed_sales2#394, thu_sales2#395, fri_sales2#396, sat_sales2#397]
Arguments: hashpartitioning(cast(CheckOverflow((promote_precision(cast(d_week_seq2#390 as decimal(38,17))) - 53.00000000000000000), DecimalType(38,17), true) as decimal(38,18)), 5), true, [id=#520]
(50) Sort [codegen id : 21]
Input [8]: [d_week_seq2#390, sun_sales2#391, mon_sales2#392, tue_sales2#393, wed_sales2#394, thu_sales2#395, fri_sales2#396, sat_sales2#397]
Arguments: [cast(CheckOverflow((promote_precision(cast(d_week_seq2#390 as decimal(38,17))) - 53.00000000000000000), DecimalType(38,17), true) as decimal(38,18)) ASC NULLS FIRST], false, 0
(51) SortMergeJoin [codegen id : 22]
Left keys [1]: [d_week_seq1#382]
Right keys [1]: [cast(CheckOverflow((promote_precision(cast(d_week_seq2#390 as decimal(38,17))) - 53.00000000000000000), DecimalType(38,17), true) as decimal(38,18))]
Join condition: None
(52) Project [codegen id : 22]
Output [8]: [d_week_seq1#382, round(CheckOverflow((promote_precision(sun_sales1#383) / promote_precision(sun_sales2#391)), DecimalType(38,6), true), 2) AS round((sun_sales1 / sun_sales2), 2)#671, round(CheckOverflow((promote_precision(mon_sales1#384) / promote_precision(mon_sales2#392)), DecimalType(38,6), true), 2) AS round((mon_sales1 / mon_sales2), 2)#672, round(CheckOverflow((promote_precision(tue_sales1#385) / promote_precision(tue_sales2#393)), DecimalType(38,6), true), 2) AS round((tue_sales1 / tue_sales2), 2)#673, round(CheckOverflow((promote_precision(wed_sales1#386) / promote_precision(wed_sales2#394)), DecimalType(38,6), true), 2) AS round((wed_sales1 / wed_sales2), 2)#674, round(CheckOverflow((promote_precision(thu_sales1#387) / promote_precision(thu_sales2#395)), DecimalType(38,6), true), 2) AS round((thu_sales1 / thu_sales2), 2)#675, round(CheckOverflow((promote_precision(fri_sales1#388) / promote_precision(fri_sales2#396)), DecimalType(38,6), true), 2) AS round((fri_sales1 / fri_sales2), 2)#676, round(CheckOverflow((promote_precision(sat_sales1#389) / promote_precision(sat_sales2#397)), DecimalType(38,6), true), 2) AS round((sat_sales1 / sat_sales2), 2)#677]
Input [16]: [d_week_seq1#382, sun_sales1#383, mon_sales1#384, tue_sales1#385, wed_sales1#386, thu_sales1#387, fri_sales1#388, sat_sales1#389, d_week_seq2#390, sun_sales2#391, mon_sales2#392, tue_sales2#393, wed_sales2#394, thu_sales2#395, fri_sales2#396, sat_sales2#397]
(53) Exchange
Input [8]: [d_week_seq1#382, round((sun_sales1 / sun_sales2), 2)#671, round((mon_sales1 / mon_sales2), 2)#672, round((tue_sales1 / tue_sales2), 2)#673, round((wed_sales1 / wed_sales2), 2)#674, round((thu_sales1 / thu_sales2), 2)#675, round((fri_sales1 / fri_sales2), 2)#676, round((sat_sales1 / sat_sales2), 2)#677]
Arguments: rangepartitioning(d_week_seq1#382 ASC NULLS FIRST, 5), true, [id=#528]
(54) Sort [codegen id : 23]
Input [8]: [d_week_seq1#382, round((sun_sales1 / sun_sales2), 2)#671, round((mon_sales1 / mon_sales2), 2)#672, round((tue_sales1 / tue_sales2), 2)#673, round((wed_sales1 / wed_sales2), 2)#674, round((thu_sales1 / thu_sales2), 2)#675, round((fri_sales1 / fri_sales2), 2)#676, round((sat_sales1 / sat_sales2), 2)#677]
Arguments: [d_week_seq1#382 ASC NULLS FIRST], true, 0
select dt.d_year
,item.i_brand_id brand_id
,item.i_brand brand
,sum(ss_ext_sales_price) sum_agg
from date_dim dt
,store_sales
,item
where dt.d_date_sk = store_sales.ss_sold_date_sk
and store_sales.ss_item_sk = item.i_item_sk
and item.i_manufact_id = 128
and dt.d_moy=11
group by dt.d_year
,item.i_brand
,item.i_brand_id
order by dt.d_year
,sum_agg desc
,brand_id
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [4]: [d_year#1263, brand_id#1254, brand#1255, sum_agg#1256]
OraPlan: 00 OraSingleQueryBlock [d_year#1263, i_brand_id#1315 AS brand_id#1254, i_brand#1316 AS brand#1255, sum(ss_ext_sales_price#1300) AS sum_agg#1256], [oracolumnref(d_year#1263), oraalias(i_brand_id#1315 AS brand_id#1254), oraalias(i_brand#1316 AS brand#1255), oraalias(sum(ss_ext_sales_price#1300) AS sum_agg#1256)], orabinaryopexpression((((isnotnull(D_MOY#1265) AND (D_MOY#1265 = 11.000000000000000000)) AND isnotnull(SS_SOLD_DATE_SK#1285)) AND (isnotnull(I_MANUFACT_ID#1321) AND (I_MANUFACT_ID#1321 = 128.000000000000000000)))), List(oracolumnref(d_year#1263), oracolumnref(i_brand#1316), oracolumnref(i_brand_id#1315))
01 :- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#1257, D_YEAR#1263, D_MOY#1265]
02 :- OraTableScan TPCDS.STORE_SALES, [SS_ITEM_SK#1287, SS_EXT_SALES_PRICE#1300, SS_SOLD_DATE_SK#1285]
03 +- OraTableScan TPCDS.ITEM, [I_ITEM_SK#1308, I_BRAND_ID#1315, I_BRAND#1316, I_MANUFACT_ID#1321]
ReadSchema: struct<d_year:decimal(38,18),brand_id:decimal(38,18),brand:string,sum_agg:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 11.000000000000000000, 128.000000000000000000
oraPushdownSQL: select "D_YEAR", "I_BRAND_ID" AS "brand_id", "I_BRAND" AS "brand", SUM("SS_EXT_SALES_PRICE") AS "sum_agg"
from TPCDS.DATE_DIM join TPCDS.STORE_SALES on ("D_DATE_SK" = "SS_SOLD_DATE_SK") join TPCDS.ITEM on ("SS_ITEM_SK" = "I_ITEM_SK")
where ((("D_MOY" IS NOT NULL AND ("D_MOY" = ?)) AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("I_MANUFACT_ID" IS NOT NULL AND ("I_MANUFACT_ID" = ?))) group by "D_YEAR", "I_BRAND", "I_BRAND_ID"
(2) Project [codegen id : 1]
Output [4]: [d_year#1263, brand_id#1254, brand#1255, sum_agg#1256]
Input [4]: [d_year#1263, brand_id#1254, brand#1255, sum_agg#1256]
(3) TakeOrderedAndProject
Input [4]: [d_year#1263, brand_id#1254, brand#1255, sum_agg#1256]
Arguments: 100, [d_year#1263 ASC NULLS FIRST, sum_agg#1256 DESC NULLS LAST, brand_id#1254 ASC NULLS FIRST], [d_year#1263, brand_id#1254, brand#1255, sum_agg#1256]
select "D_YEAR", "I_BRAND_ID" AS "brand_id", "I_BRAND" AS "brand", SUM("SS_EXT_SALES_PRICE") AS "sum_agg"
from TPCDS.DATE_DIM join TPCDS.STORE_SALES on ("D_DATE_SK" = "SS_SOLD_DATE_SK") join TPCDS.ITEM on ("SS_ITEM_SK" = "I_ITEM_SK")
where ((("D_MOY" IS NOT NULL AND ("D_MOY" = 11.000000000000000000)) AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("I_MANUFACT_ID" IS NOT NULL AND ("I_MANUFACT_ID" = 128.000000000000000000))) group by "D_YEAR", "I_BRAND", "I_BRAND_ID"
== Physical Plan ==
TakeOrderedAndProject (19)
+- * HashAggregate (18)
+- * HashAggregate (17)
+- * Project (16)
+- * SortMergeJoin Inner (15)
:- * Sort (10)
: +- * Project (9)
: +- * SortMergeJoin Inner (8)
: :- * Sort (4)
: : +- * Project (3)
: : +- * Filter (2)
: : +- BatchScan (1)
: +- * Sort (7)
: +- * Project (6)
: +- BatchScan (5)
+- * Sort (14)
+- * Project (13)
+- * Filter (12)
+- BatchScan (11)
(1) BatchScan
Output [3]: [D_DATE_SK#1149, D_YEAR#1155, D_MOY#1157]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#1230, D_YEAR#1231, D_MOY#1232], [oracolumnref(D_DATE_SK#1230), oracolumnref(D_YEAR#1231), oracolumnref(D_MOY#1232)], orabinaryopexpression((isnotnull(D_MOY#1157) AND (D_MOY#1157 = 11.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18),D_MOY:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 11.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR", "D_MOY"
from TPCDS.DATE_DIM
where ("D_MOY" IS NOT NULL AND ("D_MOY" = ?))
(2) Filter [codegen id : 1]
Input [3]: [D_DATE_SK#1149, D_YEAR#1155, D_MOY#1157]
Condition : (isnotnull(D_MOY#1157) AND (D_MOY#1157 = 11.000000000000000000))
(3) Project [codegen id : 1]
Output [2]: [D_DATE_SK#1149, D_YEAR#1155]
Input [3]: [D_DATE_SK#1149, D_YEAR#1155, D_MOY#1157]
(4) Sort [codegen id : 1]
Input [2]: [D_DATE_SK#1149, D_YEAR#1155]
Arguments: [d_date_sk#1149 ASC NULLS FIRST], false, 0
(5) BatchScan
Output [3]: [SS_ITEM_SK#1179, SS_EXT_SALES_PRICE#1192, SS_SOLD_DATE_SK#1177]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_ITEM_SK#1236, SS_EXT_SALES_PRICE#1237, SS_SOLD_DATE_SK#1238], [oracolumnref(SS_ITEM_SK#1236), oracolumnref(SS_EXT_SALES_PRICE#1237), oracolumnref(SS_SOLD_DATE_SK#1238)]
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_ITEM_SK:decimal(38,18),SS_EXT_SALES_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_ITEM_SK", "SS_EXT_SALES_PRICE", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_SOLD_DATE_SK" IS NOT NULL
(6) Project [codegen id : 2]
Output [3]: [SS_SOLD_DATE_SK#1177, SS_ITEM_SK#1179, SS_EXT_SALES_PRICE#1192]
Input [3]: [SS_ITEM_SK#1179, SS_EXT_SALES_PRICE#1192, SS_SOLD_DATE_SK#1177]
(7) Sort [codegen id : 2]
Input [3]: [SS_SOLD_DATE_SK#1177, SS_ITEM_SK#1179, SS_EXT_SALES_PRICE#1192]
Arguments: [ss_sold_date_sk#1177 ASC NULLS FIRST], false, 0
(8) SortMergeJoin [codegen id : 3]
Left keys [1]: [d_date_sk#1149]
Right keys [1]: [ss_sold_date_sk#1177]
Join condition: None
(9) Project [codegen id : 3]
Output [3]: [D_YEAR#1155, SS_ITEM_SK#1179, SS_EXT_SALES_PRICE#1192]
Input [5]: [D_DATE_SK#1149, D_YEAR#1155, SS_SOLD_DATE_SK#1177, SS_ITEM_SK#1179, SS_EXT_SALES_PRICE#1192]
(10) Sort [codegen id : 3]
Input [3]: [D_YEAR#1155, SS_ITEM_SK#1179, SS_EXT_SALES_PRICE#1192]
Arguments: [ss_item_sk#1179 ASC NULLS FIRST], false, 0
(11) BatchScan
Output [4]: [I_ITEM_SK#1200, I_BRAND_ID#1207, I_BRAND#1208, I_MANUFACT_ID#1213]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.ITEM, [I_ITEM_SK#1242, I_BRAND_ID#1243, I_BRAND#1244, I_MANUFACT_ID#1245], [oracolumnref(I_ITEM_SK#1242), oracolumnref(I_BRAND_ID#1243), oracolumnref(I_BRAND#1244), oracolumnref(I_MANUFACT_ID#1245)], orabinaryopexpression((isnotnull(I_MANUFACT_ID#1213) AND (I_MANUFACT_ID#1213 = 128.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<I_ITEM_SK:decimal(38,18),I_BRAND_ID:decimal(38,18),I_BRAND:string,I_MANUFACT_ID:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 128.000000000000000000
oraPushdownSQL: select "I_ITEM_SK", "I_BRAND_ID", "I_BRAND", "I_MANUFACT_ID"
from TPCDS.ITEM
where ("I_MANUFACT_ID" IS NOT NULL AND ("I_MANUFACT_ID" = ?))
(12) Filter [codegen id : 4]
Input [4]: [I_ITEM_SK#1200, I_BRAND_ID#1207, I_BRAND#1208, I_MANUFACT_ID#1213]
Condition : (isnotnull(I_MANUFACT_ID#1213) AND (I_MANUFACT_ID#1213 = 128.000000000000000000))
(13) Project [codegen id : 4]
Output [3]: [I_ITEM_SK#1200, I_BRAND_ID#1207, I_BRAND#1208]
Input [4]: [I_ITEM_SK#1200, I_BRAND_ID#1207, I_BRAND#1208, I_MANUFACT_ID#1213]
(14) Sort [codegen id : 4]
Input [3]: [I_ITEM_SK#1200, I_BRAND_ID#1207, I_BRAND#1208]
Arguments: [i_item_sk#1200 ASC NULLS FIRST], false, 0
(15) SortMergeJoin [codegen id : 5]
Left keys [1]: [ss_item_sk#1179]
Right keys [1]: [i_item_sk#1200]
Join condition: None
(16) Project [codegen id : 5]
Output [4]: [D_YEAR#1155, SS_EXT_SALES_PRICE#1192, I_BRAND_ID#1207, I_BRAND#1208]
Input [6]: [D_YEAR#1155, SS_ITEM_SK#1179, SS_EXT_SALES_PRICE#1192, I_ITEM_SK#1200, I_BRAND_ID#1207, I_BRAND#1208]
(17) HashAggregate [codegen id : 5]
Input [4]: [D_YEAR#1155, SS_EXT_SALES_PRICE#1192, I_BRAND_ID#1207, I_BRAND#1208]
Keys [3]: [d_year#1155, i_brand#1208, i_brand_id#1207]
Functions [1]: [partial_sum(ss_ext_sales_price#1192)]
Aggregate Attributes [2]: [sum#1250, isEmpty#1251]
Results [5]: [d_year#1155, i_brand#1208, i_brand_id#1207, sum#1252, isEmpty#1253]
(18) HashAggregate [codegen id : 5]
Input [5]: [d_year#1155, i_brand#1208, i_brand_id#1207, sum#1252, isEmpty#1253]
Keys [3]: [d_year#1155, i_brand#1208, i_brand_id#1207]
Functions [1]: [sum(ss_ext_sales_price#1192)]
Aggregate Attributes [1]: [sum(ss_ext_sales_price#1192)#1222]
Results [4]: [d_year#1155, i_brand_id#1207 AS brand_id#1146, i_brand#1208 AS brand#1147, sum(ss_ext_sales_price#1192)#1222 AS sum_agg#1148]
(19) TakeOrderedAndProject
Input [4]: [d_year#1155, brand_id#1146, brand#1147, sum_agg#1148]
Arguments: 100, [d_year#1155 ASC NULLS FIRST, sum_agg#1148 DESC NULLS LAST, brand_id#1146 ASC NULLS FIRST], [d_year#1155, brand_id#1146, brand#1147, sum_agg#1148]
with year_total as (
select c_customer_id customer_id
,c_first_name customer_first_name
,c_last_name customer_last_name
,c_preferred_cust_flag customer_preferred_cust_flag
,c_birth_country customer_birth_country
,c_login customer_login
,c_email_address customer_email_address
,d_year dyear
,sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total
,'s' sale_type
from customer
,store_sales
,date_dim
where c_customer_sk = ss_customer_sk
and ss_sold_date_sk = d_date_sk
group by c_customer_id
,c_first_name
,c_last_name
,c_preferred_cust_flag
,c_birth_country
,c_login
,c_email_address
,d_year
union all
select c_customer_id customer_id
,c_first_name customer_first_name
,c_last_name customer_last_name
,c_preferred_cust_flag customer_preferred_cust_flag
,c_birth_country customer_birth_country
,c_login customer_login
,c_email_address customer_email_address
,d_year dyear
,sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2) ) year_total
,'c' sale_type
from customer
,catalog_sales
,date_dim
where c_customer_sk = cs_bill_customer_sk
and cs_sold_date_sk = d_date_sk
group by c_customer_id
,c_first_name
,c_last_name
,c_preferred_cust_flag
,c_birth_country
,c_login
,c_email_address
,d_year
union all
select c_customer_id customer_id
,c_first_name customer_first_name
,c_last_name customer_last_name
,c_preferred_cust_flag customer_preferred_cust_flag
,c_birth_country customer_birth_country
,c_login customer_login
,c_email_address customer_email_address
,d_year dyear
,sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2) ) year_total
,'w' sale_type
from customer
,web_sales
,date_dim
where c_customer_sk = ws_bill_customer_sk
and ws_sold_date_sk = d_date_sk
group by c_customer_id
,c_first_name
,c_last_name
,c_preferred_cust_flag
,c_birth_country
,c_login
,c_email_address
,d_year
)
select
t_s_secyear.customer_id
,t_s_secyear.customer_first_name
,t_s_secyear.customer_last_name
,t_s_secyear.customer_preferred_cust_flag
from year_total t_s_firstyear
,year_total t_s_secyear
,year_total t_c_firstyear
,year_total t_c_secyear
,year_total t_w_firstyear
,year_total t_w_secyear
where t_s_secyear.customer_id = t_s_firstyear.customer_id
and t_s_firstyear.customer_id = t_c_secyear.customer_id
and t_s_firstyear.customer_id = t_c_firstyear.customer_id
and t_s_firstyear.customer_id = t_w_firstyear.customer_id
and t_s_firstyear.customer_id = t_w_secyear.customer_id
and t_s_firstyear.sale_type = 's'
and t_c_firstyear.sale_type = 'c'
and t_w_firstyear.sale_type = 'w'
and t_s_secyear.sale_type = 's'
and t_c_secyear.sale_type = 'c'
and t_w_secyear.sale_type = 'w'
and t_s_firstyear.dyear = 2001
and t_s_secyear.dyear = 2001+1
and t_c_firstyear.dyear = 2001
and t_c_secyear.dyear = 2001+1
and t_w_firstyear.dyear = 2001
and t_w_secyear.dyear = 2001+1
and t_s_firstyear.year_total > 0
and t_c_firstyear.year_total > 0
and t_w_firstyear.year_total > 0
and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end
> case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end
and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end
> case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end
order by t_s_secyear.customer_id
,t_s_secyear.customer_first_name
,t_s_secyear.customer_last_name
,t_s_secyear.customer_preferred_cust_flag
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [4]: [customer_id#4664, customer_first_name#4665, customer_last_name#4666, customer_preferred_cust_flag#4667]
OraPlan: 00 OraSingleQueryBlock [customer_id#4664, customer_first_name#4665, customer_last_name#4666, customer_preferred_cust_flag#4667], [oracolumnref(customer_id#4664), oracolumnref(customer_first_name#4665), oracolumnref(customer_last_name#4666), oracolumnref(customer_preferred_cust_flag#4667)], orabinaryopexpression((isnotnull(year_total#3250) AND (year_total#3250 > 0E-15)))
01 :- OraSingleQueryBlock [c_customer_id#3273 AS customer_id#3242, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#3307 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#3306 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#3304 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#3305 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#3250], [oraalias(c_customer_id#3273 AS customer_id#3242), oraalias(sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#3307 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#3306 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#3304 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#3305 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#3250)], orabinaryopexpression((isnotnull(SS_CUSTOMER_SK#3293) AND (isnotnull(D_YEAR#3319) AND (D_YEAR#3319 = 2001.000000000000000000)))), List(oracolumnref(c_customer_id#3273), oracolumnref(c_first_name#3280), oracolumnref(c_last_name#3281), oracolumnref(c_preferred_cust_flag#3282), oracolumnref(c_birth_country#3286), oracolumnref(c_login#3287), oracolumnref(c_email_address#3288), oracolumnref(d_year#3319))
02 : :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#3272, C_CUSTOMER_ID#3273, C_FIRST_NAME#3280, C_LAST_NAME#3281, C_PREFERRED_CUST_FLAG#3282, C_BIRTH_COUNTRY#3286, C_LOGIN#3287, C_EMAIL_ADDRESS#3288]
03 : :- OraTableScan TPCDS.STORE_SALES, [SS_CUSTOMER_SK#3293, SS_EXT_DISCOUNT_AMT#3304, SS_EXT_SALES_PRICE#3305, SS_EXT_WHOLESALE_COST#3306, SS_EXT_LIST_PRICE#3307, SS_SOLD_DATE_SK#3290]
04 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#3313, D_YEAR#3319]
05 :- OraSingleQueryBlock [c_customer_id#3502 AS customer_id#4664, c_first_name#3509 AS customer_first_name#4665, c_last_name#3510 AS customer_last_name#4666, c_preferred_cust_flag#3511 AS customer_preferred_cust_flag#4667, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#3536 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#3535 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#3533 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#3534 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#4672], [oraalias(c_customer_id#3502 AS customer_id#4664), oraalias(c_first_name#3509 AS customer_first_name#4665), oraalias(c_last_name#3510 AS customer_last_name#4666), oraalias(c_preferred_cust_flag#3511 AS customer_preferred_cust_flag#4667), oraalias(sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#3536 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#3535 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#3533 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#3534 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#4672)], orabinaryopexpression((isnotnull(SS_CUSTOMER_SK#3522) AND (isnotnull(D_YEAR#3548) AND (D_YEAR#3548 = 2002.000000000000000000)))), List(oracolumnref(c_customer_id#3502), oracolumnref(c_first_name#3509), oracolumnref(c_last_name#3510), oracolumnref(c_preferred_cust_flag#3511), oracolumnref(c_birth_country#3515), oracolumnref(c_login#3516), oracolumnref(c_email_address#3517), oracolumnref(d_year#3548))
06 : :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#3501, C_CUSTOMER_ID#3502, C_FIRST_NAME#3509, C_LAST_NAME#3510, C_PREFERRED_CUST_FLAG#3511, C_BIRTH_COUNTRY#3515, C_LOGIN#3516, C_EMAIL_ADDRESS#3517]
07 : :- OraTableScan TPCDS.STORE_SALES, [SS_CUSTOMER_SK#3522, SS_EXT_DISCOUNT_AMT#3533, SS_EXT_SALES_PRICE#3534, SS_EXT_WHOLESALE_COST#3535, SS_EXT_LIST_PRICE#3536, SS_SOLD_DATE_SK#3519]
08 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#3542, D_YEAR#3548]
09 :- OraSingleQueryBlock [customer_id#3252 AS customer_id#4674, year_total#3260 AS year_total#4682], [oraalias(customer_id#3252 AS customer_id#4674), oraalias(year_total#3260 AS year_total#4682)], orabinaryopexpression((isnotnull(year_total#3260) AND (year_total#3260 > 0E-15)))
10 : +- OraSingleQueryBlock [c_customer_id#3800 AS customer_id#3252, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#3842 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#3841 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#3839 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#3840 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#3260], [oraalias(c_customer_id#3800 AS customer_id#3252), oraalias(sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#3842 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#3841 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#3839 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#3840 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#3260)], orabinaryopexpression((isnotnull(CS_BILL_CUSTOMER_SK#3820) AND (isnotnull(D_YEAR#3857) AND (D_YEAR#3857 = 2001.000000000000000000)))), List(oracolumnref(c_customer_id#3800), oracolumnref(c_first_name#3807), oracolumnref(c_last_name#3808), oracolumnref(c_preferred_cust_flag#3809), oracolumnref(c_birth_country#3813), oracolumnref(c_login#3814), oracolumnref(c_email_address#3815), oracolumnref(d_year#3857))
11 : :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#3799, C_CUSTOMER_ID#3800, C_FIRST_NAME#3807, C_LAST_NAME#3808, C_PREFERRED_CUST_FLAG#3809, C_BIRTH_COUNTRY#3813, C_LOGIN#3814, C_EMAIL_ADDRESS#3815]
12 : :- OraTableScan TPCDS.CATALOG_SALES, [CS_BILL_CUSTOMER_SK#3820, CS_EXT_DISCOUNT_AMT#3839, CS_EXT_SALES_PRICE#3840, CS_EXT_WHOLESALE_COST#3841, CS_EXT_LIST_PRICE#3842, CS_SOLD_DATE_SK#3817]
13 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#3851, D_YEAR#3857]
14 :- OraSingleQueryBlock [c_customer_id#4029 AS customer_id#4684, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#4071 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#4070 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#4068 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#4069 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#4692], [oraalias(c_customer_id#4029 AS customer_id#4684), oraalias(sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#4071 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#4070 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#4068 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#4069 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#4692)], orabinaryopexpression((isnotnull(CS_BILL_CUSTOMER_SK#4049) AND (isnotnull(D_YEAR#4086) AND (D_YEAR#4086 = 2002.000000000000000000)))), List(oracolumnref(c_customer_id#4029), oracolumnref(c_first_name#4036), oracolumnref(c_last_name#4037), oracolumnref(c_preferred_cust_flag#4038), oracolumnref(c_birth_country#4042), oracolumnref(c_login#4043), oracolumnref(c_email_address#4044), oracolumnref(d_year#4086))
15 : :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#4028, C_CUSTOMER_ID#4029, C_FIRST_NAME#4036, C_LAST_NAME#4037, C_PREFERRED_CUST_FLAG#4038, C_BIRTH_COUNTRY#4042, C_LOGIN#4043, C_EMAIL_ADDRESS#4044]
16 : :- OraTableScan TPCDS.CATALOG_SALES, [CS_BILL_CUSTOMER_SK#4049, CS_EXT_DISCOUNT_AMT#4068, CS_EXT_SALES_PRICE#4069, CS_EXT_WHOLESALE_COST#4070, CS_EXT_LIST_PRICE#4071, CS_SOLD_DATE_SK#4046]
17 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#4080, D_YEAR#4086]
18 :- OraSingleQueryBlock [customer_id#3262 AS customer_id#4694, year_total#3270 AS year_total#4702], [oraalias(customer_id#3262 AS customer_id#4694), oraalias(year_total#3270 AS year_total#4702)], orabinaryopexpression((isnotnull(year_total#3270) AND (year_total#3270 > 0E-15)))
19 : +- OraSingleQueryBlock [c_customer_id#4338 AS customer_id#3262, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#4380 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#4379 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#4377 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#4378 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#3270], [oraalias(c_customer_id#4338 AS customer_id#3262), oraalias(sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#4380 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#4379 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#4377 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#4378 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#3270)], orabinaryopexpression((isnotnull(WS_BILL_CUSTOMER_SK#4359) AND (isnotnull(D_YEAR#4395) AND (D_YEAR#4395 = 2001.000000000000000000)))), List(oracolumnref(c_customer_id#4338), oracolumnref(c_first_name#4345), oracolumnref(c_last_name#4346), oracolumnref(c_preferred_cust_flag#4347), oracolumnref(c_birth_country#4351), oracolumnref(c_login#4352), oracolumnref(c_email_address#4353), oracolumnref(d_year#4395))
20 : :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#4337, C_CUSTOMER_ID#4338, C_FIRST_NAME#4345, C_LAST_NAME#4346, C_PREFERRED_CUST_FLAG#4347, C_BIRTH_COUNTRY#4351, C_LOGIN#4352, C_EMAIL_ADDRESS#4353]
21 : :- OraTableScan TPCDS.WEB_SALES, [WS_BILL_CUSTOMER_SK#4359, WS_EXT_DISCOUNT_AMT#4377, WS_EXT_SALES_PRICE#4378, WS_EXT_WHOLESALE_COST#4379, WS_EXT_LIST_PRICE#4380, WS_SOLD_DATE_SK#4355]
22 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#4389, D_YEAR#4395]
23 +- OraSingleQueryBlock [c_customer_id#4567 AS customer_id#4704, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#4609 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#4608 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#4606 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#4607 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#4712], [oraalias(c_customer_id#4567 AS customer_id#4704), oraalias(sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#4609 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#4608 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#4606 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#4607 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true)) AS year_total#4712)], orabinaryopexpression((isnotnull(WS_BILL_CUSTOMER_SK#4588) AND (isnotnull(D_YEAR#4624) AND (D_YEAR#4624 = 2002.000000000000000000)))), List(oracolumnref(c_customer_id#4567), oracolumnref(c_first_name#4574), oracolumnref(c_last_name#4575), oracolumnref(c_preferred_cust_flag#4576), oracolumnref(c_birth_country#4580), oracolumnref(c_login#4581), oracolumnref(c_email_address#4582), oracolumnref(d_year#4624))
24 :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#4566, C_CUSTOMER_ID#4567, C_FIRST_NAME#4574, C_LAST_NAME#4575, C_PREFERRED_CUST_FLAG#4576, C_BIRTH_COUNTRY#4580, C_LOGIN#4581, C_EMAIL_ADDRESS#4582]
25 :- OraTableScan TPCDS.WEB_SALES, [WS_BILL_CUSTOMER_SK#4588, WS_EXT_DISCOUNT_AMT#4606, WS_EXT_SALES_PRICE#4607, WS_EXT_WHOLESALE_COST#4608, WS_EXT_LIST_PRICE#4609, WS_SOLD_DATE_SK#4584]
26 +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#4618, D_YEAR#4624]
ReadSchema: struct<customer_id:string,customer_first_name:string,customer_last_name:string,customer_preferred_cust_flag:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000, 2002.000000000000000000, 2001.000000000000000000, 0E-15, 2002.000000000000000000, 2001.000000000000000000, 0E-15, 2002.000000000000000000, 0E-15
oraPushdownSQL: select "sparkora_1"."customer_id", "customer_first_name", "customer_last_name", "customer_preferred_cust_flag"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("SS_EXT_LIST_PRICE" - "SS_EXT_WHOLESALE_COST") - "SS_EXT_DISCOUNT_AMT") + "SS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where (("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_0" join ( select "C_CUSTOMER_ID" AS "customer_id", "C_FIRST_NAME" AS "customer_first_name", "C_LAST_NAME" AS "customer_last_name", "C_PREFERRED_CUST_FLAG" AS "customer_preferred_cust_flag", SUM((((("SS_EXT_LIST_PRICE" - "SS_EXT_WHOLESALE_COST") - "SS_EXT_DISCOUNT_AMT") + "SS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where (("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_1" on ("sparkora_0"."customer_id" = "sparkora_1"."customer_id") join ( select "customer_id" AS "customer_id", "year_total" AS "year_total"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("CS_EXT_LIST_PRICE" - "CS_EXT_WHOLESALE_COST") - "CS_EXT_DISCOUNT_AMT") + "CS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.CATALOG_SALES on ("C_CUSTOMER_SK" = "CS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("CS_SOLD_DATE_SK" = "D_DATE_SK")
where (("CS_BILL_CUSTOMER_SK" IS NOT NULL AND "CS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" )
where ("year_total" IS NOT NULL AND ("year_total" > ?)) ) "sparkora_2" on ("sparkora_0"."customer_id" = "sparkora_2"."customer_id") join ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("CS_EXT_LIST_PRICE" - "CS_EXT_WHOLESALE_COST") - "CS_EXT_DISCOUNT_AMT") + "CS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.CATALOG_SALES on ("C_CUSTOMER_SK" = "CS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("CS_SOLD_DATE_SK" = "D_DATE_SK")
where (("CS_BILL_CUSTOMER_SK" IS NOT NULL AND "CS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_3" on (("sparkora_0"."customer_id" = "sparkora_3"."customer_id") AND (CASE WHEN ("sparkora_2"."year_total" > 0E-15) THEN ("sparkora_3"."year_total" / "sparkora_2"."year_total") ELSE null END > CASE WHEN ("sparkora_0"."year_total" > 0E-15) THEN ("sparkora_1"."year_total" / "sparkora_0"."year_total") ELSE null END)) join ( select "customer_id" AS "customer_id", "year_total" AS "year_total"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("WS_EXT_LIST_PRICE" - "WS_EXT_WHOLESALE_COST") - "WS_EXT_DISCOUNT_AMT") + "WS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.WEB_SALES on ("C_CUSTOMER_SK" = "WS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_BILL_CUSTOMER_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" )
where ("year_total" IS NOT NULL AND ("year_total" > ?)) ) "sparkora_4" on ("sparkora_0"."customer_id" = "sparkora_4"."customer_id") join ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("WS_EXT_LIST_PRICE" - "WS_EXT_WHOLESALE_COST") - "WS_EXT_DISCOUNT_AMT") + "WS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.WEB_SALES on ("C_CUSTOMER_SK" = "WS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_BILL_CUSTOMER_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_5" on (("sparkora_0"."customer_id" = "sparkora_5"."customer_id") AND (CASE WHEN ("sparkora_2"."year_total" > 0E-15) THEN ("sparkora_3"."year_total" / "sparkora_2"."year_total") ELSE null END > CASE WHEN ("sparkora_4"."year_total" > 0E-15) THEN ("sparkora_5"."year_total" / "sparkora_4"."year_total") ELSE null END))
where ("sparkora_0"."year_total" IS NOT NULL AND ("sparkora_0"."year_total" > ?))
(2) Project [codegen id : 1]
Output [4]: [customer_id#4664, customer_first_name#4665, customer_last_name#4666, customer_preferred_cust_flag#4667]
Input [4]: [customer_id#4664, customer_first_name#4665, customer_last_name#4666, customer_preferred_cust_flag#4667]
(3) TakeOrderedAndProject
Input [4]: [customer_id#4664, customer_first_name#4665, customer_last_name#4666, customer_preferred_cust_flag#4667]
Arguments: 100, [customer_id#4664 ASC NULLS FIRST, customer_first_name#4665 ASC NULLS FIRST, customer_last_name#4666 ASC NULLS FIRST, customer_preferred_cust_flag#4667 ASC NULLS FIRST], [customer_id#4664, customer_first_name#4665, customer_last_name#4666, customer_preferred_cust_flag#4667]
select "sparkora_1"."customer_id", "customer_first_name", "customer_last_name", "customer_preferred_cust_flag"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("SS_EXT_LIST_PRICE" - "SS_EXT_WHOLESALE_COST") - "SS_EXT_DISCOUNT_AMT") + "SS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where (("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2001.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_0" join ( select "C_CUSTOMER_ID" AS "customer_id", "C_FIRST_NAME" AS "customer_first_name", "C_LAST_NAME" AS "customer_last_name", "C_PREFERRED_CUST_FLAG" AS "customer_preferred_cust_flag", SUM((((("SS_EXT_LIST_PRICE" - "SS_EXT_WHOLESALE_COST") - "SS_EXT_DISCOUNT_AMT") + "SS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where (("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2002.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_1" on ("sparkora_0"."customer_id" = "sparkora_1"."customer_id") join ( select "customer_id" AS "customer_id", "year_total" AS "year_total"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("CS_EXT_LIST_PRICE" - "CS_EXT_WHOLESALE_COST") - "CS_EXT_DISCOUNT_AMT") + "CS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.CATALOG_SALES on ("C_CUSTOMER_SK" = "CS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("CS_SOLD_DATE_SK" = "D_DATE_SK")
where (("CS_BILL_CUSTOMER_SK" IS NOT NULL AND "CS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2001.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" )
where ("year_total" IS NOT NULL AND ("year_total" > 0E-15)) ) "sparkora_2" on ("sparkora_0"."customer_id" = "sparkora_2"."customer_id") join ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("CS_EXT_LIST_PRICE" - "CS_EXT_WHOLESALE_COST") - "CS_EXT_DISCOUNT_AMT") + "CS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.CATALOG_SALES on ("C_CUSTOMER_SK" = "CS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("CS_SOLD_DATE_SK" = "D_DATE_SK")
where (("CS_BILL_CUSTOMER_SK" IS NOT NULL AND "CS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2002.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_3" on (("sparkora_0"."customer_id" = "sparkora_3"."customer_id") AND (CASE WHEN ("sparkora_2"."year_total" > 0E-15) THEN ("sparkora_3"."year_total" / "sparkora_2"."year_total") ELSE null END > CASE WHEN ("sparkora_0"."year_total" > 0E-15) THEN ("sparkora_1"."year_total" / "sparkora_0"."year_total") ELSE null END)) join ( select "customer_id" AS "customer_id", "year_total" AS "year_total"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("WS_EXT_LIST_PRICE" - "WS_EXT_WHOLESALE_COST") - "WS_EXT_DISCOUNT_AMT") + "WS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.WEB_SALES on ("C_CUSTOMER_SK" = "WS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_BILL_CUSTOMER_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2001.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" )
where ("year_total" IS NOT NULL AND ("year_total" > 0E-15)) ) "sparkora_4" on ("sparkora_0"."customer_id" = "sparkora_4"."customer_id") join ( select "C_CUSTOMER_ID" AS "customer_id", SUM((((("WS_EXT_LIST_PRICE" - "WS_EXT_WHOLESALE_COST") - "WS_EXT_DISCOUNT_AMT") + "WS_EXT_SALES_PRICE") / 2.000000000000000)) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.WEB_SALES on ("C_CUSTOMER_SK" = "WS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_BILL_CUSTOMER_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2002.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_5" on (("sparkora_0"."customer_id" = "sparkora_5"."customer_id") AND (CASE WHEN ("sparkora_2"."year_total" > 0E-15) THEN ("sparkora_3"."year_total" / "sparkora_2"."year_total") ELSE null END > CASE WHEN ("sparkora_4"."year_total" > 0E-15) THEN ("sparkora_5"."year_total" / "sparkora_4"."year_total") ELSE null END))
where ("sparkora_0"."year_total" IS NOT NULL AND ("sparkora_0"."year_total" > 0E-15))
== Physical Plan ==
TakeOrderedAndProject (117)
+- * Project (116)
+- * SortMergeJoin Inner (115)
:- * Project (97)
: +- * SortMergeJoin Inner (96)
: :- * Project (76)
: : +- * SortMergeJoin Inner (75)
: : :- * Project (57)
: : : +- * SortMergeJoin Inner (56)
: : : :- * SortMergeJoin Inner (36)
: : : : :- * Sort (18)
: : : : : +- * Filter (17)
: : : : : +- * HashAggregate (16)
: : : : : +- * HashAggregate (15)
: : : : : +- * Project (14)
: : : : : +- * SortMergeJoin Inner (13)
: : : : : :- * Sort (9)
: : : : : : +- * Project (8)
: : : : : : +- * SortMergeJoin Inner (7)
: : : : : : :- * Sort (3)
: : : : : : : +- * Project (2)
: : : : : : : +- BatchScan (1)
: : : : : : +- * Sort (6)
: : : : : : +- * Filter (5)
: : : : : : +- BatchScan (4)
: : : : : +- * Sort (12)
: : : : : +- * Filter (11)
: : : : : +- BatchScan (10)
: : : : +- * Sort (35)
: : : : +- * HashAggregate (34)
: : : : +- * HashAggregate (33)
: : : : +- * Project (32)
: : : : +- * SortMergeJoin Inner (31)
: : : : :- * Sort (27)
: : : : : +- * Project (26)
: : : : : +- * SortMergeJoin Inner (25)
: : : : : :- * Sort (21)
: : : : : : +- * Project (20)
: : : : : : +- BatchScan (19)
: : : : : +- * Sort (24)
: : : : : +- * Filter (23)
: : : : : +- BatchScan (22)
: : : : +- * Sort (30)
: : : : +- * Filter (29)
: : : : +- BatchScan (28)
: : : +- * Sort (55)
: : : +- * Project (54)
: : : +- * Filter (53)
: : : +- * HashAggregate (52)
: : : +- * HashAggregate (51)
: : : +- * Project (50)
: : : +- * SortMergeJoin Inner (49)
: : : :- * Sort (45)
: : : : +- * Project (44)
: : : : +- * SortMergeJoin Inner (43)
: : : : :- * Sort (39)
: : : : : +- * Project (38)
: : : : : +- BatchScan (37)
: : : : +- * Sort (42)
: : : : +- * Filter (41)
: : : : +- BatchScan (40)
: : : +- * Sort (48)
: : : +- * Filter (47)
: : : +- BatchScan (46)
: : +- * Sort (74)
: : +- * HashAggregate (73)
: : +- * HashAggregate (72)
: : +- * Project (71)
: : +- * SortMergeJoin Inner (70)
: : :- * Sort (66)
: : : +- * Project (65)
: : : +- * SortMergeJoin Inner (64)
: : : :- * Sort (60)
: : : : +- * Project (59)
: : : : +- BatchScan (58)
: : : +- * Sort (63)
: : : +- * Filter (62)
: : : +- BatchScan (61)
: : +- * Sort (69)
: : +- * Filter (68)
: : +- BatchScan (67)
: +- * Sort (95)
: +- * Project (94)
: +- * Filter (93)
: +- * HashAggregate (92)
: +- * HashAggregate (91)
: +- * Project (90)
: +- * SortMergeJoin Inner (89)
: :- * Sort (85)
: : +- * Project (84)
: : +- * SortMergeJoin Inner (83)
: : :- * Sort (79)
: : : +- * Project (78)
: : : +- BatchScan (77)
: : +- * Sort (82)
: : +- * Filter (81)
: : +- BatchScan (80)
: +- * Sort (88)
: +- * Filter (87)
: +- BatchScan (86)
+- * Sort (114)
+- * HashAggregate (113)
+- * HashAggregate (112)
+- * Project (111)
+- * SortMergeJoin Inner (110)
:- * Sort (106)
: +- * Project (105)
: +- * SortMergeJoin Inner (104)
: :- * Sort (100)
: : +- * Project (99)
: : +- BatchScan (98)
: +- * Sort (103)
: +- * Filter (102)
: +- BatchScan (101)
+- * Sort (109)
+- * Filter (108)
+- BatchScan (107)
(1) BatchScan
Output [8]: [C_CUSTOMER_SK#1388, C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#2834, C_CUSTOMER_ID#2835, C_FIRST_NAME#2836, C_LAST_NAME#2837, C_PREFERRED_CUST_FLAG#2838, C_BIRTH_COUNTRY#2839, C_LOGIN#2840, C_EMAIL_ADDRESS#2841], [oracolumnref(C_CUSTOMER_SK#2834), oracolumnref(C_CUSTOMER_ID#2835), oracolumnref(C_FIRST_NAME#2836), oracolumnref(C_LAST_NAME#2837), oracolumnref(C_PREFERRED_CUST_FLAG#2838), oracolumnref(C_BIRTH_COUNTRY#2839), oracolumnref(C_LOGIN#2840), oracolumnref(C_EMAIL_ADDRESS#2841)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(2) Project [codegen id : 1]
Output [8]: [C_CUSTOMER_SK#1388, C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404]
Input [8]: [C_CUSTOMER_SK#1388, C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404]
(3) Sort [codegen id : 1]
Input [8]: [C_CUSTOMER_SK#1388, C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404]
Arguments: [c_customer_sk#1388 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [6]: [SS_CUSTOMER_SK#1409, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423, SS_SOLD_DATE_SK#1406]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_CUSTOMER_SK#2850, SS_EXT_DISCOUNT_AMT#2851, SS_EXT_SALES_PRICE#2852, SS_EXT_WHOLESALE_COST#2853, SS_EXT_LIST_PRICE#2854, SS_SOLD_DATE_SK#2855], [oracolumnref(SS_CUSTOMER_SK#2850), oracolumnref(SS_EXT_DISCOUNT_AMT#2851), oracolumnref(SS_EXT_SALES_PRICE#2852), oracolumnref(SS_EXT_WHOLESALE_COST#2853), oracolumnref(SS_EXT_LIST_PRICE#2854), oracolumnref(SS_SOLD_DATE_SK#2855)], orapostfixunaryopexpression(isnotnull(SS_CUSTOMER_SK#1409))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_CUSTOMER_SK:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18),SS_EXT_SALES_PRICE:decimal(38,18),SS_EXT_WHOLESALE_COST:decimal(38,18),SS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_CUSTOMER_SK", "SS_EXT_DISCOUNT_AMT", "SS_EXT_SALES_PRICE", "SS_EXT_WHOLESALE_COST", "SS_EXT_LIST_PRICE", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_CUSTOMER_SK" IS NOT NULL and "SS_SOLD_DATE_SK" IS NOT NULL
(5) Filter [codegen id : 2]
Input [6]: [SS_CUSTOMER_SK#1409, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423, SS_SOLD_DATE_SK#1406]
Condition : isnotnull(SS_CUSTOMER_SK#1409)
(6) Sort [codegen id : 2]
Input [6]: [SS_CUSTOMER_SK#1409, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423, SS_SOLD_DATE_SK#1406]
Arguments: [ss_customer_sk#1409 ASC NULLS FIRST], false, 0
(7) SortMergeJoin [codegen id : 3]
Left keys [1]: [c_customer_sk#1388]
Right keys [1]: [ss_customer_sk#1409]
Join condition: None
(8) Project [codegen id : 3]
Output [12]: [C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404, SS_SOLD_DATE_SK#1406, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423]
Input [14]: [C_CUSTOMER_SK#1388, C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404, SS_CUSTOMER_SK#1409, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423, SS_SOLD_DATE_SK#1406]
(9) Sort [codegen id : 3]
Input [12]: [C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404, SS_SOLD_DATE_SK#1406, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423]
Arguments: [ss_sold_date_sk#1406 ASC NULLS FIRST], false, 0
(10) BatchScan
Output [2]: [D_DATE_SK#1429, D_YEAR#1435]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#2862, D_YEAR#2863], [oracolumnref(D_DATE_SK#2862), oracolumnref(D_YEAR#2863)], orabinaryopexpression((isnotnull(D_YEAR#1435) AND (D_YEAR#1435 = 2001.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(11) Filter [codegen id : 4]
Input [2]: [D_DATE_SK#1429, D_YEAR#1435]
Condition : (isnotnull(D_YEAR#1435) AND (D_YEAR#1435 = 2001.000000000000000000))
(12) Sort [codegen id : 4]
Input [2]: [D_DATE_SK#1429, D_YEAR#1435]
Arguments: [d_date_sk#1429 ASC NULLS FIRST], false, 0
(13) SortMergeJoin [codegen id : 5]
Left keys [1]: [ss_sold_date_sk#1406]
Right keys [1]: [d_date_sk#1429]
Join condition: None
(14) Project [codegen id : 5]
Output [12]: [C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423, D_YEAR#1435]
Input [14]: [C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404, SS_SOLD_DATE_SK#1406, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423, D_DATE_SK#1429, D_YEAR#1435]
(15) HashAggregate [codegen id : 5]
Input [12]: [C_CUSTOMER_ID#1389, C_FIRST_NAME#1396, C_LAST_NAME#1397, C_PREFERRED_CUST_FLAG#1398, C_BIRTH_COUNTRY#1402, C_LOGIN#1403, C_EMAIL_ADDRESS#1404, SS_EXT_DISCOUNT_AMT#1420, SS_EXT_SALES_PRICE#1421, SS_EXT_WHOLESALE_COST#1422, SS_EXT_LIST_PRICE#1423, D_YEAR#1435]
Keys [8]: [c_customer_id#1389, c_first_name#1396, c_last_name#1397, c_preferred_cust_flag#1398, c_birth_country#1402, c_login#1403, c_email_address#1404, d_year#1435]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#1423 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#1422 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#1420 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#1421 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [2]: [sum#3218, isEmpty#3219]
Results [10]: [c_customer_id#1389, c_first_name#1396, c_last_name#1397, c_preferred_cust_flag#1398, c_birth_country#1402, c_login#1403, c_email_address#1404, d_year#1435, sum#3220, isEmpty#3221]
(16) HashAggregate [codegen id : 5]
Input [10]: [c_customer_id#1389, c_first_name#1396, c_last_name#1397, c_preferred_cust_flag#1398, c_birth_country#1402, c_login#1403, c_email_address#1404, d_year#1435, sum#3220, isEmpty#3221]
Keys [8]: [c_customer_id#1389, c_first_name#1396, c_last_name#1397, c_preferred_cust_flag#1398, c_birth_country#1402, c_login#1403, c_email_address#1404, d_year#1435]
Functions [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#1423 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#1422 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#1420 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#1421 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#1423 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#1422 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#1420 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#1421 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2762]
Results [2]: [c_customer_id#1389 AS customer_id#1358, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#1423 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#1422 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#1420 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#1421 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2762 AS year_total#1366]
(17) Filter [codegen id : 5]
Input [2]: [customer_id#1358, year_total#1366]
Condition : (isnotnull(year_total#1366) AND (year_total#1366 > 0E-15))
(18) Sort [codegen id : 5]
Input [2]: [customer_id#1358, year_total#1366]
Arguments: [customer_id#1358 ASC NULLS FIRST], false, 0
(19) BatchScan
Output [8]: [C_CUSTOMER_SK#1617, C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#2898, C_CUSTOMER_ID#2899, C_FIRST_NAME#2900, C_LAST_NAME#2901, C_PREFERRED_CUST_FLAG#2902, C_BIRTH_COUNTRY#2903, C_LOGIN#2904, C_EMAIL_ADDRESS#2905], [oracolumnref(C_CUSTOMER_SK#2898), oracolumnref(C_CUSTOMER_ID#2899), oracolumnref(C_FIRST_NAME#2900), oracolumnref(C_LAST_NAME#2901), oracolumnref(C_PREFERRED_CUST_FLAG#2902), oracolumnref(C_BIRTH_COUNTRY#2903), oracolumnref(C_LOGIN#2904), oracolumnref(C_EMAIL_ADDRESS#2905)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(20) Project [codegen id : 6]
Output [8]: [C_CUSTOMER_SK#1617, C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633]
Input [8]: [C_CUSTOMER_SK#1617, C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633]
(21) Sort [codegen id : 6]
Input [8]: [C_CUSTOMER_SK#1617, C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633]
Arguments: [c_customer_sk#1617 ASC NULLS FIRST], false, 0
(22) BatchScan
Output [6]: [SS_CUSTOMER_SK#1638, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652, SS_SOLD_DATE_SK#1635]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_CUSTOMER_SK#2914, SS_EXT_DISCOUNT_AMT#2915, SS_EXT_SALES_PRICE#2916, SS_EXT_WHOLESALE_COST#2917, SS_EXT_LIST_PRICE#2918, SS_SOLD_DATE_SK#2919], [oracolumnref(SS_CUSTOMER_SK#2914), oracolumnref(SS_EXT_DISCOUNT_AMT#2915), oracolumnref(SS_EXT_SALES_PRICE#2916), oracolumnref(SS_EXT_WHOLESALE_COST#2917), oracolumnref(SS_EXT_LIST_PRICE#2918), oracolumnref(SS_SOLD_DATE_SK#2919)], orapostfixunaryopexpression(isnotnull(SS_CUSTOMER_SK#1638))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_CUSTOMER_SK:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18),SS_EXT_SALES_PRICE:decimal(38,18),SS_EXT_WHOLESALE_COST:decimal(38,18),SS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_CUSTOMER_SK", "SS_EXT_DISCOUNT_AMT", "SS_EXT_SALES_PRICE", "SS_EXT_WHOLESALE_COST", "SS_EXT_LIST_PRICE", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_CUSTOMER_SK" IS NOT NULL and "SS_SOLD_DATE_SK" IS NOT NULL
(23) Filter [codegen id : 7]
Input [6]: [SS_CUSTOMER_SK#1638, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652, SS_SOLD_DATE_SK#1635]
Condition : isnotnull(SS_CUSTOMER_SK#1638)
(24) Sort [codegen id : 7]
Input [6]: [SS_CUSTOMER_SK#1638, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652, SS_SOLD_DATE_SK#1635]
Arguments: [ss_customer_sk#1638 ASC NULLS FIRST], false, 0
(25) SortMergeJoin [codegen id : 8]
Left keys [1]: [c_customer_sk#1617]
Right keys [1]: [ss_customer_sk#1638]
Join condition: None
(26) Project [codegen id : 8]
Output [12]: [C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633, SS_SOLD_DATE_SK#1635, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652]
Input [14]: [C_CUSTOMER_SK#1617, C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633, SS_CUSTOMER_SK#1638, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652, SS_SOLD_DATE_SK#1635]
(27) Sort [codegen id : 8]
Input [12]: [C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633, SS_SOLD_DATE_SK#1635, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652]
Arguments: [ss_sold_date_sk#1635 ASC NULLS FIRST], false, 0
(28) BatchScan
Output [2]: [D_DATE_SK#1658, D_YEAR#1664]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#2926, D_YEAR#2927], [oracolumnref(D_DATE_SK#2926), oracolumnref(D_YEAR#2927)], orabinaryopexpression((isnotnull(D_YEAR#1664) AND (D_YEAR#1664 = 2002.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(29) Filter [codegen id : 9]
Input [2]: [D_DATE_SK#1658, D_YEAR#1664]
Condition : (isnotnull(D_YEAR#1664) AND (D_YEAR#1664 = 2002.000000000000000000))
(30) Sort [codegen id : 9]
Input [2]: [D_DATE_SK#1658, D_YEAR#1664]
Arguments: [d_date_sk#1658 ASC NULLS FIRST], false, 0
(31) SortMergeJoin [codegen id : 10]
Left keys [1]: [ss_sold_date_sk#1635]
Right keys [1]: [d_date_sk#1658]
Join condition: None
(32) Project [codegen id : 10]
Output [12]: [C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652, D_YEAR#1664]
Input [14]: [C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633, SS_SOLD_DATE_SK#1635, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652, D_DATE_SK#1658, D_YEAR#1664]
(33) HashAggregate [codegen id : 10]
Input [12]: [C_CUSTOMER_ID#1618, C_FIRST_NAME#1625, C_LAST_NAME#1626, C_PREFERRED_CUST_FLAG#1627, C_BIRTH_COUNTRY#1631, C_LOGIN#1632, C_EMAIL_ADDRESS#1633, SS_EXT_DISCOUNT_AMT#1649, SS_EXT_SALES_PRICE#1650, SS_EXT_WHOLESALE_COST#1651, SS_EXT_LIST_PRICE#1652, D_YEAR#1664]
Keys [8]: [c_customer_id#1618, c_first_name#1625, c_last_name#1626, c_preferred_cust_flag#1627, c_birth_country#1631, c_login#1632, c_email_address#1633, d_year#1664]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#1652 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#1651 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#1649 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#1650 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [2]: [sum#3222, isEmpty#3223]
Results [10]: [c_customer_id#1618, c_first_name#1625, c_last_name#1626, c_preferred_cust_flag#1627, c_birth_country#1631, c_login#1632, c_email_address#1633, d_year#1664, sum#3224, isEmpty#3225]
(34) HashAggregate [codegen id : 10]
Input [10]: [c_customer_id#1618, c_first_name#1625, c_last_name#1626, c_preferred_cust_flag#1627, c_birth_country#1631, c_login#1632, c_email_address#1633, d_year#1664, sum#3224, isEmpty#3225]
Keys [8]: [c_customer_id#1618, c_first_name#1625, c_last_name#1626, c_preferred_cust_flag#1627, c_birth_country#1631, c_login#1632, c_email_address#1633, d_year#1664]
Functions [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#1652 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#1651 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#1649 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#1650 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#1652 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#1651 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#1649 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#1650 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2765]
Results [5]: [c_customer_id#1618 AS customer_id#2780, c_first_name#1625 AS customer_first_name#2781, c_last_name#1626 AS customer_last_name#2782, c_preferred_cust_flag#1627 AS customer_preferred_cust_flag#2783, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ss_ext_list_price#1652 as decimal(38,17))) - promote_precision(cast(ss_ext_wholesale_cost#1651 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ss_ext_discount_amt#1649 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ss_ext_sales_price#1650 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2765 AS year_total#2788]
(35) Sort [codegen id : 10]
Input [5]: [customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783, year_total#2788]
Arguments: [customer_id#2780 ASC NULLS FIRST], false, 0
(36) SortMergeJoin [codegen id : 11]
Left keys [1]: [customer_id#1358]
Right keys [1]: [customer_id#2780]
Join condition: None
(37) BatchScan
Output [8]: [C_CUSTOMER_SK#1915, C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#2978, C_CUSTOMER_ID#2979, C_FIRST_NAME#2980, C_LAST_NAME#2981, C_PREFERRED_CUST_FLAG#2982, C_BIRTH_COUNTRY#2983, C_LOGIN#2984, C_EMAIL_ADDRESS#2985], [oracolumnref(C_CUSTOMER_SK#2978), oracolumnref(C_CUSTOMER_ID#2979), oracolumnref(C_FIRST_NAME#2980), oracolumnref(C_LAST_NAME#2981), oracolumnref(C_PREFERRED_CUST_FLAG#2982), oracolumnref(C_BIRTH_COUNTRY#2983), oracolumnref(C_LOGIN#2984), oracolumnref(C_EMAIL_ADDRESS#2985)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(38) Project [codegen id : 12]
Output [8]: [C_CUSTOMER_SK#1915, C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931]
Input [8]: [C_CUSTOMER_SK#1915, C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931]
(39) Sort [codegen id : 12]
Input [8]: [C_CUSTOMER_SK#1915, C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931]
Arguments: [c_customer_sk#1915 ASC NULLS FIRST], false, 0
(40) BatchScan
Output [6]: [CS_BILL_CUSTOMER_SK#1936, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958, CS_SOLD_DATE_SK#1933]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CATALOG_SALES, [CS_BILL_CUSTOMER_SK#2994, CS_EXT_DISCOUNT_AMT#2995, CS_EXT_SALES_PRICE#2996, CS_EXT_WHOLESALE_COST#2997, CS_EXT_LIST_PRICE#2998, CS_SOLD_DATE_SK#2999], [oracolumnref(CS_BILL_CUSTOMER_SK#2994), oracolumnref(CS_EXT_DISCOUNT_AMT#2995), oracolumnref(CS_EXT_SALES_PRICE#2996), oracolumnref(CS_EXT_WHOLESALE_COST#2997), oracolumnref(CS_EXT_LIST_PRICE#2998), oracolumnref(CS_SOLD_DATE_SK#2999)], orapostfixunaryopexpression(isnotnull(CS_BILL_CUSTOMER_SK#1936))
PartitionSchema: struct<CS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<CS_BILL_CUSTOMER_SK:decimal(38,18),CS_EXT_DISCOUNT_AMT:decimal(38,18),CS_EXT_SALES_PRICE:decimal(38,18),CS_EXT_WHOLESALE_COST:decimal(38,18),CS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CS_BILL_CUSTOMER_SK", "CS_EXT_DISCOUNT_AMT", "CS_EXT_SALES_PRICE", "CS_EXT_WHOLESALE_COST", "CS_EXT_LIST_PRICE", "CS_SOLD_DATE_SK"
from TPCDS.CATALOG_SALES
where "CS_BILL_CUSTOMER_SK" IS NOT NULL and "CS_SOLD_DATE_SK" IS NOT NULL
(41) Filter [codegen id : 13]
Input [6]: [CS_BILL_CUSTOMER_SK#1936, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958, CS_SOLD_DATE_SK#1933]
Condition : isnotnull(CS_BILL_CUSTOMER_SK#1936)
(42) Sort [codegen id : 13]
Input [6]: [CS_BILL_CUSTOMER_SK#1936, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958, CS_SOLD_DATE_SK#1933]
Arguments: [cs_bill_customer_sk#1936 ASC NULLS FIRST], false, 0
(43) SortMergeJoin [codegen id : 14]
Left keys [1]: [c_customer_sk#1915]
Right keys [1]: [cs_bill_customer_sk#1936]
Join condition: None
(44) Project [codegen id : 14]
Output [12]: [C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931, CS_SOLD_DATE_SK#1933, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958]
Input [14]: [C_CUSTOMER_SK#1915, C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931, CS_BILL_CUSTOMER_SK#1936, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958, CS_SOLD_DATE_SK#1933]
(45) Sort [codegen id : 14]
Input [12]: [C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931, CS_SOLD_DATE_SK#1933, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958]
Arguments: [cs_sold_date_sk#1933 ASC NULLS FIRST], false, 0
(46) BatchScan
Output [2]: [D_DATE_SK#1967, D_YEAR#1973]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#3006, D_YEAR#3007], [oracolumnref(D_DATE_SK#3006), oracolumnref(D_YEAR#3007)], orabinaryopexpression((isnotnull(D_YEAR#1973) AND (D_YEAR#1973 = 2001.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(47) Filter [codegen id : 15]
Input [2]: [D_DATE_SK#1967, D_YEAR#1973]
Condition : (isnotnull(D_YEAR#1973) AND (D_YEAR#1973 = 2001.000000000000000000))
(48) Sort [codegen id : 15]
Input [2]: [D_DATE_SK#1967, D_YEAR#1973]
Arguments: [d_date_sk#1967 ASC NULLS FIRST], false, 0
(49) SortMergeJoin [codegen id : 16]
Left keys [1]: [cs_sold_date_sk#1933]
Right keys [1]: [d_date_sk#1967]
Join condition: None
(50) Project [codegen id : 16]
Output [12]: [C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958, D_YEAR#1973]
Input [14]: [C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931, CS_SOLD_DATE_SK#1933, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958, D_DATE_SK#1967, D_YEAR#1973]
(51) HashAggregate [codegen id : 16]
Input [12]: [C_CUSTOMER_ID#1916, C_FIRST_NAME#1923, C_LAST_NAME#1924, C_PREFERRED_CUST_FLAG#1925, C_BIRTH_COUNTRY#1929, C_LOGIN#1930, C_EMAIL_ADDRESS#1931, CS_EXT_DISCOUNT_AMT#1955, CS_EXT_SALES_PRICE#1956, CS_EXT_WHOLESALE_COST#1957, CS_EXT_LIST_PRICE#1958, D_YEAR#1973]
Keys [8]: [c_customer_id#1916, c_first_name#1923, c_last_name#1924, c_preferred_cust_flag#1925, c_birth_country#1929, c_login#1930, c_email_address#1931, d_year#1973]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#1958 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#1957 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#1955 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#1956 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [2]: [sum#3226, isEmpty#3227]
Results [10]: [c_customer_id#1916, c_first_name#1923, c_last_name#1924, c_preferred_cust_flag#1925, c_birth_country#1929, c_login#1930, c_email_address#1931, d_year#1973, sum#3228, isEmpty#3229]
(52) HashAggregate [codegen id : 16]
Input [10]: [c_customer_id#1916, c_first_name#1923, c_last_name#1924, c_preferred_cust_flag#1925, c_birth_country#1929, c_login#1930, c_email_address#1931, d_year#1973, sum#3228, isEmpty#3229]
Keys [8]: [c_customer_id#1916, c_first_name#1923, c_last_name#1924, c_preferred_cust_flag#1925, c_birth_country#1929, c_login#1930, c_email_address#1931, d_year#1973]
Functions [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#1958 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#1957 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#1955 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#1956 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#1958 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#1957 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#1955 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#1956 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2769]
Results [2]: [c_customer_id#1916 AS customer_id#1368, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#1958 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#1957 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#1955 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#1956 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2769 AS year_total#1376]
(53) Filter [codegen id : 16]
Input [2]: [customer_id#1368, year_total#1376]
Condition : (isnotnull(year_total#1376) AND (year_total#1376 > 0E-15))
(54) Project [codegen id : 16]
Output [2]: [customer_id#1368 AS customer_id#2790, year_total#1376 AS year_total#2798]
Input [2]: [customer_id#1368, year_total#1376]
(55) Sort [codegen id : 16]
Input [2]: [customer_id#2790, year_total#2798]
Arguments: [customer_id#2790 ASC NULLS FIRST], false, 0
(56) SortMergeJoin [codegen id : 17]
Left keys [1]: [customer_id#1358]
Right keys [1]: [customer_id#2790]
Join condition: None
(57) Project [codegen id : 17]
Output [8]: [customer_id#1358, year_total#1366, customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783, year_total#2788, year_total#2798]
Input [9]: [customer_id#1358, year_total#1366, customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783, year_total#2788, customer_id#2790, year_total#2798]
(58) BatchScan
Output [8]: [C_CUSTOMER_SK#2144, C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#3042, C_CUSTOMER_ID#3043, C_FIRST_NAME#3044, C_LAST_NAME#3045, C_PREFERRED_CUST_FLAG#3046, C_BIRTH_COUNTRY#3047, C_LOGIN#3048, C_EMAIL_ADDRESS#3049], [oracolumnref(C_CUSTOMER_SK#3042), oracolumnref(C_CUSTOMER_ID#3043), oracolumnref(C_FIRST_NAME#3044), oracolumnref(C_LAST_NAME#3045), oracolumnref(C_PREFERRED_CUST_FLAG#3046), oracolumnref(C_BIRTH_COUNTRY#3047), oracolumnref(C_LOGIN#3048), oracolumnref(C_EMAIL_ADDRESS#3049)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(59) Project [codegen id : 18]
Output [8]: [C_CUSTOMER_SK#2144, C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160]
Input [8]: [C_CUSTOMER_SK#2144, C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160]
(60) Sort [codegen id : 18]
Input [8]: [C_CUSTOMER_SK#2144, C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160]
Arguments: [c_customer_sk#2144 ASC NULLS FIRST], false, 0
(61) BatchScan
Output [6]: [CS_BILL_CUSTOMER_SK#2165, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187, CS_SOLD_DATE_SK#2162]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CATALOG_SALES, [CS_BILL_CUSTOMER_SK#3058, CS_EXT_DISCOUNT_AMT#3059, CS_EXT_SALES_PRICE#3060, CS_EXT_WHOLESALE_COST#3061, CS_EXT_LIST_PRICE#3062, CS_SOLD_DATE_SK#3063], [oracolumnref(CS_BILL_CUSTOMER_SK#3058), oracolumnref(CS_EXT_DISCOUNT_AMT#3059), oracolumnref(CS_EXT_SALES_PRICE#3060), oracolumnref(CS_EXT_WHOLESALE_COST#3061), oracolumnref(CS_EXT_LIST_PRICE#3062), oracolumnref(CS_SOLD_DATE_SK#3063)], orapostfixunaryopexpression(isnotnull(CS_BILL_CUSTOMER_SK#2165))
PartitionSchema: struct<CS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<CS_BILL_CUSTOMER_SK:decimal(38,18),CS_EXT_DISCOUNT_AMT:decimal(38,18),CS_EXT_SALES_PRICE:decimal(38,18),CS_EXT_WHOLESALE_COST:decimal(38,18),CS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CS_BILL_CUSTOMER_SK", "CS_EXT_DISCOUNT_AMT", "CS_EXT_SALES_PRICE", "CS_EXT_WHOLESALE_COST", "CS_EXT_LIST_PRICE", "CS_SOLD_DATE_SK"
from TPCDS.CATALOG_SALES
where "CS_BILL_CUSTOMER_SK" IS NOT NULL and "CS_SOLD_DATE_SK" IS NOT NULL
(62) Filter [codegen id : 19]
Input [6]: [CS_BILL_CUSTOMER_SK#2165, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187, CS_SOLD_DATE_SK#2162]
Condition : isnotnull(CS_BILL_CUSTOMER_SK#2165)
(63) Sort [codegen id : 19]
Input [6]: [CS_BILL_CUSTOMER_SK#2165, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187, CS_SOLD_DATE_SK#2162]
Arguments: [cs_bill_customer_sk#2165 ASC NULLS FIRST], false, 0
(64) SortMergeJoin [codegen id : 20]
Left keys [1]: [c_customer_sk#2144]
Right keys [1]: [cs_bill_customer_sk#2165]
Join condition: None
(65) Project [codegen id : 20]
Output [12]: [C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160, CS_SOLD_DATE_SK#2162, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187]
Input [14]: [C_CUSTOMER_SK#2144, C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160, CS_BILL_CUSTOMER_SK#2165, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187, CS_SOLD_DATE_SK#2162]
(66) Sort [codegen id : 20]
Input [12]: [C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160, CS_SOLD_DATE_SK#2162, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187]
Arguments: [cs_sold_date_sk#2162 ASC NULLS FIRST], false, 0
(67) BatchScan
Output [2]: [D_DATE_SK#2196, D_YEAR#2202]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#3070, D_YEAR#3071], [oracolumnref(D_DATE_SK#3070), oracolumnref(D_YEAR#3071)], orabinaryopexpression((isnotnull(D_YEAR#2202) AND (D_YEAR#2202 = 2002.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(68) Filter [codegen id : 21]
Input [2]: [D_DATE_SK#2196, D_YEAR#2202]
Condition : (isnotnull(D_YEAR#2202) AND (D_YEAR#2202 = 2002.000000000000000000))
(69) Sort [codegen id : 21]
Input [2]: [D_DATE_SK#2196, D_YEAR#2202]
Arguments: [d_date_sk#2196 ASC NULLS FIRST], false, 0
(70) SortMergeJoin [codegen id : 22]
Left keys [1]: [cs_sold_date_sk#2162]
Right keys [1]: [d_date_sk#2196]
Join condition: None
(71) Project [codegen id : 22]
Output [12]: [C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187, D_YEAR#2202]
Input [14]: [C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160, CS_SOLD_DATE_SK#2162, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187, D_DATE_SK#2196, D_YEAR#2202]
(72) HashAggregate [codegen id : 22]
Input [12]: [C_CUSTOMER_ID#2145, C_FIRST_NAME#2152, C_LAST_NAME#2153, C_PREFERRED_CUST_FLAG#2154, C_BIRTH_COUNTRY#2158, C_LOGIN#2159, C_EMAIL_ADDRESS#2160, CS_EXT_DISCOUNT_AMT#2184, CS_EXT_SALES_PRICE#2185, CS_EXT_WHOLESALE_COST#2186, CS_EXT_LIST_PRICE#2187, D_YEAR#2202]
Keys [8]: [c_customer_id#2145, c_first_name#2152, c_last_name#2153, c_preferred_cust_flag#2154, c_birth_country#2158, c_login#2159, c_email_address#2160, d_year#2202]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#2187 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#2186 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#2184 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#2185 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [2]: [sum#3230, isEmpty#3231]
Results [10]: [c_customer_id#2145, c_first_name#2152, c_last_name#2153, c_preferred_cust_flag#2154, c_birth_country#2158, c_login#2159, c_email_address#2160, d_year#2202, sum#3232, isEmpty#3233]
(73) HashAggregate [codegen id : 22]
Input [10]: [c_customer_id#2145, c_first_name#2152, c_last_name#2153, c_preferred_cust_flag#2154, c_birth_country#2158, c_login#2159, c_email_address#2160, d_year#2202, sum#3232, isEmpty#3233]
Keys [8]: [c_customer_id#2145, c_first_name#2152, c_last_name#2153, c_preferred_cust_flag#2154, c_birth_country#2158, c_login#2159, c_email_address#2160, d_year#2202]
Functions [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#2187 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#2186 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#2184 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#2185 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#2187 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#2186 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#2184 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#2185 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2772]
Results [2]: [c_customer_id#2145 AS customer_id#2800, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(cs_ext_list_price#2187 as decimal(38,17))) - promote_precision(cast(cs_ext_wholesale_cost#2186 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(cs_ext_discount_amt#2184 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(cs_ext_sales_price#2185 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2772 AS year_total#2808]
(74) Sort [codegen id : 22]
Input [2]: [customer_id#2800, year_total#2808]
Arguments: [customer_id#2800 ASC NULLS FIRST], false, 0
(75) SortMergeJoin [codegen id : 23]
Left keys [1]: [customer_id#1358]
Right keys [1]: [customer_id#2800]
Join condition: (CASE WHEN (year_total#2798 > 0E-15) THEN CheckOverflow((promote_precision(year_total#2808) / promote_precision(year_total#2798)), DecimalType(38,6), true) ELSE null END > CASE WHEN (year_total#1366 > 0E-15) THEN CheckOverflow((promote_precision(year_total#2788) / promote_precision(year_total#1366)), DecimalType(38,6), true) ELSE null END)
(76) Project [codegen id : 23]
Output [7]: [customer_id#1358, customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783, year_total#2798, year_total#2808]
Input [10]: [customer_id#1358, year_total#1366, customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783, year_total#2788, year_total#2798, customer_id#2800, year_total#2808]
(77) BatchScan
Output [8]: [C_CUSTOMER_SK#2453, C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#3122, C_CUSTOMER_ID#3123, C_FIRST_NAME#3124, C_LAST_NAME#3125, C_PREFERRED_CUST_FLAG#3126, C_BIRTH_COUNTRY#3127, C_LOGIN#3128, C_EMAIL_ADDRESS#3129], [oracolumnref(C_CUSTOMER_SK#3122), oracolumnref(C_CUSTOMER_ID#3123), oracolumnref(C_FIRST_NAME#3124), oracolumnref(C_LAST_NAME#3125), oracolumnref(C_PREFERRED_CUST_FLAG#3126), oracolumnref(C_BIRTH_COUNTRY#3127), oracolumnref(C_LOGIN#3128), oracolumnref(C_EMAIL_ADDRESS#3129)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(78) Project [codegen id : 24]
Output [8]: [C_CUSTOMER_SK#2453, C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469]
Input [8]: [C_CUSTOMER_SK#2453, C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469]
(79) Sort [codegen id : 24]
Input [8]: [C_CUSTOMER_SK#2453, C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469]
Arguments: [c_customer_sk#2453 ASC NULLS FIRST], false, 0
(80) BatchScan
Output [6]: [WS_BILL_CUSTOMER_SK#2475, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496, WS_SOLD_DATE_SK#2471]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_BILL_CUSTOMER_SK#3138, WS_EXT_DISCOUNT_AMT#3139, WS_EXT_SALES_PRICE#3140, WS_EXT_WHOLESALE_COST#3141, WS_EXT_LIST_PRICE#3142, WS_SOLD_DATE_SK#3143], [oracolumnref(WS_BILL_CUSTOMER_SK#3138), oracolumnref(WS_EXT_DISCOUNT_AMT#3139), oracolumnref(WS_EXT_SALES_PRICE#3140), oracolumnref(WS_EXT_WHOLESALE_COST#3141), oracolumnref(WS_EXT_LIST_PRICE#3142), oracolumnref(WS_SOLD_DATE_SK#3143)], orapostfixunaryopexpression(isnotnull(WS_BILL_CUSTOMER_SK#2475))
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_BILL_CUSTOMER_SK:decimal(38,18),WS_EXT_DISCOUNT_AMT:decimal(38,18),WS_EXT_SALES_PRICE:decimal(38,18),WS_EXT_WHOLESALE_COST:decimal(38,18),WS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_BILL_CUSTOMER_SK", "WS_EXT_DISCOUNT_AMT", "WS_EXT_SALES_PRICE", "WS_EXT_WHOLESALE_COST", "WS_EXT_LIST_PRICE", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_BILL_CUSTOMER_SK" IS NOT NULL and "WS_SOLD_DATE_SK" IS NOT NULL
(81) Filter [codegen id : 25]
Input [6]: [WS_BILL_CUSTOMER_SK#2475, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496, WS_SOLD_DATE_SK#2471]
Condition : isnotnull(WS_BILL_CUSTOMER_SK#2475)
(82) Sort [codegen id : 25]
Input [6]: [WS_BILL_CUSTOMER_SK#2475, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496, WS_SOLD_DATE_SK#2471]
Arguments: [ws_bill_customer_sk#2475 ASC NULLS FIRST], false, 0
(83) SortMergeJoin [codegen id : 26]
Left keys [1]: [c_customer_sk#2453]
Right keys [1]: [ws_bill_customer_sk#2475]
Join condition: None
(84) Project [codegen id : 26]
Output [12]: [C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469, WS_SOLD_DATE_SK#2471, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496]
Input [14]: [C_CUSTOMER_SK#2453, C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469, WS_BILL_CUSTOMER_SK#2475, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496, WS_SOLD_DATE_SK#2471]
(85) Sort [codegen id : 26]
Input [12]: [C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469, WS_SOLD_DATE_SK#2471, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496]
Arguments: [ws_sold_date_sk#2471 ASC NULLS FIRST], false, 0
(86) BatchScan
Output [2]: [D_DATE_SK#2505, D_YEAR#2511]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#3150, D_YEAR#3151], [oracolumnref(D_DATE_SK#3150), oracolumnref(D_YEAR#3151)], orabinaryopexpression((isnotnull(D_YEAR#2511) AND (D_YEAR#2511 = 2001.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(87) Filter [codegen id : 27]
Input [2]: [D_DATE_SK#2505, D_YEAR#2511]
Condition : (isnotnull(D_YEAR#2511) AND (D_YEAR#2511 = 2001.000000000000000000))
(88) Sort [codegen id : 27]
Input [2]: [D_DATE_SK#2505, D_YEAR#2511]
Arguments: [d_date_sk#2505 ASC NULLS FIRST], false, 0
(89) SortMergeJoin [codegen id : 28]
Left keys [1]: [ws_sold_date_sk#2471]
Right keys [1]: [d_date_sk#2505]
Join condition: None
(90) Project [codegen id : 28]
Output [12]: [C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496, D_YEAR#2511]
Input [14]: [C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469, WS_SOLD_DATE_SK#2471, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496, D_DATE_SK#2505, D_YEAR#2511]
(91) HashAggregate [codegen id : 28]
Input [12]: [C_CUSTOMER_ID#2454, C_FIRST_NAME#2461, C_LAST_NAME#2462, C_PREFERRED_CUST_FLAG#2463, C_BIRTH_COUNTRY#2467, C_LOGIN#2468, C_EMAIL_ADDRESS#2469, WS_EXT_DISCOUNT_AMT#2493, WS_EXT_SALES_PRICE#2494, WS_EXT_WHOLESALE_COST#2495, WS_EXT_LIST_PRICE#2496, D_YEAR#2511]
Keys [8]: [c_customer_id#2454, c_first_name#2461, c_last_name#2462, c_preferred_cust_flag#2463, c_birth_country#2467, c_login#2468, c_email_address#2469, d_year#2511]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#2496 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#2495 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#2493 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#2494 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [2]: [sum#3234, isEmpty#3235]
Results [10]: [c_customer_id#2454, c_first_name#2461, c_last_name#2462, c_preferred_cust_flag#2463, c_birth_country#2467, c_login#2468, c_email_address#2469, d_year#2511, sum#3236, isEmpty#3237]
(92) HashAggregate [codegen id : 28]
Input [10]: [c_customer_id#2454, c_first_name#2461, c_last_name#2462, c_preferred_cust_flag#2463, c_birth_country#2467, c_login#2468, c_email_address#2469, d_year#2511, sum#3236, isEmpty#3237]
Keys [8]: [c_customer_id#2454, c_first_name#2461, c_last_name#2462, c_preferred_cust_flag#2463, c_birth_country#2467, c_login#2468, c_email_address#2469, d_year#2511]
Functions [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#2496 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#2495 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#2493 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#2494 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#2496 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#2495 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#2493 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#2494 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2776]
Results [2]: [c_customer_id#2454 AS customer_id#1378, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#2496 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#2495 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#2493 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#2494 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2776 AS year_total#1386]
(93) Filter [codegen id : 28]
Input [2]: [customer_id#1378, year_total#1386]
Condition : (isnotnull(year_total#1386) AND (year_total#1386 > 0E-15))
(94) Project [codegen id : 28]
Output [2]: [customer_id#1378 AS customer_id#2810, year_total#1386 AS year_total#2818]
Input [2]: [customer_id#1378, year_total#1386]
(95) Sort [codegen id : 28]
Input [2]: [customer_id#2810, year_total#2818]
Arguments: [customer_id#2810 ASC NULLS FIRST], false, 0
(96) SortMergeJoin [codegen id : 29]
Left keys [1]: [customer_id#1358]
Right keys [1]: [customer_id#2810]
Join condition: None
(97) Project [codegen id : 29]
Output [8]: [customer_id#1358, customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783, year_total#2798, year_total#2808, year_total#2818]
Input [9]: [customer_id#1358, customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783, year_total#2798, year_total#2808, customer_id#2810, year_total#2818]
(98) BatchScan
Output [8]: [C_CUSTOMER_SK#2682, C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#3186, C_CUSTOMER_ID#3187, C_FIRST_NAME#3188, C_LAST_NAME#3189, C_PREFERRED_CUST_FLAG#3190, C_BIRTH_COUNTRY#3191, C_LOGIN#3192, C_EMAIL_ADDRESS#3193], [oracolumnref(C_CUSTOMER_SK#3186), oracolumnref(C_CUSTOMER_ID#3187), oracolumnref(C_FIRST_NAME#3188), oracolumnref(C_LAST_NAME#3189), oracolumnref(C_PREFERRED_CUST_FLAG#3190), oracolumnref(C_BIRTH_COUNTRY#3191), oracolumnref(C_LOGIN#3192), oracolumnref(C_EMAIL_ADDRESS#3193)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(99) Project [codegen id : 30]
Output [8]: [C_CUSTOMER_SK#2682, C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698]
Input [8]: [C_CUSTOMER_SK#2682, C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698]
(100) Sort [codegen id : 30]
Input [8]: [C_CUSTOMER_SK#2682, C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698]
Arguments: [c_customer_sk#2682 ASC NULLS FIRST], false, 0
(101) BatchScan
Output [6]: [WS_BILL_CUSTOMER_SK#2704, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725, WS_SOLD_DATE_SK#2700]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_BILL_CUSTOMER_SK#3202, WS_EXT_DISCOUNT_AMT#3203, WS_EXT_SALES_PRICE#3204, WS_EXT_WHOLESALE_COST#3205, WS_EXT_LIST_PRICE#3206, WS_SOLD_DATE_SK#3207], [oracolumnref(WS_BILL_CUSTOMER_SK#3202), oracolumnref(WS_EXT_DISCOUNT_AMT#3203), oracolumnref(WS_EXT_SALES_PRICE#3204), oracolumnref(WS_EXT_WHOLESALE_COST#3205), oracolumnref(WS_EXT_LIST_PRICE#3206), oracolumnref(WS_SOLD_DATE_SK#3207)], orapostfixunaryopexpression(isnotnull(WS_BILL_CUSTOMER_SK#2704))
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_BILL_CUSTOMER_SK:decimal(38,18),WS_EXT_DISCOUNT_AMT:decimal(38,18),WS_EXT_SALES_PRICE:decimal(38,18),WS_EXT_WHOLESALE_COST:decimal(38,18),WS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_BILL_CUSTOMER_SK", "WS_EXT_DISCOUNT_AMT", "WS_EXT_SALES_PRICE", "WS_EXT_WHOLESALE_COST", "WS_EXT_LIST_PRICE", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_BILL_CUSTOMER_SK" IS NOT NULL and "WS_SOLD_DATE_SK" IS NOT NULL
(102) Filter [codegen id : 31]
Input [6]: [WS_BILL_CUSTOMER_SK#2704, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725, WS_SOLD_DATE_SK#2700]
Condition : isnotnull(WS_BILL_CUSTOMER_SK#2704)
(103) Sort [codegen id : 31]
Input [6]: [WS_BILL_CUSTOMER_SK#2704, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725, WS_SOLD_DATE_SK#2700]
Arguments: [ws_bill_customer_sk#2704 ASC NULLS FIRST], false, 0
(104) SortMergeJoin [codegen id : 32]
Left keys [1]: [c_customer_sk#2682]
Right keys [1]: [ws_bill_customer_sk#2704]
Join condition: None
(105) Project [codegen id : 32]
Output [12]: [C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698, WS_SOLD_DATE_SK#2700, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725]
Input [14]: [C_CUSTOMER_SK#2682, C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698, WS_BILL_CUSTOMER_SK#2704, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725, WS_SOLD_DATE_SK#2700]
(106) Sort [codegen id : 32]
Input [12]: [C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698, WS_SOLD_DATE_SK#2700, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725]
Arguments: [ws_sold_date_sk#2700 ASC NULLS FIRST], false, 0
(107) BatchScan
Output [2]: [D_DATE_SK#2734, D_YEAR#2740]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#3214, D_YEAR#3215], [oracolumnref(D_DATE_SK#3214), oracolumnref(D_YEAR#3215)], orabinaryopexpression((isnotnull(D_YEAR#2740) AND (D_YEAR#2740 = 2002.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(108) Filter [codegen id : 33]
Input [2]: [D_DATE_SK#2734, D_YEAR#2740]
Condition : (isnotnull(D_YEAR#2740) AND (D_YEAR#2740 = 2002.000000000000000000))
(109) Sort [codegen id : 33]
Input [2]: [D_DATE_SK#2734, D_YEAR#2740]
Arguments: [d_date_sk#2734 ASC NULLS FIRST], false, 0
(110) SortMergeJoin [codegen id : 34]
Left keys [1]: [ws_sold_date_sk#2700]
Right keys [1]: [d_date_sk#2734]
Join condition: None
(111) Project [codegen id : 34]
Output [12]: [C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725, D_YEAR#2740]
Input [14]: [C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698, WS_SOLD_DATE_SK#2700, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725, D_DATE_SK#2734, D_YEAR#2740]
(112) HashAggregate [codegen id : 34]
Input [12]: [C_CUSTOMER_ID#2683, C_FIRST_NAME#2690, C_LAST_NAME#2691, C_PREFERRED_CUST_FLAG#2692, C_BIRTH_COUNTRY#2696, C_LOGIN#2697, C_EMAIL_ADDRESS#2698, WS_EXT_DISCOUNT_AMT#2722, WS_EXT_SALES_PRICE#2723, WS_EXT_WHOLESALE_COST#2724, WS_EXT_LIST_PRICE#2725, D_YEAR#2740]
Keys [8]: [c_customer_id#2683, c_first_name#2690, c_last_name#2691, c_preferred_cust_flag#2692, c_birth_country#2696, c_login#2697, c_email_address#2698, d_year#2740]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#2725 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#2724 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#2722 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#2723 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [2]: [sum#3238, isEmpty#3239]
Results [10]: [c_customer_id#2683, c_first_name#2690, c_last_name#2691, c_preferred_cust_flag#2692, c_birth_country#2696, c_login#2697, c_email_address#2698, d_year#2740, sum#3240, isEmpty#3241]
(113) HashAggregate [codegen id : 34]
Input [10]: [c_customer_id#2683, c_first_name#2690, c_last_name#2691, c_preferred_cust_flag#2692, c_birth_country#2696, c_login#2697, c_email_address#2698, d_year#2740, sum#3240, isEmpty#3241]
Keys [8]: [c_customer_id#2683, c_first_name#2690, c_last_name#2691, c_preferred_cust_flag#2692, c_birth_country#2696, c_login#2697, c_email_address#2698, d_year#2740]
Functions [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#2725 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#2724 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#2722 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#2723 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#2725 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#2724 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#2722 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#2723 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2779]
Results [2]: [c_customer_id#2683 AS customer_id#2820, sum(CheckOverflow((promote_precision(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(cast(ws_ext_list_price#2725 as decimal(38,17))) - promote_precision(cast(ws_ext_wholesale_cost#2724 as decimal(38,17)))), DecimalType(38,17), true) as decimal(38,16))) - promote_precision(cast(ws_ext_discount_amt#2722 as decimal(38,16)))), DecimalType(38,16), true) as decimal(38,15))) + promote_precision(cast(ws_ext_sales_price#2723 as decimal(38,15)))), DecimalType(38,15), true)) / 2.000000000000000), DecimalType(38,15), true))#2779 AS year_total#2828]
(114) Sort [codegen id : 34]
Input [2]: [customer_id#2820, year_total#2828]
Arguments: [customer_id#2820 ASC NULLS FIRST], false, 0
(115) SortMergeJoin [codegen id : 35]
Left keys [1]: [customer_id#1358]
Right keys [1]: [customer_id#2820]
Join condition: (CASE WHEN (year_total#2798 > 0E-15) THEN CheckOverflow((promote_precision(year_total#2808) / promote_precision(year_total#2798)), DecimalType(38,6), true) ELSE null END > CASE WHEN (year_total#2818 > 0E-15) THEN CheckOverflow((promote_precision(year_total#2828) / promote_precision(year_total#2818)), DecimalType(38,6), true) ELSE null END)
(116) Project [codegen id : 35]
Output [4]: [customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783]
Input [10]: [customer_id#1358, customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783, year_total#2798, year_total#2808, year_total#2818, customer_id#2820, year_total#2828]
(117) TakeOrderedAndProject
Input [4]: [customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783]
Arguments: 100, [customer_id#2780 ASC NULLS FIRST, customer_first_name#2781 ASC NULLS FIRST, customer_last_name#2782 ASC NULLS FIRST, customer_preferred_cust_flag#2783 ASC NULLS FIRST], [customer_id#2780, customer_first_name#2781, customer_last_name#2782, customer_preferred_cust_flag#2783]
with ssr as
(select s_store_id,
sum(sales_price) as sales,
sum(profit) as profit,
sum(return_amt) as returns,
sum(net_loss) as profit_loss
from
( select ss_store_sk as store_sk,
ss_sold_date_sk as date_sk,
ss_ext_sales_price as sales_price,
ss_net_profit as profit,
cast(0 as decimal(7,2)) as return_amt,
cast(0 as decimal(7,2)) as net_loss
from store_sales
union all
select sr_store_sk as store_sk,
sr_returned_date_sk as date_sk,
cast(0 as decimal(7,2)) as sales_price,
cast(0 as decimal(7,2)) as profit,
sr_return_amt as return_amt,
sr_net_loss as net_loss
from store_returns
) salesreturns,
date_dim,
store
where date_sk = d_date_sk
and d_date between cast('2000-08-23' as date)
and date_add(cast('2000-08-23' as date), 14 )
and store_sk = s_store_sk
group by s_store_id)
,
csr as
(select cp_catalog_page_id,
sum(sales_price) as sales,
sum(profit) as profit,
sum(return_amt) as returns,
sum(net_loss) as profit_loss
from
( select cs_catalog_page_sk as page_sk,
cs_sold_date_sk as date_sk,
cs_ext_sales_price as sales_price,
cs_net_profit as profit,
cast(0 as decimal(7,2)) as return_amt,
cast(0 as decimal(7,2)) as net_loss
from catalog_sales
union all
select cr_catalog_page_sk as page_sk,
cr_returned_date_sk as date_sk,
cast(0 as decimal(7,2)) as sales_price,
cast(0 as decimal(7,2)) as profit,
cr_return_amount as return_amt,
cr_net_loss as net_loss
from catalog_returns
) salesreturns,
date_dim,
catalog_page
where date_sk = d_date_sk
and d_date between cast('2000-08-23' as date)
and date_add(cast('2000-08-23' as date), 14 )
and page_sk = cp_catalog_page_sk
group by cp_catalog_page_id)
,
wsr as
(select web_site_id,
sum(sales_price) as sales,
sum(profit) as profit,
sum(return_amt) as returns,
sum(net_loss) as profit_loss
from
( select ws_web_site_sk as wsr_web_site_sk,
ws_sold_date_sk as date_sk,
ws_ext_sales_price as sales_price,
ws_net_profit as profit,
cast(0 as decimal(7,2)) as return_amt,
cast(0 as decimal(7,2)) as net_loss
from web_sales
union all
select ws_web_site_sk as wsr_web_site_sk,
wr_returned_date_sk as date_sk,
cast(0 as decimal(7,2)) as sales_price,
cast(0 as decimal(7,2)) as profit,
wr_return_amt as return_amt,
wr_net_loss as net_loss
from web_returns left outer join web_sales on
( wr_item_sk = ws_item_sk
and wr_order_number = ws_order_number)
) salesreturns,
date_dim,
web_site
where date_sk = d_date_sk
and d_date between cast('2000-08-23' as date)
and date_add(cast('2000-08-23' as date), 14 )
and wsr_web_site_sk = web_site_sk
group by web_site_id)
select channel
, id
, sum(sales) as sales
, sum(returns) as returns
, sum(profit) as profit
from
(select 'store channel' as channel
, concat('store', s_store_id) as id
, sales
, returns
, (profit - profit_loss) as profit
from ssr
union all
select 'catalog channel' as channel
, concat('catalog_page', cp_catalog_page_id) as id
, sales
, returns
, (profit - profit_loss) as profit
from csr
union all
select 'web channel' as channel
, concat('web_site', web_site_id) as id
, sales
, returns
, (profit - profit_loss) as profit
from wsr
) x
group by rollup (channel, id)
order by channel
,id
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [5]: [channel#6123, id#6124, sales#5698, returns#5699, profit#5700]
OraPlan: 00 OraSingleQueryBlock [channel#6123, id#6124, sum(sales#5713) AS sales#5698, sum(returns#5715) AS returns#5699, sum(profit#5691) AS profit#5700], [oracolumnref(channel#6123), oracolumnref(id#6124), oraalias(sum(sales#5713) AS sales#5698), oraalias(sum(returns#5715) AS returns#5699), oraalias(sum(profit#5691) AS profit#5700)], List(oracolumnref(channel#6123), oracolumnref(id#6124), oracolumnref(spark_grouping_id#6122L))
01 +- OraCompositeQueryBlock Union false, false, [sales#5713, returns#5715, profit#5691, channel#6120, id#6121], SQLSnippet(value: UNION ALL, parameters: ArrayBuffer())
02 :- OraSingleQueryBlock [sum(sales_price#5703) AS sales#5713, sum(return_amt#6093) AS returns#5715, CheckOverflow((promote_precision(cast(sum(profit#5704) as decimal(38,17))) - promote_precision(cast(sum(net_loss#6094) as decimal(38,17)))), DecimalType(38,17), true) AS profit#5691, store channel AS channel#6120, concat(store, s_store_id#5821) AS id#6121], [oraalias(sum(sales_price#5703) AS sales#5713), oraalias(sum(return_amt#6093) AS returns#5715), oraalias(CheckOverflow((promote_precision(cast(sum(profit#5704) as decimal(38,17))) - promote_precision(cast(sum(net_loss#6094) as decimal(38,17)))), DecimalType(38,17), true) AS profit#5691), oraalias(store channel AS channel#6120), oraalias(concat(store, s_store_id#5821) AS id#6121)], orabinaryopexpression(((isnotnull(D_DATE#5794) AND (D_DATE#5794 >= 11192)) AND (D_DATE#5794 <= 11206))), List(oracolumnref(s_store_id#5821))
03 : :- OraCompositeQueryBlock Union false, false, [store_sk#5701, date_sk#5702, sales_price#5703, profit#5704, return_amt#6093, net_loss#6094], SQLSnippet(value: UNION ALL, parameters: ArrayBuffer())
04 : : :- OraSingleQueryBlock [SS_STORE_SK#5756 AS store_sk#5701, SS_SOLD_DATE_SK#5749 AS date_sk#5702, SS_EXT_SALES_PRICE#5764 AS sales_price#5703, SS_NET_PROFIT#5771 AS profit#5704, 0E-18 AS return_amt#6093, 0E-18 AS net_loss#6094], [oraalias(SS_STORE_SK#5756 AS store_sk#5701), oraalias(SS_SOLD_DATE_SK#5749 AS date_sk#5702), oraalias(SS_EXT_SALES_PRICE#5764 AS sales_price#5703), oraalias(SS_NET_PROFIT#5771 AS profit#5704), oraalias(0E-18 AS return_amt#6093), oraalias(0E-18 AS net_loss#6094)], orabinaryopexpression(isnotnull(SS_STORE_SK#5756))
05 : : : +- OraTableScan TPCDS.STORE_SALES, [SS_STORE_SK#5756, SS_EXT_SALES_PRICE#5764, SS_NET_PROFIT#5771, SS_SOLD_DATE_SK#5749]
06 : : +- OraSingleQueryBlock [SR_STORE_SK#5779 AS store_sk#5707, SR_RETURNED_DATE_SK#5772 AS date_sk#5708, 0E-18 AS sales_price#6095, 0E-18 AS profit#6096, SR_RETURN_AMT#5783 AS return_amt#5711, SR_NET_LOSS#5791 AS net_loss#5712], [oraalias(SR_STORE_SK#5779 AS store_sk#5707), oraalias(SR_RETURNED_DATE_SK#5772 AS date_sk#5708), oraalias(0E-18 AS sales_price#6095), oraalias(0E-18 AS profit#6096), oraalias(SR_RETURN_AMT#5783 AS return_amt#5711), oraalias(SR_NET_LOSS#5791 AS net_loss#5712)], orabinaryopexpression(isnotnull(SR_STORE_SK#5779))
07 : : +- OraTableScan TPCDS.STORE_RETURNS, [SR_STORE_SK#5779, SR_RETURN_AMT#5783, SR_NET_LOSS#5791, SR_RETURNED_DATE_SK#5772]
08 : :- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#5792, D_DATE#5794]
09 : +- OraTableScan TPCDS.STORE, [S_STORE_SK#5820, S_STORE_ID#5821]
10 :- OraSingleQueryBlock [sum(sales_price#5719) AS sales#5729, sum(return_amt#6097) AS returns#5731, CheckOverflow((promote_precision(cast(sum(profit#5720) as decimal(38,17))) - promote_precision(cast(sum(net_loss#6098) as decimal(38,17)))), DecimalType(38,17), true) AS profit#5694, catalog channel AS channel#6132, concat(catalog_page, cp_catalog_page_id#5939) AS id#6133], [oraalias(sum(sales_price#5719) AS sales#5729), oraalias(sum(return_amt#6097) AS returns#5731), oraalias(CheckOverflow((promote_precision(cast(sum(profit#5720) as decimal(38,17))) - promote_precision(cast(sum(net_loss#6098) as decimal(38,17)))), DecimalType(38,17), true) AS profit#5694), oraalias(catalog channel AS channel#6132), oraalias(concat(catalog_page, cp_catalog_page_id#5939) AS id#6133)], orabinaryopexpression(((isnotnull(D_DATE#5912) AND (D_DATE#5912 >= 11192)) AND (D_DATE#5912 <= 11206))), List(oracolumnref(cp_catalog_page_id#5939))
11 : :- OraCompositeQueryBlock Union false, false, [page_sk#5717, date_sk#5718, sales_price#5719, profit#5720, return_amt#6097, net_loss#6098], SQLSnippet(value: UNION ALL, parameters: ArrayBuffer())
12 : : :- OraSingleQueryBlock [CS_CATALOG_PAGE_SK#5861 AS page_sk#5717, CS_SOLD_DATE_SK#5849 AS date_sk#5718, CS_EXT_SALES_PRICE#5872 AS sales_price#5719, CS_NET_PROFIT#5882 AS profit#5720, 0E-18 AS return_amt#6097, 0E-18 AS net_loss#6098], [oraalias(CS_CATALOG_PAGE_SK#5861 AS page_sk#5717), oraalias(CS_SOLD_DATE_SK#5849 AS date_sk#5718), oraalias(CS_EXT_SALES_PRICE#5872 AS sales_price#5719), oraalias(CS_NET_PROFIT#5882 AS profit#5720), oraalias(0E-18 AS return_amt#6097), oraalias(0E-18 AS net_loss#6098)], orabinaryopexpression(isnotnull(CS_CATALOG_PAGE_SK#5861))
13 : : : +- OraTableScan TPCDS.CATALOG_SALES, [CS_CATALOG_PAGE_SK#5861, CS_EXT_SALES_PRICE#5872, CS_NET_PROFIT#5882, CS_SOLD_DATE_SK#5849]
14 : : +- OraSingleQueryBlock [CR_CATALOG_PAGE_SK#5895 AS page_sk#5723, CR_RETURNED_DATE_SK#5883 AS date_sk#5724, 0E-18 AS sales_price#6099, 0E-18 AS profit#6100, CR_RETURN_AMOUNT#5901 AS return_amt#5727, CR_NET_LOSS#5909 AS net_loss#5728], [oraalias(CR_CATALOG_PAGE_SK#5895 AS page_sk#5723), oraalias(CR_RETURNED_DATE_SK#5883 AS date_sk#5724), oraalias(0E-18 AS sales_price#6099), oraalias(0E-18 AS profit#6100), oraalias(CR_RETURN_AMOUNT#5901 AS return_amt#5727), oraalias(CR_NET_LOSS#5909 AS net_loss#5728)], orabinaryopexpression(isnotnull(CR_CATALOG_PAGE_SK#5895))
15 : : +- OraTableScan TPCDS.CATALOG_RETURNS, [CR_CATALOG_PAGE_SK#5895, CR_RETURN_AMOUNT#5901, CR_NET_LOSS#5909, CR_RETURNED_DATE_SK#5883]
16 : :- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#5910, D_DATE#5912]
17 : +- OraTableScan TPCDS.CATALOG_PAGE, [CP_CATALOG_PAGE_SK#5938, CP_CATALOG_PAGE_ID#5939]
18 +- OraSingleQueryBlock [sum(sales_price#5735) AS sales#5745, sum(return_amt#6101) AS returns#5747, CheckOverflow((promote_precision(cast(sum(profit#5736) as decimal(38,17))) - promote_precision(cast(sum(net_loss#6102) as decimal(38,17)))), DecimalType(38,17), true) AS profit#5697, web channel AS channel#6134, concat(web_site, web_site_id#6068) AS id#6135], [oraalias(sum(sales_price#5735) AS sales#5745), oraalias(sum(return_amt#6101) AS returns#5747), oraalias(CheckOverflow((promote_precision(cast(sum(profit#5736) as decimal(38,17))) - promote_precision(cast(sum(net_loss#6102) as decimal(38,17)))), DecimalType(38,17), true) AS profit#5697), oraalias(web channel AS channel#6134), oraalias(concat(web_site, web_site_id#6068) AS id#6135)], orabinaryopexpression(((isnotnull(D_DATE#6041) AND (D_DATE#6041 >= 11192)) AND (D_DATE#6041 <= 11206))), List(oracolumnref(web_site_id#6068))
19 :- OraCompositeQueryBlock Union false, false, [wsr_web_site_sk#5733, date_sk#5734, sales_price#5735, profit#5736, return_amt#6101, net_loss#6102], SQLSnippet(value: UNION ALL, parameters: ArrayBuffer())
20 : :- OraSingleQueryBlock [WS_WEB_SITE_SK#5960 AS wsr_web_site_sk#5733, WS_SOLD_DATE_SK#5947 AS date_sk#5734, WS_EXT_SALES_PRICE#5970 AS sales_price#5735, WS_NET_PROFIT#5980 AS profit#5736, 0E-18 AS return_amt#6101, 0E-18 AS net_loss#6102], [oraalias(WS_WEB_SITE_SK#5960 AS wsr_web_site_sk#5733), oraalias(WS_SOLD_DATE_SK#5947 AS date_sk#5734), oraalias(WS_EXT_SALES_PRICE#5970 AS sales_price#5735), oraalias(WS_NET_PROFIT#5980 AS profit#5736), oraalias(0E-18 AS return_amt#6101), oraalias(0E-18 AS net_loss#6102)], orabinaryopexpression(isnotnull(WS_WEB_SITE_SK#5960))
21 : : +- OraTableScan TPCDS.WEB_SALES, [WS_WEB_SITE_SK#5960, WS_EXT_SALES_PRICE#5970, WS_NET_PROFIT#5980, WS_SOLD_DATE_SK#5947]
22 : +- OraSingleQueryBlock [ws_web_site_sk#6018 AS wsr_web_site_sk#5739, wr_returned_date_sk#5981 AS date_sk#5740, 0E-18 AS sales_price#6103, 0E-18 AS profit#6104, wr_return_amt#5996 AS return_amt#5743, wr_net_loss#6004 AS net_loss#5744], [oraalias(ws_web_site_sk#6018 AS wsr_web_site_sk#5739), oraalias(wr_returned_date_sk#5981 AS date_sk#5740), oraalias(0E-18 AS sales_price#6103), oraalias(0E-18 AS profit#6104), oraalias(wr_return_amt#5996 AS return_amt#5743), oraalias(wr_net_loss#6004 AS net_loss#5744)], orabinaryopexpression((isnotnull(WR_RETURNED_DATE_SK#5981) AND isnotnull(WS_WEB_SITE_SK#6018)))
23 : :- OraTableScan TPCDS.WEB_RETURNS, [WR_ITEM_SK#5983, WR_ORDER_NUMBER#5994, WR_RETURN_AMT#5996, WR_NET_LOSS#6004, WR_RETURNED_DATE_SK#5981]
24 : +- OraTableScan TPCDS.WEB_SALES, [WS_ITEM_SK#6008, WS_WEB_SITE_SK#6018, WS_ORDER_NUMBER#6022]
25 :- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#6039, D_DATE#6041]
26 +- OraTableScan TPCDS.WEB_SITE, [WEB_SITE_SK#6067, WEB_SITE_ID#6068]
ReadSchema: struct<channel:string,id:string,sales:decimal(38,18),returns:decimal(38,18),profit:decimal(38,17)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 11192, 11206, 11192, 11206, 11192, 11206
oraPushdownSQL: select "channel_10_sparkora", "id_7_sparkora", SUM("sales") AS "sales", SUM("returns") AS "returns", SUM("profit") AS "profit"
from ( select SUM("sales_price") AS "sales", SUM("return_amt") AS "returns", (SUM("profit") - SUM("net_loss")) AS "profit", 'store channel' AS "channel", CONCAT('store' , "S_STORE_ID") AS "id"
from ( select "SS_STORE_SK" AS "store_sk", "SS_SOLD_DATE_SK" AS "date_sk", "SS_EXT_SALES_PRICE" AS "sales_price", "SS_NET_PROFIT" AS "profit", 0E-18 AS "return_amt", 0E-18 AS "net_loss"
from TPCDS.STORE_SALES
where ("SS_STORE_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) UNION ALL select "SR_STORE_SK" AS "store_sk", "SR_RETURNED_DATE_SK" AS "date_sk", 0E-18 AS "sales_price", 0E-18 AS "profit", "SR_RETURN_AMT" AS "return_amt", "SR_NET_LOSS" AS "net_loss"
from TPCDS.STORE_RETURNS
where ("SR_STORE_SK" IS NOT NULL AND "SR_RETURNED_DATE_SK" IS NOT NULL) ) join TPCDS.DATE_DIM on ("date_sk" = "D_DATE_SK") join TPCDS.STORE on ("store_sk" = "S_STORE_SK")
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= ?)) AND ("D_DATE" <= ?)) group by "S_STORE_ID" UNION ALL select SUM("sales_price") AS "sales", SUM("return_amt") AS "returns", (SUM("profit") - SUM("net_loss")) AS "profit", 'catalog channel' AS "channel", CONCAT('catalog_page' , "CP_CATALOG_PAGE_ID") AS "id"
from ( select "CS_CATALOG_PAGE_SK" AS "page_sk", "CS_SOLD_DATE_SK" AS "date_sk", "CS_EXT_SALES_PRICE" AS "sales_price", "CS_NET_PROFIT" AS "profit", 0E-18 AS "return_amt", 0E-18 AS "net_loss"
from TPCDS.CATALOG_SALES
where ("CS_CATALOG_PAGE_SK" IS NOT NULL AND "CS_SOLD_DATE_SK" IS NOT NULL) UNION ALL select "CR_CATALOG_PAGE_SK" AS "page_sk", "CR_RETURNED_DATE_SK" AS "date_sk", 0E-18 AS "sales_price", 0E-18 AS "profit", "CR_RETURN_AMOUNT" AS "return_amt", "CR_NET_LOSS" AS "net_loss"
from TPCDS.CATALOG_RETURNS
where ("CR_CATALOG_PAGE_SK" IS NOT NULL AND "CR_RETURNED_DATE_SK" IS NOT NULL) ) join TPCDS.DATE_DIM on ("date_sk" = "D_DATE_SK") join TPCDS.CATALOG_PAGE on ("page_sk" = "CP_CATALOG_PAGE_SK")
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= ?)) AND ("D_DATE" <= ?)) group by "CP_CATALOG_PAGE_ID" UNION ALL select SUM("sales_price") AS "sales", SUM("return_amt") AS "returns", (SUM("profit") - SUM("net_loss")) AS "profit", 'web channel' AS "channel", CONCAT('web_site' , "WEB_SITE_ID") AS "id"
from ( select "WS_WEB_SITE_SK" AS "wsr_web_site_sk", "WS_SOLD_DATE_SK" AS "date_sk", "WS_EXT_SALES_PRICE" AS "sales_price", "WS_NET_PROFIT" AS "profit", 0E-18 AS "return_amt", 0E-18 AS "net_loss"
from TPCDS.WEB_SALES
where ("WS_WEB_SITE_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) UNION ALL select "WS_WEB_SITE_SK" AS "wsr_web_site_sk", "WR_RETURNED_DATE_SK" AS "date_sk", 0E-18 AS "sales_price", 0E-18 AS "profit", "WR_RETURN_AMT" AS "return_amt", "WR_NET_LOSS" AS "net_loss"
from TPCDS.WEB_RETURNS join TPCDS.WEB_SALES on (("WR_ITEM_SK" = "WS_ITEM_SK") AND ("WR_ORDER_NUMBER" = "WS_ORDER_NUMBER"))
where ("WR_RETURNED_DATE_SK" IS NOT NULL AND "WS_WEB_SITE_SK" IS NOT NULL) ) join TPCDS.DATE_DIM on ("date_sk" = "D_DATE_SK") join TPCDS.WEB_SITE on ("wsr_web_site_sk" = "WEB_SITE_SK")
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= ?)) AND ("D_DATE" <= ?)) group by "WEB_SITE_ID" ) , lateral ( select "channel" "channel_10_sparkora", "id" "id_7_sparkora", 0 "spark_grouping_id_8_sparkora" from dual union all select "channel", null, 1 from dual union all select null, null, 3 from dual ) group by "channel_10_sparkora", "id_7_sparkora", "spark_grouping_id_8_sparkora"
(2) Project [codegen id : 1]
Output [5]: [channel#6123, id#6124, sales#5698, returns#5699, profit#5700]
Input [5]: [channel#6123, id#6124, sales#5698, returns#5699, profit#5700]
(3) TakeOrderedAndProject
Input [5]: [channel#6123, id#6124, sales#5698, returns#5699, profit#5700]
Arguments: 100, [channel#6123 ASC NULLS FIRST, id#6124 ASC NULLS FIRST], [channel#6123, id#6124, sales#5698, returns#5699, profit#5700]
select "channel_10_sparkora", "id_7_sparkora", SUM("sales") AS "sales", SUM("returns") AS "returns", SUM("profit") AS "profit"
from ( select SUM("sales_price") AS "sales", SUM("return_amt") AS "returns", (SUM("profit") - SUM("net_loss")) AS "profit", 'store channel' AS "channel", CONCAT('store' , "S_STORE_ID") AS "id"
from ( select "SS_STORE_SK" AS "store_sk", "SS_SOLD_DATE_SK" AS "date_sk", "SS_EXT_SALES_PRICE" AS "sales_price", "SS_NET_PROFIT" AS "profit", 0E-18 AS "return_amt", 0E-18 AS "net_loss"
from TPCDS.STORE_SALES
where ("SS_STORE_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) UNION ALL select "SR_STORE_SK" AS "store_sk", "SR_RETURNED_DATE_SK" AS "date_sk", 0E-18 AS "sales_price", 0E-18 AS "profit", "SR_RETURN_AMT" AS "return_amt", "SR_NET_LOSS" AS "net_loss"
from TPCDS.STORE_RETURNS
where ("SR_STORE_SK" IS NOT NULL AND "SR_RETURNED_DATE_SK" IS NOT NULL) ) join TPCDS.DATE_DIM on ("date_sk" = "D_DATE_SK") join TPCDS.STORE on ("store_sk" = "S_STORE_SK")
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= TRUNC(TIMESTAMP '2000-08-23 07:00:00.000000'))) AND ("D_DATE" <= TRUNC(TIMESTAMP '2000-09-06 07:00:00.000000'))) group by "S_STORE_ID" UNION ALL select SUM("sales_price") AS "sales", SUM("return_amt") AS "returns", (SUM("profit") - SUM("net_loss")) AS "profit", 'catalog channel' AS "channel", CONCAT('catalog_page' , "CP_CATALOG_PAGE_ID") AS "id"
from ( select "CS_CATALOG_PAGE_SK" AS "page_sk", "CS_SOLD_DATE_SK" AS "date_sk", "CS_EXT_SALES_PRICE" AS "sales_price", "CS_NET_PROFIT" AS "profit", 0E-18 AS "return_amt", 0E-18 AS "net_loss"
from TPCDS.CATALOG_SALES
where ("CS_CATALOG_PAGE_SK" IS NOT NULL AND "CS_SOLD_DATE_SK" IS NOT NULL) UNION ALL select "CR_CATALOG_PAGE_SK" AS "page_sk", "CR_RETURNED_DATE_SK" AS "date_sk", 0E-18 AS "sales_price", 0E-18 AS "profit", "CR_RETURN_AMOUNT" AS "return_amt", "CR_NET_LOSS" AS "net_loss"
from TPCDS.CATALOG_RETURNS
where ("CR_CATALOG_PAGE_SK" IS NOT NULL AND "CR_RETURNED_DATE_SK" IS NOT NULL) ) join TPCDS.DATE_DIM on ("date_sk" = "D_DATE_SK") join TPCDS.CATALOG_PAGE on ("page_sk" = "CP_CATALOG_PAGE_SK")
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= TRUNC(TIMESTAMP '2000-08-23 07:00:00.000000'))) AND ("D_DATE" <= TRUNC(TIMESTAMP '2000-09-06 07:00:00.000000'))) group by "CP_CATALOG_PAGE_ID" UNION ALL select SUM("sales_price") AS "sales", SUM("return_amt") AS "returns", (SUM("profit") - SUM("net_loss")) AS "profit", 'web channel' AS "channel", CONCAT('web_site' , "WEB_SITE_ID") AS "id"
from ( select "WS_WEB_SITE_SK" AS "wsr_web_site_sk", "WS_SOLD_DATE_SK" AS "date_sk", "WS_EXT_SALES_PRICE" AS "sales_price", "WS_NET_PROFIT" AS "profit", 0E-18 AS "return_amt", 0E-18 AS "net_loss"
from TPCDS.WEB_SALES
where ("WS_WEB_SITE_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) UNION ALL select "WS_WEB_SITE_SK" AS "wsr_web_site_sk", "WR_RETURNED_DATE_SK" AS "date_sk", 0E-18 AS "sales_price", 0E-18 AS "profit", "WR_RETURN_AMT" AS "return_amt", "WR_NET_LOSS" AS "net_loss"
from TPCDS.WEB_RETURNS join TPCDS.WEB_SALES on (("WR_ITEM_SK" = "WS_ITEM_SK") AND ("WR_ORDER_NUMBER" = "WS_ORDER_NUMBER"))
where ("WR_RETURNED_DATE_SK" IS NOT NULL AND "WS_WEB_SITE_SK" IS NOT NULL) ) join TPCDS.DATE_DIM on ("date_sk" = "D_DATE_SK") join TPCDS.WEB_SITE on ("wsr_web_site_sk" = "WEB_SITE_SK")
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= TRUNC(TIMESTAMP '2000-08-23 07:00:00.000000'))) AND ("D_DATE" <= TRUNC(TIMESTAMP '2000-09-06 07:00:00.000000'))) group by "WEB_SITE_ID" ) , lateral ( select "channel" "channel_10_sparkora", "id" "id_7_sparkora", 0 "spark_grouping_id_8_sparkora" from dual union all select "channel", null, 1 from dual union all select null, null, 3 from dual ) group by "channel_10_sparkora", "id_7_sparkora", "spark_grouping_id_8_sparkora"
== Physical Plan ==
TakeOrderedAndProject (92)
+- * HashAggregate (91)
+- Exchange (90)
+- * HashAggregate (89)
+- * Expand (88)
+- Union (87)
:- * HashAggregate (27)
: +- Exchange (26)
: +- * HashAggregate (25)
: +- * Project (24)
: +- * SortMergeJoin Inner (23)
: :- * Sort (18)
: : +- Exchange (17)
: : +- * Project (16)
: : +- * SortMergeJoin Inner (15)
: : :- * Sort (9)
: : : +- Exchange (8)
: : : +- Union (7)
: : : :- * Project (3)
: : : : +- * Filter (2)
: : : : +- BatchScan (1)
: : : +- * Project (6)
: : : +- * Filter (5)
: : : +- BatchScan (4)
: : +- * Sort (14)
: : +- Exchange (13)
: : +- * Project (12)
: : +- * Filter (11)
: : +- BatchScan (10)
: +- * Sort (22)
: +- Exchange (21)
: +- * Project (20)
: +- BatchScan (19)
:- * HashAggregate (54)
: +- Exchange (53)
: +- * HashAggregate (52)
: +- * Project (51)
: +- * SortMergeJoin Inner (50)
: :- * Sort (45)
: : +- Exchange (44)
: : +- * Project (43)
: : +- * SortMergeJoin Inner (42)
: : :- * Sort (36)
: : : +- Exchange (35)
: : : +- Union (34)
: : : :- * Project (30)
: : : : +- * Filter (29)
: : : : +- BatchScan (28)
: : : +- * Project (33)
: : : +- * Filter (32)
: : : +- BatchScan (31)
: : +- * Sort (41)
: : +- Exchange (40)
: : +- * Project (39)
: : +- * Filter (38)
: : +- BatchScan (37)
: +- * Sort (49)
: +- Exchange (48)
: +- * Project (47)
: +- BatchScan (46)
+- * HashAggregate (86)
+- Exchange (85)
+- * HashAggregate (84)
+- * Project (83)
+- * SortMergeJoin Inner (82)
:- * Sort (77)
: +- Exchange (76)
: +- * Project (75)
: +- * SortMergeJoin Inner (74)
: :- * Sort (68)
: : +- Exchange (67)
: : +- Union (66)
: : :- * Project (57)
: : : +- * Filter (56)
: : : +- BatchScan (55)
: : +- * Project (65)
: : +- * SortMergeJoin Inner (64)
: : :- * Sort (60)
: : : +- * Project (59)
: : : +- BatchScan (58)
: : +- * Sort (63)
: : +- * Filter (62)
: : +- BatchScan (61)
: +- * Sort (73)
: +- Exchange (72)
: +- * Project (71)
: +- * Filter (70)
: +- BatchScan (69)
+- * Sort (81)
+- Exchange (80)
+- * Project (79)
+- BatchScan (78)
(1) BatchScan
Output [4]: [SS_STORE_SK#5169, SS_EXT_SALES_PRICE#5177, SS_NET_PROFIT#5184, SS_SOLD_DATE_SK#5162]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_STORE_SK#5549, SS_EXT_SALES_PRICE#5550, SS_NET_PROFIT#5551, SS_SOLD_DATE_SK#5552], [oracolumnref(SS_STORE_SK#5549), oracolumnref(SS_EXT_SALES_PRICE#5550), oracolumnref(SS_NET_PROFIT#5551), oracolumnref(SS_SOLD_DATE_SK#5552)], orapostfixunaryopexpression(isnotnull(SS_STORE_SK#5169))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_STORE_SK:decimal(38,18),SS_EXT_SALES_PRICE:decimal(38,18),SS_NET_PROFIT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_STORE_SK", "SS_EXT_SALES_PRICE", "SS_NET_PROFIT", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_STORE_SK" IS NOT NULL and "SS_SOLD_DATE_SK" IS NOT NULL
(2) Filter [codegen id : 1]
Input [4]: [SS_STORE_SK#5169, SS_EXT_SALES_PRICE#5177, SS_NET_PROFIT#5184, SS_SOLD_DATE_SK#5162]
Condition : isnotnull(SS_STORE_SK#5169)
(3) Project [codegen id : 1]
Output [6]: [SS_STORE_SK#5169 AS store_sk#5114, SS_SOLD_DATE_SK#5162 AS date_sk#5115, SS_EXT_SALES_PRICE#5177 AS sales_price#5116, SS_NET_PROFIT#5184 AS profit#5117, 0E-18 AS return_amt#5506, 0E-18 AS net_loss#5507]
Input [4]: [SS_STORE_SK#5169, SS_EXT_SALES_PRICE#5177, SS_NET_PROFIT#5184, SS_SOLD_DATE_SK#5162]
(4) BatchScan
Output [4]: [SR_STORE_SK#5192, SR_RETURN_AMT#5196, SR_NET_LOSS#5204, SR_RETURNED_DATE_SK#5185]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_RETURNS, [SR_STORE_SK#5557, SR_RETURN_AMT#5558, SR_NET_LOSS#5559, SR_RETURNED_DATE_SK#5560], [oracolumnref(SR_STORE_SK#5557), oracolumnref(SR_RETURN_AMT#5558), oracolumnref(SR_NET_LOSS#5559), oracolumnref(SR_RETURNED_DATE_SK#5560)], orapostfixunaryopexpression(isnotnull(SR_STORE_SK#5192))
PartitionSchema: struct<SR_RETURNED_DATE_SK:decimal(38,18)>
ReadSchema: struct<SR_STORE_SK:decimal(38,18),SR_RETURN_AMT:decimal(38,18),SR_NET_LOSS:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SR_STORE_SK", "SR_RETURN_AMT", "SR_NET_LOSS", "SR_RETURNED_DATE_SK"
from TPCDS.STORE_RETURNS
where "SR_STORE_SK" IS NOT NULL and "SR_RETURNED_DATE_SK" IS NOT NULL
(5) Filter [codegen id : 2]
Input [4]: [SR_STORE_SK#5192, SR_RETURN_AMT#5196, SR_NET_LOSS#5204, SR_RETURNED_DATE_SK#5185]
Condition : isnotnull(SR_STORE_SK#5192)
(6) Project [codegen id : 2]
Output [6]: [SR_STORE_SK#5192 AS store_sk#5120, SR_RETURNED_DATE_SK#5185 AS date_sk#5121, 0E-18 AS sales_price#5508, 0E-18 AS profit#5509, SR_RETURN_AMT#5196 AS return_amt#5124, SR_NET_LOSS#5204 AS net_loss#5125]
Input [4]: [SR_STORE_SK#5192, SR_RETURN_AMT#5196, SR_NET_LOSS#5204, SR_RETURNED_DATE_SK#5185]
(7) Union
(8) Exchange
Input [6]: [store_sk#5114, date_sk#5115, sales_price#5116, profit#5117, return_amt#5506, net_loss#5507]
Arguments: hashpartitioning(date_sk#5115, 5), true, [id=#1716]
(9) Sort [codegen id : 3]
Input [6]: [store_sk#5114, date_sk#5115, sales_price#5116, profit#5117, return_amt#5506, net_loss#5507]
Arguments: [date_sk#5115 ASC NULLS FIRST], false, 0
(10) BatchScan
Output [2]: [D_DATE_SK#5205, D_DATE#5207]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#5565, D_DATE#5566], [oracolumnref(D_DATE_SK#5565), oracolumnref(D_DATE#5566)], orabinaryopexpression(((isnotnull(D_DATE#5207) AND (D_DATE#5207 >= 11192)) AND (D_DATE#5207 <= 11206)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_DATE:date>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 11192, 11206
oraPushdownSQL: select "D_DATE_SK", "D_DATE"
from TPCDS.DATE_DIM
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= ?)) AND ("D_DATE" <= ?))
(11) Filter [codegen id : 4]
Input [2]: [D_DATE_SK#5205, D_DATE#5207]
Condition : ((isnotnull(D_DATE#5207) AND (D_DATE#5207 >= 11192)) AND (D_DATE#5207 <= 11206))
(12) Project [codegen id : 4]
Output [1]: [D_DATE_SK#5205]
Input [2]: [D_DATE_SK#5205, D_DATE#5207]
(13) Exchange
Input [1]: [D_DATE_SK#5205]
Arguments: hashpartitioning(d_date_sk#5205, 5), true, [id=#1725]
(14) Sort [codegen id : 5]
Input [1]: [D_DATE_SK#5205]
Arguments: [d_date_sk#5205 ASC NULLS FIRST], false, 0
(15) SortMergeJoin [codegen id : 6]
Left keys [1]: [date_sk#5115]
Right keys [1]: [d_date_sk#5205]
Join condition: None
(16) Project [codegen id : 6]
Output [5]: [store_sk#5114, sales_price#5116, profit#5117, return_amt#5506, net_loss#5507]
Input [7]: [store_sk#5114, date_sk#5115, sales_price#5116, profit#5117, return_amt#5506, net_loss#5507, D_DATE_SK#5205]
(17) Exchange
Input [5]: [store_sk#5114, sales_price#5116, profit#5117, return_amt#5506, net_loss#5507]
Arguments: hashpartitioning(store_sk#5114, 5), true, [id=#1733]
(18) Sort [codegen id : 7]
Input [5]: [store_sk#5114, sales_price#5116, profit#5117, return_amt#5506, net_loss#5507]
Arguments: [store_sk#5114 ASC NULLS FIRST], false, 0
(19) BatchScan
Output [2]: [S_STORE_SK#5233, S_STORE_ID#5234]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE, [S_STORE_SK#5569, S_STORE_ID#5570], [oracolumnref(S_STORE_SK#5569), oracolumnref(S_STORE_ID#5570)]
PartitionSchema: struct<>
ReadSchema: struct<S_STORE_SK:decimal(38,18),S_STORE_ID:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "S_STORE_SK", "S_STORE_ID"
from TPCDS.STORE
(20) Project [codegen id : 8]
Output [2]: [S_STORE_SK#5233, S_STORE_ID#5234]
Input [2]: [S_STORE_SK#5233, S_STORE_ID#5234]
(21) Exchange
Input [2]: [S_STORE_SK#5233, S_STORE_ID#5234]
Arguments: hashpartitioning(s_store_sk#5233, 5), true, [id=#1741]
(22) Sort [codegen id : 9]
Input [2]: [S_STORE_SK#5233, S_STORE_ID#5234]
Arguments: [s_store_sk#5233 ASC NULLS FIRST], false, 0
(23) SortMergeJoin [codegen id : 10]
Left keys [1]: [store_sk#5114]
Right keys [1]: [s_store_sk#5233]
Join condition: None
(24) Project [codegen id : 10]
Output [5]: [sales_price#5116, profit#5117, return_amt#5506, net_loss#5507, S_STORE_ID#5234]
Input [7]: [store_sk#5114, sales_price#5116, profit#5117, return_amt#5506, net_loss#5507, S_STORE_SK#5233, S_STORE_ID#5234]
(25) HashAggregate [codegen id : 10]
Input [5]: [sales_price#5116, profit#5117, return_amt#5506, net_loss#5507, S_STORE_ID#5234]
Keys [1]: [s_store_id#5234]
Functions [4]: [partial_sum(sales_price#5116), partial_sum(return_amt#5506), partial_sum(profit#5117), partial_sum(net_loss#5507)]
Aggregate Attributes [8]: [sum#5641, isEmpty#5642, sum#5643, isEmpty#5644, sum#5645, isEmpty#5646, sum#5647, isEmpty#5648]
Results [9]: [s_store_id#5234, sum#5649, isEmpty#5650, sum#5651, isEmpty#5652, sum#5653, isEmpty#5654, sum#5655, isEmpty#5656]
(26) Exchange
Input [9]: [s_store_id#5234, sum#5649, isEmpty#5650, sum#5651, isEmpty#5652, sum#5653, isEmpty#5654, sum#5655, isEmpty#5656]
Arguments: hashpartitioning(s_store_id#5234, 5), true, [id=#1750]
(27) HashAggregate [codegen id : 11]
Input [9]: [s_store_id#5234, sum#5649, isEmpty#5650, sum#5651, isEmpty#5652, sum#5653, isEmpty#5654, sum#5655, isEmpty#5656]
Keys [1]: [s_store_id#5234]
Functions [4]: [sum(sales_price#5116), sum(return_amt#5506), sum(profit#5117), sum(net_loss#5507)]
Aggregate Attributes [4]: [sum(sales_price#5116)#5518, sum(return_amt#5506)#5520, sum(profit#5117)#5519, sum(net_loss#5507)#5521]
Results [5]: [sum(sales_price#5116)#5518 AS sales#5126, sum(return_amt#5506)#5520 AS returns#5128, CheckOverflow((promote_precision(cast(sum(profit#5117)#5519 as decimal(38,17))) - promote_precision(cast(sum(net_loss#5507)#5521 as decimal(38,17)))), DecimalType(38,17), true) AS profit#5104, store channel AS channel#5533, concat(store, s_store_id#5234) AS id#5534]
(28) BatchScan
Output [4]: [CS_CATALOG_PAGE_SK#5274, CS_EXT_SALES_PRICE#5285, CS_NET_PROFIT#5295, CS_SOLD_DATE_SK#5262]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CATALOG_SALES, [CS_CATALOG_PAGE_SK#5573, CS_EXT_SALES_PRICE#5574, CS_NET_PROFIT#5575, CS_SOLD_DATE_SK#5576], [oracolumnref(CS_CATALOG_PAGE_SK#5573), oracolumnref(CS_EXT_SALES_PRICE#5574), oracolumnref(CS_NET_PROFIT#5575), oracolumnref(CS_SOLD_DATE_SK#5576)], orapostfixunaryopexpression(isnotnull(CS_CATALOG_PAGE_SK#5274))
PartitionSchema: struct<CS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<CS_CATALOG_PAGE_SK:decimal(38,18),CS_EXT_SALES_PRICE:decimal(38,18),CS_NET_PROFIT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CS_CATALOG_PAGE_SK", "CS_EXT_SALES_PRICE", "CS_NET_PROFIT", "CS_SOLD_DATE_SK"
from TPCDS.CATALOG_SALES
where "CS_CATALOG_PAGE_SK" IS NOT NULL and "CS_SOLD_DATE_SK" IS NOT NULL
(29) Filter [codegen id : 12]
Input [4]: [CS_CATALOG_PAGE_SK#5274, CS_EXT_SALES_PRICE#5285, CS_NET_PROFIT#5295, CS_SOLD_DATE_SK#5262]
Condition : isnotnull(CS_CATALOG_PAGE_SK#5274)
(30) Project [codegen id : 12]
Output [6]: [CS_CATALOG_PAGE_SK#5274 AS page_sk#5130, CS_SOLD_DATE_SK#5262 AS date_sk#5131, CS_EXT_SALES_PRICE#5285 AS sales_price#5132, CS_NET_PROFIT#5295 AS profit#5133, 0E-18 AS return_amt#5510, 0E-18 AS net_loss#5511]
Input [4]: [CS_CATALOG_PAGE_SK#5274, CS_EXT_SALES_PRICE#5285, CS_NET_PROFIT#5295, CS_SOLD_DATE_SK#5262]
(31) BatchScan
Output [4]: [CR_CATALOG_PAGE_SK#5308, CR_RETURN_AMOUNT#5314, CR_NET_LOSS#5322, CR_RETURNED_DATE_SK#5296]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CATALOG_RETURNS, [CR_CATALOG_PAGE_SK#5581, CR_RETURN_AMOUNT#5582, CR_NET_LOSS#5583, CR_RETURNED_DATE_SK#5584], [oracolumnref(CR_CATALOG_PAGE_SK#5581), oracolumnref(CR_RETURN_AMOUNT#5582), oracolumnref(CR_NET_LOSS#5583), oracolumnref(CR_RETURNED_DATE_SK#5584)], orapostfixunaryopexpression(isnotnull(CR_CATALOG_PAGE_SK#5308))
PartitionSchema: struct<CR_RETURNED_DATE_SK:decimal(38,18)>
ReadSchema: struct<CR_CATALOG_PAGE_SK:decimal(38,18),CR_RETURN_AMOUNT:decimal(38,18),CR_NET_LOSS:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CR_CATALOG_PAGE_SK", "CR_RETURN_AMOUNT", "CR_NET_LOSS", "CR_RETURNED_DATE_SK"
from TPCDS.CATALOG_RETURNS
where "CR_CATALOG_PAGE_SK" IS NOT NULL and "CR_RETURNED_DATE_SK" IS NOT NULL
(32) Filter [codegen id : 13]
Input [4]: [CR_CATALOG_PAGE_SK#5308, CR_RETURN_AMOUNT#5314, CR_NET_LOSS#5322, CR_RETURNED_DATE_SK#5296]
Condition : isnotnull(CR_CATALOG_PAGE_SK#5308)
(33) Project [codegen id : 13]
Output [6]: [CR_CATALOG_PAGE_SK#5308 AS page_sk#5136, CR_RETURNED_DATE_SK#5296 AS date_sk#5137, 0E-18 AS sales_price#5512, 0E-18 AS profit#5513, CR_RETURN_AMOUNT#5314 AS return_amt#5140, CR_NET_LOSS#5322 AS net_loss#5141]
Input [4]: [CR_CATALOG_PAGE_SK#5308, CR_RETURN_AMOUNT#5314, CR_NET_LOSS#5322, CR_RETURNED_DATE_SK#5296]
(34) Union
(35) Exchange
Input [6]: [page_sk#5130, date_sk#5131, sales_price#5132, profit#5133, return_amt#5510, net_loss#5511]
Arguments: hashpartitioning(date_sk#5131, 5), true, [id=#1763]
(36) Sort [codegen id : 14]
Input [6]: [page_sk#5130, date_sk#5131, sales_price#5132, profit#5133, return_amt#5510, net_loss#5511]
Arguments: [date_sk#5131 ASC NULLS FIRST], false, 0
(37) BatchScan
Output [2]: [D_DATE_SK#5323, D_DATE#5325]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#5589, D_DATE#5590], [oracolumnref(D_DATE_SK#5589), oracolumnref(D_DATE#5590)], orabinaryopexpression(((isnotnull(D_DATE#5325) AND (D_DATE#5325 >= 11192)) AND (D_DATE#5325 <= 11206)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_DATE:date>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 11192, 11206
oraPushdownSQL: select "D_DATE_SK", "D_DATE"
from TPCDS.DATE_DIM
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= ?)) AND ("D_DATE" <= ?))
(38) Filter [codegen id : 15]
Input [2]: [D_DATE_SK#5323, D_DATE#5325]
Condition : ((isnotnull(D_DATE#5325) AND (D_DATE#5325 >= 11192)) AND (D_DATE#5325 <= 11206))
(39) Project [codegen id : 15]
Output [1]: [D_DATE_SK#5323]
Input [2]: [D_DATE_SK#5323, D_DATE#5325]
(40) Exchange
Input [1]: [D_DATE_SK#5323]
Arguments: hashpartitioning(d_date_sk#5323, 5), true, [id=#1772]
(41) Sort [codegen id : 16]
Input [1]: [D_DATE_SK#5323]
Arguments: [d_date_sk#5323 ASC NULLS FIRST], false, 0
(42) SortMergeJoin [codegen id : 17]
Left keys [1]: [date_sk#5131]
Right keys [1]: [d_date_sk#5323]
Join condition: None
(43) Project [codegen id : 17]
Output [5]: [page_sk#5130, sales_price#5132, profit#5133, return_amt#5510, net_loss#5511]
Input [7]: [page_sk#5130, date_sk#5131, sales_price#5132, profit#5133, return_amt#5510, net_loss#5511, D_DATE_SK#5323]
(44) Exchange
Input [5]: [page_sk#5130, sales_price#5132, profit#5133, return_amt#5510, net_loss#5511]
Arguments: hashpartitioning(page_sk#5130, 5), true, [id=#1780]
(45) Sort [codegen id : 18]
Input [5]: [page_sk#5130, sales_price#5132, profit#5133, return_amt#5510, net_loss#5511]
Arguments: [page_sk#5130 ASC NULLS FIRST], false, 0
(46) BatchScan
Output [2]: [CP_CATALOG_PAGE_SK#5351, CP_CATALOG_PAGE_ID#5352]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CATALOG_PAGE, [CP_CATALOG_PAGE_SK#5593, CP_CATALOG_PAGE_ID#5594], [oracolumnref(CP_CATALOG_PAGE_SK#5593), oracolumnref(CP_CATALOG_PAGE_ID#5594)]
PartitionSchema: struct<>
ReadSchema: struct<CP_CATALOG_PAGE_SK:decimal(38,18),CP_CATALOG_PAGE_ID:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CP_CATALOG_PAGE_SK", "CP_CATALOG_PAGE_ID"
from TPCDS.CATALOG_PAGE
(47) Project [codegen id : 19]
Output [2]: [CP_CATALOG_PAGE_SK#5351, CP_CATALOG_PAGE_ID#5352]
Input [2]: [CP_CATALOG_PAGE_SK#5351, CP_CATALOG_PAGE_ID#5352]
(48) Exchange
Input [2]: [CP_CATALOG_PAGE_SK#5351, CP_CATALOG_PAGE_ID#5352]
Arguments: hashpartitioning(cp_catalog_page_sk#5351, 5), true, [id=#1788]
(49) Sort [codegen id : 20]
Input [2]: [CP_CATALOG_PAGE_SK#5351, CP_CATALOG_PAGE_ID#5352]
Arguments: [cp_catalog_page_sk#5351 ASC NULLS FIRST], false, 0
(50) SortMergeJoin [codegen id : 21]
Left keys [1]: [page_sk#5130]
Right keys [1]: [cp_catalog_page_sk#5351]
Join condition: None
(51) Project [codegen id : 21]
Output [5]: [sales_price#5132, profit#5133, return_amt#5510, net_loss#5511, CP_CATALOG_PAGE_ID#5352]
Input [7]: [page_sk#5130, sales_price#5132, profit#5133, return_amt#5510, net_loss#5511, CP_CATALOG_PAGE_SK#5351, CP_CATALOG_PAGE_ID#5352]
(52) HashAggregate [codegen id : 21]
Input [5]: [sales_price#5132, profit#5133, return_amt#5510, net_loss#5511, CP_CATALOG_PAGE_ID#5352]
Keys [1]: [cp_catalog_page_id#5352]
Functions [4]: [partial_sum(sales_price#5132), partial_sum(return_amt#5510), partial_sum(profit#5133), partial_sum(net_loss#5511)]
Aggregate Attributes [8]: [sum#5657, isEmpty#5658, sum#5659, isEmpty#5660, sum#5661, isEmpty#5662, sum#5663, isEmpty#5664]
Results [9]: [cp_catalog_page_id#5352, sum#5665, isEmpty#5666, sum#5667, isEmpty#5668, sum#5669, isEmpty#5670, sum#5671, isEmpty#5672]
(53) Exchange
Input [9]: [cp_catalog_page_id#5352, sum#5665, isEmpty#5666, sum#5667, isEmpty#5668, sum#5669, isEmpty#5670, sum#5671, isEmpty#5672]
Arguments: hashpartitioning(cp_catalog_page_id#5352, 5), true, [id=#1797]
(54) HashAggregate [codegen id : 22]
Input [9]: [cp_catalog_page_id#5352, sum#5665, isEmpty#5666, sum#5667, isEmpty#5668, sum#5669, isEmpty#5670, sum#5671, isEmpty#5672]
Keys [1]: [cp_catalog_page_id#5352]
Functions [4]: [sum(sales_price#5132), sum(return_amt#5510), sum(profit#5133), sum(net_loss#5511)]
Aggregate Attributes [4]: [sum(sales_price#5132)#5522, sum(return_amt#5510)#5524, sum(profit#5133)#5523, sum(net_loss#5511)#5525]
Results [5]: [sum(sales_price#5132)#5522 AS sales#5142, sum(return_amt#5510)#5524 AS returns#5144, CheckOverflow((promote_precision(cast(sum(profit#5133)#5523 as decimal(38,17))) - promote_precision(cast(sum(net_loss#5511)#5525 as decimal(38,17)))), DecimalType(38,17), true) AS profit#5107, catalog channel AS channel#5545, concat(catalog_page, cp_catalog_page_id#5352) AS id#5546]
(55) BatchScan
Output [4]: [WS_WEB_SITE_SK#5373, WS_EXT_SALES_PRICE#5383, WS_NET_PROFIT#5393, WS_SOLD_DATE_SK#5360]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_WEB_SITE_SK#5597, WS_EXT_SALES_PRICE#5598, WS_NET_PROFIT#5599, WS_SOLD_DATE_SK#5600], [oracolumnref(WS_WEB_SITE_SK#5597), oracolumnref(WS_EXT_SALES_PRICE#5598), oracolumnref(WS_NET_PROFIT#5599), oracolumnref(WS_SOLD_DATE_SK#5600)], orapostfixunaryopexpression(isnotnull(WS_WEB_SITE_SK#5373))
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_WEB_SITE_SK:decimal(38,18),WS_EXT_SALES_PRICE:decimal(38,18),WS_NET_PROFIT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_WEB_SITE_SK", "WS_EXT_SALES_PRICE", "WS_NET_PROFIT", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_WEB_SITE_SK" IS NOT NULL and "WS_SOLD_DATE_SK" IS NOT NULL
(56) Filter [codegen id : 23]
Input [4]: [WS_WEB_SITE_SK#5373, WS_EXT_SALES_PRICE#5383, WS_NET_PROFIT#5393, WS_SOLD_DATE_SK#5360]
Condition : isnotnull(WS_WEB_SITE_SK#5373)
(57) Project [codegen id : 23]
Output [6]: [WS_WEB_SITE_SK#5373 AS wsr_web_site_sk#5146, WS_SOLD_DATE_SK#5360 AS date_sk#5147, WS_EXT_SALES_PRICE#5383 AS sales_price#5148, WS_NET_PROFIT#5393 AS profit#5149, 0E-18 AS return_amt#5514, 0E-18 AS net_loss#5515]
Input [4]: [WS_WEB_SITE_SK#5373, WS_EXT_SALES_PRICE#5383, WS_NET_PROFIT#5393, WS_SOLD_DATE_SK#5360]
(58) BatchScan
Output [5]: [WR_ITEM_SK#5396, WR_ORDER_NUMBER#5407, WR_RETURN_AMT#5409, WR_NET_LOSS#5417, WR_RETURNED_DATE_SK#5394]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_RETURNS, [WR_ITEM_SK#5605, WR_ORDER_NUMBER#5606, WR_RETURN_AMT#5607, WR_NET_LOSS#5608, WR_RETURNED_DATE_SK#5609], [oracolumnref(WR_ITEM_SK#5605), oracolumnref(WR_ORDER_NUMBER#5606), oracolumnref(WR_RETURN_AMT#5607), oracolumnref(WR_NET_LOSS#5608), oracolumnref(WR_RETURNED_DATE_SK#5609)]
PartitionSchema: struct<WR_RETURNED_DATE_SK:decimal(38,18)>
ReadSchema: struct<WR_ITEM_SK:decimal(38,18),WR_ORDER_NUMBER:decimal(38,18),WR_RETURN_AMT:decimal(38,18),WR_NET_LOSS:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WR_ITEM_SK", "WR_ORDER_NUMBER", "WR_RETURN_AMT", "WR_NET_LOSS", "WR_RETURNED_DATE_SK"
from TPCDS.WEB_RETURNS
where "WR_RETURNED_DATE_SK" IS NOT NULL
(59) Project [codegen id : 24]
Output [5]: [WR_RETURNED_DATE_SK#5394, WR_ITEM_SK#5396, WR_ORDER_NUMBER#5407, WR_RETURN_AMT#5409, WR_NET_LOSS#5417]
Input [5]: [WR_ITEM_SK#5396, WR_ORDER_NUMBER#5407, WR_RETURN_AMT#5409, WR_NET_LOSS#5417, WR_RETURNED_DATE_SK#5394]
(60) Sort [codegen id : 24]
Input [5]: [WR_RETURNED_DATE_SK#5394, WR_ITEM_SK#5396, WR_ORDER_NUMBER#5407, WR_RETURN_AMT#5409, WR_NET_LOSS#5417]
Arguments: [wr_item_sk#5396 ASC NULLS FIRST, wr_order_number#5407 ASC NULLS FIRST], false, 0
(61) BatchScan
Output [3]: [WS_ITEM_SK#5421, WS_WEB_SITE_SK#5431, WS_ORDER_NUMBER#5435]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_ITEM_SK#5615, WS_WEB_SITE_SK#5616, WS_ORDER_NUMBER#5617], [oracolumnref(WS_ITEM_SK#5615), oracolumnref(WS_WEB_SITE_SK#5616), oracolumnref(WS_ORDER_NUMBER#5617)], orapostfixunaryopexpression(isnotnull(WS_WEB_SITE_SK#5431))
PartitionSchema: struct<>
ReadSchema: struct<WS_ITEM_SK:decimal(38,18),WS_WEB_SITE_SK:decimal(38,18),WS_ORDER_NUMBER:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_ITEM_SK", "WS_WEB_SITE_SK", "WS_ORDER_NUMBER"
from TPCDS.WEB_SALES
where "WS_WEB_SITE_SK" IS NOT NULL
(62) Filter [codegen id : 25]
Input [3]: [WS_ITEM_SK#5421, WS_WEB_SITE_SK#5431, WS_ORDER_NUMBER#5435]
Condition : isnotnull(WS_WEB_SITE_SK#5431)
(63) Sort [codegen id : 25]
Input [3]: [WS_ITEM_SK#5421, WS_WEB_SITE_SK#5431, WS_ORDER_NUMBER#5435]
Arguments: [ws_item_sk#5421 ASC NULLS FIRST, ws_order_number#5435 ASC NULLS FIRST], false, 0
(64) SortMergeJoin [codegen id : 26]
Left keys [2]: [wr_item_sk#5396, wr_order_number#5407]
Right keys [2]: [ws_item_sk#5421, ws_order_number#5435]
Join condition: None
(65) Project [codegen id : 26]
Output [6]: [ws_web_site_sk#5431 AS wsr_web_site_sk#5152, wr_returned_date_sk#5394 AS date_sk#5153, 0E-18 AS sales_price#5516, 0E-18 AS profit#5517, wr_return_amt#5409 AS return_amt#5156, wr_net_loss#5417 AS net_loss#5157]
Input [8]: [WR_RETURNED_DATE_SK#5394, WR_ITEM_SK#5396, WR_ORDER_NUMBER#5407, WR_RETURN_AMT#5409, WR_NET_LOSS#5417, WS_ITEM_SK#5421, WS_WEB_SITE_SK#5431, WS_ORDER_NUMBER#5435]
(66) Union
(67) Exchange
Input [6]: [wsr_web_site_sk#5146, date_sk#5147, sales_price#5148, profit#5149, return_amt#5514, net_loss#5515]
Arguments: hashpartitioning(date_sk#5147, 5), true, [id=#1819]
(68) Sort [codegen id : 27]
Input [6]: [wsr_web_site_sk#5146, date_sk#5147, sales_price#5148, profit#5149, return_amt#5514, net_loss#5515]
Arguments: [date_sk#5147 ASC NULLS FIRST], false, 0
(69) BatchScan
Output [2]: [D_DATE_SK#5452, D_DATE#5454]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#5621, D_DATE#5622], [oracolumnref(D_DATE_SK#5621), oracolumnref(D_DATE#5622)], orabinaryopexpression(((isnotnull(D_DATE#5454) AND (D_DATE#5454 >= 11192)) AND (D_DATE#5454 <= 11206)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_DATE:date>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 11192, 11206
oraPushdownSQL: select "D_DATE_SK", "D_DATE"
from TPCDS.DATE_DIM
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= ?)) AND ("D_DATE" <= ?))
(70) Filter [codegen id : 28]
Input [2]: [D_DATE_SK#5452, D_DATE#5454]
Condition : ((isnotnull(D_DATE#5454) AND (D_DATE#5454 >= 11192)) AND (D_DATE#5454 <= 11206))
(71) Project [codegen id : 28]
Output [1]: [D_DATE_SK#5452]
Input [2]: [D_DATE_SK#5452, D_DATE#5454]
(72) Exchange
Input [1]: [D_DATE_SK#5452]
Arguments: hashpartitioning(d_date_sk#5452, 5), true, [id=#1828]
(73) Sort [codegen id : 29]
Input [1]: [D_DATE_SK#5452]
Arguments: [d_date_sk#5452 ASC NULLS FIRST], false, 0
(74) SortMergeJoin [codegen id : 30]
Left keys [1]: [date_sk#5147]
Right keys [1]: [d_date_sk#5452]
Join condition: None
(75) Project [codegen id : 30]
Output [5]: [wsr_web_site_sk#5146, sales_price#5148, profit#5149, return_amt#5514, net_loss#5515]
Input [7]: [wsr_web_site_sk#5146, date_sk#5147, sales_price#5148, profit#5149, return_amt#5514, net_loss#5515, D_DATE_SK#5452]
(76) Exchange
Input [5]: [wsr_web_site_sk#5146, sales_price#5148, profit#5149, return_amt#5514, net_loss#5515]
Arguments: hashpartitioning(wsr_web_site_sk#5146, 5), true, [id=#1836]
(77) Sort [codegen id : 31]
Input [5]: [wsr_web_site_sk#5146, sales_price#5148, profit#5149, return_amt#5514, net_loss#5515]
Arguments: [wsr_web_site_sk#5146 ASC NULLS FIRST], false, 0
(78) BatchScan
Output [2]: [WEB_SITE_SK#5480, WEB_SITE_ID#5481]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SITE, [WEB_SITE_SK#5625, WEB_SITE_ID#5626], [oracolumnref(WEB_SITE_SK#5625), oracolumnref(WEB_SITE_ID#5626)]
PartitionSchema: struct<>
ReadSchema: struct<WEB_SITE_SK:decimal(38,18),WEB_SITE_ID:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WEB_SITE_SK", "WEB_SITE_ID"
from TPCDS.WEB_SITE
(79) Project [codegen id : 32]
Output [2]: [WEB_SITE_SK#5480, WEB_SITE_ID#5481]
Input [2]: [WEB_SITE_SK#5480, WEB_SITE_ID#5481]
(80) Exchange
Input [2]: [WEB_SITE_SK#5480, WEB_SITE_ID#5481]
Arguments: hashpartitioning(web_site_sk#5480, 5), true, [id=#1844]
(81) Sort [codegen id : 33]
Input [2]: [WEB_SITE_SK#5480, WEB_SITE_ID#5481]
Arguments: [web_site_sk#5480 ASC NULLS FIRST], false, 0
(82) SortMergeJoin [codegen id : 34]
Left keys [1]: [wsr_web_site_sk#5146]
Right keys [1]: [web_site_sk#5480]
Join condition: None
(83) Project [codegen id : 34]
Output [5]: [sales_price#5148, profit#5149, return_amt#5514, net_loss#5515, WEB_SITE_ID#5481]
Input [7]: [wsr_web_site_sk#5146, sales_price#5148, profit#5149, return_amt#5514, net_loss#5515, WEB_SITE_SK#5480, WEB_SITE_ID#5481]
(84) HashAggregate [codegen id : 34]
Input [5]: [sales_price#5148, profit#5149, return_amt#5514, net_loss#5515, WEB_SITE_ID#5481]
Keys [1]: [web_site_id#5481]
Functions [4]: [partial_sum(sales_price#5148), partial_sum(return_amt#5514), partial_sum(profit#5149), partial_sum(net_loss#5515)]
Aggregate Attributes [8]: [sum#5673, isEmpty#5674, sum#5675, isEmpty#5676, sum#5677, isEmpty#5678, sum#5679, isEmpty#5680]
Results [9]: [web_site_id#5481, sum#5681, isEmpty#5682, sum#5683, isEmpty#5684, sum#5685, isEmpty#5686, sum#5687, isEmpty#5688]
(85) Exchange
Input [9]: [web_site_id#5481, sum#5681, isEmpty#5682, sum#5683, isEmpty#5684, sum#5685, isEmpty#5686, sum#5687, isEmpty#5688]
Arguments: hashpartitioning(web_site_id#5481, 5), true, [id=#1853]
(86) HashAggregate [codegen id : 35]
Input [9]: [web_site_id#5481, sum#5681, isEmpty#5682, sum#5683, isEmpty#5684, sum#5685, isEmpty#5686, sum#5687, isEmpty#5688]
Keys [1]: [web_site_id#5481]
Functions [4]: [sum(sales_price#5148), sum(return_amt#5514), sum(profit#5149), sum(net_loss#5515)]
Aggregate Attributes [4]: [sum(sales_price#5148)#5526, sum(return_amt#5514)#5528, sum(profit#5149)#5527, sum(net_loss#5515)#5529]
Results [5]: [sum(sales_price#5148)#5526 AS sales#5158, sum(return_amt#5514)#5528 AS returns#5160, CheckOverflow((promote_precision(cast(sum(profit#5149)#5527 as decimal(38,17))) - promote_precision(cast(sum(net_loss#5515)#5529 as decimal(38,17)))), DecimalType(38,17), true) AS profit#5110, web channel AS channel#5547, concat(web_site, web_site_id#5481) AS id#5548]
(87) Union
(88) Expand [codegen id : 36]
Input [5]: [sales#5126, returns#5128, profit#5104, channel#5533, id#5534]
Arguments: [List(sales#5126, returns#5128, profit#5104, channel#5533, id#5534, 0), List(sales#5126, returns#5128, profit#5104, channel#5533, null, 1), List(sales#5126, returns#5128, profit#5104, null, null, 3)], [sales#5126, returns#5128, profit#5104, channel#5536, id#5537, spark_grouping_id#5535L]
(89) HashAggregate [codegen id : 36]
Input [6]: [sales#5126, returns#5128, profit#5104, channel#5536, id#5537, spark_grouping_id#5535L]
Keys [3]: [channel#5536, id#5537, spark_grouping_id#5535L]
Functions [3]: [partial_sum(sales#5126), partial_sum(returns#5128), partial_sum(profit#5104)]
Aggregate Attributes [6]: [sum#5629, isEmpty#5630, sum#5631, isEmpty#5632, sum#5633, isEmpty#5634]
Results [9]: [channel#5536, id#5537, spark_grouping_id#5535L, sum#5635, isEmpty#5636, sum#5637, isEmpty#5638, sum#5639, isEmpty#5640]
(90) Exchange
Input [9]: [channel#5536, id#5537, spark_grouping_id#5535L, sum#5635, isEmpty#5636, sum#5637, isEmpty#5638, sum#5639, isEmpty#5640]
Arguments: hashpartitioning(channel#5536, id#5537, spark_grouping_id#5535L, 5), true, [id=#1862]
(91) HashAggregate [codegen id : 37]
Input [9]: [channel#5536, id#5537, spark_grouping_id#5535L, sum#5635, isEmpty#5636, sum#5637, isEmpty#5638, sum#5639, isEmpty#5640]
Keys [3]: [channel#5536, id#5537, spark_grouping_id#5535L]
Functions [3]: [sum(sales#5126), sum(returns#5128), sum(profit#5104)]
Aggregate Attributes [3]: [sum(sales#5126)#5530, sum(returns#5128)#5531, sum(profit#5104)#5532]
Results [5]: [channel#5536, id#5537, sum(sales#5126)#5530 AS sales#5111, sum(returns#5128)#5531 AS returns#5112, sum(profit#5104)#5532 AS profit#5113]
(92) TakeOrderedAndProject
Input [5]: [channel#5536, id#5537, sales#5111, returns#5112, profit#5113]
Arguments: 100, [channel#5536 ASC NULLS FIRST, id#5537 ASC NULLS FIRST], [channel#5536, id#5537, sales#5111, returns#5112, profit#5113]
select a.ca_state state, count(*) cnt
from customer_address a
,customer c
,store_sales s
,date_dim d
,item i
where a.ca_address_sk = c.c_current_addr_sk
and c.c_customer_sk = s.ss_customer_sk
and s.ss_sold_date_sk = d.d_date_sk
and s.ss_item_sk = i.i_item_sk
and d.d_month_seq =
(select distinct (d_month_seq)
from date_dim
where d_year = 2001
and d_moy = 1 )
and i.i_current_price > 1.2 *
(select avg(j.i_current_price)
from item j
where j.i_category = i.i_category)
group by a.ca_state
having count(*) >= 10
order by cnt
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [2]: [state#6426, cnt#6427L]
OraPlan: 00 OraSingleQueryBlock [state#6426, cnt#6427L], [oracolumnref(state#6426), oracolumnref(cnt#6427L)], orabinaryopexpression((count(1)#6587L >= 10))
01 +- OraSingleQueryBlock [ca_state#6436 AS state#6426, count(1) AS cnt#6427L, count(1) AS count(1)#6587L], [oraalias(ca_state#6436 AS state#6426), oraalias(count(1) AS cnt#6427L), oraalias(count(1) AS count(1)#6587L)], orabinaryopexpression(((isnotnull(C_CURRENT_ADDR_SK#6445) AND isnotnull(SS_CUSTOMER_SK#6462)) AND (isnotnull(D_MONTH_SEQ#6485) AND (isnotnull(D_MONTH_SEQ#6485) AND (D_MONTH_SEQ#6485 = scalar-subquery#6424 []))))), List(oracolumnref(ca_state#6436))
02 :- OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ADDRESS_SK#6428, CA_STATE#6436]
03 :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#6441, C_CURRENT_ADDR_SK#6445]
04 :- OraTableScan TPCDS.STORE_SALES, [SS_ITEM_SK#6461, SS_CUSTOMER_SK#6462, SS_SOLD_DATE_SK#6459]
05 :- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#6482, D_MONTH_SEQ#6485]
06 +- OraSingleQueryBlock [I_ITEM_SK#6510], [oracolumnref(I_ITEM_SK#6510)], orabinaryopexpression((cast(i_current_price#6515 as decimal(38,20)) > CheckOverflow((1.2000000000000000000000 * promote_precision(avg(i_current_price)#6585)), DecimalType(38,20), true)))
07 +- OraSingleQueryBlock [I_ITEM_SK#6510, I_CURRENT_PRICE#6515, I_CATEGORY#6522, avg(i_current_price)#6585, i_category#6574], [oracolumnref(I_ITEM_SK#6510), oracolumnref(I_CURRENT_PRICE#6515), oracolumnref(I_CATEGORY#6522), oracolumnref(avg(i_current_price)#6585), oracolumnref(i_category#6574)]
08 :- OraSingleQueryBlock [I_ITEM_SK#6510, I_CURRENT_PRICE#6515, I_CATEGORY#6522], [oracolumnref(I_ITEM_SK#6510), oracolumnref(I_CURRENT_PRICE#6515), oracolumnref(I_CATEGORY#6522)], orapostfixunaryopexpression(isnotnull(I_CURRENT_PRICE#6515))
09 : +- OraTableScan TPCDS.ITEM, [I_ITEM_SK#6510, I_CURRENT_PRICE#6515, I_CATEGORY#6522]
10 +- OraSingleQueryBlock [avg(i_current_price#6567) AS avg(i_current_price)#6585, i_category#6574], [oraalias(avg(i_current_price#6567) AS avg(i_current_price)#6585), oracolumnref(i_category#6574)], orapostfixunaryopexpression(isnotnull(I_CATEGORY#6574)), List(oracolumnref(i_category#6574))
11 +- OraTableScan TPCDS.ITEM, [I_CURRENT_PRICE#6567, I_CATEGORY#6574]
ReadSchema: struct<state:string,cnt:bigint>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 1.2000000000000000000000, 2001.000000000000000000, 1.000000000000000000, 10
oraPushdownSQL: select "state", "cnt"
from ( select "CA_STATE" AS "state", COUNT(1) AS "cnt", COUNT(1) AS "count(1)"
from TPCDS.CUSTOMER_ADDRESS join TPCDS.CUSTOMER on ("CA_ADDRESS_SK" = "C_CURRENT_ADDR_SK") join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK") join ( select "I_ITEM_SK"
from ( select "I_ITEM_SK", "I_CURRENT_PRICE", "sparkora_0"."I_CATEGORY" AS "I_CATEGORY_1_sparkora", "avg(i_current_price)", "sparkora_1"."I_CATEGORY" AS "I_CATEGORY_2_sparkora"
from ( select "I_ITEM_SK", "I_CURRENT_PRICE", "I_CATEGORY"
from TPCDS.ITEM
where "I_CURRENT_PRICE" IS NOT NULL ) "sparkora_0" left outer join ( select AVG("I_CURRENT_PRICE") AS "avg(i_current_price)", "I_CATEGORY"
from TPCDS.ITEM
where "I_CATEGORY" IS NOT NULL group by "I_CATEGORY" ) "sparkora_1" on ("sparkora_0"."I_CATEGORY" = "sparkora_1"."I_CATEGORY") )
where ("I_CURRENT_PRICE" > (? * "avg(i_current_price)")) ) on ("SS_ITEM_SK" = "I_ITEM_SK")
where (("C_CURRENT_ADDR_SK" IS NOT NULL AND ("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL)) AND ("D_MONTH_SEQ" IS NOT NULL AND ("D_MONTH_SEQ" = ( select "D_MONTH_SEQ"
from TPCDS.DATE_DIM
where ((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = ?)) AND ("D_MOY" = ?)) group by "D_MONTH_SEQ" )))) group by "CA_STATE" )
where ("count(1)" >= ?)
(2) Project [codegen id : 1]
Output [2]: [state#6426, cnt#6427L]
Input [2]: [state#6426, cnt#6427L]
(3) TakeOrderedAndProject
Input [2]: [state#6426, cnt#6427L]
Arguments: 100, [cnt#6427L ASC NULLS FIRST], [state#6426, cnt#6427L]
select "state", "cnt"
from ( select "CA_STATE" AS "state", COUNT(1) AS "cnt", COUNT(1) AS "count(1)"
from TPCDS.CUSTOMER_ADDRESS join TPCDS.CUSTOMER on ("CA_ADDRESS_SK" = "C_CURRENT_ADDR_SK") join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK") join ( select "I_ITEM_SK"
from ( select "I_ITEM_SK", "I_CURRENT_PRICE", "sparkora_0"."I_CATEGORY" AS "I_CATEGORY_1_sparkora", "avg(i_current_price)", "sparkora_1"."I_CATEGORY" AS "I_CATEGORY_2_sparkora"
from ( select "I_ITEM_SK", "I_CURRENT_PRICE", "I_CATEGORY"
from TPCDS.ITEM
where "I_CURRENT_PRICE" IS NOT NULL ) "sparkora_0" left outer join ( select AVG("I_CURRENT_PRICE") AS "avg(i_current_price)", "I_CATEGORY"
from TPCDS.ITEM
where "I_CATEGORY" IS NOT NULL group by "I_CATEGORY" ) "sparkora_1" on ("sparkora_0"."I_CATEGORY" = "sparkora_1"."I_CATEGORY") )
where ("I_CURRENT_PRICE" > (1.2000000000000000000000 * "avg(i_current_price)")) ) on ("SS_ITEM_SK" = "I_ITEM_SK")
where (("C_CURRENT_ADDR_SK" IS NOT NULL AND ("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL)) AND ("D_MONTH_SEQ" IS NOT NULL AND ("D_MONTH_SEQ" = ( select "D_MONTH_SEQ"
from TPCDS.DATE_DIM
where ((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = 2001.000000000000000000)) AND ("D_MOY" = 1.000000000000000000)) group by "D_MONTH_SEQ" )))) group by "CA_STATE" )
where ("count(1)" >= 10)
== Physical Plan ==
TakeOrderedAndProject (41)
+- * Project (40)
+- * Filter (39)
+- * HashAggregate (38)
+- * HashAggregate (37)
+- * Project (36)
+- * SortMergeJoin Inner (35)
:- * Sort (22)
: +- * Project (21)
: +- * SortMergeJoin Inner (20)
: :- * Sort (15)
: : +- * Project (14)
: : +- * SortMergeJoin Inner (13)
: : :- * Sort (9)
: : : +- * Project (8)
: : : +- * SortMergeJoin Inner (7)
: : : :- * Sort (3)
: : : : +- * Project (2)
: : : : +- BatchScan (1)
: : : +- * Sort (6)
: : : +- * Filter (5)
: : : +- BatchScan (4)
: : +- * Sort (12)
: : +- * Filter (11)
: : +- BatchScan (10)
: +- * Sort (19)
: +- * Project (18)
: +- * Filter (17)
: +- BatchScan (16)
+- * Sort (34)
+- * Project (33)
+- * Filter (32)
+- SortMergeJoin LeftOuter (31)
:- * Sort (25)
: +- * Filter (24)
: +- BatchScan (23)
+- * Sort (30)
+- * HashAggregate (29)
+- * HashAggregate (28)
+- * Filter (27)
+- BatchScan (26)
(1) BatchScan
Output [2]: [CA_ADDRESS_SK#6220, CA_STATE#6228]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ADDRESS_SK#6394, CA_STATE#6395], [oracolumnref(CA_ADDRESS_SK#6394), oracolumnref(CA_STATE#6395)]
PartitionSchema: struct<>
ReadSchema: struct<CA_ADDRESS_SK:decimal(38,18),CA_STATE:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CA_ADDRESS_SK", "CA_STATE"
from TPCDS.CUSTOMER_ADDRESS
(2) Project [codegen id : 1]
Output [2]: [CA_ADDRESS_SK#6220, CA_STATE#6228]
Input [2]: [CA_ADDRESS_SK#6220, CA_STATE#6228]
(3) Sort [codegen id : 1]
Input [2]: [CA_ADDRESS_SK#6220, CA_STATE#6228]
Arguments: [ca_address_sk#6220 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [2]: [C_CUSTOMER_SK#6233, C_CURRENT_ADDR_SK#6237]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#6398, C_CURRENT_ADDR_SK#6399], [oracolumnref(C_CUSTOMER_SK#6398), oracolumnref(C_CURRENT_ADDR_SK#6399)], orapostfixunaryopexpression(isnotnull(C_CURRENT_ADDR_SK#6237))
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CURRENT_ADDR_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CURRENT_ADDR_SK"
from TPCDS.CUSTOMER
where "C_CURRENT_ADDR_SK" IS NOT NULL
(5) Filter [codegen id : 2]
Input [2]: [C_CUSTOMER_SK#6233, C_CURRENT_ADDR_SK#6237]
Condition : isnotnull(C_CURRENT_ADDR_SK#6237)
(6) Sort [codegen id : 2]
Input [2]: [C_CUSTOMER_SK#6233, C_CURRENT_ADDR_SK#6237]
Arguments: [c_current_addr_sk#6237 ASC NULLS FIRST], false, 0
(7) SortMergeJoin [codegen id : 3]
Left keys [1]: [ca_address_sk#6220]
Right keys [1]: [c_current_addr_sk#6237]
Join condition: None
(8) Project [codegen id : 3]
Output [2]: [CA_STATE#6228, C_CUSTOMER_SK#6233]
Input [4]: [CA_ADDRESS_SK#6220, CA_STATE#6228, C_CUSTOMER_SK#6233, C_CURRENT_ADDR_SK#6237]
(9) Sort [codegen id : 3]
Input [2]: [CA_STATE#6228, C_CUSTOMER_SK#6233]
Arguments: [c_customer_sk#6233 ASC NULLS FIRST], false, 0
(10) BatchScan
Output [3]: [SS_ITEM_SK#6253, SS_CUSTOMER_SK#6254, SS_SOLD_DATE_SK#6251]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_ITEM_SK#6402, SS_CUSTOMER_SK#6403, SS_SOLD_DATE_SK#6404], [oracolumnref(SS_ITEM_SK#6402), oracolumnref(SS_CUSTOMER_SK#6403), oracolumnref(SS_SOLD_DATE_SK#6404)], orapostfixunaryopexpression(isnotnull(SS_CUSTOMER_SK#6254))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_ITEM_SK:decimal(38,18),SS_CUSTOMER_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_ITEM_SK", "SS_CUSTOMER_SK", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_CUSTOMER_SK" IS NOT NULL and "SS_SOLD_DATE_SK" IS NOT NULL
(11) Filter [codegen id : 4]
Input [3]: [SS_ITEM_SK#6253, SS_CUSTOMER_SK#6254, SS_SOLD_DATE_SK#6251]
Condition : isnotnull(SS_CUSTOMER_SK#6254)
(12) Sort [codegen id : 4]
Input [3]: [SS_ITEM_SK#6253, SS_CUSTOMER_SK#6254, SS_SOLD_DATE_SK#6251]
Arguments: [ss_customer_sk#6254 ASC NULLS FIRST], false, 0
(13) SortMergeJoin [codegen id : 5]
Left keys [1]: [c_customer_sk#6233]
Right keys [1]: [ss_customer_sk#6254]
Join condition: None
(14) Project [codegen id : 5]
Output [3]: [CA_STATE#6228, SS_SOLD_DATE_SK#6251, SS_ITEM_SK#6253]
Input [5]: [CA_STATE#6228, C_CUSTOMER_SK#6233, SS_ITEM_SK#6253, SS_CUSTOMER_SK#6254, SS_SOLD_DATE_SK#6251]
(15) Sort [codegen id : 5]
Input [3]: [CA_STATE#6228, SS_SOLD_DATE_SK#6251, SS_ITEM_SK#6253]
Arguments: [ss_sold_date_sk#6251 ASC NULLS FIRST], false, 0
(16) BatchScan
Output [2]: [D_DATE_SK#6274, D_MONTH_SEQ#6277]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#6408, D_MONTH_SEQ#6409], [oracolumnref(D_DATE_SK#6408), oracolumnref(D_MONTH_SEQ#6409)], orapostfixunaryopexpression(isnotnull(D_MONTH_SEQ#6277))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_MONTH_SEQ:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "D_DATE_SK", "D_MONTH_SEQ"
from TPCDS.DATE_DIM
where "D_MONTH_SEQ" IS NOT NULL
(17) Filter [codegen id : 6]
Input [2]: [D_DATE_SK#6274, D_MONTH_SEQ#6277]
Condition : (isnotnull(D_MONTH_SEQ#6277) AND (D_MONTH_SEQ#6277 = Subquery scalar-subquery#6216, [id=#2032]))
(18) Project [codegen id : 6]
Output [1]: [D_DATE_SK#6274]
Input [2]: [D_DATE_SK#6274, D_MONTH_SEQ#6277]
(19) Sort [codegen id : 6]
Input [1]: [D_DATE_SK#6274]
Arguments: [d_date_sk#6274 ASC NULLS FIRST], false, 0
(20) SortMergeJoin [codegen id : 7]
Left keys [1]: [ss_sold_date_sk#6251]
Right keys [1]: [d_date_sk#6274]
Join condition: None
(21) Project [codegen id : 7]
Output [2]: [CA_STATE#6228, SS_ITEM_SK#6253]
Input [4]: [CA_STATE#6228, SS_SOLD_DATE_SK#6251, SS_ITEM_SK#6253, D_DATE_SK#6274]
(22) Sort [codegen id : 7]
Input [2]: [CA_STATE#6228, SS_ITEM_SK#6253]
Arguments: [ss_item_sk#6253 ASC NULLS FIRST], false, 0
(23) BatchScan
Output [3]: [I_ITEM_SK#6302, I_CURRENT_PRICE#6307, I_CATEGORY#6314]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.ITEM, [I_ITEM_SK#6412, I_CURRENT_PRICE#6413, I_CATEGORY#6414], [oracolumnref(I_ITEM_SK#6412), oracolumnref(I_CURRENT_PRICE#6413), oracolumnref(I_CATEGORY#6414)], orapostfixunaryopexpression(isnotnull(I_CURRENT_PRICE#6307))
PartitionSchema: struct<>
ReadSchema: struct<I_ITEM_SK:decimal(38,18),I_CURRENT_PRICE:decimal(38,18),I_CATEGORY:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "I_ITEM_SK", "I_CURRENT_PRICE", "I_CATEGORY"
from TPCDS.ITEM
where "I_CURRENT_PRICE" IS NOT NULL
(24) Filter [codegen id : 8]
Input [3]: [I_ITEM_SK#6302, I_CURRENT_PRICE#6307, I_CATEGORY#6314]
Condition : isnotnull(I_CURRENT_PRICE#6307)
(25) Sort [codegen id : 8]
Input [3]: [I_ITEM_SK#6302, I_CURRENT_PRICE#6307, I_CATEGORY#6314]
Arguments: [i_category#6314 ASC NULLS FIRST], false, 0
(26) BatchScan
Output [2]: [I_CURRENT_PRICE#6359, I_CATEGORY#6366]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.ITEM, [I_CURRENT_PRICE#6390, I_CATEGORY#6391], [oracolumnref(I_CURRENT_PRICE#6390), oracolumnref(I_CATEGORY#6391)], orapostfixunaryopexpression(isnotnull(I_CATEGORY#6366))
PartitionSchema: struct<>
ReadSchema: struct<I_CURRENT_PRICE:decimal(38,18),I_CATEGORY:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "I_CURRENT_PRICE", "I_CATEGORY"
from TPCDS.ITEM
where "I_CATEGORY" IS NOT NULL
(27) Filter [codegen id : 9]
Input [2]: [I_CURRENT_PRICE#6359, I_CATEGORY#6366]
Condition : isnotnull(i_category#6366)
(28) HashAggregate [codegen id : 9]
Input [2]: [I_CURRENT_PRICE#6359, I_CATEGORY#6366]
Keys [1]: [i_category#6366]
Functions [1]: [partial_avg(i_current_price#6359)]
Aggregate Attributes [2]: [sum#6420, count#6421L]
Results [3]: [i_category#6366, sum#6422, count#6423L]
(29) HashAggregate [codegen id : 9]
Input [3]: [i_category#6366, sum#6422, count#6423L]
Keys [1]: [i_category#6366]
Functions [1]: [avg(i_current_price#6359)]
Aggregate Attributes [1]: [avg(i_current_price#6359)#6376]
Results [2]: [avg(i_current_price#6359)#6376 AS avg(i_current_price)#6377, i_category#6366]
(30) Sort [codegen id : 9]
Input [2]: [avg(i_current_price)#6377, i_category#6366]
Arguments: [i_category#6366 ASC NULLS FIRST], false, 0
(31) SortMergeJoin
Left keys [1]: [i_category#6314]
Right keys [1]: [i_category#6366]
Join condition: None
(32) Filter [codegen id : 10]
Input [5]: [I_ITEM_SK#6302, I_CURRENT_PRICE#6307, I_CATEGORY#6314, avg(i_current_price)#6377, i_category#6366]
Condition : (cast(i_current_price#6307 as decimal(38,20)) > CheckOverflow((1.2000000000000000000000 * promote_precision(avg(i_current_price)#6377)), DecimalType(38,20), true))
(33) Project [codegen id : 10]
Output [1]: [I_ITEM_SK#6302]
Input [5]: [I_ITEM_SK#6302, I_CURRENT_PRICE#6307, I_CATEGORY#6314, avg(i_current_price)#6377, i_category#6366]
(34) Sort [codegen id : 10]
Input [1]: [I_ITEM_SK#6302]
Arguments: [i_item_sk#6302 ASC NULLS FIRST], false, 0
(35) SortMergeJoin [codegen id : 11]
Left keys [1]: [ss_item_sk#6253]
Right keys [1]: [i_item_sk#6302]
Join condition: None
(36) Project [codegen id : 11]
Output [1]: [CA_STATE#6228]
Input [3]: [CA_STATE#6228, SS_ITEM_SK#6253, I_ITEM_SK#6302]
(37) HashAggregate [codegen id : 11]
Input [1]: [CA_STATE#6228]
Keys [1]: [ca_state#6228]
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#6418L]
Results [2]: [ca_state#6228, count#6419L]
(38) HashAggregate [codegen id : 11]
Input [2]: [ca_state#6228, count#6419L]
Keys [1]: [ca_state#6228]
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#6324L]
Results [3]: [ca_state#6228 AS state#6218, count(1)#6324L AS cnt#6219L, count(1)#6324L AS count(1)#6379L]
(39) Filter [codegen id : 11]
Input [3]: [state#6218, cnt#6219L, count(1)#6379L]
Condition : (count(1)#6379L >= 10)
(40) Project [codegen id : 11]
Output [2]: [state#6218, cnt#6219L]
Input [3]: [state#6218, cnt#6219L, count(1)#6379L]
(41) TakeOrderedAndProject
Input [2]: [state#6218, cnt#6219L]
Arguments: 100, [cnt#6219L ASC NULLS FIRST], [state#6218, cnt#6219L]
===== Subqueries =====
Subquery:1 Hosting operator id = 17 Hosting Expression = Subquery scalar-subquery#6216, [id=#2032]
* HashAggregate (46)
+- * HashAggregate (45)
+- * Project (44)
+- * Filter (43)
+- BatchScan (42)
(42) BatchScan
Output [3]: [D_MONTH_SEQ#6329, D_YEAR#6332, D_MOY#6334]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_MONTH_SEQ#6384, D_YEAR#6385, D_MOY#6386], [oracolumnref(D_MONTH_SEQ#6384), oracolumnref(D_YEAR#6385), oracolumnref(D_MOY#6386)], orabinaryopexpression((((isnotnull(D_YEAR#6332) AND isnotnull(D_MOY#6334)) AND (D_YEAR#6332 = 2001.000000000000000000)) AND (D_MOY#6334 = 1.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_MONTH_SEQ:decimal(38,18),D_YEAR:decimal(38,18),D_MOY:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000, 1.000000000000000000
oraPushdownSQL: select "D_MONTH_SEQ", "D_YEAR", "D_MOY"
from TPCDS.DATE_DIM
where ((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = ?)) AND ("D_MOY" = ?))
(43) Filter [codegen id : 1]
Input [3]: [D_MONTH_SEQ#6329, D_YEAR#6332, D_MOY#6334]
Condition : (((isnotnull(D_YEAR#6332) AND isnotnull(D_MOY#6334)) AND (D_YEAR#6332 = 2001.000000000000000000)) AND (D_MOY#6334 = 1.000000000000000000))
(44) Project [codegen id : 1]
Output [1]: [D_MONTH_SEQ#6329]
Input [3]: [D_MONTH_SEQ#6329, D_YEAR#6332, D_MOY#6334]
(45) HashAggregate [codegen id : 1]
Input [1]: [D_MONTH_SEQ#6329]
Keys [1]: [d_month_seq#6329]
Functions: []
Aggregate Attributes: []
Results [1]: [d_month_seq#6329]
(46) HashAggregate [codegen id : 1]
Input [1]: [d_month_seq#6329]
Keys [1]: [d_month_seq#6329]
Functions: []
Aggregate Attributes: []
Results [1]: [d_month_seq#6329]
select i_item_id,
avg(ss_quantity) agg1,
avg(ss_list_price) agg2,
avg(ss_coupon_amt) agg3,
avg(ss_sales_price) agg4
from store_sales, customer_demographics, date_dim, item, promotion
where ss_sold_date_sk = d_date_sk and
ss_item_sk = i_item_sk and
ss_cdemo_sk = cd_demo_sk and
ss_promo_sk = p_promo_sk and
cd_gender = 'M' and
cd_marital_status = 'S' and
cd_education_status = 'College' and
(p_channel_email = 'N' or p_channel_event = 'N') and
d_year = 2000
group by i_item_id
order by i_item_id
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [5]: [i_item_id#6860, agg1#6795, agg2#6796, agg3#6797, agg4#6798]
OraPlan: 00 OraSingleQueryBlock [i_item_id#6860, avg(ss_quantity#6809) AS agg1#6795, avg(ss_list_price#6811) AS agg2#6796, avg(ss_coupon_amt#6818) AS agg3#6797, avg(ss_sales_price#6812) AS agg4#6798], [oracolumnref(i_item_id#6860), oraalias(avg(ss_quantity#6809) AS agg1#6795), oraalias(avg(ss_list_price#6811) AS agg2#6796), oraalias(avg(ss_coupon_amt#6818) AS agg3#6797), oraalias(avg(ss_sales_price#6812) AS agg4#6798)], orabinaryopexpression(((((isnotnull(SS_CDEMO_SK#6803) AND isnotnull(SS_PROMO_SK#6807)) AND (((((isnotnull(CD_GENDER#6823) AND isnotnull(CD_MARITAL_STATUS#6824)) AND isnotnull(CD_EDUCATION_STATUS#6825)) AND (CD_GENDER#6823 = M)) AND (CD_MARITAL_STATUS#6824 = S)) AND (CD_EDUCATION_STATUS#6825 = College))) AND (isnotnull(D_YEAR#6837) AND (D_YEAR#6837 = 2000.000000000000000000))) AND ((P_CHANNEL_EMAIL#6890 = N) OR (P_CHANNEL_EVENT#6895 = N)))), List(oracolumnref(i_item_id#6860))
01 :- OraTableScan TPCDS.STORE_SALES, [SS_ITEM_SK#6801, SS_CDEMO_SK#6803, SS_PROMO_SK#6807, SS_QUANTITY#6809, SS_LIST_PRICE#6811, SS_SALES_PRICE#6812, SS_COUPON_AMT#6818, SS_SOLD_DATE_SK#6799]
02 :- OraTableScan TPCDS.CUSTOMER_DEMOGRAPHICS, [CD_DEMO_SK#6822, CD_GENDER#6823, CD_MARITAL_STATUS#6824, CD_EDUCATION_STATUS#6825]
03 :- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#6831, D_YEAR#6837]
04 :- OraTableScan TPCDS.ITEM, [I_ITEM_SK#6859, I_ITEM_ID#6860]
05 +- OraTableScan TPCDS.PROMOTION, [P_PROMO_SK#6881, P_CHANNEL_EMAIL#6890, P_CHANNEL_EVENT#6895]
ReadSchema: struct<i_item_id:string,agg1:decimal(38,22),agg2:decimal(38,22),agg3:decimal(38,22),agg4:decimal(38,22)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: M, S, College, 2000.000000000000000000, N, N
oraPushdownSQL: select "I_ITEM_ID", AVG("SS_QUANTITY") AS "agg1", AVG("SS_LIST_PRICE") AS "agg2", AVG("SS_COUPON_AMT") AS "agg3", AVG("SS_SALES_PRICE") AS "agg4"
from TPCDS.STORE_SALES join TPCDS.CUSTOMER_DEMOGRAPHICS on ("SS_CDEMO_SK" = "CD_DEMO_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK") join TPCDS.ITEM on ("SS_ITEM_SK" = "I_ITEM_SK") join TPCDS.PROMOTION on ("SS_PROMO_SK" = "P_PROMO_SK")
where ((((("SS_CDEMO_SK" IS NOT NULL AND "SS_PROMO_SK" IS NOT NULL) AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ((((("CD_GENDER" IS NOT NULL AND "CD_MARITAL_STATUS" IS NOT NULL) AND "CD_EDUCATION_STATUS" IS NOT NULL) AND ("CD_GENDER" = ?)) AND ("CD_MARITAL_STATUS" = ?)) AND ("CD_EDUCATION_STATUS" = ?))) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) AND (("P_CHANNEL_EMAIL" = ?) OR ("P_CHANNEL_EVENT" = ?))) group by "I_ITEM_ID"
(2) Project [codegen id : 1]
Output [5]: [i_item_id#6860, agg1#6795, agg2#6796, agg3#6797, agg4#6798]
Input [5]: [i_item_id#6860, agg1#6795, agg2#6796, agg3#6797, agg4#6798]
(3) TakeOrderedAndProject
Input [5]: [i_item_id#6860, agg1#6795, agg2#6796, agg3#6797, agg4#6798]
Arguments: 100, [i_item_id#6860 ASC NULLS FIRST], [i_item_id#6860, agg1#6795, agg2#6796, agg3#6797, agg4#6798]
select "I_ITEM_ID", AVG("SS_QUANTITY") AS "agg1", AVG("SS_LIST_PRICE") AS "agg2", AVG("SS_COUPON_AMT") AS "agg3", AVG("SS_SALES_PRICE") AS "agg4"
from TPCDS.STORE_SALES join TPCDS.CUSTOMER_DEMOGRAPHICS on ("SS_CDEMO_SK" = "CD_DEMO_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK") join TPCDS.ITEM on ("SS_ITEM_SK" = "I_ITEM_SK") join TPCDS.PROMOTION on ("SS_PROMO_SK" = "P_PROMO_SK")
where ((((("SS_CDEMO_SK" IS NOT NULL AND "SS_PROMO_SK" IS NOT NULL) AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ((((("CD_GENDER" IS NOT NULL AND "CD_MARITAL_STATUS" IS NOT NULL) AND "CD_EDUCATION_STATUS" IS NOT NULL) AND ("CD_GENDER" = 'M')) AND ("CD_MARITAL_STATUS" = 'S')) AND ("CD_EDUCATION_STATUS" = 'College'))) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2000.000000000000000000))) AND (("P_CHANNEL_EMAIL" = 'N') OR ("P_CHANNEL_EVENT" = 'N'))) group by "I_ITEM_ID"
== Physical Plan ==
TakeOrderedAndProject (32)
+- * HashAggregate (31)
+- * HashAggregate (30)
+- * Project (29)
+- * SortMergeJoin Inner (28)
:- * Sort (23)
: +- * Project (22)
: +- * SortMergeJoin Inner (21)
: :- * Sort (17)
: : +- * Project (16)
: : +- * SortMergeJoin Inner (15)
: : :- * Sort (10)
: : : +- * Project (9)
: : : +- * SortMergeJoin Inner (8)
: : : :- * Sort (3)
: : : : +- * Filter (2)
: : : : +- BatchScan (1)
: : : +- * Sort (7)
: : : +- * Project (6)
: : : +- * Filter (5)
: : : +- BatchScan (4)
: : +- * Sort (14)
: : +- * Project (13)
: : +- * Filter (12)
: : +- BatchScan (11)
: +- * Sort (20)
: +- * Project (19)
: +- BatchScan (18)
+- * Sort (27)
+- * Project (26)
+- * Filter (25)
+- BatchScan (24)
(1) BatchScan
Output [8]: [SS_ITEM_SK#6632, SS_CDEMO_SK#6634, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, SS_SOLD_DATE_SK#6630]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_ITEM_SK#6741, SS_CDEMO_SK#6742, SS_PROMO_SK#6743, SS_QUANTITY#6744, SS_LIST_PRICE#6745, SS_SALES_PRICE#6746, SS_COUPON_AMT#6747, SS_SOLD_DATE_SK#6748], [oracolumnref(SS_ITEM_SK#6741), oracolumnref(SS_CDEMO_SK#6742), oracolumnref(SS_PROMO_SK#6743), oracolumnref(SS_QUANTITY#6744), oracolumnref(SS_LIST_PRICE#6745), oracolumnref(SS_SALES_PRICE#6746), oracolumnref(SS_COUPON_AMT#6747), oracolumnref(SS_SOLD_DATE_SK#6748)], orabinaryopexpression((isnotnull(SS_CDEMO_SK#6634) AND isnotnull(SS_PROMO_SK#6638)))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_ITEM_SK:decimal(38,18),SS_CDEMO_SK:decimal(38,18),SS_PROMO_SK:decimal(38,18),SS_QUANTITY:decimal(38,18),SS_LIST_PRICE:decimal(38,18),SS_SALES_PRICE:decimal(38,18),SS_COUPON_AMT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_ITEM_SK", "SS_CDEMO_SK", "SS_PROMO_SK", "SS_QUANTITY", "SS_LIST_PRICE", "SS_SALES_PRICE", "SS_COUPON_AMT", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where ("SS_CDEMO_SK" IS NOT NULL AND "SS_PROMO_SK" IS NOT NULL) and "SS_SOLD_DATE_SK" IS NOT NULL
(2) Filter [codegen id : 1]
Input [8]: [SS_ITEM_SK#6632, SS_CDEMO_SK#6634, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, SS_SOLD_DATE_SK#6630]
Condition : (isnotnull(SS_CDEMO_SK#6634) AND isnotnull(SS_PROMO_SK#6638))
(3) Sort [codegen id : 1]
Input [8]: [SS_ITEM_SK#6632, SS_CDEMO_SK#6634, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, SS_SOLD_DATE_SK#6630]
Arguments: [ss_cdemo_sk#6634 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [4]: [CD_DEMO_SK#6653, CD_GENDER#6654, CD_MARITAL_STATUS#6655, CD_EDUCATION_STATUS#6656]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER_DEMOGRAPHICS, [CD_DEMO_SK#6757, CD_GENDER#6758, CD_MARITAL_STATUS#6759, CD_EDUCATION_STATUS#6760], [oracolumnref(CD_DEMO_SK#6757), oracolumnref(CD_GENDER#6758), oracolumnref(CD_MARITAL_STATUS#6759), oracolumnref(CD_EDUCATION_STATUS#6760)], orabinaryopexpression((((((isnotnull(CD_GENDER#6654) AND isnotnull(CD_MARITAL_STATUS#6655)) AND isnotnull(CD_EDUCATION_STATUS#6656)) AND (CD_GENDER#6654 = M)) AND (CD_MARITAL_STATUS#6655 = S)) AND (CD_EDUCATION_STATUS#6656 = College)))
PartitionSchema: struct<>
ReadSchema: struct<CD_DEMO_SK:decimal(38,18),CD_GENDER:string,CD_MARITAL_STATUS:string,CD_EDUCATION_STATUS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: M, S, College
oraPushdownSQL: select "CD_DEMO_SK", "CD_GENDER", "CD_MARITAL_STATUS", "CD_EDUCATION_STATUS"
from TPCDS.CUSTOMER_DEMOGRAPHICS
where ((((("CD_GENDER" IS NOT NULL AND "CD_MARITAL_STATUS" IS NOT NULL) AND "CD_EDUCATION_STATUS" IS NOT NULL) AND ("CD_GENDER" = ?)) AND ("CD_MARITAL_STATUS" = ?)) AND ("CD_EDUCATION_STATUS" = ?))
(5) Filter [codegen id : 2]
Input [4]: [CD_DEMO_SK#6653, CD_GENDER#6654, CD_MARITAL_STATUS#6655, CD_EDUCATION_STATUS#6656]
Condition : (((((isnotnull(CD_GENDER#6654) AND isnotnull(CD_MARITAL_STATUS#6655)) AND isnotnull(CD_EDUCATION_STATUS#6656)) AND (CD_GENDER#6654 = M)) AND (CD_MARITAL_STATUS#6655 = S)) AND (CD_EDUCATION_STATUS#6656 = College))
(6) Project [codegen id : 2]
Output [1]: [CD_DEMO_SK#6653]
Input [4]: [CD_DEMO_SK#6653, CD_GENDER#6654, CD_MARITAL_STATUS#6655, CD_EDUCATION_STATUS#6656]
(7) Sort [codegen id : 2]
Input [1]: [CD_DEMO_SK#6653]
Arguments: [cd_demo_sk#6653 ASC NULLS FIRST], false, 0
(8) SortMergeJoin [codegen id : 3]
Left keys [1]: [ss_cdemo_sk#6634]
Right keys [1]: [cd_demo_sk#6653]
Join condition: None
(9) Project [codegen id : 3]
Output [7]: [SS_SOLD_DATE_SK#6630, SS_ITEM_SK#6632, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649]
Input [9]: [SS_ITEM_SK#6632, SS_CDEMO_SK#6634, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, SS_SOLD_DATE_SK#6630, CD_DEMO_SK#6653]
(10) Sort [codegen id : 3]
Input [7]: [SS_SOLD_DATE_SK#6630, SS_ITEM_SK#6632, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649]
Arguments: [ss_sold_date_sk#6630 ASC NULLS FIRST], false, 0
(11) BatchScan
Output [2]: [D_DATE_SK#6662, D_YEAR#6668]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#6765, D_YEAR#6766], [oracolumnref(D_DATE_SK#6765), oracolumnref(D_YEAR#6766)], orabinaryopexpression((isnotnull(D_YEAR#6668) AND (D_YEAR#6668 = 2000.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2000.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(12) Filter [codegen id : 4]
Input [2]: [D_DATE_SK#6662, D_YEAR#6668]
Condition : (isnotnull(D_YEAR#6668) AND (D_YEAR#6668 = 2000.000000000000000000))
(13) Project [codegen id : 4]
Output [1]: [D_DATE_SK#6662]
Input [2]: [D_DATE_SK#6662, D_YEAR#6668]
(14) Sort [codegen id : 4]
Input [1]: [D_DATE_SK#6662]
Arguments: [d_date_sk#6662 ASC NULLS FIRST], false, 0
(15) SortMergeJoin [codegen id : 5]
Left keys [1]: [ss_sold_date_sk#6630]
Right keys [1]: [d_date_sk#6662]
Join condition: None
(16) Project [codegen id : 5]
Output [6]: [SS_ITEM_SK#6632, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649]
Input [8]: [SS_SOLD_DATE_SK#6630, SS_ITEM_SK#6632, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, D_DATE_SK#6662]
(17) Sort [codegen id : 5]
Input [6]: [SS_ITEM_SK#6632, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649]
Arguments: [ss_item_sk#6632 ASC NULLS FIRST], false, 0
(18) BatchScan
Output [2]: [I_ITEM_SK#6690, I_ITEM_ID#6691]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.ITEM, [I_ITEM_SK#6769, I_ITEM_ID#6770], [oracolumnref(I_ITEM_SK#6769), oracolumnref(I_ITEM_ID#6770)]
PartitionSchema: struct<>
ReadSchema: struct<I_ITEM_SK:decimal(38,18),I_ITEM_ID:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "I_ITEM_SK", "I_ITEM_ID"
from TPCDS.ITEM
(19) Project [codegen id : 6]
Output [2]: [I_ITEM_SK#6690, I_ITEM_ID#6691]
Input [2]: [I_ITEM_SK#6690, I_ITEM_ID#6691]
(20) Sort [codegen id : 6]
Input [2]: [I_ITEM_SK#6690, I_ITEM_ID#6691]
Arguments: [i_item_sk#6690 ASC NULLS FIRST], false, 0
(21) SortMergeJoin [codegen id : 7]
Left keys [1]: [ss_item_sk#6632]
Right keys [1]: [i_item_sk#6690]
Join condition: None
(22) Project [codegen id : 7]
Output [6]: [SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, I_ITEM_ID#6691]
Input [8]: [SS_ITEM_SK#6632, SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, I_ITEM_SK#6690, I_ITEM_ID#6691]
(23) Sort [codegen id : 7]
Input [6]: [SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, I_ITEM_ID#6691]
Arguments: [ss_promo_sk#6638 ASC NULLS FIRST], false, 0
(24) BatchScan
Output [3]: [P_PROMO_SK#6712, P_CHANNEL_EMAIL#6721, P_CHANNEL_EVENT#6726]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.PROMOTION, [P_PROMO_SK#6773, P_CHANNEL_EMAIL#6774, P_CHANNEL_EVENT#6775], [oracolumnref(P_PROMO_SK#6773), oracolumnref(P_CHANNEL_EMAIL#6774), oracolumnref(P_CHANNEL_EVENT#6775)], orabinaryopexpression(((P_CHANNEL_EMAIL#6721 = N) OR (P_CHANNEL_EVENT#6726 = N)))
PartitionSchema: struct<>
ReadSchema: struct<P_PROMO_SK:decimal(38,18),P_CHANNEL_EMAIL:string,P_CHANNEL_EVENT:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: N, N
oraPushdownSQL: select "P_PROMO_SK", "P_CHANNEL_EMAIL", "P_CHANNEL_EVENT"
from TPCDS.PROMOTION
where (("P_CHANNEL_EMAIL" = ?) OR ("P_CHANNEL_EVENT" = ?))
(25) Filter [codegen id : 8]
Input [3]: [P_PROMO_SK#6712, P_CHANNEL_EMAIL#6721, P_CHANNEL_EVENT#6726]
Condition : ((P_CHANNEL_EMAIL#6721 = N) OR (P_CHANNEL_EVENT#6726 = N))
(26) Project [codegen id : 8]
Output [1]: [P_PROMO_SK#6712]
Input [3]: [P_PROMO_SK#6712, P_CHANNEL_EMAIL#6721, P_CHANNEL_EVENT#6726]
(27) Sort [codegen id : 8]
Input [1]: [P_PROMO_SK#6712]
Arguments: [p_promo_sk#6712 ASC NULLS FIRST], false, 0
(28) SortMergeJoin [codegen id : 9]
Left keys [1]: [ss_promo_sk#6638]
Right keys [1]: [p_promo_sk#6712]
Join condition: None
(29) Project [codegen id : 9]
Output [5]: [SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, I_ITEM_ID#6691]
Input [7]: [SS_PROMO_SK#6638, SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, I_ITEM_ID#6691, P_PROMO_SK#6712]
(30) HashAggregate [codegen id : 9]
Input [5]: [SS_QUANTITY#6640, SS_LIST_PRICE#6642, SS_SALES_PRICE#6643, SS_COUPON_AMT#6649, I_ITEM_ID#6691]
Keys [1]: [i_item_id#6691]
Functions [4]: [partial_avg(ss_quantity#6640), partial_avg(ss_list_price#6642), partial_avg(ss_coupon_amt#6649), partial_avg(ss_sales_price#6643)]
Aggregate Attributes [8]: [sum#6779, count#6780L, sum#6781, count#6782L, sum#6783, count#6784L, sum#6785, count#6786L]
Results [9]: [i_item_id#6691, sum#6787, count#6788L, sum#6789, count#6790L, sum#6791, count#6792L, sum#6793, count#6794L]
(31) HashAggregate [codegen id : 9]
Input [9]: [i_item_id#6691, sum#6787, count#6788L, sum#6789, count#6790L, sum#6791, count#6792L, sum#6793, count#6794L]
Keys [1]: [i_item_id#6691]
Functions [4]: [avg(ss_quantity#6640), avg(ss_list_price#6642), avg(ss_coupon_amt#6649), avg(ss_sales_price#6643)]
Aggregate Attributes [4]: [avg(ss_quantity#6640)#6731, avg(ss_list_price#6642)#6732, avg(ss_coupon_amt#6649)#6733, avg(ss_sales_price#6643)#6734]
Results [5]: [i_item_id#6691, avg(ss_quantity#6640)#6731 AS agg1#6626, avg(ss_list_price#6642)#6732 AS agg2#6627, avg(ss_coupon_amt#6649)#6733 AS agg3#6628, avg(ss_sales_price#6643)#6734 AS agg4#6629]
(32) TakeOrderedAndProject
Input [5]: [i_item_id#6691, agg1#6626, agg2#6627, agg3#6628, agg4#6629]
Arguments: 100, [i_item_id#6691 ASC NULLS FIRST], [i_item_id#6691, agg1#6626, agg2#6627, agg3#6628, agg4#6629]
select s_store_name
,sum(ss_net_profit)
from store_sales
,date_dim
,store,
(select ca_zip
from (
SELECT substr(ca_zip,1,5) ca_zip
FROM customer_address
WHERE substr(ca_zip,1,5) IN (
'24128','76232','65084','87816','83926','77556',
'20548','26231','43848','15126','91137',
'61265','98294','25782','17920','18426',
'98235','40081','84093','28577','55565',
'17183','54601','67897','22752','86284',
'18376','38607','45200','21756','29741',
'96765','23932','89360','29839','25989',
'28898','91068','72550','10390','18845',
'47770','82636','41367','76638','86198',
'81312','37126','39192','88424','72175',
'81426','53672','10445','42666','66864',
'66708','41248','48583','82276','18842',
'78890','49448','14089','38122','34425',
'79077','19849','43285','39861','66162',
'77610','13695','99543','83444','83041',
'12305','57665','68341','25003','57834',
'62878','49130','81096','18840','27700',
'23470','50412','21195','16021','76107',
'71954','68309','18119','98359','64544',
'10336','86379','27068','39736','98569',
'28915','24206','56529','57647','54917',
'42961','91110','63981','14922','36420',
'23006','67467','32754','30903','20260',
'31671','51798','72325','85816','68621',
'13955','36446','41766','68806','16725',
'15146','22744','35850','88086','51649',
'18270','52867','39972','96976','63792',
'11376','94898','13595','10516','90225',
'58943','39371','94945','28587','96576',
'57855','28488','26105','83933','25858',
'34322','44438','73171','30122','34102',
'22685','71256','78451','54364','13354',
'45375','40558','56458','28286','45266',
'47305','69399','83921','26233','11101',
'15371','69913','35942','15882','25631',
'24610','44165','99076','33786','70738',
'26653','14328','72305','62496','22152',
'10144','64147','48425','14663','21076',
'18799','30450','63089','81019','68893',
'24996','51200','51211','45692','92712',
'70466','79994','22437','25280','38935',
'71791','73134','56571','14060','19505',
'72425','56575','74351','68786','51650',
'20004','18383','76614','11634','18906',
'15765','41368','73241','76698','78567',
'97189','28545','76231','75691','22246',
'51061','90578','56691','68014','51103',
'94167','57047','14867','73520','15734',
'63435','25733','35474','24676','94627',
'53535','17879','15559','53268','59166',
'11928','59402','33282','45721','43933',
'68101','33515','36634','71286','19736',
'58058','55253','67473','41918','19515',
'36495','19430','22351','77191','91393',
'49156','50298','87501','18652','53179',
'18767','63193','23968','65164','68880',
'21286','72823','58470','67301','13394',
'31016','70372','67030','40604','24317',
'45748','39127','26065','77721','31029',
'31880','60576','24671','45549','13376',
'50016','33123','19769','22927','97789',
'46081','72151','15723','46136','51949',
'68100','96888','64528','14171','79777',
'28709','11489','25103','32213','78668',
'22245','15798','27156','37930','62971',
'21337','51622','67853','10567','38415',
'15455','58263','42029','60279','37125',
'56240','88190','50308','26859','64457',
'89091','82136','62377','36233','63837',
'58078','17043','30010','60099','28810',
'98025','29178','87343','73273','30469',
'64034','39516','86057','21309','90257',
'67875','40162','11356','73650','61810',
'72013','30431','22461','19512','13375',
'55307','30625','83849','68908','26689',
'96451','38193','46820','88885','84935',
'69035','83144','47537','56616','94983',
'48033','69952','25486','61547','27385',
'61860','58048','56910','16807','17871',
'35258','31387','35458','35576')
intersect
select ca_zip
from (SELECT substr(ca_zip,1,5) ca_zip,count(*) cnt
FROM customer_address, customer
WHERE ca_address_sk = c_current_addr_sk and
c_preferred_cust_flag='Y'
group by ca_zip
having count(*) > 10)A1)A2) V1
where ss_store_sk = s_store_sk
and ss_sold_date_sk = d_date_sk
and d_qoy = 2 and d_year = 1998
and (substr(s_zip,1,2) = substr(V1.ca_zip,1,2))
group by s_store_name
order by s_store_name
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [2]: [s_store_name#7185, sum(ss_net_profit)#7261]
OraPlan: 00 OraSingleQueryBlock [s_store_name#7185, sum(ss_net_profit#7151) AS sum(ss_net_profit)#7261], [oracolumnref(s_store_name#7185), oraalias(sum(ss_net_profit#7151) AS sum(ss_net_profit)#7261)], orabinaryopexpression(((isnotnull(SS_STORE_SK#7136) AND (((isnotnull(D_QOY#7162) AND isnotnull(D_YEAR#7158)) AND (D_QOY#7162 = 2.000000000000000000)) AND (D_YEAR#7158 = 1998.000000000000000000))) AND isnotnull(S_ZIP#7205))), List(oracolumnref(s_store_name#7185))
01 :- OraTableScan TPCDS.STORE_SALES, [SS_STORE_SK#7136, SS_NET_PROFIT#7151, SS_SOLD_DATE_SK#7129]
02 :- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#7152, D_YEAR#7158, D_QOY#7162]
03 :- OraTableScan TPCDS.STORE, [S_STORE_SK#7180, S_STORE_NAME#7185, S_ZIP#7205]
04 +- OraSingleQueryBlock [ca_zip#7126], [oracolumnref(ca_zip#7126)], List(oracolumnref(ca_zip#7126))
05 +- OraSingleQueryBlock [substr(ca_zip#7218, 1, 5) AS ca_zip#7126], [oraalias(substr(ca_zip#7218, 1, 5) AS ca_zip#7126)], orabinaryopexpression(((substr(CA_ZIP#7218, 1, 5) INSET (56910,69952,63792,39371,74351,11101,25003,97189,57834,73134,62377,51200,32754,22752,86379,14171,91110,40162,98569,28709,13394,66162,25733,25782,26065,18383,51949,87343,50298,83849,33786,64528,23470,67030,46136,25280,46820,77721,99076,18426,31880,17871,98235,45748,49156,18652,72013,51622,43848,78567,41248,13695,44165,67853,54917,53179,64034,10567,71791,68908,55565,59402,64147,85816,57855,61547,27700,68100,28810,58263,15723,83933,51103,58058,90578,82276,81096,81426,96451,77556,38607,76638,18906,62971,57047,48425,35576,11928,30625,83444,73520,51650,57647,60099,30122,94983,24128,10445,41368,26233,26859,21756,24676,19849,36420,38193,58470,39127,13595,87501,24317,15455,69399,98025,81019,48033,11376,39516,67875,92712,14867,38122,29741,42961,30469,51211,56458,15559,16021,33123,33282,33515,72823,54601,76698,56240,72175,60279,20004,68806,72325,28488,43933,50412,45200,22246,78668,79777,96765,67301,73273,49448,82636,23932,47305,29839,39192,18799,61265,37125,58943,64457,88424,24610,84935,89360,68893,30431,28898,10336,90257,59166,46081,26105,96888,36634,86284,35258,39972,22927,73241,53268,24206,27385,99543,31671,14663,30903,39861,24996,63089,88086,83921,21076,67897,66708,45721,60576,25103,52867,30450,36233,30010,96576,73171,56571,56575,64544,13955,78451,43285,18119,16725,83041,76107,79994,54364,35942,56691,19769,63435,34102,18845,22744,13354,75691,45549,23968,31387,83144,13375,15765,28577,88190,19736,73650,37930,25989,83926,94898,51798,39736,22437,55253,38415,71256,18376,42029,25858,44438,19515,38935,51649,71954,15882,18767,63193,25486,49130,37126,40604,34425,17043,12305,11634,26653,94167,36446,10516,67473,66864,72425,63981,18842,22461,42666,47770,69035,70372,28587,45266,15371,15798,45375,90225,16807,31016,68014,21337,19505,50016,10144,84093,21286,19430,34322,91068,94945,72305,24671,58048,65084,28545,21195,20548,22245,77191,96976,48583,76231,15734,61810,11356,68621,68786,98359,41367,26689,69913,76614,68101,88885,50308,79077,18270,28915,29178,53672,62878,10390,14922,68341,56529,41766,68309,56616,15126,61860,97789,11489,45692,41918,72151,72550,27156,36495,70738,17879,53535,17920,68880,78890,35850,14089,58078,65164,27068,26231,13376,57665,32213,77610,87816,21309,15146,86198,91137,55307,67467,40558,94627,82136,22351,89091,20260,23006,91393,47537,62496,98294,18840,71286,81312,31029,70466,35458,14060,22685,28286,25631,19512,40081,63837,14328,35474,22152,76232,51061,86057,17183) AND isnotnull(substr(CA_ZIP#7218, 1, 5))) AND (substr(ca_zip#7218, 1, 5) <=> ca_zip#7127)))
06 +- OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ZIP#7218]
ReadSchema: struct<s_store_name:string,sum(ss_net_profit):decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 1, 5, 46081, 36634, 18767, 45549, 56571, 68786, 47305, 22752, 16021, 79994, 41918, 47537, 44165, 69913, 43848, 58470, 69035, 22152, 46136, 30903, 10336, 62377, 11928, 18906, 25989, 39371, 97789, 15723, 98294, 88086, 21337, 27068, 91068, 50016, 50298, 13595, 57855, 15146, 21286, 76614, 34425, 72151, 44438, 38607, 53179, 17183, 94945, 81019, 58943, 26653, 88190, 28545, 66708, 51211, 11101, 35850, 18270, 42666, 45266, 67875, 27156, 45721, 30450, 96976, 54917, 18376, 56240, 15371, 81096, 90225, 55253, 83926, 55307, 88424, 22927, 45692, 39972, 69952, 21195, 67853, 79077, 63089, 22744, 65164, 33786, 23932, 96576, 13375, 36420, 16725, 64034, 47770, 15765, 86284, 38193, 94983, 40081, 85816, 78451, 42029, 61547, 71791, 10144, 13354, 37930, 14867, 25103, 51649, 35474, 72013, 58263, 86057, 35258, 17879, 24128, 23470, 20004, 31880, 19505, 98235, 21756, 24317, 22461, 24610, 15882, 54364, 67030, 23968, 73273, 18383, 61265, 72550, 64457, 78668, 83444, 33123, 73520, 39516, 36233, 72325, 62496, 14089, 53535, 31016, 28286, 28577, 10445, 18799, 60279, 18840, 94627, 59166, 12305, 76232, 28898, 78567, 91393, 40162, 49130, 19515, 76107, 74351, 26689, 68908, 75691, 19769, 34322, 28709, 56529, 72175, 26065, 73171, 70372, 45200, 14922, 58078, 77610, 71256, 73134, 70466, 10516, 25858, 98025, 34102, 91110, 10390, 83921, 36446, 11376, 28810, 63435, 64528, 76638, 22245, 30625, 24676, 37125, 17043, 51650, 57047, 53672, 81312, 68100, 89091, 10567, 77191, 41368, 84093, 73241, 62878, 14060, 51798, 62971, 63981, 61860, 56691, 43285, 69399, 61810, 25280, 14171, 31387, 11356, 38935, 15734, 27700, 54601, 22351, 99076, 25486, 59402, 22246, 70738, 68880, 86379, 96888, 18842, 46820, 20260, 37126, 11489, 50308, 11634, 30431, 83933, 33282, 15455, 17920, 72305, 68341, 98569, 38122, 57647, 51622, 26231, 71954, 63193, 68806, 57665, 35576, 24206, 56910, 92712, 13695, 51949, 86198, 25733, 21076, 19736, 65084, 15126, 81426, 49448, 84935, 51200, 56458, 87501, 71286, 97189, 21309, 25003, 68309, 20548, 87343, 14328, 28915, 77721, 19849, 60576, 24996, 30469, 19430, 38415, 67301, 49156, 39127, 28488, 63792, 22685, 82636, 48425, 29178, 14663, 26233, 32754, 72425, 67897, 99543, 27385, 79777, 73650, 43933, 13394, 60099, 41766, 29839, 53268, 78890, 68621, 64544, 51061, 39736, 67467, 52867, 68893, 18119, 26105, 45375, 18426, 31029, 31671, 25782, 45748, 83041, 28587, 88885, 29741, 66162, 35942, 72823, 19512, 36495, 83849, 35458, 17871, 40558, 26859, 41367, 83144, 64147, 91137, 13955, 51103, 76698, 56575, 68014, 96451, 40604, 82136, 23006, 77556, 42961, 18845, 24671, 18652, 25631, 15798, 55565, 87816, 90578, 48033, 39192, 98359, 67473, 56616, 41248, 89360, 58048, 15559, 16807, 76231, 68101, 82276, 63837, 66864, 22437, 33515, 50412, 96765, 13376, 90257, 94167, 32213, 48583, 30122, 39861, 58058, 57834, 94898, 30010, 1, 5, 1, 5, , 1, 5, Y, 10, 2.000000000000000000, 1998.000000000000000000
oraPushdownSQL: select "S_STORE_NAME", SUM("SS_NET_PROFIT") AS "sum(ss_net_profit)"
from TPCDS.STORE_SALES join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK") join TPCDS.STORE on ("SS_STORE_SK" = "S_STORE_SK") join ( select "ca_zip"
from ( select SUBSTR("CA_ZIP" , 1 , 5) AS "ca_zip"
from TPCDS.CUSTOMER_ADDRESS
where ((SUBSTR("CA_ZIP" , ? , ?) IN ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) AND SUBSTR("CA_ZIP" , ? , ?) IS NOT NULL) AND (COALESCE(SUBSTR("CA_ZIP" , ? , ?) , ?), CASE WHEN SUBSTR("CA_ZIP" , ? , ?) IS NULL THEN 1 ELSE 0 END) IN ( select COALESCE("ca_zip" , ''), CASE WHEN "ca_zip" IS NULL THEN 1 ELSE 0 END
from ( select SUBSTR("CA_ZIP" , 1 , 5) AS "ca_zip", COUNT(1) AS "count(1)"
from TPCDS.CUSTOMER_ADDRESS join TPCDS.CUSTOMER on ("CA_ADDRESS_SK" = "C_CURRENT_ADDR_SK")
where (("C_PREFERRED_CUST_FLAG" IS NOT NULL AND ("C_PREFERRED_CUST_FLAG" = ?)) AND "C_CURRENT_ADDR_SK" IS NOT NULL) group by "CA_ZIP" )
where ("count(1)" > ?) )) ) group by "ca_zip" ) on (SUBSTR("S_ZIP" , 1 , 2) = SUBSTR("ca_zip" , 1 , 2))
where ((("SS_STORE_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ((("D_QOY" IS NOT NULL AND "D_YEAR" IS NOT NULL) AND ("D_QOY" = ?)) AND ("D_YEAR" = ?))) AND "S_ZIP" IS NOT NULL) group by "S_STORE_NAME"
(2) Project [codegen id : 1]
Output [2]: [s_store_name#7185, sum(ss_net_profit)#7261]
Input [2]: [s_store_name#7185, sum(ss_net_profit)#7261]
(3) TakeOrderedAndProject
Input [2]: [s_store_name#7185, sum(ss_net_profit)#7261]
Arguments: 100, [s_store_name#7185 ASC NULLS FIRST], [s_store_name#7185, sum(ss_net_profit)#7261]
select "S_STORE_NAME", SUM("SS_NET_PROFIT") AS "sum(ss_net_profit)"
from TPCDS.STORE_SALES join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK") join TPCDS.STORE on ("SS_STORE_SK" = "S_STORE_SK") join ( select "ca_zip"
from ( select SUBSTR("CA_ZIP" , 1 , 5) AS "ca_zip"
from TPCDS.CUSTOMER_ADDRESS
where ((SUBSTR("CA_ZIP" , 1 , 5) IN ( '46081', '36634', '18767', '45549', '56571', '68786', '47305', '22752', '16021', '79994', '41918', '47537', '44165', '69913', '43848', '58470', '69035', '22152', '46136', '30903', '10336', '62377', '11928', '18906', '25989', '39371', '97789', '15723', '98294', '88086', '21337', '27068', '91068', '50016', '50298', '13595', '57855', '15146', '21286', '76614', '34425', '72151', '44438', '38607', '53179', '17183', '94945', '81019', '58943', '26653', '88190', '28545', '66708', '51211', '11101', '35850', '18270', '42666', '45266', '67875', '27156', '45721', '30450', '96976', '54917', '18376', '56240', '15371', '81096', '90225', '55253', '83926', '55307', '88424', '22927', '45692', '39972', '69952', '21195', '67853', '79077', '63089', '22744', '65164', '33786', '23932', '96576', '13375', '36420', '16725', '64034', '47770', '15765', '86284', '38193', '94983', '40081', '85816', '78451', '42029', '61547', '71791', '10144', '13354', '37930', '14867', '25103', '51649', '35474', '72013', '58263', '86057', '35258', '17879', '24128', '23470', '20004', '31880', '19505', '98235', '21756', '24317', '22461', '24610', '15882', '54364', '67030', '23968', '73273', '18383', '61265', '72550', '64457', '78668', '83444', '33123', '73520', '39516', '36233', '72325', '62496', '14089', '53535', '31016', '28286', '28577', '10445', '18799', '60279', '18840', '94627', '59166', '12305', '76232', '28898', '78567', '91393', '40162', '49130', '19515', '76107', '74351', '26689', '68908', '75691', '19769', '34322', '28709', '56529', '72175', '26065', '73171', '70372', '45200', '14922', '58078', '77610', '71256', '73134', '70466', '10516', '25858', '98025', '34102', '91110', '10390', '83921', '36446', '11376', '28810', '63435', '64528', '76638', '22245', '30625', '24676', '37125', '17043', '51650', '57047', '53672', '81312', '68100', '89091', '10567', '77191', '41368', '84093', '73241', '62878', '14060', '51798', '62971', '63981', '61860', '56691', '43285', '69399', '61810', '25280', '14171', '31387', '11356', '38935', '15734', '27700', '54601', '22351', '99076', '25486', '59402', '22246', '70738', '68880', '86379', '96888', '18842', '46820', '20260', '37126', '11489', '50308', '11634', '30431', '83933', '33282', '15455', '17920', '72305', '68341', '98569', '38122', '57647', '51622', '26231', '71954', '63193', '68806', '57665', '35576', '24206', '56910', '92712', '13695', '51949', '86198', '25733', '21076', '19736', '65084', '15126', '81426', '49448', '84935', '51200', '56458', '87501', '71286', '97189', '21309', '25003', '68309', '20548', '87343', '14328', '28915', '77721', '19849', '60576', '24996', '30469', '19430', '38415', '67301', '49156', '39127', '28488', '63792', '22685', '82636', '48425', '29178', '14663', '26233', '32754', '72425', '67897', '99543', '27385', '79777', '73650', '43933', '13394', '60099', '41766', '29839', '53268', '78890', '68621', '64544', '51061', '39736', '67467', '52867', '68893', '18119', '26105', '45375', '18426', '31029', '31671', '25782', '45748', '83041', '28587', '88885', '29741', '66162', '35942', '72823', '19512', '36495', '83849', '35458', '17871', '40558', '26859', '41367', '83144', '64147', '91137', '13955', '51103', '76698', '56575', '68014', '96451', '40604', '82136', '23006', '77556', '42961', '18845', '24671', '18652', '25631', '15798', '55565', '87816', '90578', '48033', '39192', '98359', '67473', '56616', '41248', '89360', '58048', '15559', '16807', '76231', '68101', '82276', '63837', '66864', '22437', '33515', '50412', '96765', '13376', '90257', '94167', '32213', '48583', '30122', '39861', '58058', '57834', '94898', '30010' ) AND SUBSTR("CA_ZIP" , 1 , 5) IS NOT NULL) AND (COALESCE(SUBSTR("CA_ZIP" , 1 , 5) , ''), CASE WHEN SUBSTR("CA_ZIP" , 1 , 5) IS NULL THEN 1 ELSE 0 END) IN ( select COALESCE("ca_zip" , ''), CASE WHEN "ca_zip" IS NULL THEN 1 ELSE 0 END
from ( select SUBSTR("CA_ZIP" , 1 , 5) AS "ca_zip", COUNT(1) AS "count(1)"
from TPCDS.CUSTOMER_ADDRESS join TPCDS.CUSTOMER on ("CA_ADDRESS_SK" = "C_CURRENT_ADDR_SK")
where (("C_PREFERRED_CUST_FLAG" IS NOT NULL AND ("C_PREFERRED_CUST_FLAG" = 'Y')) AND "C_CURRENT_ADDR_SK" IS NOT NULL) group by "CA_ZIP" )
where ("count(1)" > 10) )) ) group by "ca_zip" ) on (SUBSTR("S_ZIP" , 1 , 2) = SUBSTR("ca_zip" , 1 , 2))
where ((("SS_STORE_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ((("D_QOY" IS NOT NULL AND "D_YEAR" IS NOT NULL) AND ("D_QOY" = 2.000000000000000000)) AND ("D_YEAR" = 1998.000000000000000000))) AND "S_ZIP" IS NOT NULL) group by "S_STORE_NAME"
== Physical Plan ==
TakeOrderedAndProject (43)
+- * HashAggregate (42)
+- * HashAggregate (41)
+- * Project (40)
+- * SortMergeJoin Inner (39)
:- * Sort (16)
: +- * Project (15)
: +- * SortMergeJoin Inner (14)
: :- * Sort (10)
: : +- * Project (9)
: : +- * SortMergeJoin Inner (8)
: : :- * Sort (3)
: : : +- * Filter (2)
: : : +- BatchScan (1)
: : +- * Sort (7)
: : +- * Project (6)
: : +- * Filter (5)
: : +- BatchScan (4)
: +- * Sort (13)
: +- * Filter (12)
: +- BatchScan (11)
+- * Sort (38)
+- * HashAggregate (37)
+- * HashAggregate (36)
+- * Project (35)
+- SortMergeJoin LeftSemi (34)
:- * Sort (19)
: +- * Filter (18)
: +- BatchScan (17)
+- * Sort (33)
+- * Project (32)
+- * Filter (31)
+- * HashAggregate (30)
+- * HashAggregate (29)
+- * Project (28)
+- * SortMergeJoin Inner (27)
:- * Sort (22)
: +- * Project (21)
: +- BatchScan (20)
+- * Sort (26)
+- * Project (25)
+- * Filter (24)
+- BatchScan (23)
(1) BatchScan
Output [3]: [SS_STORE_SK#6958, SS_NET_PROFIT#6973, SS_SOLD_DATE_SK#6951]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_STORE_SK#7092, SS_NET_PROFIT#7093, SS_SOLD_DATE_SK#7094], [oracolumnref(SS_STORE_SK#7092), oracolumnref(SS_NET_PROFIT#7093), oracolumnref(SS_SOLD_DATE_SK#7094)], orapostfixunaryopexpression(isnotnull(SS_STORE_SK#6958))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_STORE_SK:decimal(38,18),SS_NET_PROFIT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_STORE_SK", "SS_NET_PROFIT", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_STORE_SK" IS NOT NULL and "SS_SOLD_DATE_SK" IS NOT NULL
(2) Filter [codegen id : 1]
Input [3]: [SS_STORE_SK#6958, SS_NET_PROFIT#6973, SS_SOLD_DATE_SK#6951]
Condition : isnotnull(SS_STORE_SK#6958)
(3) Sort [codegen id : 1]
Input [3]: [SS_STORE_SK#6958, SS_NET_PROFIT#6973, SS_SOLD_DATE_SK#6951]
Arguments: [ss_sold_date_sk#6951 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [3]: [D_DATE_SK#6974, D_YEAR#6980, D_QOY#6984]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#7098, D_YEAR#7099, D_QOY#7100], [oracolumnref(D_DATE_SK#7098), oracolumnref(D_YEAR#7099), oracolumnref(D_QOY#7100)], orabinaryopexpression((((isnotnull(D_QOY#6984) AND isnotnull(D_YEAR#6980)) AND (D_QOY#6984 = 2.000000000000000000)) AND (D_YEAR#6980 = 1998.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18),D_QOY:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2.000000000000000000, 1998.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR", "D_QOY"
from TPCDS.DATE_DIM
where ((("D_QOY" IS NOT NULL AND "D_YEAR" IS NOT NULL) AND ("D_QOY" = ?)) AND ("D_YEAR" = ?))
(5) Filter [codegen id : 2]
Input [3]: [D_DATE_SK#6974, D_YEAR#6980, D_QOY#6984]
Condition : (((isnotnull(D_QOY#6984) AND isnotnull(D_YEAR#6980)) AND (D_QOY#6984 = 2.000000000000000000)) AND (D_YEAR#6980 = 1998.000000000000000000))
(6) Project [codegen id : 2]
Output [1]: [D_DATE_SK#6974]
Input [3]: [D_DATE_SK#6974, D_YEAR#6980, D_QOY#6984]
(7) Sort [codegen id : 2]
Input [1]: [D_DATE_SK#6974]
Arguments: [d_date_sk#6974 ASC NULLS FIRST], false, 0
(8) SortMergeJoin [codegen id : 3]
Left keys [1]: [ss_sold_date_sk#6951]
Right keys [1]: [d_date_sk#6974]
Join condition: None
(9) Project [codegen id : 3]
Output [2]: [SS_STORE_SK#6958, SS_NET_PROFIT#6973]
Input [4]: [SS_STORE_SK#6958, SS_NET_PROFIT#6973, SS_SOLD_DATE_SK#6951, D_DATE_SK#6974]
(10) Sort [codegen id : 3]
Input [2]: [SS_STORE_SK#6958, SS_NET_PROFIT#6973]
Arguments: [ss_store_sk#6958 ASC NULLS FIRST], false, 0
(11) BatchScan
Output [3]: [S_STORE_SK#7002, S_STORE_NAME#7007, S_ZIP#7027]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE, [S_STORE_SK#7104, S_STORE_NAME#7105, S_ZIP#7106], [oracolumnref(S_STORE_SK#7104), oracolumnref(S_STORE_NAME#7105), oracolumnref(S_ZIP#7106)], orapostfixunaryopexpression(isnotnull(S_ZIP#7027))
PartitionSchema: struct<>
ReadSchema: struct<S_STORE_SK:decimal(38,18),S_STORE_NAME:string,S_ZIP:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "S_STORE_SK", "S_STORE_NAME", "S_ZIP"
from TPCDS.STORE
where "S_ZIP" IS NOT NULL
(12) Filter [codegen id : 4]
Input [3]: [S_STORE_SK#7002, S_STORE_NAME#7007, S_ZIP#7027]
Condition : isnotnull(S_ZIP#7027)
(13) Sort [codegen id : 4]
Input [3]: [S_STORE_SK#7002, S_STORE_NAME#7007, S_ZIP#7027]
Arguments: [s_store_sk#7002 ASC NULLS FIRST], false, 0
(14) SortMergeJoin [codegen id : 5]
Left keys [1]: [ss_store_sk#6958]
Right keys [1]: [s_store_sk#7002]
Join condition: None
(15) Project [codegen id : 5]
Output [3]: [SS_NET_PROFIT#6973, S_STORE_NAME#7007, S_ZIP#7027]
Input [5]: [SS_STORE_SK#6958, SS_NET_PROFIT#6973, S_STORE_SK#7002, S_STORE_NAME#7007, S_ZIP#7027]
(16) Sort [codegen id : 5]
Input [3]: [SS_NET_PROFIT#6973, S_STORE_NAME#7007, S_ZIP#7027]
Arguments: [substr(s_zip#7027, 1, 2) ASC NULLS FIRST], false, 0
(17) BatchScan
Output [1]: [CA_ZIP#7040]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ZIP#7110], [oracolumnref(CA_ZIP#7110)], orabinaryopexpression((substr(CA_ZIP#7040, 1, 5) INSET (56910,69952,63792,39371,74351,11101,25003,97189,57834,73134,62377,51200,32754,22752,86379,14171,91110,40162,98569,28709,13394,66162,25733,25782,26065,18383,51949,87343,50298,83849,33786,64528,23470,67030,46136,25280,46820,77721,99076,18426,31880,17871,98235,45748,49156,18652,72013,51622,43848,78567,41248,13695,44165,67853,54917,53179,64034,10567,71791,68908,55565,59402,64147,85816,57855,61547,27700,68100,28810,58263,15723,83933,51103,58058,90578,82276,81096,81426,96451,77556,38607,76638,18906,62971,57047,48425,35576,11928,30625,83444,73520,51650,57647,60099,30122,94983,24128,10445,41368,26233,26859,21756,24676,19849,36420,38193,58470,39127,13595,87501,24317,15455,69399,98025,81019,48033,11376,39516,67875,92712,14867,38122,29741,42961,30469,51211,56458,15559,16021,33123,33282,33515,72823,54601,76698,56240,72175,60279,20004,68806,72325,28488,43933,50412,45200,22246,78668,79777,96765,67301,73273,49448,82636,23932,47305,29839,39192,18799,61265,37125,58943,64457,88424,24610,84935,89360,68893,30431,28898,10336,90257,59166,46081,26105,96888,36634,86284,35258,39972,22927,73241,53268,24206,27385,99543,31671,14663,30903,39861,24996,63089,88086,83921,21076,67897,66708,45721,60576,25103,52867,30450,36233,30010,96576,73171,56571,56575,64544,13955,78451,43285,18119,16725,83041,76107,79994,54364,35942,56691,19769,63435,34102,18845,22744,13354,75691,45549,23968,31387,83144,13375,15765,28577,88190,19736,73650,37930,25989,83926,94898,51798,39736,22437,55253,38415,71256,18376,42029,25858,44438,19515,38935,51649,71954,15882,18767,63193,25486,49130,37126,40604,34425,17043,12305,11634,26653,94167,36446,10516,67473,66864,72425,63981,18842,22461,42666,47770,69035,70372,28587,45266,15371,15798,45375,90225,16807,31016,68014,21337,19505,50016,10144,84093,21286,19430,34322,91068,94945,72305,24671,58048,65084,28545,21195,20548,22245,77191,96976,48583,76231,15734,61810,11356,68621,68786,98359,41367,26689,69913,76614,68101,88885,50308,79077,18270,28915,29178,53672,62878,10390,14922,68341,56529,41766,68309,56616,15126,61860,97789,11489,45692,41918,72151,72550,27156,36495,70738,17879,53535,17920,68880,78890,35850,14089,58078,65164,27068,26231,13376,57665,32213,77610,87816,21309,15146,86198,91137,55307,67467,40558,94627,82136,22351,89091,20260,23006,91393,47537,62496,98294,18840,71286,81312,31029,70466,35458,14060,22685,28286,25631,19512,40081,63837,14328,35474,22152,76232,51061,86057,17183) AND isnotnull(substr(CA_ZIP#7040, 1, 5))))
PartitionSchema: struct<>
ReadSchema: struct<CA_ZIP:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 1, 5, 46081, 36634, 18767, 45549, 56571, 68786, 47305, 22752, 16021, 79994, 41918, 47537, 44165, 69913, 43848, 58470, 69035, 22152, 46136, 30903, 10336, 62377, 11928, 18906, 25989, 39371, 97789, 15723, 98294, 88086, 21337, 27068, 91068, 50016, 50298, 13595, 57855, 15146, 21286, 76614, 34425, 72151, 44438, 38607, 53179, 17183, 94945, 81019, 58943, 26653, 88190, 28545, 66708, 51211, 11101, 35850, 18270, 42666, 45266, 67875, 27156, 45721, 30450, 96976, 54917, 18376, 56240, 15371, 81096, 90225, 55253, 83926, 55307, 88424, 22927, 45692, 39972, 69952, 21195, 67853, 79077, 63089, 22744, 65164, 33786, 23932, 96576, 13375, 36420, 16725, 64034, 47770, 15765, 86284, 38193, 94983, 40081, 85816, 78451, 42029, 61547, 71791, 10144, 13354, 37930, 14867, 25103, 51649, 35474, 72013, 58263, 86057, 35258, 17879, 24128, 23470, 20004, 31880, 19505, 98235, 21756, 24317, 22461, 24610, 15882, 54364, 67030, 23968, 73273, 18383, 61265, 72550, 64457, 78668, 83444, 33123, 73520, 39516, 36233, 72325, 62496, 14089, 53535, 31016, 28286, 28577, 10445, 18799, 60279, 18840, 94627, 59166, 12305, 76232, 28898, 78567, 91393, 40162, 49130, 19515, 76107, 74351, 26689, 68908, 75691, 19769, 34322, 28709, 56529, 72175, 26065, 73171, 70372, 45200, 14922, 58078, 77610, 71256, 73134, 70466, 10516, 25858, 98025, 34102, 91110, 10390, 83921, 36446, 11376, 28810, 63435, 64528, 76638, 22245, 30625, 24676, 37125, 17043, 51650, 57047, 53672, 81312, 68100, 89091, 10567, 77191, 41368, 84093, 73241, 62878, 14060, 51798, 62971, 63981, 61860, 56691, 43285, 69399, 61810, 25280, 14171, 31387, 11356, 38935, 15734, 27700, 54601, 22351, 99076, 25486, 59402, 22246, 70738, 68880, 86379, 96888, 18842, 46820, 20260, 37126, 11489, 50308, 11634, 30431, 83933, 33282, 15455, 17920, 72305, 68341, 98569, 38122, 57647, 51622, 26231, 71954, 63193, 68806, 57665, 35576, 24206, 56910, 92712, 13695, 51949, 86198, 25733, 21076, 19736, 65084, 15126, 81426, 49448, 84935, 51200, 56458, 87501, 71286, 97189, 21309, 25003, 68309, 20548, 87343, 14328, 28915, 77721, 19849, 60576, 24996, 30469, 19430, 38415, 67301, 49156, 39127, 28488, 63792, 22685, 82636, 48425, 29178, 14663, 26233, 32754, 72425, 67897, 99543, 27385, 79777, 73650, 43933, 13394, 60099, 41766, 29839, 53268, 78890, 68621, 64544, 51061, 39736, 67467, 52867, 68893, 18119, 26105, 45375, 18426, 31029, 31671, 25782, 45748, 83041, 28587, 88885, 29741, 66162, 35942, 72823, 19512, 36495, 83849, 35458, 17871, 40558, 26859, 41367, 83144, 64147, 91137, 13955, 51103, 76698, 56575, 68014, 96451, 40604, 82136, 23006, 77556, 42961, 18845, 24671, 18652, 25631, 15798, 55565, 87816, 90578, 48033, 39192, 98359, 67473, 56616, 41248, 89360, 58048, 15559, 16807, 76231, 68101, 82276, 63837, 66864, 22437, 33515, 50412, 96765, 13376, 90257, 94167, 32213, 48583, 30122, 39861, 58058, 57834, 94898, 30010, 1, 5
oraPushdownSQL: select "CA_ZIP"
from TPCDS.CUSTOMER_ADDRESS
where (SUBSTR("CA_ZIP" , ? , ?) IN ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) AND SUBSTR("CA_ZIP" , ? , ?) IS NOT NULL)
(18) Filter [codegen id : 6]
Input [1]: [CA_ZIP#7040]
Condition : (substr(CA_ZIP#7040, 1, 5) INSET (56910,69952,63792,39371,74351,11101,25003,97189,57834,73134,62377,51200,32754,22752,86379,14171,91110,40162,98569,28709,13394,66162,25733,25782,26065,18383,51949,87343,50298,83849,33786,64528,23470,67030,46136,25280,46820,77721,99076,18426,31880,17871,98235,45748,49156,18652,72013,51622,43848,78567,41248,13695,44165,67853,54917,53179,64034,10567,71791,68908,55565,59402,64147,85816,57855,61547,27700,68100,28810,58263,15723,83933,51103,58058,90578,82276,81096,81426,96451,77556,38607,76638,18906,62971,57047,48425,35576,11928,30625,83444,73520,51650,57647,60099,30122,94983,24128,10445,41368,26233,26859,21756,24676,19849,36420,38193,58470,39127,13595,87501,24317,15455,69399,98025,81019,48033,11376,39516,67875,92712,14867,38122,29741,42961,30469,51211,56458,15559,16021,33123,33282,33515,72823,54601,76698,56240,72175,60279,20004,68806,72325,28488,43933,50412,45200,22246,78668,79777,96765,67301,73273,49448,82636,23932,47305,29839,39192,18799,61265,37125,58943,64457,88424,24610,84935,89360,68893,30431,28898,10336,90257,59166,46081,26105,96888,36634,86284,35258,39972,22927,73241,53268,24206,27385,99543,31671,14663,30903,39861,24996,63089,88086,83921,21076,67897,66708,45721,60576,25103,52867,30450,36233,30010,96576,73171,56571,56575,64544,13955,78451,43285,18119,16725,83041,76107,79994,54364,35942,56691,19769,63435,34102,18845,22744,13354,75691,45549,23968,31387,83144,13375,15765,28577,88190,19736,73650,37930,25989,83926,94898,51798,39736,22437,55253,38415,71256,18376,42029,25858,44438,19515,38935,51649,71954,15882,18767,63193,25486,49130,37126,40604,34425,17043,12305,11634,26653,94167,36446,10516,67473,66864,72425,63981,18842,22461,42666,47770,69035,70372,28587,45266,15371,15798,45375,90225,16807,31016,68014,21337,19505,50016,10144,84093,21286,19430,34322,91068,94945,72305,24671,58048,65084,28545,21195,20548,22245,77191,96976,48583,76231,15734,61810,11356,68621,68786,98359,41367,26689,69913,76614,68101,88885,50308,79077,18270,28915,29178,53672,62878,10390,14922,68341,56529,41766,68309,56616,15126,61860,97789,11489,45692,41918,72151,72550,27156,36495,70738,17879,53535,17920,68880,78890,35850,14089,58078,65164,27068,26231,13376,57665,32213,77610,87816,21309,15146,86198,91137,55307,67467,40558,94627,82136,22351,89091,20260,23006,91393,47537,62496,98294,18840,71286,81312,31029,70466,35458,14060,22685,28286,25631,19512,40081,63837,14328,35474,22152,76232,51061,86057,17183) AND isnotnull(substr(CA_ZIP#7040, 1, 5)))
(19) Sort [codegen id : 6]
Input [1]: [CA_ZIP#7040]
Arguments: [coalesce(substr(ca_zip#7040, 1, 5), ) ASC NULLS FIRST, isnull(substr(ca_zip#7040, 1, 5)) ASC NULLS FIRST], false, 0
(20) BatchScan
Output [2]: [CA_ADDRESS_SK#7044, CA_ZIP#7053]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ADDRESS_SK#7112, CA_ZIP#7113], [oracolumnref(CA_ADDRESS_SK#7112), oracolumnref(CA_ZIP#7113)]
PartitionSchema: struct<>
ReadSchema: struct<CA_ADDRESS_SK:decimal(38,18),CA_ZIP:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CA_ADDRESS_SK", "CA_ZIP"
from TPCDS.CUSTOMER_ADDRESS
(21) Project [codegen id : 7]
Output [2]: [CA_ADDRESS_SK#7044, CA_ZIP#7053]
Input [2]: [CA_ADDRESS_SK#7044, CA_ZIP#7053]
(22) Sort [codegen id : 7]
Input [2]: [CA_ADDRESS_SK#7044, CA_ZIP#7053]
Arguments: [ca_address_sk#7044 ASC NULLS FIRST], false, 0
(23) BatchScan
Output [2]: [C_CURRENT_ADDR_SK#7061, C_PREFERRED_CUST_FLAG#7067]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CURRENT_ADDR_SK#7116, C_PREFERRED_CUST_FLAG#7117], [oracolumnref(C_CURRENT_ADDR_SK#7116), oracolumnref(C_PREFERRED_CUST_FLAG#7117)], orabinaryopexpression(((isnotnull(C_PREFERRED_CUST_FLAG#7067) AND (C_PREFERRED_CUST_FLAG#7067 = Y)) AND isnotnull(C_CURRENT_ADDR_SK#7061)))
PartitionSchema: struct<>
ReadSchema: struct<C_CURRENT_ADDR_SK:decimal(38,18),C_PREFERRED_CUST_FLAG:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: Y
oraPushdownSQL: select "C_CURRENT_ADDR_SK", "C_PREFERRED_CUST_FLAG"
from TPCDS.CUSTOMER
where (("C_PREFERRED_CUST_FLAG" IS NOT NULL AND ("C_PREFERRED_CUST_FLAG" = ?)) AND "C_CURRENT_ADDR_SK" IS NOT NULL)
(24) Filter [codegen id : 8]
Input [2]: [C_CURRENT_ADDR_SK#7061, C_PREFERRED_CUST_FLAG#7067]
Condition : ((isnotnull(C_PREFERRED_CUST_FLAG#7067) AND (C_PREFERRED_CUST_FLAG#7067 = Y)) AND isnotnull(C_CURRENT_ADDR_SK#7061))
(25) Project [codegen id : 8]
Output [1]: [C_CURRENT_ADDR_SK#7061]
Input [2]: [C_CURRENT_ADDR_SK#7061, C_PREFERRED_CUST_FLAG#7067]
(26) Sort [codegen id : 8]
Input [1]: [C_CURRENT_ADDR_SK#7061]
Arguments: [c_current_addr_sk#7061 ASC NULLS FIRST], false, 0
(27) SortMergeJoin [codegen id : 9]
Left keys [1]: [ca_address_sk#7044]
Right keys [1]: [c_current_addr_sk#7061]
Join condition: None
(28) Project [codegen id : 9]
Output [1]: [CA_ZIP#7053]
Input [3]: [CA_ADDRESS_SK#7044, CA_ZIP#7053, C_CURRENT_ADDR_SK#7061]
(29) HashAggregate [codegen id : 9]
Input [1]: [CA_ZIP#7053]
Keys [1]: [ca_zip#7053]
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#7124L]
Results [2]: [ca_zip#7053, count#7125L]
(30) HashAggregate [codegen id : 9]
Input [2]: [ca_zip#7053, count#7125L]
Keys [1]: [ca_zip#7053]
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#7076L]
Results [2]: [substr(ca_zip#7053, 1, 5) AS ca_zip#6949, count(1)#7076L AS count(1)#7078L]
(31) Filter [codegen id : 9]
Input [2]: [ca_zip#6949, count(1)#7078L]
Condition : (count(1)#7078L > 10)
(32) Project [codegen id : 9]
Output [1]: [ca_zip#6949]
Input [2]: [ca_zip#6949, count(1)#7078L]
(33) Sort [codegen id : 9]
Input [1]: [ca_zip#6949]
Arguments: [coalesce(ca_zip#6949, ) ASC NULLS FIRST, isnull(ca_zip#6949) ASC NULLS FIRST], false, 0
(34) SortMergeJoin
Left keys [2]: [coalesce(substr(ca_zip#7040, 1, 5), ), isnull(substr(ca_zip#7040, 1, 5))]
Right keys [2]: [coalesce(ca_zip#6949, ), isnull(ca_zip#6949)]
Join condition: None
(35) Project [codegen id : 10]
Output [1]: [substr(ca_zip#7040, 1, 5) AS ca_zip#6948]
Input [1]: [CA_ZIP#7040]
(36) HashAggregate [codegen id : 10]
Input [1]: [ca_zip#6948]
Keys [1]: [ca_zip#6948]
Functions: []
Aggregate Attributes: []
Results [1]: [ca_zip#6948]
(37) HashAggregate [codegen id : 10]
Input [1]: [ca_zip#6948]
Keys [1]: [ca_zip#6948]
Functions: []
Aggregate Attributes: []
Results [1]: [ca_zip#6948]
(38) Sort [codegen id : 10]
Input [1]: [ca_zip#6948]
Arguments: [substr(ca_zip#6948, 1, 2) ASC NULLS FIRST], false, 0
(39) SortMergeJoin [codegen id : 11]
Left keys [1]: [substr(s_zip#7027, 1, 2)]
Right keys [1]: [substr(ca_zip#6948, 1, 2)]
Join condition: None
(40) Project [codegen id : 11]
Output [2]: [SS_NET_PROFIT#6973, S_STORE_NAME#7007]
Input [4]: [SS_NET_PROFIT#6973, S_STORE_NAME#7007, S_ZIP#7027, ca_zip#6948]
(41) HashAggregate [codegen id : 11]
Input [2]: [SS_NET_PROFIT#6973, S_STORE_NAME#7007]
Keys [1]: [s_store_name#7007]
Functions [1]: [partial_sum(ss_net_profit#6973)]
Aggregate Attributes [2]: [sum#7120, isEmpty#7121]
Results [3]: [s_store_name#7007, sum#7122, isEmpty#7123]
(42) HashAggregate [codegen id : 11]
Input [3]: [s_store_name#7007, sum#7122, isEmpty#7123]
Keys [1]: [s_store_name#7007]
Functions [1]: [sum(ss_net_profit#6973)]
Aggregate Attributes [1]: [sum(ss_net_profit#6973)#7082]
Results [2]: [s_store_name#7007, sum(ss_net_profit#6973)#7082 AS sum(ss_net_profit)#7083]
(43) TakeOrderedAndProject
Input [2]: [s_store_name#7007, sum(ss_net_profit)#7083]
Arguments: 100, [s_store_name#7007 ASC NULLS FIRST], [s_store_name#7007, sum(ss_net_profit)#7083]
select case when (select count(*)
from store_sales
where ss_quantity between 1 and 20) > 74129
then (select avg(ss_ext_discount_amt)
from store_sales
where ss_quantity between 1 and 20)
else (select avg(ss_net_paid)
from store_sales
where ss_quantity between 1 and 20) end bucket1 ,
case when (select count(*)
from store_sales
where ss_quantity between 21 and 40) > 122840
then (select avg(ss_ext_discount_amt)
from store_sales
where ss_quantity between 21 and 40)
else (select avg(ss_net_paid)
from store_sales
where ss_quantity between 21 and 40) end bucket2,
case when (select count(*)
from store_sales
where ss_quantity between 41 and 60) > 56580
then (select avg(ss_ext_discount_amt)
from store_sales
where ss_quantity between 41 and 60)
else (select avg(ss_net_paid)
from store_sales
where ss_quantity between 41 and 60) end bucket3,
case when (select count(*)
from store_sales
where ss_quantity between 61 and 80) > 10097
then (select avg(ss_ext_discount_amt)
from store_sales
where ss_quantity between 61 and 80)
else (select avg(ss_net_paid)
from store_sales
where ss_quantity between 61 and 80) end bucket4,
case when (select count(*)
from store_sales
where ss_quantity between 81 and 100) > 165306
then (select avg(ss_ext_discount_amt)
from store_sales
where ss_quantity between 81 and 100)
else (select avg(ss_net_paid)
from store_sales
where ss_quantity between 81 and 100) end bucket5
from reason
where r_reason_sk = 1
== Physical Plan ==
* Project (2)
+- BatchScan (1)
(1) BatchScan
Output [5]: [bucket1#7866, bucket2#7870, bucket3#7874, bucket4#7878, bucket5#7882]
OraPlan: 00 OraSingleQueryBlock [CASE WHEN (scalar-subquery#7863 [] > 74129) THEN scalar-subquery#7864 [] ELSE scalar-subquery#7865 [] END AS bucket1#7866, CASE WHEN (scalar-subquery#7867 [] > 122840) THEN scalar-subquery#7868 [] ELSE scalar-subquery#7869 [] END AS bucket2#7870, CASE WHEN (scalar-subquery#7871 [] > 56580) THEN scalar-subquery#7872 [] ELSE scalar-subquery#7873 [] END AS bucket3#7874, CASE WHEN (scalar-subquery#7875 [] > 10097) THEN scalar-subquery#7876 [] ELSE scalar-subquery#7877 [] END AS bucket4#7878, CASE WHEN (scalar-subquery#7879 [] > 165306) THEN scalar-subquery#7880 [] ELSE scalar-subquery#7881 [] END AS bucket5#7882], [oraalias(CASE WHEN (scalar-subquery#7863 [] > 74129) THEN scalar-subquery#7864 [] ELSE scalar-subquery#7865 [] END AS bucket1#7866), oraalias(CASE WHEN (scalar-subquery#7867 [] > 122840) THEN scalar-subquery#7868 [] ELSE scalar-subquery#7869 [] END AS bucket2#7870), oraalias(CASE WHEN (scalar-subquery#7871 [] > 56580) THEN scalar-subquery#7872 [] ELSE scalar-subquery#7873 [] END AS bucket3#7874), oraalias(CASE WHEN (scalar-subquery#7875 [] > 10097) THEN scalar-subquery#7876 [] ELSE scalar-subquery#7877 [] END AS bucket4#7878), oraalias(CASE WHEN (scalar-subquery#7879 [] > 165306) THEN scalar-subquery#7880 [] ELSE scalar-subquery#7881 [] END AS bucket5#7882)], orabinaryopexpression((R_REASON_SK#7883 = 1.000000000000000000))
01 +- OraTableScan TPCDS.REASON, [R_REASON_SK#7883]
ReadSchema: struct<bucket1:decimal(38,22),bucket2:decimal(38,22),bucket3:decimal(38,22),bucket4:decimal(38,22),bucket5:decimal(38,22)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 1.000000000000000000, 20.000000000000000000, 1.000000000000000000, 20.000000000000000000, 1.000000000000000000, 20.000000000000000000, 21.000000000000000000, 40.000000000000000000, 21.000000000000000000, 40.000000000000000000, 21.000000000000000000, 40.000000000000000000, 41.000000000000000000, 60.000000000000000000, 41.000000000000000000, 60.000000000000000000, 41.000000000000000000, 60.000000000000000000, 61.000000000000000000, 80.000000000000000000, 61.000000000000000000, 80.000000000000000000, 61.000000000000000000, 80.000000000000000000, 81.000000000000000000, 100.000000000000000000, 81.000000000000000000, 100.000000000000000000, 81.000000000000000000, 100.000000000000000000, 1.000000000000000000
oraPushdownSQL: select CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) > 74129) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) END AS "bucket1", CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) > 122840) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) END AS "bucket2", CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) > 56580) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) END AS "bucket3", CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) > 10097) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) END AS "bucket4", CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) > 165306) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?)) ) END AS "bucket5"
from TPCDS.REASON
where ("R_REASON_SK" = ?)
(2) Project [codegen id : 1]
Output [5]: [bucket1#7866, bucket2#7870, bucket3#7874, bucket4#7878, bucket5#7882]
Input [5]: [bucket1#7866, bucket2#7870, bucket3#7874, bucket4#7878, bucket5#7882]
select CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 1.000000000000000000)) AND ("SS_QUANTITY" <= 20.000000000000000000)) ) > 74129) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 1.000000000000000000)) AND ("SS_QUANTITY" <= 20.000000000000000000)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 1.000000000000000000)) AND ("SS_QUANTITY" <= 20.000000000000000000)) ) END AS "bucket1", CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 21.000000000000000000)) AND ("SS_QUANTITY" <= 40.000000000000000000)) ) > 122840) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 21.000000000000000000)) AND ("SS_QUANTITY" <= 40.000000000000000000)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 21.000000000000000000)) AND ("SS_QUANTITY" <= 40.000000000000000000)) ) END AS "bucket2", CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 41.000000000000000000)) AND ("SS_QUANTITY" <= 60.000000000000000000)) ) > 56580) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 41.000000000000000000)) AND ("SS_QUANTITY" <= 60.000000000000000000)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 41.000000000000000000)) AND ("SS_QUANTITY" <= 60.000000000000000000)) ) END AS "bucket3", CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 61.000000000000000000)) AND ("SS_QUANTITY" <= 80.000000000000000000)) ) > 10097) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 61.000000000000000000)) AND ("SS_QUANTITY" <= 80.000000000000000000)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 61.000000000000000000)) AND ("SS_QUANTITY" <= 80.000000000000000000)) ) END AS "bucket4", CASE WHEN ( ( select COUNT(1) AS "count(1)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 81.000000000000000000)) AND ("SS_QUANTITY" <= 100.000000000000000000)) ) > 165306) THEN ( select AVG("SS_EXT_DISCOUNT_AMT") AS "avg(ss_ext_discount_amt)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 81.000000000000000000)) AND ("SS_QUANTITY" <= 100.000000000000000000)) ) ELSE ( select AVG("SS_NET_PAID") AS "avg(ss_net_paid)"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= 81.000000000000000000)) AND ("SS_QUANTITY" <= 100.000000000000000000)) ) END AS "bucket5"
from TPCDS.REASON
where ("R_REASON_SK" = 1.000000000000000000)
== Physical Plan ==
* Project (3)
+- * Filter (2)
+- BatchScan (1)
(1) BatchScan
Output [1]: [R_REASON_SK#7318]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.REASON, [R_REASON_SK#7751], [oracolumnref(R_REASON_SK#7751)], orabinaryopexpression((R_REASON_SK#7318 = 1.000000000000000000))
PartitionSchema: struct<>
ReadSchema: struct<R_REASON_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 1.000000000000000000
oraPushdownSQL: select "R_REASON_SK"
from TPCDS.REASON
where ("R_REASON_SK" = ?)
(2) Filter [codegen id : 1]
Input [1]: [R_REASON_SK#7318]
Condition : (R_REASON_SK#7318 = 1.000000000000000000)
(3) Project [codegen id : 1]
Output [5]: [CASE WHEN (Subquery scalar-subquery#7298, [id=#2610] > 74129) THEN Subquery scalar-subquery#7299, [id=#2626] ELSE Subquery scalar-subquery#7300, [id=#2642] END AS bucket1#7301, CASE WHEN (Subquery scalar-subquery#7302, [id=#2658] > 122840) THEN Subquery scalar-subquery#7303, [id=#2674] ELSE Subquery scalar-subquery#7304, [id=#2690] END AS bucket2#7305, CASE WHEN (Subquery scalar-subquery#7306, [id=#2706] > 56580) THEN Subquery scalar-subquery#7307, [id=#2722] ELSE Subquery scalar-subquery#7308, [id=#2738] END AS bucket3#7309, CASE WHEN (Subquery scalar-subquery#7310, [id=#2754] > 10097) THEN Subquery scalar-subquery#7311, [id=#2770] ELSE Subquery scalar-subquery#7312, [id=#2786] END AS bucket4#7313, CASE WHEN (Subquery scalar-subquery#7314, [id=#2802] > 165306) THEN Subquery scalar-subquery#7315, [id=#2818] ELSE Subquery scalar-subquery#7316, [id=#2834] END AS bucket5#7317]
Input [1]: [R_REASON_SK#7318]
===== Subqueries =====
Subquery:1 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7298, [id=#2610]
* HashAggregate (8)
+- * HashAggregate (7)
+- * Project (6)
+- * Filter (5)
+- BatchScan (4)
(4) BatchScan
Output [1]: [SS_QUANTITY#7331]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7701], [oracolumnref(SS_QUANTITY#7701)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7331) AND (SS_QUANTITY#7331 >= 1.000000000000000000)) AND (SS_QUANTITY#7331 <= 20.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 1.000000000000000000, 20.000000000000000000
oraPushdownSQL: select "SS_QUANTITY"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(5) Filter [codegen id : 1]
Input [1]: [SS_QUANTITY#7331]
Condition : ((isnotnull(SS_QUANTITY#7331) AND (SS_QUANTITY#7331 >= 1.000000000000000000)) AND (SS_QUANTITY#7331 <= 20.000000000000000000))
(6) Project [codegen id : 1]
Output: []
Input [1]: [SS_QUANTITY#7331]
(7) HashAggregate [codegen id : 1]
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#7753L]
Results [1]: [count#7754L]
(8) HashAggregate [codegen id : 1]
Input [1]: [count#7754L]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#7344L]
Results [1]: [count(1)#7344L AS count(1)#7345L]
Subquery:2 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7299, [id=#2626]
* HashAggregate (13)
+- * HashAggregate (12)
+- * Project (11)
+- * Filter (10)
+- BatchScan (9)
(9) BatchScan
Output [2]: [SS_QUANTITY#7356, SS_EXT_DISCOUNT_AMT#7360]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7703, SS_EXT_DISCOUNT_AMT#7704], [oracolumnref(SS_QUANTITY#7703), oracolumnref(SS_EXT_DISCOUNT_AMT#7704)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7356) AND (SS_QUANTITY#7356 >= 1.000000000000000000)) AND (SS_QUANTITY#7356 <= 20.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 1.000000000000000000, 20.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_EXT_DISCOUNT_AMT"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(10) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7356, SS_EXT_DISCOUNT_AMT#7360]
Condition : ((isnotnull(SS_QUANTITY#7356) AND (SS_QUANTITY#7356 >= 1.000000000000000000)) AND (SS_QUANTITY#7356 <= 20.000000000000000000))
(11) Project [codegen id : 1]
Output [1]: [SS_EXT_DISCOUNT_AMT#7360]
Input [2]: [SS_QUANTITY#7356, SS_EXT_DISCOUNT_AMT#7360]
(12) HashAggregate [codegen id : 1]
Input [1]: [SS_EXT_DISCOUNT_AMT#7360]
Keys: []
Functions [1]: [partial_avg(ss_ext_discount_amt#7360)]
Aggregate Attributes [2]: [sum#7755, count#7756L]
Results [2]: [sum#7757, count#7758L]
(13) HashAggregate [codegen id : 1]
Input [2]: [sum#7757, count#7758L]
Keys: []
Functions [1]: [avg(ss_ext_discount_amt#7360)]
Aggregate Attributes [1]: [avg(ss_ext_discount_amt#7360)#7369]
Results [1]: [avg(ss_ext_discount_amt#7360)#7369 AS avg(ss_ext_discount_amt)#7370]
Subquery:3 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7300, [id=#2642]
* HashAggregate (18)
+- * HashAggregate (17)
+- * Project (16)
+- * Filter (15)
+- BatchScan (14)
(14) BatchScan
Output [2]: [SS_QUANTITY#7381, SS_NET_PAID#7391]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7707, SS_NET_PAID#7708], [oracolumnref(SS_QUANTITY#7707), oracolumnref(SS_NET_PAID#7708)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7381) AND (SS_QUANTITY#7381 >= 1.000000000000000000)) AND (SS_QUANTITY#7381 <= 20.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_NET_PAID:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 1.000000000000000000, 20.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_NET_PAID"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(15) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7381, SS_NET_PAID#7391]
Condition : ((isnotnull(SS_QUANTITY#7381) AND (SS_QUANTITY#7381 >= 1.000000000000000000)) AND (SS_QUANTITY#7381 <= 20.000000000000000000))
(16) Project [codegen id : 1]
Output [1]: [SS_NET_PAID#7391]
Input [2]: [SS_QUANTITY#7381, SS_NET_PAID#7391]
(17) HashAggregate [codegen id : 1]
Input [1]: [SS_NET_PAID#7391]
Keys: []
Functions [1]: [partial_avg(ss_net_paid#7391)]
Aggregate Attributes [2]: [sum#7759, count#7760L]
Results [2]: [sum#7761, count#7762L]
(18) HashAggregate [codegen id : 1]
Input [2]: [sum#7761, count#7762L]
Keys: []
Functions [1]: [avg(ss_net_paid#7391)]
Aggregate Attributes [1]: [avg(ss_net_paid#7391)#7394]
Results [1]: [avg(ss_net_paid#7391)#7394 AS avg(ss_net_paid)#7395]
Subquery:4 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7302, [id=#2658]
* HashAggregate (23)
+- * HashAggregate (22)
+- * Project (21)
+- * Filter (20)
+- BatchScan (19)
(19) BatchScan
Output [1]: [SS_QUANTITY#7406]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7711], [oracolumnref(SS_QUANTITY#7711)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7406) AND (SS_QUANTITY#7406 >= 21.000000000000000000)) AND (SS_QUANTITY#7406 <= 40.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 21.000000000000000000, 40.000000000000000000
oraPushdownSQL: select "SS_QUANTITY"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(20) Filter [codegen id : 1]
Input [1]: [SS_QUANTITY#7406]
Condition : ((isnotnull(SS_QUANTITY#7406) AND (SS_QUANTITY#7406 >= 21.000000000000000000)) AND (SS_QUANTITY#7406 <= 40.000000000000000000))
(21) Project [codegen id : 1]
Output: []
Input [1]: [SS_QUANTITY#7406]
(22) HashAggregate [codegen id : 1]
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#7763L]
Results [1]: [count#7764L]
(23) HashAggregate [codegen id : 1]
Input [1]: [count#7764L]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#7419L]
Results [1]: [count(1)#7419L AS count(1)#7420L]
Subquery:5 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7303, [id=#2674]
* HashAggregate (28)
+- * HashAggregate (27)
+- * Project (26)
+- * Filter (25)
+- BatchScan (24)
(24) BatchScan
Output [2]: [SS_QUANTITY#7431, SS_EXT_DISCOUNT_AMT#7435]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7713, SS_EXT_DISCOUNT_AMT#7714], [oracolumnref(SS_QUANTITY#7713), oracolumnref(SS_EXT_DISCOUNT_AMT#7714)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7431) AND (SS_QUANTITY#7431 >= 21.000000000000000000)) AND (SS_QUANTITY#7431 <= 40.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 21.000000000000000000, 40.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_EXT_DISCOUNT_AMT"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(25) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7431, SS_EXT_DISCOUNT_AMT#7435]
Condition : ((isnotnull(SS_QUANTITY#7431) AND (SS_QUANTITY#7431 >= 21.000000000000000000)) AND (SS_QUANTITY#7431 <= 40.000000000000000000))
(26) Project [codegen id : 1]
Output [1]: [SS_EXT_DISCOUNT_AMT#7435]
Input [2]: [SS_QUANTITY#7431, SS_EXT_DISCOUNT_AMT#7435]
(27) HashAggregate [codegen id : 1]
Input [1]: [SS_EXT_DISCOUNT_AMT#7435]
Keys: []
Functions [1]: [partial_avg(ss_ext_discount_amt#7435)]
Aggregate Attributes [2]: [sum#7765, count#7766L]
Results [2]: [sum#7767, count#7768L]
(28) HashAggregate [codegen id : 1]
Input [2]: [sum#7767, count#7768L]
Keys: []
Functions [1]: [avg(ss_ext_discount_amt#7435)]
Aggregate Attributes [1]: [avg(ss_ext_discount_amt#7435)#7444]
Results [1]: [avg(ss_ext_discount_amt#7435)#7444 AS avg(ss_ext_discount_amt)#7445]
Subquery:6 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7304, [id=#2690]
* HashAggregate (33)
+- * HashAggregate (32)
+- * Project (31)
+- * Filter (30)
+- BatchScan (29)
(29) BatchScan
Output [2]: [SS_QUANTITY#7456, SS_NET_PAID#7466]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7717, SS_NET_PAID#7718], [oracolumnref(SS_QUANTITY#7717), oracolumnref(SS_NET_PAID#7718)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7456) AND (SS_QUANTITY#7456 >= 21.000000000000000000)) AND (SS_QUANTITY#7456 <= 40.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_NET_PAID:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 21.000000000000000000, 40.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_NET_PAID"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(30) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7456, SS_NET_PAID#7466]
Condition : ((isnotnull(SS_QUANTITY#7456) AND (SS_QUANTITY#7456 >= 21.000000000000000000)) AND (SS_QUANTITY#7456 <= 40.000000000000000000))
(31) Project [codegen id : 1]
Output [1]: [SS_NET_PAID#7466]
Input [2]: [SS_QUANTITY#7456, SS_NET_PAID#7466]
(32) HashAggregate [codegen id : 1]
Input [1]: [SS_NET_PAID#7466]
Keys: []
Functions [1]: [partial_avg(ss_net_paid#7466)]
Aggregate Attributes [2]: [sum#7769, count#7770L]
Results [2]: [sum#7771, count#7772L]
(33) HashAggregate [codegen id : 1]
Input [2]: [sum#7771, count#7772L]
Keys: []
Functions [1]: [avg(ss_net_paid#7466)]
Aggregate Attributes [1]: [avg(ss_net_paid#7466)#7469]
Results [1]: [avg(ss_net_paid#7466)#7469 AS avg(ss_net_paid)#7470]
Subquery:7 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7306, [id=#2706]
* HashAggregate (38)
+- * HashAggregate (37)
+- * Project (36)
+- * Filter (35)
+- BatchScan (34)
(34) BatchScan
Output [1]: [SS_QUANTITY#7481]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7721], [oracolumnref(SS_QUANTITY#7721)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7481) AND (SS_QUANTITY#7481 >= 41.000000000000000000)) AND (SS_QUANTITY#7481 <= 60.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 41.000000000000000000, 60.000000000000000000
oraPushdownSQL: select "SS_QUANTITY"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(35) Filter [codegen id : 1]
Input [1]: [SS_QUANTITY#7481]
Condition : ((isnotnull(SS_QUANTITY#7481) AND (SS_QUANTITY#7481 >= 41.000000000000000000)) AND (SS_QUANTITY#7481 <= 60.000000000000000000))
(36) Project [codegen id : 1]
Output: []
Input [1]: [SS_QUANTITY#7481]
(37) HashAggregate [codegen id : 1]
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#7773L]
Results [1]: [count#7774L]
(38) HashAggregate [codegen id : 1]
Input [1]: [count#7774L]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#7494L]
Results [1]: [count(1)#7494L AS count(1)#7495L]
Subquery:8 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7307, [id=#2722]
* HashAggregate (43)
+- * HashAggregate (42)
+- * Project (41)
+- * Filter (40)
+- BatchScan (39)
(39) BatchScan
Output [2]: [SS_QUANTITY#7506, SS_EXT_DISCOUNT_AMT#7510]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7723, SS_EXT_DISCOUNT_AMT#7724], [oracolumnref(SS_QUANTITY#7723), oracolumnref(SS_EXT_DISCOUNT_AMT#7724)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7506) AND (SS_QUANTITY#7506 >= 41.000000000000000000)) AND (SS_QUANTITY#7506 <= 60.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 41.000000000000000000, 60.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_EXT_DISCOUNT_AMT"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(40) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7506, SS_EXT_DISCOUNT_AMT#7510]
Condition : ((isnotnull(SS_QUANTITY#7506) AND (SS_QUANTITY#7506 >= 41.000000000000000000)) AND (SS_QUANTITY#7506 <= 60.000000000000000000))
(41) Project [codegen id : 1]
Output [1]: [SS_EXT_DISCOUNT_AMT#7510]
Input [2]: [SS_QUANTITY#7506, SS_EXT_DISCOUNT_AMT#7510]
(42) HashAggregate [codegen id : 1]
Input [1]: [SS_EXT_DISCOUNT_AMT#7510]
Keys: []
Functions [1]: [partial_avg(ss_ext_discount_amt#7510)]
Aggregate Attributes [2]: [sum#7775, count#7776L]
Results [2]: [sum#7777, count#7778L]
(43) HashAggregate [codegen id : 1]
Input [2]: [sum#7777, count#7778L]
Keys: []
Functions [1]: [avg(ss_ext_discount_amt#7510)]
Aggregate Attributes [1]: [avg(ss_ext_discount_amt#7510)#7519]
Results [1]: [avg(ss_ext_discount_amt#7510)#7519 AS avg(ss_ext_discount_amt)#7520]
Subquery:9 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7308, [id=#2738]
* HashAggregate (48)
+- * HashAggregate (47)
+- * Project (46)
+- * Filter (45)
+- BatchScan (44)
(44) BatchScan
Output [2]: [SS_QUANTITY#7531, SS_NET_PAID#7541]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7727, SS_NET_PAID#7728], [oracolumnref(SS_QUANTITY#7727), oracolumnref(SS_NET_PAID#7728)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7531) AND (SS_QUANTITY#7531 >= 41.000000000000000000)) AND (SS_QUANTITY#7531 <= 60.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_NET_PAID:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 41.000000000000000000, 60.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_NET_PAID"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(45) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7531, SS_NET_PAID#7541]
Condition : ((isnotnull(SS_QUANTITY#7531) AND (SS_QUANTITY#7531 >= 41.000000000000000000)) AND (SS_QUANTITY#7531 <= 60.000000000000000000))
(46) Project [codegen id : 1]
Output [1]: [SS_NET_PAID#7541]
Input [2]: [SS_QUANTITY#7531, SS_NET_PAID#7541]
(47) HashAggregate [codegen id : 1]
Input [1]: [SS_NET_PAID#7541]
Keys: []
Functions [1]: [partial_avg(ss_net_paid#7541)]
Aggregate Attributes [2]: [sum#7779, count#7780L]
Results [2]: [sum#7781, count#7782L]
(48) HashAggregate [codegen id : 1]
Input [2]: [sum#7781, count#7782L]
Keys: []
Functions [1]: [avg(ss_net_paid#7541)]
Aggregate Attributes [1]: [avg(ss_net_paid#7541)#7544]
Results [1]: [avg(ss_net_paid#7541)#7544 AS avg(ss_net_paid)#7545]
Subquery:10 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7310, [id=#2754]
* HashAggregate (53)
+- * HashAggregate (52)
+- * Project (51)
+- * Filter (50)
+- BatchScan (49)
(49) BatchScan
Output [1]: [SS_QUANTITY#7556]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7731], [oracolumnref(SS_QUANTITY#7731)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7556) AND (SS_QUANTITY#7556 >= 61.000000000000000000)) AND (SS_QUANTITY#7556 <= 80.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 61.000000000000000000, 80.000000000000000000
oraPushdownSQL: select "SS_QUANTITY"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(50) Filter [codegen id : 1]
Input [1]: [SS_QUANTITY#7556]
Condition : ((isnotnull(SS_QUANTITY#7556) AND (SS_QUANTITY#7556 >= 61.000000000000000000)) AND (SS_QUANTITY#7556 <= 80.000000000000000000))
(51) Project [codegen id : 1]
Output: []
Input [1]: [SS_QUANTITY#7556]
(52) HashAggregate [codegen id : 1]
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#7783L]
Results [1]: [count#7784L]
(53) HashAggregate [codegen id : 1]
Input [1]: [count#7784L]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#7569L]
Results [1]: [count(1)#7569L AS count(1)#7570L]
Subquery:11 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7311, [id=#2770]
* HashAggregate (58)
+- * HashAggregate (57)
+- * Project (56)
+- * Filter (55)
+- BatchScan (54)
(54) BatchScan
Output [2]: [SS_QUANTITY#7581, SS_EXT_DISCOUNT_AMT#7585]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7733, SS_EXT_DISCOUNT_AMT#7734], [oracolumnref(SS_QUANTITY#7733), oracolumnref(SS_EXT_DISCOUNT_AMT#7734)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7581) AND (SS_QUANTITY#7581 >= 61.000000000000000000)) AND (SS_QUANTITY#7581 <= 80.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 61.000000000000000000, 80.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_EXT_DISCOUNT_AMT"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(55) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7581, SS_EXT_DISCOUNT_AMT#7585]
Condition : ((isnotnull(SS_QUANTITY#7581) AND (SS_QUANTITY#7581 >= 61.000000000000000000)) AND (SS_QUANTITY#7581 <= 80.000000000000000000))
(56) Project [codegen id : 1]
Output [1]: [SS_EXT_DISCOUNT_AMT#7585]
Input [2]: [SS_QUANTITY#7581, SS_EXT_DISCOUNT_AMT#7585]
(57) HashAggregate [codegen id : 1]
Input [1]: [SS_EXT_DISCOUNT_AMT#7585]
Keys: []
Functions [1]: [partial_avg(ss_ext_discount_amt#7585)]
Aggregate Attributes [2]: [sum#7785, count#7786L]
Results [2]: [sum#7787, count#7788L]
(58) HashAggregate [codegen id : 1]
Input [2]: [sum#7787, count#7788L]
Keys: []
Functions [1]: [avg(ss_ext_discount_amt#7585)]
Aggregate Attributes [1]: [avg(ss_ext_discount_amt#7585)#7594]
Results [1]: [avg(ss_ext_discount_amt#7585)#7594 AS avg(ss_ext_discount_amt)#7595]
Subquery:12 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7312, [id=#2786]
* HashAggregate (63)
+- * HashAggregate (62)
+- * Project (61)
+- * Filter (60)
+- BatchScan (59)
(59) BatchScan
Output [2]: [SS_QUANTITY#7606, SS_NET_PAID#7616]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7737, SS_NET_PAID#7738], [oracolumnref(SS_QUANTITY#7737), oracolumnref(SS_NET_PAID#7738)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7606) AND (SS_QUANTITY#7606 >= 61.000000000000000000)) AND (SS_QUANTITY#7606 <= 80.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_NET_PAID:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 61.000000000000000000, 80.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_NET_PAID"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(60) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7606, SS_NET_PAID#7616]
Condition : ((isnotnull(SS_QUANTITY#7606) AND (SS_QUANTITY#7606 >= 61.000000000000000000)) AND (SS_QUANTITY#7606 <= 80.000000000000000000))
(61) Project [codegen id : 1]
Output [1]: [SS_NET_PAID#7616]
Input [2]: [SS_QUANTITY#7606, SS_NET_PAID#7616]
(62) HashAggregate [codegen id : 1]
Input [1]: [SS_NET_PAID#7616]
Keys: []
Functions [1]: [partial_avg(ss_net_paid#7616)]
Aggregate Attributes [2]: [sum#7789, count#7790L]
Results [2]: [sum#7791, count#7792L]
(63) HashAggregate [codegen id : 1]
Input [2]: [sum#7791, count#7792L]
Keys: []
Functions [1]: [avg(ss_net_paid#7616)]
Aggregate Attributes [1]: [avg(ss_net_paid#7616)#7619]
Results [1]: [avg(ss_net_paid#7616)#7619 AS avg(ss_net_paid)#7620]
Subquery:13 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7314, [id=#2802]
* HashAggregate (68)
+- * HashAggregate (67)
+- * Project (66)
+- * Filter (65)
+- BatchScan (64)
(64) BatchScan
Output [1]: [SS_QUANTITY#7631]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7741], [oracolumnref(SS_QUANTITY#7741)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7631) AND (SS_QUANTITY#7631 >= 81.000000000000000000)) AND (SS_QUANTITY#7631 <= 100.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 81.000000000000000000, 100.000000000000000000
oraPushdownSQL: select "SS_QUANTITY"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(65) Filter [codegen id : 1]
Input [1]: [SS_QUANTITY#7631]
Condition : ((isnotnull(SS_QUANTITY#7631) AND (SS_QUANTITY#7631 >= 81.000000000000000000)) AND (SS_QUANTITY#7631 <= 100.000000000000000000))
(66) Project [codegen id : 1]
Output: []
Input [1]: [SS_QUANTITY#7631]
(67) HashAggregate [codegen id : 1]
Input: []
Keys: []
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#7793L]
Results [1]: [count#7794L]
(68) HashAggregate [codegen id : 1]
Input [1]: [count#7794L]
Keys: []
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#7644L]
Results [1]: [count(1)#7644L AS count(1)#7645L]
Subquery:14 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7315, [id=#2818]
* HashAggregate (73)
+- * HashAggregate (72)
+- * Project (71)
+- * Filter (70)
+- BatchScan (69)
(69) BatchScan
Output [2]: [SS_QUANTITY#7656, SS_EXT_DISCOUNT_AMT#7660]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7743, SS_EXT_DISCOUNT_AMT#7744], [oracolumnref(SS_QUANTITY#7743), oracolumnref(SS_EXT_DISCOUNT_AMT#7744)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7656) AND (SS_QUANTITY#7656 >= 81.000000000000000000)) AND (SS_QUANTITY#7656 <= 100.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 81.000000000000000000, 100.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_EXT_DISCOUNT_AMT"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(70) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7656, SS_EXT_DISCOUNT_AMT#7660]
Condition : ((isnotnull(SS_QUANTITY#7656) AND (SS_QUANTITY#7656 >= 81.000000000000000000)) AND (SS_QUANTITY#7656 <= 100.000000000000000000))
(71) Project [codegen id : 1]
Output [1]: [SS_EXT_DISCOUNT_AMT#7660]
Input [2]: [SS_QUANTITY#7656, SS_EXT_DISCOUNT_AMT#7660]
(72) HashAggregate [codegen id : 1]
Input [1]: [SS_EXT_DISCOUNT_AMT#7660]
Keys: []
Functions [1]: [partial_avg(ss_ext_discount_amt#7660)]
Aggregate Attributes [2]: [sum#7795, count#7796L]
Results [2]: [sum#7797, count#7798L]
(73) HashAggregate [codegen id : 1]
Input [2]: [sum#7797, count#7798L]
Keys: []
Functions [1]: [avg(ss_ext_discount_amt#7660)]
Aggregate Attributes [1]: [avg(ss_ext_discount_amt#7660)#7669]
Results [1]: [avg(ss_ext_discount_amt#7660)#7669 AS avg(ss_ext_discount_amt)#7670]
Subquery:15 Hosting operator id = 3 Hosting Expression = Subquery scalar-subquery#7316, [id=#2834]
* HashAggregate (78)
+- * HashAggregate (77)
+- * Project (76)
+- * Filter (75)
+- BatchScan (74)
(74) BatchScan
Output [2]: [SS_QUANTITY#7681, SS_NET_PAID#7691]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_QUANTITY#7747, SS_NET_PAID#7748], [oracolumnref(SS_QUANTITY#7747), oracolumnref(SS_NET_PAID#7748)], orabinaryopexpression(((isnotnull(SS_QUANTITY#7681) AND (SS_QUANTITY#7681 >= 81.000000000000000000)) AND (SS_QUANTITY#7681 <= 100.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<SS_QUANTITY:decimal(38,18),SS_NET_PAID:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 81.000000000000000000, 100.000000000000000000
oraPushdownSQL: select "SS_QUANTITY", "SS_NET_PAID"
from TPCDS.STORE_SALES
where (("SS_QUANTITY" IS NOT NULL AND ("SS_QUANTITY" >= ?)) AND ("SS_QUANTITY" <= ?))
(75) Filter [codegen id : 1]
Input [2]: [SS_QUANTITY#7681, SS_NET_PAID#7691]
Condition : ((isnotnull(SS_QUANTITY#7681) AND (SS_QUANTITY#7681 >= 81.000000000000000000)) AND (SS_QUANTITY#7681 <= 100.000000000000000000))
(76) Project [codegen id : 1]
Output [1]: [SS_NET_PAID#7691]
Input [2]: [SS_QUANTITY#7681, SS_NET_PAID#7691]
(77) HashAggregate [codegen id : 1]
Input [1]: [SS_NET_PAID#7691]
Keys: []
Functions [1]: [partial_avg(ss_net_paid#7691)]
Aggregate Attributes [2]: [sum#7799, count#7800L]
Results [2]: [sum#7801, count#7802L]
(78) HashAggregate [codegen id : 1]
Input [2]: [sum#7801, count#7802L]
Keys: []
Functions [1]: [avg(ss_net_paid#7691)]
Aggregate Attributes [1]: [avg(ss_net_paid#7691)#7694]
Results [1]: [avg(ss_net_paid#7691)#7694 AS avg(ss_net_paid)#7695]
select
cd_gender,
cd_marital_status,
cd_education_status,
count(*) cnt1,
cd_purchase_estimate,
count(*) cnt2,
cd_credit_rating,
count(*) cnt3,
cd_dep_count,
count(*) cnt4,
cd_dep_employed_count,
count(*) cnt5,
cd_dep_college_count,
count(*) cnt6
from
customer c,customer_address ca,customer_demographics
where
c.c_current_addr_sk = ca.ca_address_sk and
ca_county in ('Rush County','Toole County','Jefferson County','Dona Ana County','La Porte County') and
cd_demo_sk = c.c_current_cdemo_sk and
exists (select *
from store_sales,date_dim
where c.c_customer_sk = ss_customer_sk and
ss_sold_date_sk = d_date_sk and
d_year = 2002 and
d_moy between 1 and 1+3) and
(exists (select *
from web_sales,date_dim
where c.c_customer_sk = ws_bill_customer_sk and
ws_sold_date_sk = d_date_sk and
d_year = 2002 and
d_moy between 1 ANd 1+3) or
exists (select *
from catalog_sales,date_dim
where c.c_customer_sk = cs_ship_customer_sk and
cs_sold_date_sk = d_date_sk and
d_year = 2002 and
d_moy between 1 and 1+3))
group by cd_gender,
cd_marital_status,
cd_education_status,
cd_purchase_estimate,
cd_credit_rating,
cd_dep_count,
cd_dep_employed_count,
cd_dep_college_count
order by cd_gender,
cd_marital_status,
cd_education_status,
cd_purchase_estimate,
cd_credit_rating,
cd_dep_count,
cd_dep_employed_count,
cd_dep_college_count
limit 100;
== Physical Plan ==
TakeOrderedAndProject (28)
+- * HashAggregate (27)
+- * HashAggregate (26)
+- * Project (25)
+- * SortMergeJoin Inner (24)
:- * Sort (20)
: +- * Project (19)
: +- * SortMergeJoin Inner (18)
: :- * Sort (14)
: : +- * Project (13)
: : +- * Filter (12)
: : +- SortMergeJoin ExistenceJoin(exists#9567) (11)
: : :- SortMergeJoin ExistenceJoin(exists#9566) (7)
: : : :- * Sort (3)
: : : : +- * Project (2)
: : : : +- BatchScan (1)
: : : +- * Sort (6)
: : : +- * Project (5)
: : : +- BatchScan (4)
: : +- * Sort (10)
: : +- * Project (9)
: : +- BatchScan (8)
: +- * Sort (17)
: +- * Project (16)
: +- BatchScan (15)
+- * Sort (23)
+- * Project (22)
+- BatchScan (21)
(1) BatchScan
Output [3]: [C_CUSTOMER_SK#8953, C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957]
OraPlan: 00 OraSingleQueryBlock [C_CUSTOMER_SK#8953, C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957], [oracolumnref(C_CUSTOMER_SK#8953), oracolumnref(C_CURRENT_CDEMO_SK#8955), oracolumnref(C_CURRENT_ADDR_SK#8957)], orabinaryopexpression(((isnotnull(C_CURRENT_ADDR_SK#8957) AND isnotnull(C_CURRENT_CDEMO_SK#8955)) AND (C_CUSTOMER_SK#8953 = ss_customer_sk#9002)))
01 +- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#8953, C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957]
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CURRENT_CDEMO_SK:decimal(38,18),C_CURRENT_ADDR_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000, 1.000000000000000000, 4.000000000000000000
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CURRENT_CDEMO_SK", "C_CURRENT_ADDR_SK"
from TPCDS.CUSTOMER
where (("C_CURRENT_ADDR_SK" IS NOT NULL AND "C_CURRENT_CDEMO_SK" IS NOT NULL) AND "C_CUSTOMER_SK" IN ( select "SS_CUSTOMER_SK"
from TPCDS.STORE_SALES join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where ("SS_SOLD_DATE_SK" IS NOT NULL AND (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = ?)) AND ("D_MOY" >= ?)) AND ("D_MOY" <= ?))) ))
(2) Project [codegen id : 1]
Output [3]: [C_CUSTOMER_SK#8953, C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957]
Input [3]: [C_CUSTOMER_SK#8953, C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957]
(3) Sort [codegen id : 1]
Input [3]: [C_CUSTOMER_SK#8953, C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957]
Arguments: [C_CUSTOMER_SK#8953 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [1]: [WS_BILL_CUSTOMER_SK#9054]
OraPlan: 00 OraSingleQueryBlock [WS_BILL_CUSTOMER_SK#9054], [oracolumnref(WS_BILL_CUSTOMER_SK#9054)], orabinaryopexpression((isnotnull(WS_SOLD_DATE_SK#9050) AND ((((isnotnull(D_YEAR#9090) AND isnotnull(D_MOY#9092)) AND (D_YEAR#9090 = 2002.000000000000000000)) AND (D_MOY#9092 >= 1.000000000000000000)) AND (D_MOY#9092 <= 4.000000000000000000))))
01 :- OraTableScan TPCDS.WEB_SALES, [WS_SOLD_TIME_SK#9051, WS_SHIP_DATE_SK#9052, WS_ITEM_SK#9053, WS_BILL_CUSTOMER_SK#9054, WS_BILL_CDEMO_SK#9055, WS_BILL_HDEMO_SK#9056, WS_BILL_ADDR_SK#9057, WS_SHIP_CUSTOMER_SK#9058, WS_SHIP_CDEMO_SK#9059, WS_SHIP_HDEMO_SK#9060, WS_SHIP_ADDR_SK#9061, WS_WEB_PAGE_SK#9062, WS_WEB_SITE_SK#9063, WS_SHIP_MODE_SK#9064, WS_WAREHOUSE_SK#9065, WS_PROMO_SK#9066, WS_ORDER_NUMBER#9067, WS_QUANTITY#9068, WS_WHOLESALE_COST#9069, WS_LIST_PRICE#9070, WS_SALES_PRICE#9071, WS_EXT_DISCOUNT_AMT#9072, WS_EXT_SALES_PRICE#9073, WS_EXT_WHOLESALE_COST#9074, ... 10 more fields]
02 +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#9084, D_DATE_ID#9085, D_DATE#9086, D_MONTH_SEQ#9087, D_WEEK_SEQ#9088, D_QUARTER_SEQ#9089, D_YEAR#9090, D_DOW#9091, D_MOY#9092, D_DOM#9093, D_QOY#9094, D_FY_YEAR#9095, D_FY_QUARTER_SEQ#9096, D_FY_WEEK_SEQ#9097, D_DAY_NAME#9098, D_QUARTER_NAME#9099, D_HOLIDAY#9100, D_WEEKEND#9101, D_FOLLOWING_HOLIDAY#9102, D_FIRST_DOM#9103, D_LAST_DOM#9104, D_SAME_DAY_LY#9105, D_SAME_DAY_LQ#9106, D_CURRENT_DAY#9107, ... 4 more fields]
ReadSchema: struct<WS_BILL_CUSTOMER_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000, 1.000000000000000000, 4.000000000000000000
oraPushdownSQL: select "WS_BILL_CUSTOMER_SK"
from TPCDS.WEB_SALES join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where ("WS_SOLD_DATE_SK" IS NOT NULL AND (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = ?)) AND ("D_MOY" >= ?)) AND ("D_MOY" <= ?)))
(5) Project [codegen id : 2]
Output [1]: [WS_BILL_CUSTOMER_SK#9054]
Input [1]: [WS_BILL_CUSTOMER_SK#9054]
(6) Sort [codegen id : 2]
Input [1]: [WS_BILL_CUSTOMER_SK#9054]
Arguments: [ws_bill_customer_sk#9054 ASC NULLS FIRST], false, 0
(7) SortMergeJoin
Left keys [1]: [C_CUSTOMER_SK#8953]
Right keys [1]: [ws_bill_customer_sk#9054]
Join condition: None
(8) BatchScan
Output [1]: [CS_SHIP_CUSTOMER_SK#9119]
OraPlan: 00 OraSingleQueryBlock [CS_SHIP_CUSTOMER_SK#9119], [oracolumnref(CS_SHIP_CUSTOMER_SK#9119)], orabinaryopexpression((isnotnull(CS_SOLD_DATE_SK#9112) AND ((((isnotnull(D_YEAR#9152) AND isnotnull(D_MOY#9154)) AND (D_YEAR#9152 = 2002.000000000000000000)) AND (D_MOY#9154 >= 1.000000000000000000)) AND (D_MOY#9154 <= 4.000000000000000000))))
01 :- OraTableScan TPCDS.CATALOG_SALES, [CS_SOLD_TIME_SK#9113, CS_SHIP_DATE_SK#9114, CS_BILL_CUSTOMER_SK#9115, CS_BILL_CDEMO_SK#9116, CS_BILL_HDEMO_SK#9117, CS_BILL_ADDR_SK#9118, CS_SHIP_CUSTOMER_SK#9119, CS_SHIP_CDEMO_SK#9120, CS_SHIP_HDEMO_SK#9121, CS_SHIP_ADDR_SK#9122, CS_CALL_CENTER_SK#9123, CS_CATALOG_PAGE_SK#9124, CS_SHIP_MODE_SK#9125, CS_WAREHOUSE_SK#9126, CS_ITEM_SK#9127, CS_PROMO_SK#9128, CS_ORDER_NUMBER#9129, CS_QUANTITY#9130, CS_WHOLESALE_COST#9131, CS_LIST_PRICE#9132, CS_SALES_PRICE#9133, CS_EXT_DISCOUNT_AMT#9134, CS_EXT_SALES_PRICE#9135, CS_EXT_WHOLESALE_COST#9136, ... 10 more fields]
02 +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#9146, D_DATE_ID#9147, D_DATE#9148, D_MONTH_SEQ#9149, D_WEEK_SEQ#9150, D_QUARTER_SEQ#9151, D_YEAR#9152, D_DOW#9153, D_MOY#9154, D_DOM#9155, D_QOY#9156, D_FY_YEAR#9157, D_FY_QUARTER_SEQ#9158, D_FY_WEEK_SEQ#9159, D_DAY_NAME#9160, D_QUARTER_NAME#9161, D_HOLIDAY#9162, D_WEEKEND#9163, D_FOLLOWING_HOLIDAY#9164, D_FIRST_DOM#9165, D_LAST_DOM#9166, D_SAME_DAY_LY#9167, D_SAME_DAY_LQ#9168, D_CURRENT_DAY#9169, ... 4 more fields]
ReadSchema: struct<CS_SHIP_CUSTOMER_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000, 1.000000000000000000, 4.000000000000000000
oraPushdownSQL: select "CS_SHIP_CUSTOMER_SK"
from TPCDS.CATALOG_SALES join TPCDS.DATE_DIM on ("CS_SOLD_DATE_SK" = "D_DATE_SK")
where ("CS_SOLD_DATE_SK" IS NOT NULL AND (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = ?)) AND ("D_MOY" >= ?)) AND ("D_MOY" <= ?)))
(9) Project [codegen id : 3]
Output [1]: [CS_SHIP_CUSTOMER_SK#9119]
Input [1]: [CS_SHIP_CUSTOMER_SK#9119]
(10) Sort [codegen id : 3]
Input [1]: [CS_SHIP_CUSTOMER_SK#9119]
Arguments: [cs_ship_customer_sk#9119 ASC NULLS FIRST], false, 0
(11) SortMergeJoin
Left keys [1]: [C_CUSTOMER_SK#8953]
Right keys [1]: [cs_ship_customer_sk#9119]
Join condition: None
(12) Filter [codegen id : 4]
Input [5]: [C_CUSTOMER_SK#8953, C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957, exists#9566, exists#9567]
Condition : (exists#9566 OR exists#9567)
(13) Project [codegen id : 4]
Output [2]: [C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957]
Input [5]: [C_CUSTOMER_SK#8953, C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957, exists#9566, exists#9567]
(14) Sort [codegen id : 4]
Input [2]: [C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957]
Arguments: [c_current_addr_sk#8957 ASC NULLS FIRST], false, 0
(15) BatchScan
Output [1]: [CA_ADDRESS_SK#8971]
OraPlan: 00 OraSingleQueryBlock [CA_ADDRESS_SK#8971], [oracolumnref(CA_ADDRESS_SK#8971)], orain(CA_COUNTY#8978 IN (Rush County,Toole County,Jefferson County,Dona Ana County,La Porte County))
01 +- OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ADDRESS_SK#8971, CA_COUNTY#8978]
ReadSchema: struct<CA_ADDRESS_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: Rush County, Toole County, Jefferson County, Dona Ana County, La Porte County
oraPushdownSQL: select "CA_ADDRESS_SK"
from TPCDS.CUSTOMER_ADDRESS
where "CA_COUNTY" IN ( ?, ?, ?, ?, ? )
(16) Project [codegen id : 5]
Output [1]: [CA_ADDRESS_SK#8971]
Input [1]: [CA_ADDRESS_SK#8971]
(17) Sort [codegen id : 5]
Input [1]: [CA_ADDRESS_SK#8971]
Arguments: [ca_address_sk#8971 ASC NULLS FIRST], false, 0
(18) SortMergeJoin [codegen id : 6]
Left keys [1]: [c_current_addr_sk#8957]
Right keys [1]: [ca_address_sk#8971]
Join condition: None
(19) Project [codegen id : 6]
Output [1]: [C_CURRENT_CDEMO_SK#8955]
Input [3]: [C_CURRENT_CDEMO_SK#8955, C_CURRENT_ADDR_SK#8957, CA_ADDRESS_SK#8971]
(20) Sort [codegen id : 6]
Input [1]: [C_CURRENT_CDEMO_SK#8955]
Arguments: [c_current_cdemo_sk#8955 ASC NULLS FIRST], false, 0
(21) BatchScan
Output [9]: [CD_DEMO_SK#8984, CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992]
OraPlan: 00 OraSingleQueryBlock [CD_DEMO_SK#8984, CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992], [oracolumnref(CD_DEMO_SK#8984), oracolumnref(CD_GENDER#8985), oracolumnref(CD_MARITAL_STATUS#8986), oracolumnref(CD_EDUCATION_STATUS#8987), oracolumnref(CD_PURCHASE_ESTIMATE#8988), oracolumnref(CD_CREDIT_RATING#8989), oracolumnref(CD_DEP_COUNT#8990), oracolumnref(CD_DEP_EMPLOYED_COUNT#8991), oracolumnref(CD_DEP_COLLEGE_COUNT#8992)]
01 +- OraTableScan TPCDS.CUSTOMER_DEMOGRAPHICS, [CD_DEMO_SK#8984, CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992]
ReadSchema: struct<CD_DEMO_SK:decimal(38,18),CD_GENDER:string,CD_MARITAL_STATUS:string,CD_EDUCATION_STATUS:string,CD_PURCHASE_ESTIMATE:decimal(38,18),CD_CREDIT_RATING:string,CD_DEP_COUNT:decimal(38,18),CD_DEP_EMPLOYED_COUNT:decimal(38,18),CD_DEP_COLLEGE_COUNT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CD_DEMO_SK", "CD_GENDER", "CD_MARITAL_STATUS", "CD_EDUCATION_STATUS", "CD_PURCHASE_ESTIMATE", "CD_CREDIT_RATING", "CD_DEP_COUNT", "CD_DEP_EMPLOYED_COUNT", "CD_DEP_COLLEGE_COUNT"
from TPCDS.CUSTOMER_DEMOGRAPHICS
(22) Project [codegen id : 7]
Output [9]: [CD_DEMO_SK#8984, CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992]
Input [9]: [CD_DEMO_SK#8984, CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992]
(23) Sort [codegen id : 7]
Input [9]: [CD_DEMO_SK#8984, CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992]
Arguments: [cd_demo_sk#8984 ASC NULLS FIRST], false, 0
(24) SortMergeJoin [codegen id : 8]
Left keys [1]: [c_current_cdemo_sk#8955]
Right keys [1]: [cd_demo_sk#8984]
Join condition: None
(25) Project [codegen id : 8]
Output [8]: [CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992]
Input [10]: [C_CURRENT_CDEMO_SK#8955, CD_DEMO_SK#8984, CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992]
(26) HashAggregate [codegen id : 8]
Input [8]: [CD_GENDER#8985, CD_MARITAL_STATUS#8986, CD_EDUCATION_STATUS#8987, CD_PURCHASE_ESTIMATE#8988, CD_CREDIT_RATING#8989, CD_DEP_COUNT#8990, CD_DEP_EMPLOYED_COUNT#8991, CD_DEP_COLLEGE_COUNT#8992]
Keys [8]: [cd_gender#8985, cd_marital_status#8986, cd_education_status#8987, cd_purchase_estimate#8988, cd_credit_rating#8989, cd_dep_count#8990, cd_dep_employed_count#8991, cd_dep_college_count#8992]
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#9568L]
Results [9]: [cd_gender#8985, cd_marital_status#8986, cd_education_status#8987, cd_purchase_estimate#8988, cd_credit_rating#8989, cd_dep_count#8990, cd_dep_employed_count#8991, cd_dep_college_count#8992, count#9569L]
(27) HashAggregate [codegen id : 8]
Input [9]: [cd_gender#8985, cd_marital_status#8986, cd_education_status#8987, cd_purchase_estimate#8988, cd_credit_rating#8989, cd_dep_count#8990, cd_dep_employed_count#8991, cd_dep_college_count#8992, count#9569L]
Keys [8]: [cd_gender#8985, cd_marital_status#8986, cd_education_status#8987, cd_purchase_estimate#8988, cd_credit_rating#8989, cd_dep_count#8990, cd_dep_employed_count#8991, cd_dep_college_count#8992]
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#8993L]
Results [14]: [cd_gender#8985, cd_marital_status#8986, cd_education_status#8987, count(1)#8993L AS cnt1#8947L, cd_purchase_estimate#8988, count(1)#8993L AS cnt2#8948L, cd_credit_rating#8989, count(1)#8993L AS cnt3#8949L, cd_dep_count#8990, count(1)#8993L AS cnt4#8950L, cd_dep_employed_count#8991, count(1)#8993L AS cnt5#8951L, cd_dep_college_count#8992, count(1)#8993L AS cnt6#8952L]
(28) TakeOrderedAndProject
Input [14]: [cd_gender#8985, cd_marital_status#8986, cd_education_status#8987, cnt1#8947L, cd_purchase_estimate#8988, cnt2#8948L, cd_credit_rating#8989, cnt3#8949L, cd_dep_count#8990, cnt4#8950L, cd_dep_employed_count#8991, cnt5#8951L, cd_dep_college_count#8992, cnt6#8952L]
Arguments: 100, [cd_gender#8985 ASC NULLS FIRST, cd_marital_status#8986 ASC NULLS FIRST, cd_education_status#8987 ASC NULLS FIRST, cd_purchase_estimate#8988 ASC NULLS FIRST, cd_credit_rating#8989 ASC NULLS FIRST, cd_dep_count#8990 ASC NULLS FIRST, cd_dep_employed_count#8991 ASC NULLS FIRST, cd_dep_college_count#8992 ASC NULLS FIRST], [cd_gender#8985, cd_marital_status#8986, cd_education_status#8987, cnt1#8947L, cd_purchase_estimate#8988, cnt2#8948L, cd_credit_rating#8989, cnt3#8949L, cd_dep_count#8990, cnt4#8950L, cd_dep_employed_count#8991, cnt5#8951L, cd_dep_college_count#8992, cnt6#8952L]
select "C_CUSTOMER_SK", "C_CURRENT_CDEMO_SK", "C_CURRENT_ADDR_SK"
from TPCDS.CUSTOMER
where (("C_CURRENT_ADDR_SK" IS NOT NULL AND "C_CURRENT_CDEMO_SK" IS NOT NULL) AND "C_CUSTOMER_SK" IN ( select "SS_CUSTOMER_SK"
from TPCDS.STORE_SALES join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where ("SS_SOLD_DATE_SK" IS NOT NULL AND (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = 2002.000000000000000000)) AND ("D_MOY" >= 1.000000000000000000)) AND ("D_MOY" <= 4.000000000000000000))) ))
select "WS_BILL_CUSTOMER_SK"
from TPCDS.WEB_SALES join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where ("WS_SOLD_DATE_SK" IS NOT NULL AND (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = 2002.000000000000000000)) AND ("D_MOY" >= 1.000000000000000000)) AND ("D_MOY" <= 4.000000000000000000)))
select "CS_SHIP_CUSTOMER_SK"
from TPCDS.CATALOG_SALES join TPCDS.DATE_DIM on ("CS_SOLD_DATE_SK" = "D_DATE_SK")
where ("CS_SOLD_DATE_SK" IS NOT NULL AND (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = 2002.000000000000000000)) AND ("D_MOY" >= 1.000000000000000000)) AND ("D_MOY" <= 4.000000000000000000)))
select "CA_ADDRESS_SK"
from TPCDS.CUSTOMER_ADDRESS
where "CA_COUNTY" IN ( 'Rush County', 'Toole County', 'Jefferson County', 'Dona Ana County', 'La Porte County' )
select "CD_DEMO_SK", "CD_GENDER", "CD_MARITAL_STATUS", "CD_EDUCATION_STATUS", "CD_PURCHASE_ESTIMATE", "CD_CREDIT_RATING", "CD_DEP_COUNT", "CD_DEP_EMPLOYED_COUNT", "CD_DEP_COLLEGE_COUNT"
from TPCDS.CUSTOMER_DEMOGRAPHICS
== Physical Plan ==
TakeOrderedAndProject (54)
+- * HashAggregate (53)
+- * HashAggregate (52)
+- * Project (51)
+- * SortMergeJoin Inner (50)
:- * Sort (46)
: +- * Project (45)
: +- * SortMergeJoin Inner (44)
: :- * Sort (39)
: : +- * Project (38)
: : +- * Filter (37)
: : +- SortMergeJoin ExistenceJoin(exists#8941) (36)
: : :- SortMergeJoin ExistenceJoin(exists#8940) (25)
: : : :- SortMergeJoin LeftSemi (14)
: : : : :- * Sort (3)
: : : : : +- * Filter (2)
: : : : : +- BatchScan (1)
: : : : +- * Sort (13)
: : : : +- * Project (12)
: : : : +- * SortMergeJoin Inner (11)
: : : : :- * Sort (6)
: : : : : +- * Project (5)
: : : : : +- BatchScan (4)
: : : : +- * Sort (10)
: : : : +- * Project (9)
: : : : +- * Filter (8)
: : : : +- BatchScan (7)
: : : +- * Sort (24)
: : : +- * Project (23)
: : : +- * SortMergeJoin Inner (22)
: : : :- * Sort (17)
: : : : +- * Project (16)
: : : : +- BatchScan (15)
: : : +- * Sort (21)
: : : +- * Project (20)
: : : +- * Filter (19)
: : : +- BatchScan (18)
: : +- * Sort (35)
: : +- * Project (34)
: : +- * SortMergeJoin Inner (33)
: : :- * Sort (28)
: : : +- * Project (27)
: : : +- BatchScan (26)
: : +- * Sort (32)
: : +- * Project (31)
: : +- * Filter (30)
: : +- BatchScan (29)
: +- * Sort (43)
: +- * Project (42)
: +- * Filter (41)
: +- BatchScan (40)
+- * Sort (49)
+- * Project (48)
+- BatchScan (47)
(1) BatchScan
Output [3]: [C_CUSTOMER_SK#8327, C_CURRENT_CDEMO_SK#8329, C_CURRENT_ADDR_SK#8331]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#8912, C_CURRENT_CDEMO_SK#8913, C_CURRENT_ADDR_SK#8914], [oracolumnref(C_CUSTOMER_SK#8912), oracolumnref(C_CURRENT_CDEMO_SK#8913), oracolumnref(C_CURRENT_ADDR_SK#8914)], orabinaryopexpression((isnotnull(C_CURRENT_ADDR_SK#8331) AND isnotnull(C_CURRENT_CDEMO_SK#8329)))
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CURRENT_CDEMO_SK:decimal(38,18),C_CURRENT_ADDR_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CURRENT_CDEMO_SK", "C_CURRENT_ADDR_SK"
from TPCDS.CUSTOMER
where ("C_CURRENT_ADDR_SK" IS NOT NULL AND "C_CURRENT_CDEMO_SK" IS NOT NULL)
(2) Filter [codegen id : 1]
Input [3]: [C_CUSTOMER_SK#8327, C_CURRENT_CDEMO_SK#8329, C_CURRENT_ADDR_SK#8331]
Condition : (isnotnull(C_CURRENT_ADDR_SK#8331) AND isnotnull(C_CURRENT_CDEMO_SK#8329))
(3) Sort [codegen id : 1]
Input [3]: [C_CUSTOMER_SK#8327, C_CURRENT_CDEMO_SK#8329, C_CURRENT_ADDR_SK#8331]
Arguments: [C_CUSTOMER_SK#8327 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [23]: [SS_SOLD_TIME_SK#8374, SS_ITEM_SK#8375, SS_CUSTOMER_SK#8376, SS_CDEMO_SK#8377, SS_HDEMO_SK#8378, SS_ADDR_SK#8379, SS_STORE_SK#8380, SS_PROMO_SK#8381, SS_TICKET_NUMBER#8382, SS_QUANTITY#8383, SS_WHOLESALE_COST#8384, SS_LIST_PRICE#8385, SS_SALES_PRICE#8386, SS_EXT_DISCOUNT_AMT#8387, SS_EXT_SALES_PRICE#8388, SS_EXT_WHOLESALE_COST#8389, SS_EXT_LIST_PRICE#8390, SS_EXT_TAX#8391, SS_COUPON_AMT#8392, SS_NET_PAID#8393, SS_NET_PAID_INC_TAX#8394, SS_NET_PROFIT#8395, SS_SOLD_DATE_SK#8373]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_SOLD_TIME_SK#8562, SS_ITEM_SK#8563, SS_CUSTOMER_SK#8564, SS_CDEMO_SK#8565, SS_HDEMO_SK#8566, SS_ADDR_SK#8567, SS_STORE_SK#8568, SS_PROMO_SK#8569, SS_TICKET_NUMBER#8570, SS_QUANTITY#8571, SS_WHOLESALE_COST#8572, SS_LIST_PRICE#8573, SS_SALES_PRICE#8574, SS_EXT_DISCOUNT_AMT#8575, SS_EXT_SALES_PRICE#8576, SS_EXT_WHOLESALE_COST#8577, SS_EXT_LIST_PRICE#8578, SS_EXT_TAX#8579, SS_COUPON_AMT#8580, SS_NET_PAID#8581, SS_NET_PAID_INC_TAX#8582, SS_NET_PROFIT#8583, SS_SOLD_DATE_SK#8584], [oracolumnref(SS_SOLD_TIME_SK#8562), oracolumnref(SS_ITEM_SK#8563), oracolumnref(SS_CUSTOMER_SK#8564), oracolumnref(SS_CDEMO_SK#8565), oracolumnref(SS_HDEMO_SK#8566), oracolumnref(SS_ADDR_SK#8567), oracolumnref(SS_STORE_SK#8568), oracolumnref(SS_PROMO_SK#8569), oracolumnref(SS_TICKET_NUMBER#8570), oracolumnref(SS_QUANTITY#8571), oracolumnref(SS_WHOLESALE_COST#8572), oracolumnref(SS_LIST_PRICE#8573), oracolumnref(SS_SALES_PRICE#8574), oracolumnref(SS_EXT_DISCOUNT_AMT#8575), oracolumnref(SS_EXT_SALES_PRICE#8576), oracolumnref(SS_EXT_WHOLESALE_COST#8577), oracolumnref(SS_EXT_LIST_PRICE#8578), oracolumnref(SS_EXT_TAX#8579), oracolumnref(SS_COUPON_AMT#8580), oracolumnref(SS_NET_PAID#8581), oracolumnref(SS_NET_PAID_INC_TAX#8582), oracolumnref(SS_NET_PROFIT#8583), oracolumnref(SS_SOLD_DATE_SK#8584)]
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_SOLD_TIME_SK:decimal(38,18),SS_ITEM_SK:decimal(38,18),SS_CUSTOMER_SK:decimal(38,18),SS_CDEMO_SK:decimal(38,18),SS_HDEMO_SK:decimal(38,18),SS_ADDR_SK:decimal(38,18),SS_STORE_SK:decimal(38,18),SS_PROMO_SK:decimal(38,18),SS_TICKET_NUMBER:decimal(38,18),SS_QUANTITY:decimal(38,18),SS_WHOLESALE_COST:decimal(38,18),SS_LIST_PRICE:decimal(38,18),SS_SALES_PRICE:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18),SS_EXT_SALES_PRICE:decimal(38,18),SS_EXT_WHOLESALE_COST:decimal(38,18),SS_EXT_LIST_PRICE:decimal(38,18),SS_EXT_TAX:decimal(38,18),SS_COUPON_AMT:decimal(38,18),SS_NET_PAID:decimal(38,18),SS_NET_PAID_INC_TAX:decimal(38,18),SS_NET_PROFIT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_SOLD_TIME_SK", "SS_ITEM_SK", "SS_CUSTOMER_SK", "SS_CDEMO_SK", "SS_HDEMO_SK", "SS_ADDR_SK", "SS_STORE_SK", "SS_PROMO_SK", "SS_TICKET_NUMBER", "SS_QUANTITY", "SS_WHOLESALE_COST", "SS_LIST_PRICE", "SS_SALES_PRICE", "SS_EXT_DISCOUNT_AMT", "SS_EXT_SALES_PRICE", "SS_EXT_WHOLESALE_COST", "SS_EXT_LIST_PRICE", "SS_EXT_TAX", "SS_COUPON_AMT", "SS_NET_PAID", "SS_NET_PAID_INC_TAX", "SS_NET_PROFIT", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_SOLD_DATE_SK" IS NOT NULL
(5) Project [codegen id : 2]
Output [2]: [SS_SOLD_DATE_SK#8373, SS_CUSTOMER_SK#8376]
Input [23]: [SS_SOLD_TIME_SK#8374, SS_ITEM_SK#8375, SS_CUSTOMER_SK#8376, SS_CDEMO_SK#8377, SS_HDEMO_SK#8378, SS_ADDR_SK#8379, SS_STORE_SK#8380, SS_PROMO_SK#8381, SS_TICKET_NUMBER#8382, SS_QUANTITY#8383, SS_WHOLESALE_COST#8384, SS_LIST_PRICE#8385, SS_SALES_PRICE#8386, SS_EXT_DISCOUNT_AMT#8387, SS_EXT_SALES_PRICE#8388, SS_EXT_WHOLESALE_COST#8389, SS_EXT_LIST_PRICE#8390, SS_EXT_TAX#8391, SS_COUPON_AMT#8392, SS_NET_PAID#8393, SS_NET_PAID_INC_TAX#8394, SS_NET_PROFIT#8395, SS_SOLD_DATE_SK#8373]
(6) Sort [codegen id : 2]
Input [2]: [SS_SOLD_DATE_SK#8373, SS_CUSTOMER_SK#8376]
Arguments: [ss_sold_date_sk#8373 ASC NULLS FIRST], false, 0
(7) BatchScan
Output [28]: [D_DATE_SK#8396, D_DATE_ID#8397, D_DATE#8398, D_MONTH_SEQ#8399, D_WEEK_SEQ#8400, D_QUARTER_SEQ#8401, D_YEAR#8402, D_DOW#8403, D_MOY#8404, D_DOM#8405, D_QOY#8406, D_FY_YEAR#8407, D_FY_QUARTER_SEQ#8408, D_FY_WEEK_SEQ#8409, D_DAY_NAME#8410, D_QUARTER_NAME#8411, D_HOLIDAY#8412, D_WEEKEND#8413, D_FOLLOWING_HOLIDAY#8414, D_FIRST_DOM#8415, D_LAST_DOM#8416, D_SAME_DAY_LY#8417, D_SAME_DAY_LQ#8418, D_CURRENT_DAY#8419, D_CURRENT_WEEK#8420, D_CURRENT_MONTH#8421, D_CURRENT_QUARTER#8422, D_CURRENT_YEAR#8423]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#8608, D_DATE_ID#8609, D_DATE#8610, D_MONTH_SEQ#8611, D_WEEK_SEQ#8612, D_QUARTER_SEQ#8613, D_YEAR#8614, D_DOW#8615, D_MOY#8616, D_DOM#8617, D_QOY#8618, D_FY_YEAR#8619, D_FY_QUARTER_SEQ#8620, D_FY_WEEK_SEQ#8621, D_DAY_NAME#8622, D_QUARTER_NAME#8623, D_HOLIDAY#8624, D_WEEKEND#8625, D_FOLLOWING_HOLIDAY#8626, D_FIRST_DOM#8627, D_LAST_DOM#8628, D_SAME_DAY_LY#8629, D_SAME_DAY_LQ#8630, D_CURRENT_DAY#8631, ... 4 more fields], [oracolumnref(D_DATE_SK#8608), oracolumnref(D_DATE_ID#8609), oracolumnref(D_DATE#8610), oracolumnref(D_MONTH_SEQ#8611), oracolumnref(D_WEEK_SEQ#8612), oracolumnref(D_QUARTER_SEQ#8613), oracolumnref(D_YEAR#8614), oracolumnref(D_DOW#8615), oracolumnref(D_MOY#8616), oracolumnref(D_DOM#8617), oracolumnref(D_QOY#8618), oracolumnref(D_FY_YEAR#8619), oracolumnref(D_FY_QUARTER_SEQ#8620), oracolumnref(D_FY_WEEK_SEQ#8621), oracolumnref(D_DAY_NAME#8622), oracolumnref(D_QUARTER_NAME#8623), oracolumnref(D_HOLIDAY#8624), oracolumnref(D_WEEKEND#8625), oracolumnref(D_FOLLOWING_HOLIDAY#8626), oracolumnref(D_FIRST_DOM#8627), oracolumnref(D_LAST_DOM#8628), oracolumnref(D_SAME_DAY_LY#8629), oracolumnref(D_SAME_DAY_LQ#8630), oracolumnref(D_CURRENT_DAY#8631), ... 4 more fields], orabinaryopexpression(((((isnotnull(D_YEAR#8402) AND isnotnull(D_MOY#8404)) AND (D_YEAR#8402 = 2002.000000000000000000)) AND (D_MOY#8404 >= 1.000000000000000000)) AND (D_MOY#8404 <= 4.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_DATE_ID:string,D_DATE:date,D_MONTH_SEQ:decimal(38,18),D_WEEK_SEQ:decimal(38,18),D_QUARTER_SEQ:decimal(38,18),D_YEAR:decimal(38,18),D_DOW:decimal(38,18),D_MOY:decimal(38,18),D_DOM:decimal(38,18),D_QOY:decimal(38,18),D_FY_YEAR:decimal(38,18),D_FY_QUARTER_SEQ:decimal(38,18),D_FY_WEEK_SEQ:decimal(38,18),D_DAY_NAME:string,D_QUARTER_NAME:string,D_HOLIDAY:string,D_WEEKEND:string,D_FOLLOWING_HOLIDAY:string,D_FIRST_DOM:decimal(38,18),D_LAST_DOM:decimal(38,18),D_SAME_DAY_LY:decimal(38,18),D_SAME_DAY_LQ:decimal(38,18),D_CURRENT_DAY:string,D_CURRENT_WEEK:string,D_CURRENT_MONTH:string,D_CURRENT_QUARTER:string,D_CURRENT_YEAR:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000, 1.000000000000000000, 4.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_DATE_ID", "D_DATE", "D_MONTH_SEQ", "D_WEEK_SEQ", "D_QUARTER_SEQ", "D_YEAR", "D_DOW", "D_MOY", "D_DOM", "D_QOY", "D_FY_YEAR", "D_FY_QUARTER_SEQ", "D_FY_WEEK_SEQ", "D_DAY_NAME", "D_QUARTER_NAME", "D_HOLIDAY", "D_WEEKEND", "D_FOLLOWING_HOLIDAY", "D_FIRST_DOM", "D_LAST_DOM", "D_SAME_DAY_LY", "D_SAME_DAY_LQ", "D_CURRENT_DAY", "D_CURRENT_WEEK", "D_CURRENT_MONTH", "D_CURRENT_QUARTER", "D_CURRENT_YEAR"
from TPCDS.DATE_DIM
where (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = ?)) AND ("D_MOY" >= ?)) AND ("D_MOY" <= ?))
(8) Filter [codegen id : 3]
Input [28]: [D_DATE_SK#8396, D_DATE_ID#8397, D_DATE#8398, D_MONTH_SEQ#8399, D_WEEK_SEQ#8400, D_QUARTER_SEQ#8401, D_YEAR#8402, D_DOW#8403, D_MOY#8404, D_DOM#8405, D_QOY#8406, D_FY_YEAR#8407, D_FY_QUARTER_SEQ#8408, D_FY_WEEK_SEQ#8409, D_DAY_NAME#8410, D_QUARTER_NAME#8411, D_HOLIDAY#8412, D_WEEKEND#8413, D_FOLLOWING_HOLIDAY#8414, D_FIRST_DOM#8415, D_LAST_DOM#8416, D_SAME_DAY_LY#8417, D_SAME_DAY_LQ#8418, D_CURRENT_DAY#8419, D_CURRENT_WEEK#8420, D_CURRENT_MONTH#8421, D_CURRENT_QUARTER#8422, D_CURRENT_YEAR#8423]
Condition : ((((isnotnull(D_YEAR#8402) AND isnotnull(D_MOY#8404)) AND (D_YEAR#8402 = 2002.000000000000000000)) AND (D_MOY#8404 >= 1.000000000000000000)) AND (D_MOY#8404 <= 4.000000000000000000))
(9) Project [codegen id : 3]
Output [1]: [D_DATE_SK#8396]
Input [28]: [D_DATE_SK#8396, D_DATE_ID#8397, D_DATE#8398, D_MONTH_SEQ#8399, D_WEEK_SEQ#8400, D_QUARTER_SEQ#8401, D_YEAR#8402, D_DOW#8403, D_MOY#8404, D_DOM#8405, D_QOY#8406, D_FY_YEAR#8407, D_FY_QUARTER_SEQ#8408, D_FY_WEEK_SEQ#8409, D_DAY_NAME#8410, D_QUARTER_NAME#8411, D_HOLIDAY#8412, D_WEEKEND#8413, D_FOLLOWING_HOLIDAY#8414, D_FIRST_DOM#8415, D_LAST_DOM#8416, D_SAME_DAY_LY#8417, D_SAME_DAY_LQ#8418, D_CURRENT_DAY#8419, D_CURRENT_WEEK#8420, D_CURRENT_MONTH#8421, D_CURRENT_QUARTER#8422, D_CURRENT_YEAR#8423]
(10) Sort [codegen id : 3]
Input [1]: [D_DATE_SK#8396]
Arguments: [d_date_sk#8396 ASC NULLS FIRST], false, 0
(11) SortMergeJoin [codegen id : 4]
Left keys [1]: [ss_sold_date_sk#8373]
Right keys [1]: [d_date_sk#8396]
Join condition: None
(12) Project [codegen id : 4]
Output [1]: [SS_CUSTOMER_SK#8376]
Input [3]: [SS_SOLD_DATE_SK#8373, SS_CUSTOMER_SK#8376, D_DATE_SK#8396]
(13) Sort [codegen id : 4]
Input [1]: [SS_CUSTOMER_SK#8376]
Arguments: [ss_customer_sk#8376 ASC NULLS FIRST], false, 0
(14) SortMergeJoin
Left keys [1]: [C_CUSTOMER_SK#8327]
Right keys [1]: [ss_customer_sk#8376]
Join condition: None
(15) BatchScan
Output [34]: [WS_SOLD_TIME_SK#8425, WS_SHIP_DATE_SK#8426, WS_ITEM_SK#8427, WS_BILL_CUSTOMER_SK#8428, WS_BILL_CDEMO_SK#8429, WS_BILL_HDEMO_SK#8430, WS_BILL_ADDR_SK#8431, WS_SHIP_CUSTOMER_SK#8432, WS_SHIP_CDEMO_SK#8433, WS_SHIP_HDEMO_SK#8434, WS_SHIP_ADDR_SK#8435, WS_WEB_PAGE_SK#8436, WS_WEB_SITE_SK#8437, WS_SHIP_MODE_SK#8438, WS_WAREHOUSE_SK#8439, WS_PROMO_SK#8440, WS_ORDER_NUMBER#8441, WS_QUANTITY#8442, WS_WHOLESALE_COST#8443, WS_LIST_PRICE#8444, WS_SALES_PRICE#8445, WS_EXT_DISCOUNT_AMT#8446, WS_EXT_SALES_PRICE#8447, WS_EXT_WHOLESALE_COST#8448, WS_EXT_LIST_PRICE#8449, WS_EXT_TAX#8450, WS_COUPON_AMT#8451, WS_EXT_SHIP_COST#8452, WS_NET_PAID#8453, WS_NET_PAID_INC_TAX#8454, WS_NET_PAID_INC_SHIP#8455, WS_NET_PAID_INC_SHIP_TAX#8456, WS_NET_PROFIT#8457, WS_SOLD_DATE_SK#8424]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_SOLD_TIME_SK#8664, WS_SHIP_DATE_SK#8665, WS_ITEM_SK#8666, WS_BILL_CUSTOMER_SK#8667, WS_BILL_CDEMO_SK#8668, WS_BILL_HDEMO_SK#8669, WS_BILL_ADDR_SK#8670, WS_SHIP_CUSTOMER_SK#8671, WS_SHIP_CDEMO_SK#8672, WS_SHIP_HDEMO_SK#8673, WS_SHIP_ADDR_SK#8674, WS_WEB_PAGE_SK#8675, WS_WEB_SITE_SK#8676, WS_SHIP_MODE_SK#8677, WS_WAREHOUSE_SK#8678, WS_PROMO_SK#8679, WS_ORDER_NUMBER#8680, WS_QUANTITY#8681, WS_WHOLESALE_COST#8682, WS_LIST_PRICE#8683, WS_SALES_PRICE#8684, WS_EXT_DISCOUNT_AMT#8685, WS_EXT_SALES_PRICE#8686, WS_EXT_WHOLESALE_COST#8687, ... 10 more fields], [oracolumnref(WS_SOLD_TIME_SK#8664), oracolumnref(WS_SHIP_DATE_SK#8665), oracolumnref(WS_ITEM_SK#8666), oracolumnref(WS_BILL_CUSTOMER_SK#8667), oracolumnref(WS_BILL_CDEMO_SK#8668), oracolumnref(WS_BILL_HDEMO_SK#8669), oracolumnref(WS_BILL_ADDR_SK#8670), oracolumnref(WS_SHIP_CUSTOMER_SK#8671), oracolumnref(WS_SHIP_CDEMO_SK#8672), oracolumnref(WS_SHIP_HDEMO_SK#8673), oracolumnref(WS_SHIP_ADDR_SK#8674), oracolumnref(WS_WEB_PAGE_SK#8675), oracolumnref(WS_WEB_SITE_SK#8676), oracolumnref(WS_SHIP_MODE_SK#8677), oracolumnref(WS_WAREHOUSE_SK#8678), oracolumnref(WS_PROMO_SK#8679), oracolumnref(WS_ORDER_NUMBER#8680), oracolumnref(WS_QUANTITY#8681), oracolumnref(WS_WHOLESALE_COST#8682), oracolumnref(WS_LIST_PRICE#8683), oracolumnref(WS_SALES_PRICE#8684), oracolumnref(WS_EXT_DISCOUNT_AMT#8685), oracolumnref(WS_EXT_SALES_PRICE#8686), oracolumnref(WS_EXT_WHOLESALE_COST#8687), ... 10 more fields]
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_SOLD_TIME_SK:decimal(38,18),WS_SHIP_DATE_SK:decimal(38,18),WS_ITEM_SK:decimal(38,18),WS_BILL_CUSTOMER_SK:decimal(38,18),WS_BILL_CDEMO_SK:decimal(38,18),WS_BILL_HDEMO_SK:decimal(38,18),WS_BILL_ADDR_SK:decimal(38,18),WS_SHIP_CUSTOMER_SK:decimal(38,18),WS_SHIP_CDEMO_SK:decimal(38,18),WS_SHIP_HDEMO_SK:decimal(38,18),WS_SHIP_ADDR_SK:decimal(38,18),WS_WEB_PAGE_SK:decimal(38,18),WS_WEB_SITE_SK:decimal(38,18),WS_SHIP_MODE_SK:decimal(38,18),WS_WAREHOUSE_SK:decimal(38,18),WS_PROMO_SK:decimal(38,18),WS_ORDER_NUMBER:decimal(38,18),WS_QUANTITY:decimal(38,18),WS_WHOLESALE_COST:decimal(38,18),WS_LIST_PRICE:decimal(38,18),WS_SALES_PRICE:decimal(38,18),WS_EXT_DISCOUNT_AMT:decimal(38,18),WS_EXT_SALES_PRICE:decimal(38,18),WS_EXT_WHOLESALE_COST:decimal(38,18),WS_EXT_LIST_PRICE:decimal(38,18),WS_EXT_TAX:decimal(38,18),WS_COUPON_AMT:decimal(38,18),WS_EXT_SHIP_COST:decimal(38,18),WS_NET_PAID:decimal(38,18),WS_NET_PAID_INC_TAX:decimal(38,18),WS_NET_PAID_INC_SHIP:decimal(38,18),WS_NET_PAID_INC_SHIP_TAX:decimal(38,18),WS_NET_PROFIT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_SOLD_TIME_SK", "WS_SHIP_DATE_SK", "WS_ITEM_SK", "WS_BILL_CUSTOMER_SK", "WS_BILL_CDEMO_SK", "WS_BILL_HDEMO_SK", "WS_BILL_ADDR_SK", "WS_SHIP_CUSTOMER_SK", "WS_SHIP_CDEMO_SK", "WS_SHIP_HDEMO_SK", "WS_SHIP_ADDR_SK", "WS_WEB_PAGE_SK", "WS_WEB_SITE_SK", "WS_SHIP_MODE_SK", "WS_WAREHOUSE_SK", "WS_PROMO_SK", "WS_ORDER_NUMBER", "WS_QUANTITY", "WS_WHOLESALE_COST", "WS_LIST_PRICE", "WS_SALES_PRICE", "WS_EXT_DISCOUNT_AMT", "WS_EXT_SALES_PRICE", "WS_EXT_WHOLESALE_COST", "WS_EXT_LIST_PRICE", "WS_EXT_TAX", "WS_COUPON_AMT", "WS_EXT_SHIP_COST", "WS_NET_PAID", "WS_NET_PAID_INC_TAX", "WS_NET_PAID_INC_SHIP", "WS_NET_PAID_INC_SHIP_TAX", "WS_NET_PROFIT", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_SOLD_DATE_SK" IS NOT NULL
(16) Project [codegen id : 5]
Output [2]: [WS_SOLD_DATE_SK#8424, WS_BILL_CUSTOMER_SK#8428]
Input [34]: [WS_SOLD_TIME_SK#8425, WS_SHIP_DATE_SK#8426, WS_ITEM_SK#8427, WS_BILL_CUSTOMER_SK#8428, WS_BILL_CDEMO_SK#8429, WS_BILL_HDEMO_SK#8430, WS_BILL_ADDR_SK#8431, WS_SHIP_CUSTOMER_SK#8432, WS_SHIP_CDEMO_SK#8433, WS_SHIP_HDEMO_SK#8434, WS_SHIP_ADDR_SK#8435, WS_WEB_PAGE_SK#8436, WS_WEB_SITE_SK#8437, WS_SHIP_MODE_SK#8438, WS_WAREHOUSE_SK#8439, WS_PROMO_SK#8440, WS_ORDER_NUMBER#8441, WS_QUANTITY#8442, WS_WHOLESALE_COST#8443, WS_LIST_PRICE#8444, WS_SALES_PRICE#8445, WS_EXT_DISCOUNT_AMT#8446, WS_EXT_SALES_PRICE#8447, WS_EXT_WHOLESALE_COST#8448, WS_EXT_LIST_PRICE#8449, WS_EXT_TAX#8450, WS_COUPON_AMT#8451, WS_EXT_SHIP_COST#8452, WS_NET_PAID#8453, WS_NET_PAID_INC_TAX#8454, WS_NET_PAID_INC_SHIP#8455, WS_NET_PAID_INC_SHIP_TAX#8456, WS_NET_PROFIT#8457, WS_SOLD_DATE_SK#8424]
(17) Sort [codegen id : 5]
Input [2]: [WS_SOLD_DATE_SK#8424, WS_BILL_CUSTOMER_SK#8428]
Arguments: [ws_sold_date_sk#8424 ASC NULLS FIRST], false, 0
(18) BatchScan
Output [28]: [D_DATE_SK#8458, D_DATE_ID#8459, D_DATE#8460, D_MONTH_SEQ#8461, D_WEEK_SEQ#8462, D_QUARTER_SEQ#8463, D_YEAR#8464, D_DOW#8465, D_MOY#8466, D_DOM#8467, D_QOY#8468, D_FY_YEAR#8469, D_FY_QUARTER_SEQ#8470, D_FY_WEEK_SEQ#8471, D_DAY_NAME#8472, D_QUARTER_NAME#8473, D_HOLIDAY#8474, D_WEEKEND#8475, D_FOLLOWING_HOLIDAY#8476, D_FIRST_DOM#8477, D_LAST_DOM#8478, D_SAME_DAY_LY#8479, D_SAME_DAY_LQ#8480, D_CURRENT_DAY#8481, D_CURRENT_WEEK#8482, D_CURRENT_MONTH#8483, D_CURRENT_QUARTER#8484, D_CURRENT_YEAR#8485]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#8732, D_DATE_ID#8733, D_DATE#8734, D_MONTH_SEQ#8735, D_WEEK_SEQ#8736, D_QUARTER_SEQ#8737, D_YEAR#8738, D_DOW#8739, D_MOY#8740, D_DOM#8741, D_QOY#8742, D_FY_YEAR#8743, D_FY_QUARTER_SEQ#8744, D_FY_WEEK_SEQ#8745, D_DAY_NAME#8746, D_QUARTER_NAME#8747, D_HOLIDAY#8748, D_WEEKEND#8749, D_FOLLOWING_HOLIDAY#8750, D_FIRST_DOM#8751, D_LAST_DOM#8752, D_SAME_DAY_LY#8753, D_SAME_DAY_LQ#8754, D_CURRENT_DAY#8755, ... 4 more fields], [oracolumnref(D_DATE_SK#8732), oracolumnref(D_DATE_ID#8733), oracolumnref(D_DATE#8734), oracolumnref(D_MONTH_SEQ#8735), oracolumnref(D_WEEK_SEQ#8736), oracolumnref(D_QUARTER_SEQ#8737), oracolumnref(D_YEAR#8738), oracolumnref(D_DOW#8739), oracolumnref(D_MOY#8740), oracolumnref(D_DOM#8741), oracolumnref(D_QOY#8742), oracolumnref(D_FY_YEAR#8743), oracolumnref(D_FY_QUARTER_SEQ#8744), oracolumnref(D_FY_WEEK_SEQ#8745), oracolumnref(D_DAY_NAME#8746), oracolumnref(D_QUARTER_NAME#8747), oracolumnref(D_HOLIDAY#8748), oracolumnref(D_WEEKEND#8749), oracolumnref(D_FOLLOWING_HOLIDAY#8750), oracolumnref(D_FIRST_DOM#8751), oracolumnref(D_LAST_DOM#8752), oracolumnref(D_SAME_DAY_LY#8753), oracolumnref(D_SAME_DAY_LQ#8754), oracolumnref(D_CURRENT_DAY#8755), ... 4 more fields], orabinaryopexpression(((((isnotnull(D_YEAR#8464) AND isnotnull(D_MOY#8466)) AND (D_YEAR#8464 = 2002.000000000000000000)) AND (D_MOY#8466 >= 1.000000000000000000)) AND (D_MOY#8466 <= 4.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_DATE_ID:string,D_DATE:date,D_MONTH_SEQ:decimal(38,18),D_WEEK_SEQ:decimal(38,18),D_QUARTER_SEQ:decimal(38,18),D_YEAR:decimal(38,18),D_DOW:decimal(38,18),D_MOY:decimal(38,18),D_DOM:decimal(38,18),D_QOY:decimal(38,18),D_FY_YEAR:decimal(38,18),D_FY_QUARTER_SEQ:decimal(38,18),D_FY_WEEK_SEQ:decimal(38,18),D_DAY_NAME:string,D_QUARTER_NAME:string,D_HOLIDAY:string,D_WEEKEND:string,D_FOLLOWING_HOLIDAY:string,D_FIRST_DOM:decimal(38,18),D_LAST_DOM:decimal(38,18),D_SAME_DAY_LY:decimal(38,18),D_SAME_DAY_LQ:decimal(38,18),D_CURRENT_DAY:string,D_CURRENT_WEEK:string,D_CURRENT_MONTH:string,D_CURRENT_QUARTER:string,D_CURRENT_YEAR:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000, 1.000000000000000000, 4.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_DATE_ID", "D_DATE", "D_MONTH_SEQ", "D_WEEK_SEQ", "D_QUARTER_SEQ", "D_YEAR", "D_DOW", "D_MOY", "D_DOM", "D_QOY", "D_FY_YEAR", "D_FY_QUARTER_SEQ", "D_FY_WEEK_SEQ", "D_DAY_NAME", "D_QUARTER_NAME", "D_HOLIDAY", "D_WEEKEND", "D_FOLLOWING_HOLIDAY", "D_FIRST_DOM", "D_LAST_DOM", "D_SAME_DAY_LY", "D_SAME_DAY_LQ", "D_CURRENT_DAY", "D_CURRENT_WEEK", "D_CURRENT_MONTH", "D_CURRENT_QUARTER", "D_CURRENT_YEAR"
from TPCDS.DATE_DIM
where (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = ?)) AND ("D_MOY" >= ?)) AND ("D_MOY" <= ?))
(19) Filter [codegen id : 6]
Input [28]: [D_DATE_SK#8458, D_DATE_ID#8459, D_DATE#8460, D_MONTH_SEQ#8461, D_WEEK_SEQ#8462, D_QUARTER_SEQ#8463, D_YEAR#8464, D_DOW#8465, D_MOY#8466, D_DOM#8467, D_QOY#8468, D_FY_YEAR#8469, D_FY_QUARTER_SEQ#8470, D_FY_WEEK_SEQ#8471, D_DAY_NAME#8472, D_QUARTER_NAME#8473, D_HOLIDAY#8474, D_WEEKEND#8475, D_FOLLOWING_HOLIDAY#8476, D_FIRST_DOM#8477, D_LAST_DOM#8478, D_SAME_DAY_LY#8479, D_SAME_DAY_LQ#8480, D_CURRENT_DAY#8481, D_CURRENT_WEEK#8482, D_CURRENT_MONTH#8483, D_CURRENT_QUARTER#8484, D_CURRENT_YEAR#8485]
Condition : ((((isnotnull(D_YEAR#8464) AND isnotnull(D_MOY#8466)) AND (D_YEAR#8464 = 2002.000000000000000000)) AND (D_MOY#8466 >= 1.000000000000000000)) AND (D_MOY#8466 <= 4.000000000000000000))
(20) Project [codegen id : 6]
Output [1]: [D_DATE_SK#8458]
Input [28]: [D_DATE_SK#8458, D_DATE_ID#8459, D_DATE#8460, D_MONTH_SEQ#8461, D_WEEK_SEQ#8462, D_QUARTER_SEQ#8463, D_YEAR#8464, D_DOW#8465, D_MOY#8466, D_DOM#8467, D_QOY#8468, D_FY_YEAR#8469, D_FY_QUARTER_SEQ#8470, D_FY_WEEK_SEQ#8471, D_DAY_NAME#8472, D_QUARTER_NAME#8473, D_HOLIDAY#8474, D_WEEKEND#8475, D_FOLLOWING_HOLIDAY#8476, D_FIRST_DOM#8477, D_LAST_DOM#8478, D_SAME_DAY_LY#8479, D_SAME_DAY_LQ#8480, D_CURRENT_DAY#8481, D_CURRENT_WEEK#8482, D_CURRENT_MONTH#8483, D_CURRENT_QUARTER#8484, D_CURRENT_YEAR#8485]
(21) Sort [codegen id : 6]
Input [1]: [D_DATE_SK#8458]
Arguments: [d_date_sk#8458 ASC NULLS FIRST], false, 0
(22) SortMergeJoin [codegen id : 7]
Left keys [1]: [ws_sold_date_sk#8424]
Right keys [1]: [d_date_sk#8458]
Join condition: None
(23) Project [codegen id : 7]
Output [1]: [WS_BILL_CUSTOMER_SK#8428]
Input [3]: [WS_SOLD_DATE_SK#8424, WS_BILL_CUSTOMER_SK#8428, D_DATE_SK#8458]
(24) Sort [codegen id : 7]
Input [1]: [WS_BILL_CUSTOMER_SK#8428]
Arguments: [ws_bill_customer_sk#8428 ASC NULLS FIRST], false, 0
(25) SortMergeJoin
Left keys [1]: [C_CUSTOMER_SK#8327]
Right keys [1]: [ws_bill_customer_sk#8428]
Join condition: None
(26) BatchScan
Output [34]: [CS_SOLD_TIME_SK#8487, CS_SHIP_DATE_SK#8488, CS_BILL_CUSTOMER_SK#8489, CS_BILL_CDEMO_SK#8490, CS_BILL_HDEMO_SK#8491, CS_BILL_ADDR_SK#8492, CS_SHIP_CUSTOMER_SK#8493, CS_SHIP_CDEMO_SK#8494, CS_SHIP_HDEMO_SK#8495, CS_SHIP_ADDR_SK#8496, CS_CALL_CENTER_SK#8497, CS_CATALOG_PAGE_SK#8498, CS_SHIP_MODE_SK#8499, CS_WAREHOUSE_SK#8500, CS_ITEM_SK#8501, CS_PROMO_SK#8502, CS_ORDER_NUMBER#8503, CS_QUANTITY#8504, CS_WHOLESALE_COST#8505, CS_LIST_PRICE#8506, CS_SALES_PRICE#8507, CS_EXT_DISCOUNT_AMT#8508, CS_EXT_SALES_PRICE#8509, CS_EXT_WHOLESALE_COST#8510, CS_EXT_LIST_PRICE#8511, CS_EXT_TAX#8512, CS_COUPON_AMT#8513, CS_EXT_SHIP_COST#8514, CS_NET_PAID#8515, CS_NET_PAID_INC_TAX#8516, CS_NET_PAID_INC_SHIP#8517, CS_NET_PAID_INC_SHIP_TAX#8518, CS_NET_PROFIT#8519, CS_SOLD_DATE_SK#8486]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CATALOG_SALES, [CS_SOLD_TIME_SK#8788, CS_SHIP_DATE_SK#8789, CS_BILL_CUSTOMER_SK#8790, CS_BILL_CDEMO_SK#8791, CS_BILL_HDEMO_SK#8792, CS_BILL_ADDR_SK#8793, CS_SHIP_CUSTOMER_SK#8794, CS_SHIP_CDEMO_SK#8795, CS_SHIP_HDEMO_SK#8796, CS_SHIP_ADDR_SK#8797, CS_CALL_CENTER_SK#8798, CS_CATALOG_PAGE_SK#8799, CS_SHIP_MODE_SK#8800, CS_WAREHOUSE_SK#8801, CS_ITEM_SK#8802, CS_PROMO_SK#8803, CS_ORDER_NUMBER#8804, CS_QUANTITY#8805, CS_WHOLESALE_COST#8806, CS_LIST_PRICE#8807, CS_SALES_PRICE#8808, CS_EXT_DISCOUNT_AMT#8809, CS_EXT_SALES_PRICE#8810, CS_EXT_WHOLESALE_COST#8811, ... 10 more fields], [oracolumnref(CS_SOLD_TIME_SK#8788), oracolumnref(CS_SHIP_DATE_SK#8789), oracolumnref(CS_BILL_CUSTOMER_SK#8790), oracolumnref(CS_BILL_CDEMO_SK#8791), oracolumnref(CS_BILL_HDEMO_SK#8792), oracolumnref(CS_BILL_ADDR_SK#8793), oracolumnref(CS_SHIP_CUSTOMER_SK#8794), oracolumnref(CS_SHIP_CDEMO_SK#8795), oracolumnref(CS_SHIP_HDEMO_SK#8796), oracolumnref(CS_SHIP_ADDR_SK#8797), oracolumnref(CS_CALL_CENTER_SK#8798), oracolumnref(CS_CATALOG_PAGE_SK#8799), oracolumnref(CS_SHIP_MODE_SK#8800), oracolumnref(CS_WAREHOUSE_SK#8801), oracolumnref(CS_ITEM_SK#8802), oracolumnref(CS_PROMO_SK#8803), oracolumnref(CS_ORDER_NUMBER#8804), oracolumnref(CS_QUANTITY#8805), oracolumnref(CS_WHOLESALE_COST#8806), oracolumnref(CS_LIST_PRICE#8807), oracolumnref(CS_SALES_PRICE#8808), oracolumnref(CS_EXT_DISCOUNT_AMT#8809), oracolumnref(CS_EXT_SALES_PRICE#8810), oracolumnref(CS_EXT_WHOLESALE_COST#8811), ... 10 more fields]
PartitionSchema: struct<CS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<CS_SOLD_TIME_SK:decimal(38,18),CS_SHIP_DATE_SK:decimal(38,18),CS_BILL_CUSTOMER_SK:decimal(38,18),CS_BILL_CDEMO_SK:decimal(38,18),CS_BILL_HDEMO_SK:decimal(38,18),CS_BILL_ADDR_SK:decimal(38,18),CS_SHIP_CUSTOMER_SK:decimal(38,18),CS_SHIP_CDEMO_SK:decimal(38,18),CS_SHIP_HDEMO_SK:decimal(38,18),CS_SHIP_ADDR_SK:decimal(38,18),CS_CALL_CENTER_SK:decimal(38,18),CS_CATALOG_PAGE_SK:decimal(38,18),CS_SHIP_MODE_SK:decimal(38,18),CS_WAREHOUSE_SK:decimal(38,18),CS_ITEM_SK:decimal(38,18),CS_PROMO_SK:decimal(38,18),CS_ORDER_NUMBER:decimal(38,18),CS_QUANTITY:decimal(38,18),CS_WHOLESALE_COST:decimal(38,18),CS_LIST_PRICE:decimal(38,18),CS_SALES_PRICE:decimal(38,18),CS_EXT_DISCOUNT_AMT:decimal(38,18),CS_EXT_SALES_PRICE:decimal(38,18),CS_EXT_WHOLESALE_COST:decimal(38,18),CS_EXT_LIST_PRICE:decimal(38,18),CS_EXT_TAX:decimal(38,18),CS_COUPON_AMT:decimal(38,18),CS_EXT_SHIP_COST:decimal(38,18),CS_NET_PAID:decimal(38,18),CS_NET_PAID_INC_TAX:decimal(38,18),CS_NET_PAID_INC_SHIP:decimal(38,18),CS_NET_PAID_INC_SHIP_TAX:decimal(38,18),CS_NET_PROFIT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CS_SOLD_TIME_SK", "CS_SHIP_DATE_SK", "CS_BILL_CUSTOMER_SK", "CS_BILL_CDEMO_SK", "CS_BILL_HDEMO_SK", "CS_BILL_ADDR_SK", "CS_SHIP_CUSTOMER_SK", "CS_SHIP_CDEMO_SK", "CS_SHIP_HDEMO_SK", "CS_SHIP_ADDR_SK", "CS_CALL_CENTER_SK", "CS_CATALOG_PAGE_SK", "CS_SHIP_MODE_SK", "CS_WAREHOUSE_SK", "CS_ITEM_SK", "CS_PROMO_SK", "CS_ORDER_NUMBER", "CS_QUANTITY", "CS_WHOLESALE_COST", "CS_LIST_PRICE", "CS_SALES_PRICE", "CS_EXT_DISCOUNT_AMT", "CS_EXT_SALES_PRICE", "CS_EXT_WHOLESALE_COST", "CS_EXT_LIST_PRICE", "CS_EXT_TAX", "CS_COUPON_AMT", "CS_EXT_SHIP_COST", "CS_NET_PAID", "CS_NET_PAID_INC_TAX", "CS_NET_PAID_INC_SHIP", "CS_NET_PAID_INC_SHIP_TAX", "CS_NET_PROFIT", "CS_SOLD_DATE_SK"
from TPCDS.CATALOG_SALES
where "CS_SOLD_DATE_SK" IS NOT NULL
(27) Project [codegen id : 8]
Output [2]: [CS_SOLD_DATE_SK#8486, CS_SHIP_CUSTOMER_SK#8493]
Input [34]: [CS_SOLD_TIME_SK#8487, CS_SHIP_DATE_SK#8488, CS_BILL_CUSTOMER_SK#8489, CS_BILL_CDEMO_SK#8490, CS_BILL_HDEMO_SK#8491, CS_BILL_ADDR_SK#8492, CS_SHIP_CUSTOMER_SK#8493, CS_SHIP_CDEMO_SK#8494, CS_SHIP_HDEMO_SK#8495, CS_SHIP_ADDR_SK#8496, CS_CALL_CENTER_SK#8497, CS_CATALOG_PAGE_SK#8498, CS_SHIP_MODE_SK#8499, CS_WAREHOUSE_SK#8500, CS_ITEM_SK#8501, CS_PROMO_SK#8502, CS_ORDER_NUMBER#8503, CS_QUANTITY#8504, CS_WHOLESALE_COST#8505, CS_LIST_PRICE#8506, CS_SALES_PRICE#8507, CS_EXT_DISCOUNT_AMT#8508, CS_EXT_SALES_PRICE#8509, CS_EXT_WHOLESALE_COST#8510, CS_EXT_LIST_PRICE#8511, CS_EXT_TAX#8512, CS_COUPON_AMT#8513, CS_EXT_SHIP_COST#8514, CS_NET_PAID#8515, CS_NET_PAID_INC_TAX#8516, CS_NET_PAID_INC_SHIP#8517, CS_NET_PAID_INC_SHIP_TAX#8518, CS_NET_PROFIT#8519, CS_SOLD_DATE_SK#8486]
(28) Sort [codegen id : 8]
Input [2]: [CS_SOLD_DATE_SK#8486, CS_SHIP_CUSTOMER_SK#8493]
Arguments: [cs_sold_date_sk#8486 ASC NULLS FIRST], false, 0
(29) BatchScan
Output [28]: [D_DATE_SK#8520, D_DATE_ID#8521, D_DATE#8522, D_MONTH_SEQ#8523, D_WEEK_SEQ#8524, D_QUARTER_SEQ#8525, D_YEAR#8526, D_DOW#8527, D_MOY#8528, D_DOM#8529, D_QOY#8530, D_FY_YEAR#8531, D_FY_QUARTER_SEQ#8532, D_FY_WEEK_SEQ#8533, D_DAY_NAME#8534, D_QUARTER_NAME#8535, D_HOLIDAY#8536, D_WEEKEND#8537, D_FOLLOWING_HOLIDAY#8538, D_FIRST_DOM#8539, D_LAST_DOM#8540, D_SAME_DAY_LY#8541, D_SAME_DAY_LQ#8542, D_CURRENT_DAY#8543, D_CURRENT_WEEK#8544, D_CURRENT_MONTH#8545, D_CURRENT_QUARTER#8546, D_CURRENT_YEAR#8547]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#8856, D_DATE_ID#8857, D_DATE#8858, D_MONTH_SEQ#8859, D_WEEK_SEQ#8860, D_QUARTER_SEQ#8861, D_YEAR#8862, D_DOW#8863, D_MOY#8864, D_DOM#8865, D_QOY#8866, D_FY_YEAR#8867, D_FY_QUARTER_SEQ#8868, D_FY_WEEK_SEQ#8869, D_DAY_NAME#8870, D_QUARTER_NAME#8871, D_HOLIDAY#8872, D_WEEKEND#8873, D_FOLLOWING_HOLIDAY#8874, D_FIRST_DOM#8875, D_LAST_DOM#8876, D_SAME_DAY_LY#8877, D_SAME_DAY_LQ#8878, D_CURRENT_DAY#8879, ... 4 more fields], [oracolumnref(D_DATE_SK#8856), oracolumnref(D_DATE_ID#8857), oracolumnref(D_DATE#8858), oracolumnref(D_MONTH_SEQ#8859), oracolumnref(D_WEEK_SEQ#8860), oracolumnref(D_QUARTER_SEQ#8861), oracolumnref(D_YEAR#8862), oracolumnref(D_DOW#8863), oracolumnref(D_MOY#8864), oracolumnref(D_DOM#8865), oracolumnref(D_QOY#8866), oracolumnref(D_FY_YEAR#8867), oracolumnref(D_FY_QUARTER_SEQ#8868), oracolumnref(D_FY_WEEK_SEQ#8869), oracolumnref(D_DAY_NAME#8870), oracolumnref(D_QUARTER_NAME#8871), oracolumnref(D_HOLIDAY#8872), oracolumnref(D_WEEKEND#8873), oracolumnref(D_FOLLOWING_HOLIDAY#8874), oracolumnref(D_FIRST_DOM#8875), oracolumnref(D_LAST_DOM#8876), oracolumnref(D_SAME_DAY_LY#8877), oracolumnref(D_SAME_DAY_LQ#8878), oracolumnref(D_CURRENT_DAY#8879), ... 4 more fields], orabinaryopexpression(((((isnotnull(D_YEAR#8526) AND isnotnull(D_MOY#8528)) AND (D_YEAR#8526 = 2002.000000000000000000)) AND (D_MOY#8528 >= 1.000000000000000000)) AND (D_MOY#8528 <= 4.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_DATE_ID:string,D_DATE:date,D_MONTH_SEQ:decimal(38,18),D_WEEK_SEQ:decimal(38,18),D_QUARTER_SEQ:decimal(38,18),D_YEAR:decimal(38,18),D_DOW:decimal(38,18),D_MOY:decimal(38,18),D_DOM:decimal(38,18),D_QOY:decimal(38,18),D_FY_YEAR:decimal(38,18),D_FY_QUARTER_SEQ:decimal(38,18),D_FY_WEEK_SEQ:decimal(38,18),D_DAY_NAME:string,D_QUARTER_NAME:string,D_HOLIDAY:string,D_WEEKEND:string,D_FOLLOWING_HOLIDAY:string,D_FIRST_DOM:decimal(38,18),D_LAST_DOM:decimal(38,18),D_SAME_DAY_LY:decimal(38,18),D_SAME_DAY_LQ:decimal(38,18),D_CURRENT_DAY:string,D_CURRENT_WEEK:string,D_CURRENT_MONTH:string,D_CURRENT_QUARTER:string,D_CURRENT_YEAR:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000, 1.000000000000000000, 4.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_DATE_ID", "D_DATE", "D_MONTH_SEQ", "D_WEEK_SEQ", "D_QUARTER_SEQ", "D_YEAR", "D_DOW", "D_MOY", "D_DOM", "D_QOY", "D_FY_YEAR", "D_FY_QUARTER_SEQ", "D_FY_WEEK_SEQ", "D_DAY_NAME", "D_QUARTER_NAME", "D_HOLIDAY", "D_WEEKEND", "D_FOLLOWING_HOLIDAY", "D_FIRST_DOM", "D_LAST_DOM", "D_SAME_DAY_LY", "D_SAME_DAY_LQ", "D_CURRENT_DAY", "D_CURRENT_WEEK", "D_CURRENT_MONTH", "D_CURRENT_QUARTER", "D_CURRENT_YEAR"
from TPCDS.DATE_DIM
where (((("D_YEAR" IS NOT NULL AND "D_MOY" IS NOT NULL) AND ("D_YEAR" = ?)) AND ("D_MOY" >= ?)) AND ("D_MOY" <= ?))
(30) Filter [codegen id : 9]
Input [28]: [D_DATE_SK#8520, D_DATE_ID#8521, D_DATE#8522, D_MONTH_SEQ#8523, D_WEEK_SEQ#8524, D_QUARTER_SEQ#8525, D_YEAR#8526, D_DOW#8527, D_MOY#8528, D_DOM#8529, D_QOY#8530, D_FY_YEAR#8531, D_FY_QUARTER_SEQ#8532, D_FY_WEEK_SEQ#8533, D_DAY_NAME#8534, D_QUARTER_NAME#8535, D_HOLIDAY#8536, D_WEEKEND#8537, D_FOLLOWING_HOLIDAY#8538, D_FIRST_DOM#8539, D_LAST_DOM#8540, D_SAME_DAY_LY#8541, D_SAME_DAY_LQ#8542, D_CURRENT_DAY#8543, D_CURRENT_WEEK#8544, D_CURRENT_MONTH#8545, D_CURRENT_QUARTER#8546, D_CURRENT_YEAR#8547]
Condition : ((((isnotnull(D_YEAR#8526) AND isnotnull(D_MOY#8528)) AND (D_YEAR#8526 = 2002.000000000000000000)) AND (D_MOY#8528 >= 1.000000000000000000)) AND (D_MOY#8528 <= 4.000000000000000000))
(31) Project [codegen id : 9]
Output [1]: [D_DATE_SK#8520]
Input [28]: [D_DATE_SK#8520, D_DATE_ID#8521, D_DATE#8522, D_MONTH_SEQ#8523, D_WEEK_SEQ#8524, D_QUARTER_SEQ#8525, D_YEAR#8526, D_DOW#8527, D_MOY#8528, D_DOM#8529, D_QOY#8530, D_FY_YEAR#8531, D_FY_QUARTER_SEQ#8532, D_FY_WEEK_SEQ#8533, D_DAY_NAME#8534, D_QUARTER_NAME#8535, D_HOLIDAY#8536, D_WEEKEND#8537, D_FOLLOWING_HOLIDAY#8538, D_FIRST_DOM#8539, D_LAST_DOM#8540, D_SAME_DAY_LY#8541, D_SAME_DAY_LQ#8542, D_CURRENT_DAY#8543, D_CURRENT_WEEK#8544, D_CURRENT_MONTH#8545, D_CURRENT_QUARTER#8546, D_CURRENT_YEAR#8547]
(32) Sort [codegen id : 9]
Input [1]: [D_DATE_SK#8520]
Arguments: [d_date_sk#8520 ASC NULLS FIRST], false, 0
(33) SortMergeJoin [codegen id : 10]
Left keys [1]: [cs_sold_date_sk#8486]
Right keys [1]: [d_date_sk#8520]
Join condition: None
(34) Project [codegen id : 10]
Output [1]: [CS_SHIP_CUSTOMER_SK#8493]
Input [3]: [CS_SOLD_DATE_SK#8486, CS_SHIP_CUSTOMER_SK#8493, D_DATE_SK#8520]
(35) Sort [codegen id : 10]
Input [1]: [CS_SHIP_CUSTOMER_SK#8493]
Arguments: [cs_ship_customer_sk#8493 ASC NULLS FIRST], false, 0
(36) SortMergeJoin
Left keys [1]: [C_CUSTOMER_SK#8327]
Right keys [1]: [cs_ship_customer_sk#8493]
Join condition: None
(37) Filter [codegen id : 11]
Input [5]: [C_CUSTOMER_SK#8327, C_CURRENT_CDEMO_SK#8329, C_CURRENT_ADDR_SK#8331, exists#8940, exists#8941]
Condition : (exists#8940 OR exists#8941)
(38) Project [codegen id : 11]
Output [2]: [C_CURRENT_CDEMO_SK#8329, C_CURRENT_ADDR_SK#8331]
Input [5]: [C_CUSTOMER_SK#8327, C_CURRENT_CDEMO_SK#8329, C_CURRENT_ADDR_SK#8331, exists#8940, exists#8941]
(39) Sort [codegen id : 11]
Input [2]: [C_CURRENT_CDEMO_SK#8329, C_CURRENT_ADDR_SK#8331]
Arguments: [c_current_addr_sk#8331 ASC NULLS FIRST], false, 0
(40) BatchScan
Output [2]: [CA_ADDRESS_SK#8345, CA_COUNTY#8352]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ADDRESS_SK#8918, CA_COUNTY#8919], [oracolumnref(CA_ADDRESS_SK#8918), oracolumnref(CA_COUNTY#8919)], orain(CA_COUNTY#8352 IN (Rush County,Toole County,Jefferson County,Dona Ana County,La Porte County))
PartitionSchema: struct<>
ReadSchema: struct<CA_ADDRESS_SK:decimal(38,18),CA_COUNTY:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: Rush County, Toole County, Jefferson County, Dona Ana County, La Porte County
oraPushdownSQL: select "CA_ADDRESS_SK", "CA_COUNTY"
from TPCDS.CUSTOMER_ADDRESS
where "CA_COUNTY" IN ( ?, ?, ?, ?, ? )
(41) Filter [codegen id : 12]
Input [2]: [CA_ADDRESS_SK#8345, CA_COUNTY#8352]
Condition : CA_COUNTY#8352 IN (Rush County,Toole County,Jefferson County,Dona Ana County,La Porte County)
(42) Project [codegen id : 12]
Output [1]: [CA_ADDRESS_SK#8345]
Input [2]: [CA_ADDRESS_SK#8345, CA_COUNTY#8352]
(43) Sort [codegen id : 12]
Input [1]: [CA_ADDRESS_SK#8345]
Arguments: [ca_address_sk#8345 ASC NULLS FIRST], false, 0
(44) SortMergeJoin [codegen id : 13]
Left keys [1]: [c_current_addr_sk#8331]
Right keys [1]: [ca_address_sk#8345]
Join condition: None
(45) Project [codegen id : 13]
Output [1]: [C_CURRENT_CDEMO_SK#8329]
Input [3]: [C_CURRENT_CDEMO_SK#8329, C_CURRENT_ADDR_SK#8331, CA_ADDRESS_SK#8345]
(46) Sort [codegen id : 13]
Input [1]: [C_CURRENT_CDEMO_SK#8329]
Arguments: [c_current_cdemo_sk#8329 ASC NULLS FIRST], false, 0
(47) BatchScan
Output [9]: [CD_DEMO_SK#8358, CD_GENDER#8359, CD_MARITAL_STATUS#8360, CD_EDUCATION_STATUS#8361, CD_PURCHASE_ESTIMATE#8362, CD_CREDIT_RATING#8363, CD_DEP_COUNT#8364, CD_DEP_EMPLOYED_COUNT#8365, CD_DEP_COLLEGE_COUNT#8366]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER_DEMOGRAPHICS, [CD_DEMO_SK#8922, CD_GENDER#8923, CD_MARITAL_STATUS#8924, CD_EDUCATION_STATUS#8925, CD_PURCHASE_ESTIMATE#8926, CD_CREDIT_RATING#8927, CD_DEP_COUNT#8928, CD_DEP_EMPLOYED_COUNT#8929, CD_DEP_COLLEGE_COUNT#8930], [oracolumnref(CD_DEMO_SK#8922), oracolumnref(CD_GENDER#8923), oracolumnref(CD_MARITAL_STATUS#8924), oracolumnref(CD_EDUCATION_STATUS#8925), oracolumnref(CD_PURCHASE_ESTIMATE#8926), oracolumnref(CD_CREDIT_RATING#8927), oracolumnref(CD_DEP_COUNT#8928), oracolumnref(CD_DEP_EMPLOYED_COUNT#8929), oracolumnref(CD_DEP_COLLEGE_COUNT#8930)]
PartitionSchema: struct<>
ReadSchema: struct<CD_DEMO_SK:decimal(38,18),CD_GENDER:string,CD_MARITAL_STATUS:string,CD_EDUCATION_STATUS:string,CD_PURCHASE_ESTIMATE:decimal(38,18),CD_CREDIT_RATING:string,CD_DEP_COUNT:decimal(38,18),CD_DEP_EMPLOYED_COUNT:decimal(38,18),CD_DEP_COLLEGE_COUNT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "CD_DEMO_SK", "CD_GENDER", "CD_MARITAL_STATUS", "CD_EDUCATION_STATUS", "CD_PURCHASE_ESTIMATE", "CD_CREDIT_RATING", "CD_DEP_COUNT", "CD_DEP_EMPLOYED_COUNT", "CD_DEP_COLLEGE_COUNT"
from TPCDS.CUSTOMER_DEMOGRAPHICS
(48) Project [codegen id : 14]
Output [9]: [CD_DEMO_SK#8358, CD_GENDER#8359, CD_MARITAL_STATUS#8360, CD_EDUCATION_STATUS#8361, CD_PURCHASE_ESTIMATE#8362, CD_CREDIT_RATING#8363, CD_DEP_COUNT#8364, CD_DEP_EMPLOYED_COUNT#8365, CD_DEP_COLLEGE_COUNT#8366]
Input [9]: [CD_DEMO_SK#8358, CD_GENDER#8359, CD_MARITAL_STATUS#8360, CD_EDUCATION_STATUS#8361, CD_PURCHASE_ESTIMATE#8362, CD_CREDIT_RATING#8363, CD_DEP_COUNT#8364, CD_DEP_EMPLOYED_COUNT#8365, CD_DEP_COLLEGE_COUNT#8366]
(49) Sort [codegen id : 14]
Input [9]: [CD_DEMO_SK#8358, CD_GENDER#8359, CD_MARITAL_STATUS#8360, CD_EDUCATION_STATUS#8361, CD_PURCHASE_ESTIMATE#8362, CD_CREDIT_RATING#8363, CD_DEP_COUNT#8364, CD_DEP_EMPLOYED_COUNT#8365, CD_DEP_COLLEGE_COUNT#8366]
Arguments: [cd_demo_sk#8358 ASC NULLS FIRST], false, 0
(50) SortMergeJoin [codegen id : 15]
Left keys [1]: [c_current_cdemo_sk#8329]
Right keys [1]: [cd_demo_sk#8358]
Join condition: None
(51) Project [codegen id : 15]
Output [8]: [CD_GENDER#8359, CD_MARITAL_STATUS#8360, CD_EDUCATION_STATUS#8361, CD_PURCHASE_ESTIMATE#8362, CD_CREDIT_RATING#8363, CD_DEP_COUNT#8364, CD_DEP_EMPLOYED_COUNT#8365, CD_DEP_COLLEGE_COUNT#8366]
Input [10]: [C_CURRENT_CDEMO_SK#8329, CD_DEMO_SK#8358, CD_GENDER#8359, CD_MARITAL_STATUS#8360, CD_EDUCATION_STATUS#8361, CD_PURCHASE_ESTIMATE#8362, CD_CREDIT_RATING#8363, CD_DEP_COUNT#8364, CD_DEP_EMPLOYED_COUNT#8365, CD_DEP_COLLEGE_COUNT#8366]
(52) HashAggregate [codegen id : 15]
Input [8]: [CD_GENDER#8359, CD_MARITAL_STATUS#8360, CD_EDUCATION_STATUS#8361, CD_PURCHASE_ESTIMATE#8362, CD_CREDIT_RATING#8363, CD_DEP_COUNT#8364, CD_DEP_EMPLOYED_COUNT#8365, CD_DEP_COLLEGE_COUNT#8366]
Keys [8]: [cd_gender#8359, cd_marital_status#8360, cd_education_status#8361, cd_purchase_estimate#8362, cd_credit_rating#8363, cd_dep_count#8364, cd_dep_employed_count#8365, cd_dep_college_count#8366]
Functions [1]: [partial_count(1)]
Aggregate Attributes [1]: [count#8942L]
Results [9]: [cd_gender#8359, cd_marital_status#8360, cd_education_status#8361, cd_purchase_estimate#8362, cd_credit_rating#8363, cd_dep_count#8364, cd_dep_employed_count#8365, cd_dep_college_count#8366, count#8943L]
(53) HashAggregate [codegen id : 15]
Input [9]: [cd_gender#8359, cd_marital_status#8360, cd_education_status#8361, cd_purchase_estimate#8362, cd_credit_rating#8363, cd_dep_count#8364, cd_dep_employed_count#8365, cd_dep_college_count#8366, count#8943L]
Keys [8]: [cd_gender#8359, cd_marital_status#8360, cd_education_status#8361, cd_purchase_estimate#8362, cd_credit_rating#8363, cd_dep_count#8364, cd_dep_employed_count#8365, cd_dep_college_count#8366]
Functions [1]: [count(1)]
Aggregate Attributes [1]: [count(1)#8367L]
Results [14]: [cd_gender#8359, cd_marital_status#8360, cd_education_status#8361, count(1)#8367L AS cnt1#8321L, cd_purchase_estimate#8362, count(1)#8367L AS cnt2#8322L, cd_credit_rating#8363, count(1)#8367L AS cnt3#8323L, cd_dep_count#8364, count(1)#8367L AS cnt4#8324L, cd_dep_employed_count#8365, count(1)#8367L AS cnt5#8325L, cd_dep_college_count#8366, count(1)#8367L AS cnt6#8326L]
(54) TakeOrderedAndProject
Input [14]: [cd_gender#8359, cd_marital_status#8360, cd_education_status#8361, cnt1#8321L, cd_purchase_estimate#8362, cnt2#8322L, cd_credit_rating#8363, cnt3#8323L, cd_dep_count#8364, cnt4#8324L, cd_dep_employed_count#8365, cnt5#8325L, cd_dep_college_count#8366, cnt6#8326L]
Arguments: 100, [cd_gender#8359 ASC NULLS FIRST, cd_marital_status#8360 ASC NULLS FIRST, cd_education_status#8361 ASC NULLS FIRST, cd_purchase_estimate#8362 ASC NULLS FIRST, cd_credit_rating#8363 ASC NULLS FIRST, cd_dep_count#8364 ASC NULLS FIRST, cd_dep_employed_count#8365 ASC NULLS FIRST, cd_dep_college_count#8366 ASC NULLS FIRST], [cd_gender#8359, cd_marital_status#8360, cd_education_status#8361, cnt1#8321L, cd_purchase_estimate#8362, cnt2#8322L, cd_credit_rating#8363, cnt3#8323L, cd_dep_count#8364, cnt4#8324L, cd_dep_employed_count#8365, cnt5#8325L, cd_dep_college_count#8366, cnt6#8326L]
with year_total as (
select c_customer_id customer_id
,c_first_name customer_first_name
,c_last_name customer_last_name
,c_preferred_cust_flag customer_preferred_cust_flag
,c_birth_country customer_birth_country
,c_login customer_login
,c_email_address customer_email_address
,d_year dyear
,sum(ss_ext_list_price-ss_ext_discount_amt) year_total
,'s' sale_type
from customer
,store_sales
,date_dim
where c_customer_sk = ss_customer_sk
and ss_sold_date_sk = d_date_sk
group by c_customer_id
,c_first_name
,c_last_name
,c_preferred_cust_flag
,c_birth_country
,c_login
,c_email_address
,d_year
union all
select c_customer_id customer_id
,c_first_name customer_first_name
,c_last_name customer_last_name
,c_preferred_cust_flag customer_preferred_cust_flag
,c_birth_country customer_birth_country
,c_login customer_login
,c_email_address customer_email_address
,d_year dyear
,sum(ws_ext_list_price-ws_ext_discount_amt) year_total
,'w' sale_type
from customer
,web_sales
,date_dim
where c_customer_sk = ws_bill_customer_sk
and ws_sold_date_sk = d_date_sk
group by c_customer_id
,c_first_name
,c_last_name
,c_preferred_cust_flag
,c_birth_country
,c_login
,c_email_address
,d_year
)
select
t_s_secyear.customer_id
,t_s_secyear.customer_first_name
,t_s_secyear.customer_last_name
,t_s_secyear.customer_preferred_cust_flag
from year_total t_s_firstyear
,year_total t_s_secyear
,year_total t_w_firstyear
,year_total t_w_secyear
where t_s_secyear.customer_id = t_s_firstyear.customer_id
and t_s_firstyear.customer_id = t_w_secyear.customer_id
and t_s_firstyear.customer_id = t_w_firstyear.customer_id
and t_s_firstyear.sale_type = 's'
and t_w_firstyear.sale_type = 'w'
and t_s_secyear.sale_type = 's'
and t_w_secyear.sale_type = 'w'
and t_s_firstyear.dyear = 2001
and t_s_secyear.dyear = 2001+1
and t_w_firstyear.dyear = 2001
and t_w_secyear.dyear = 2001+1
and t_s_firstyear.year_total > 0
and t_w_firstyear.year_total > 0
and case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else 0.0 end
> case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else 0.0 end
order by t_s_secyear.customer_id
,t_s_secyear.customer_first_name
,t_s_secyear.customer_last_name
,t_s_secyear.customer_preferred_cust_flag
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [4]: [customer_id#11028, customer_first_name#11029, customer_last_name#11030, customer_preferred_cust_flag#11031]
OraPlan: 00 OraSingleQueryBlock [customer_id#11028, customer_first_name#11029, customer_last_name#11030, customer_preferred_cust_flag#11031], [oracolumnref(customer_id#11028), oracolumnref(customer_first_name#11029), oracolumnref(customer_last_name#11030), oracolumnref(customer_preferred_cust_flag#11031)], orabinaryopexpression((isnotnull(year_total#10412) AND (year_total#10412 > 0E-17)))
01 :- OraSingleQueryBlock [c_customer_id#10425 AS customer_id#10404, sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#10459 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#10456 as decimal(38,17)))), DecimalType(38,17), true)) AS year_total#10412], [oraalias(c_customer_id#10425 AS customer_id#10404), oraalias(sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#10459 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#10456 as decimal(38,17)))), DecimalType(38,17), true)) AS year_total#10412)], orabinaryopexpression((isnotnull(SS_CUSTOMER_SK#10445) AND (isnotnull(D_YEAR#10471) AND (D_YEAR#10471 = 2001.000000000000000000)))), List(oracolumnref(c_customer_id#10425), oracolumnref(c_first_name#10432), oracolumnref(c_last_name#10433), oracolumnref(c_preferred_cust_flag#10434), oracolumnref(c_birth_country#10438), oracolumnref(c_login#10439), oracolumnref(c_email_address#10440), oracolumnref(d_year#10471))
02 : :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#10424, C_CUSTOMER_ID#10425, C_FIRST_NAME#10432, C_LAST_NAME#10433, C_PREFERRED_CUST_FLAG#10434, C_BIRTH_COUNTRY#10438, C_LOGIN#10439, C_EMAIL_ADDRESS#10440]
03 : :- OraTableScan TPCDS.STORE_SALES, [SS_CUSTOMER_SK#10445, SS_EXT_DISCOUNT_AMT#10456, SS_EXT_LIST_PRICE#10459, SS_SOLD_DATE_SK#10442]
04 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#10465, D_YEAR#10471]
05 :- OraSingleQueryBlock [c_customer_id#10574 AS customer_id#11028, c_first_name#10581 AS customer_first_name#11029, c_last_name#10582 AS customer_last_name#11030, c_preferred_cust_flag#10583 AS customer_preferred_cust_flag#11031, sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#10608 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#10605 as decimal(38,17)))), DecimalType(38,17), true)) AS year_total#11036], [oraalias(c_customer_id#10574 AS customer_id#11028), oraalias(c_first_name#10581 AS customer_first_name#11029), oraalias(c_last_name#10582 AS customer_last_name#11030), oraalias(c_preferred_cust_flag#10583 AS customer_preferred_cust_flag#11031), oraalias(sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#10608 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#10605 as decimal(38,17)))), DecimalType(38,17), true)) AS year_total#11036)], orabinaryopexpression((isnotnull(SS_CUSTOMER_SK#10594) AND (isnotnull(D_YEAR#10620) AND (D_YEAR#10620 = 2002.000000000000000000)))), List(oracolumnref(c_customer_id#10574), oracolumnref(c_first_name#10581), oracolumnref(c_last_name#10582), oracolumnref(c_preferred_cust_flag#10583), oracolumnref(c_birth_country#10587), oracolumnref(c_login#10588), oracolumnref(c_email_address#10589), oracolumnref(d_year#10620))
06 : :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#10573, C_CUSTOMER_ID#10574, C_FIRST_NAME#10581, C_LAST_NAME#10582, C_PREFERRED_CUST_FLAG#10583, C_BIRTH_COUNTRY#10587, C_LOGIN#10588, C_EMAIL_ADDRESS#10589]
07 : :- OraTableScan TPCDS.STORE_SALES, [SS_CUSTOMER_SK#10594, SS_EXT_DISCOUNT_AMT#10605, SS_EXT_LIST_PRICE#10608, SS_SOLD_DATE_SK#10591]
08 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#10614, D_YEAR#10620]
09 :- OraSingleQueryBlock [customer_id#10414 AS customer_id#11038, year_total#10422 AS year_total#11046], [oraalias(customer_id#10414 AS customer_id#11038), oraalias(year_total#10422 AS year_total#11046)], orabinaryopexpression((isnotnull(year_total#10422) AND (year_total#10422 > 0E-17)))
10 : +- OraSingleQueryBlock [c_customer_id#10792 AS customer_id#10414, sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10834 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#10831 as decimal(38,17)))), DecimalType(38,17), true)) AS year_total#10422], [oraalias(c_customer_id#10792 AS customer_id#10414), oraalias(sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10834 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#10831 as decimal(38,17)))), DecimalType(38,17), true)) AS year_total#10422)], orabinaryopexpression((isnotnull(WS_BILL_CUSTOMER_SK#10813) AND (isnotnull(D_YEAR#10849) AND (D_YEAR#10849 = 2001.000000000000000000)))), List(oracolumnref(c_customer_id#10792), oracolumnref(c_first_name#10799), oracolumnref(c_last_name#10800), oracolumnref(c_preferred_cust_flag#10801), oracolumnref(c_birth_country#10805), oracolumnref(c_login#10806), oracolumnref(c_email_address#10807), oracolumnref(d_year#10849))
11 : :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#10791, C_CUSTOMER_ID#10792, C_FIRST_NAME#10799, C_LAST_NAME#10800, C_PREFERRED_CUST_FLAG#10801, C_BIRTH_COUNTRY#10805, C_LOGIN#10806, C_EMAIL_ADDRESS#10807]
12 : :- OraTableScan TPCDS.WEB_SALES, [WS_BILL_CUSTOMER_SK#10813, WS_EXT_DISCOUNT_AMT#10831, WS_EXT_LIST_PRICE#10834, WS_SOLD_DATE_SK#10809]
13 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#10843, D_YEAR#10849]
14 +- OraSingleQueryBlock [c_customer_id#10941 AS customer_id#11048, sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10983 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#10980 as decimal(38,17)))), DecimalType(38,17), true)) AS year_total#11056], [oraalias(c_customer_id#10941 AS customer_id#11048), oraalias(sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10983 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#10980 as decimal(38,17)))), DecimalType(38,17), true)) AS year_total#11056)], orabinaryopexpression((isnotnull(WS_BILL_CUSTOMER_SK#10962) AND (isnotnull(D_YEAR#10998) AND (D_YEAR#10998 = 2002.000000000000000000)))), List(oracolumnref(c_customer_id#10941), oracolumnref(c_first_name#10948), oracolumnref(c_last_name#10949), oracolumnref(c_preferred_cust_flag#10950), oracolumnref(c_birth_country#10954), oracolumnref(c_login#10955), oracolumnref(c_email_address#10956), oracolumnref(d_year#10998))
15 :- OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#10940, C_CUSTOMER_ID#10941, C_FIRST_NAME#10948, C_LAST_NAME#10949, C_PREFERRED_CUST_FLAG#10950, C_BIRTH_COUNTRY#10954, C_LOGIN#10955, C_EMAIL_ADDRESS#10956]
16 :- OraTableScan TPCDS.WEB_SALES, [WS_BILL_CUSTOMER_SK#10962, WS_EXT_DISCOUNT_AMT#10980, WS_EXT_LIST_PRICE#10983, WS_SOLD_DATE_SK#10958]
17 +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#10992, D_YEAR#10998]
ReadSchema: struct<customer_id:string,customer_first_name:string,customer_last_name:string,customer_preferred_cust_flag:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000, 2002.000000000000000000, 2001.000000000000000000, 0E-17, 2002.000000000000000000, 0E-17
oraPushdownSQL: select "sparkora_1"."customer_id", "customer_first_name", "customer_last_name", "customer_preferred_cust_flag"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM(("SS_EXT_LIST_PRICE" - "SS_EXT_DISCOUNT_AMT")) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where (("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_0" join ( select "C_CUSTOMER_ID" AS "customer_id", "C_FIRST_NAME" AS "customer_first_name", "C_LAST_NAME" AS "customer_last_name", "C_PREFERRED_CUST_FLAG" AS "customer_preferred_cust_flag", SUM(("SS_EXT_LIST_PRICE" - "SS_EXT_DISCOUNT_AMT")) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where (("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_1" on ("sparkora_0"."customer_id" = "sparkora_1"."customer_id") join ( select "customer_id" AS "customer_id", "year_total" AS "year_total"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM(("WS_EXT_LIST_PRICE" - "WS_EXT_DISCOUNT_AMT")) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.WEB_SALES on ("C_CUSTOMER_SK" = "WS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_BILL_CUSTOMER_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" )
where ("year_total" IS NOT NULL AND ("year_total" > ?)) ) "sparkora_2" on ("sparkora_0"."customer_id" = "sparkora_2"."customer_id") join ( select "C_CUSTOMER_ID" AS "customer_id", SUM(("WS_EXT_LIST_PRICE" - "WS_EXT_DISCOUNT_AMT")) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.WEB_SALES on ("C_CUSTOMER_SK" = "WS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_BILL_CUSTOMER_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_3" on (("sparkora_0"."customer_id" = "sparkora_3"."customer_id") AND (CASE WHEN ("sparkora_2"."year_total" > 0E-17) THEN ("sparkora_3"."year_total" / "sparkora_2"."year_total") ELSE 0.000000 END > CASE WHEN ("sparkora_0"."year_total" > 0E-17) THEN ("sparkora_1"."year_total" / "sparkora_0"."year_total") ELSE 0.000000 END))
where ("sparkora_0"."year_total" IS NOT NULL AND ("sparkora_0"."year_total" > ?))
(2) Project [codegen id : 1]
Output [4]: [customer_id#11028, customer_first_name#11029, customer_last_name#11030, customer_preferred_cust_flag#11031]
Input [4]: [customer_id#11028, customer_first_name#11029, customer_last_name#11030, customer_preferred_cust_flag#11031]
(3) TakeOrderedAndProject
Input [4]: [customer_id#11028, customer_first_name#11029, customer_last_name#11030, customer_preferred_cust_flag#11031]
Arguments: 100, [customer_id#11028 ASC NULLS FIRST, customer_first_name#11029 ASC NULLS FIRST, customer_last_name#11030 ASC NULLS FIRST, customer_preferred_cust_flag#11031 ASC NULLS FIRST], [customer_id#11028, customer_first_name#11029, customer_last_name#11030, customer_preferred_cust_flag#11031]
select "sparkora_1"."customer_id", "customer_first_name", "customer_last_name", "customer_preferred_cust_flag"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM(("SS_EXT_LIST_PRICE" - "SS_EXT_DISCOUNT_AMT")) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where (("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2001.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_0" join ( select "C_CUSTOMER_ID" AS "customer_id", "C_FIRST_NAME" AS "customer_first_name", "C_LAST_NAME" AS "customer_last_name", "C_PREFERRED_CUST_FLAG" AS "customer_preferred_cust_flag", SUM(("SS_EXT_LIST_PRICE" - "SS_EXT_DISCOUNT_AMT")) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.STORE_SALES on ("C_CUSTOMER_SK" = "SS_CUSTOMER_SK") join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK")
where (("SS_CUSTOMER_SK" IS NOT NULL AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2002.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_1" on ("sparkora_0"."customer_id" = "sparkora_1"."customer_id") join ( select "customer_id" AS "customer_id", "year_total" AS "year_total"
from ( select "C_CUSTOMER_ID" AS "customer_id", SUM(("WS_EXT_LIST_PRICE" - "WS_EXT_DISCOUNT_AMT")) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.WEB_SALES on ("C_CUSTOMER_SK" = "WS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_BILL_CUSTOMER_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2001.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" )
where ("year_total" IS NOT NULL AND ("year_total" > 0E-17)) ) "sparkora_2" on ("sparkora_0"."customer_id" = "sparkora_2"."customer_id") join ( select "C_CUSTOMER_ID" AS "customer_id", SUM(("WS_EXT_LIST_PRICE" - "WS_EXT_DISCOUNT_AMT")) AS "year_total"
from TPCDS.CUSTOMER join TPCDS.WEB_SALES on ("C_CUSTOMER_SK" = "WS_BILL_CUSTOMER_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_BILL_CUSTOMER_SK" IS NOT NULL AND "WS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2002.000000000000000000))) group by "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS", "D_YEAR" ) "sparkora_3" on (("sparkora_0"."customer_id" = "sparkora_3"."customer_id") AND (CASE WHEN ("sparkora_2"."year_total" > 0E-17) THEN ("sparkora_3"."year_total" / "sparkora_2"."year_total") ELSE 0.000000 END > CASE WHEN ("sparkora_0"."year_total" > 0E-17) THEN ("sparkora_1"."year_total" / "sparkora_0"."year_total") ELSE 0.000000 END))
where ("sparkora_0"."year_total" IS NOT NULL AND ("sparkora_0"."year_total" > 0E-17))
== Physical Plan ==
TakeOrderedAndProject (77)
+- * Project (76)
+- * SortMergeJoin Inner (75)
:- * Project (57)
: +- * SortMergeJoin Inner (56)
: :- * SortMergeJoin Inner (36)
: : :- * Sort (18)
: : : +- * Filter (17)
: : : +- * HashAggregate (16)
: : : +- * HashAggregate (15)
: : : +- * Project (14)
: : : +- * SortMergeJoin Inner (13)
: : : :- * Sort (9)
: : : : +- * Project (8)
: : : : +- * SortMergeJoin Inner (7)
: : : : :- * Sort (3)
: : : : : +- * Project (2)
: : : : : +- BatchScan (1)
: : : : +- * Sort (6)
: : : : +- * Filter (5)
: : : : +- BatchScan (4)
: : : +- * Sort (12)
: : : +- * Filter (11)
: : : +- BatchScan (10)
: : +- * Sort (35)
: : +- * HashAggregate (34)
: : +- * HashAggregate (33)
: : +- * Project (32)
: : +- * SortMergeJoin Inner (31)
: : :- * Sort (27)
: : : +- * Project (26)
: : : +- * SortMergeJoin Inner (25)
: : : :- * Sort (21)
: : : : +- * Project (20)
: : : : +- BatchScan (19)
: : : +- * Sort (24)
: : : +- * Filter (23)
: : : +- BatchScan (22)
: : +- * Sort (30)
: : +- * Filter (29)
: : +- BatchScan (28)
: +- * Sort (55)
: +- * Project (54)
: +- * Filter (53)
: +- * HashAggregate (52)
: +- * HashAggregate (51)
: +- * Project (50)
: +- * SortMergeJoin Inner (49)
: :- * Sort (45)
: : +- * Project (44)
: : +- * SortMergeJoin Inner (43)
: : :- * Sort (39)
: : : +- * Project (38)
: : : +- BatchScan (37)
: : +- * Sort (42)
: : +- * Filter (41)
: : +- BatchScan (40)
: +- * Sort (48)
: +- * Filter (47)
: +- BatchScan (46)
+- * Sort (74)
+- * HashAggregate (73)
+- * HashAggregate (72)
+- * Project (71)
+- * SortMergeJoin Inner (70)
:- * Sort (66)
: +- * Project (65)
: +- * SortMergeJoin Inner (64)
: :- * Sort (60)
: : +- * Project (59)
: : +- BatchScan (58)
: +- * Sort (63)
: +- * Filter (62)
: +- BatchScan (61)
+- * Sort (69)
+- * Filter (68)
+- BatchScan (67)
(1) BatchScan
Output [8]: [C_CUSTOMER_SK#9590, C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#10228, C_CUSTOMER_ID#10229, C_FIRST_NAME#10230, C_LAST_NAME#10231, C_PREFERRED_CUST_FLAG#10232, C_BIRTH_COUNTRY#10233, C_LOGIN#10234, C_EMAIL_ADDRESS#10235], [oracolumnref(C_CUSTOMER_SK#10228), oracolumnref(C_CUSTOMER_ID#10229), oracolumnref(C_FIRST_NAME#10230), oracolumnref(C_LAST_NAME#10231), oracolumnref(C_PREFERRED_CUST_FLAG#10232), oracolumnref(C_BIRTH_COUNTRY#10233), oracolumnref(C_LOGIN#10234), oracolumnref(C_EMAIL_ADDRESS#10235)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(2) Project [codegen id : 1]
Output [8]: [C_CUSTOMER_SK#9590, C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606]
Input [8]: [C_CUSTOMER_SK#9590, C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606]
(3) Sort [codegen id : 1]
Input [8]: [C_CUSTOMER_SK#9590, C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606]
Arguments: [c_customer_sk#9590 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [4]: [SS_CUSTOMER_SK#9611, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625, SS_SOLD_DATE_SK#9608]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_CUSTOMER_SK#10244, SS_EXT_DISCOUNT_AMT#10245, SS_EXT_LIST_PRICE#10246, SS_SOLD_DATE_SK#10247], [oracolumnref(SS_CUSTOMER_SK#10244), oracolumnref(SS_EXT_DISCOUNT_AMT#10245), oracolumnref(SS_EXT_LIST_PRICE#10246), oracolumnref(SS_SOLD_DATE_SK#10247)], orapostfixunaryopexpression(isnotnull(SS_CUSTOMER_SK#9611))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_CUSTOMER_SK:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18),SS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_CUSTOMER_SK", "SS_EXT_DISCOUNT_AMT", "SS_EXT_LIST_PRICE", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_CUSTOMER_SK" IS NOT NULL and "SS_SOLD_DATE_SK" IS NOT NULL
(5) Filter [codegen id : 2]
Input [4]: [SS_CUSTOMER_SK#9611, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625, SS_SOLD_DATE_SK#9608]
Condition : isnotnull(SS_CUSTOMER_SK#9611)
(6) Sort [codegen id : 2]
Input [4]: [SS_CUSTOMER_SK#9611, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625, SS_SOLD_DATE_SK#9608]
Arguments: [ss_customer_sk#9611 ASC NULLS FIRST], false, 0
(7) SortMergeJoin [codegen id : 3]
Left keys [1]: [c_customer_sk#9590]
Right keys [1]: [ss_customer_sk#9611]
Join condition: None
(8) Project [codegen id : 3]
Output [10]: [C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606, SS_SOLD_DATE_SK#9608, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625]
Input [12]: [C_CUSTOMER_SK#9590, C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606, SS_CUSTOMER_SK#9611, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625, SS_SOLD_DATE_SK#9608]
(9) Sort [codegen id : 3]
Input [10]: [C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606, SS_SOLD_DATE_SK#9608, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625]
Arguments: [ss_sold_date_sk#9608 ASC NULLS FIRST], false, 0
(10) BatchScan
Output [2]: [D_DATE_SK#9631, D_YEAR#9637]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#10252, D_YEAR#10253], [oracolumnref(D_DATE_SK#10252), oracolumnref(D_YEAR#10253)], orabinaryopexpression((isnotnull(D_YEAR#9637) AND (D_YEAR#9637 = 2001.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(11) Filter [codegen id : 4]
Input [2]: [D_DATE_SK#9631, D_YEAR#9637]
Condition : (isnotnull(D_YEAR#9637) AND (D_YEAR#9637 = 2001.000000000000000000))
(12) Sort [codegen id : 4]
Input [2]: [D_DATE_SK#9631, D_YEAR#9637]
Arguments: [d_date_sk#9631 ASC NULLS FIRST], false, 0
(13) SortMergeJoin [codegen id : 5]
Left keys [1]: [ss_sold_date_sk#9608]
Right keys [1]: [d_date_sk#9631]
Join condition: None
(14) Project [codegen id : 5]
Output [10]: [C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625, D_YEAR#9637]
Input [12]: [C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606, SS_SOLD_DATE_SK#9608, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625, D_DATE_SK#9631, D_YEAR#9637]
(15) HashAggregate [codegen id : 5]
Input [10]: [C_CUSTOMER_ID#9591, C_FIRST_NAME#9598, C_LAST_NAME#9599, C_PREFERRED_CUST_FLAG#9600, C_BIRTH_COUNTRY#9604, C_LOGIN#9605, C_EMAIL_ADDRESS#9606, SS_EXT_DISCOUNT_AMT#9622, SS_EXT_LIST_PRICE#9625, D_YEAR#9637]
Keys [8]: [c_customer_id#9591, c_first_name#9598, c_last_name#9599, c_preferred_cust_flag#9600, c_birth_country#9604, c_login#9605, c_email_address#9606, d_year#9637]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#9625 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#9622 as decimal(38,17)))), DecimalType(38,17), true))]
Aggregate Attributes [2]: [sum#10388, isEmpty#10389]
Results [10]: [c_customer_id#9591, c_first_name#9598, c_last_name#9599, c_preferred_cust_flag#9600, c_birth_country#9604, c_login#9605, c_email_address#9606, d_year#9637, sum#10390, isEmpty#10391]
(16) HashAggregate [codegen id : 5]
Input [10]: [c_customer_id#9591, c_first_name#9598, c_last_name#9599, c_preferred_cust_flag#9600, c_birth_country#9604, c_login#9605, c_email_address#9606, d_year#9637, sum#10390, isEmpty#10391]
Keys [8]: [c_customer_id#9591, c_first_name#9598, c_last_name#9599, c_preferred_cust_flag#9600, c_birth_country#9604, c_login#9605, c_email_address#9606, d_year#9637]
Functions [1]: [sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#9625 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#9622 as decimal(38,17)))), DecimalType(38,17), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#9625 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#9622 as decimal(38,17)))), DecimalType(38,17), true))#10186]
Results [2]: [c_customer_id#9591 AS customer_id#9570, sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#9625 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#9622 as decimal(38,17)))), DecimalType(38,17), true))#10186 AS year_total#9578]
(17) Filter [codegen id : 5]
Input [2]: [customer_id#9570, year_total#9578]
Condition : (isnotnull(year_total#9578) AND (year_total#9578 > 0E-17))
(18) Sort [codegen id : 5]
Input [2]: [customer_id#9570, year_total#9578]
Arguments: [customer_id#9570 ASC NULLS FIRST], false, 0
(19) BatchScan
Output [8]: [C_CUSTOMER_SK#9739, C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#10268, C_CUSTOMER_ID#10269, C_FIRST_NAME#10270, C_LAST_NAME#10271, C_PREFERRED_CUST_FLAG#10272, C_BIRTH_COUNTRY#10273, C_LOGIN#10274, C_EMAIL_ADDRESS#10275], [oracolumnref(C_CUSTOMER_SK#10268), oracolumnref(C_CUSTOMER_ID#10269), oracolumnref(C_FIRST_NAME#10270), oracolumnref(C_LAST_NAME#10271), oracolumnref(C_PREFERRED_CUST_FLAG#10272), oracolumnref(C_BIRTH_COUNTRY#10273), oracolumnref(C_LOGIN#10274), oracolumnref(C_EMAIL_ADDRESS#10275)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(20) Project [codegen id : 6]
Output [8]: [C_CUSTOMER_SK#9739, C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755]
Input [8]: [C_CUSTOMER_SK#9739, C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755]
(21) Sort [codegen id : 6]
Input [8]: [C_CUSTOMER_SK#9739, C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755]
Arguments: [c_customer_sk#9739 ASC NULLS FIRST], false, 0
(22) BatchScan
Output [4]: [SS_CUSTOMER_SK#9760, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774, SS_SOLD_DATE_SK#9757]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_CUSTOMER_SK#10284, SS_EXT_DISCOUNT_AMT#10285, SS_EXT_LIST_PRICE#10286, SS_SOLD_DATE_SK#10287], [oracolumnref(SS_CUSTOMER_SK#10284), oracolumnref(SS_EXT_DISCOUNT_AMT#10285), oracolumnref(SS_EXT_LIST_PRICE#10286), oracolumnref(SS_SOLD_DATE_SK#10287)], orapostfixunaryopexpression(isnotnull(SS_CUSTOMER_SK#9760))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_CUSTOMER_SK:decimal(38,18),SS_EXT_DISCOUNT_AMT:decimal(38,18),SS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "SS_CUSTOMER_SK", "SS_EXT_DISCOUNT_AMT", "SS_EXT_LIST_PRICE", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where "SS_CUSTOMER_SK" IS NOT NULL and "SS_SOLD_DATE_SK" IS NOT NULL
(23) Filter [codegen id : 7]
Input [4]: [SS_CUSTOMER_SK#9760, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774, SS_SOLD_DATE_SK#9757]
Condition : isnotnull(SS_CUSTOMER_SK#9760)
(24) Sort [codegen id : 7]
Input [4]: [SS_CUSTOMER_SK#9760, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774, SS_SOLD_DATE_SK#9757]
Arguments: [ss_customer_sk#9760 ASC NULLS FIRST], false, 0
(25) SortMergeJoin [codegen id : 8]
Left keys [1]: [c_customer_sk#9739]
Right keys [1]: [ss_customer_sk#9760]
Join condition: None
(26) Project [codegen id : 8]
Output [10]: [C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755, SS_SOLD_DATE_SK#9757, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774]
Input [12]: [C_CUSTOMER_SK#9739, C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755, SS_CUSTOMER_SK#9760, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774, SS_SOLD_DATE_SK#9757]
(27) Sort [codegen id : 8]
Input [10]: [C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755, SS_SOLD_DATE_SK#9757, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774]
Arguments: [ss_sold_date_sk#9757 ASC NULLS FIRST], false, 0
(28) BatchScan
Output [2]: [D_DATE_SK#9780, D_YEAR#9786]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#10292, D_YEAR#10293], [oracolumnref(D_DATE_SK#10292), oracolumnref(D_YEAR#10293)], orabinaryopexpression((isnotnull(D_YEAR#9786) AND (D_YEAR#9786 = 2002.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(29) Filter [codegen id : 9]
Input [2]: [D_DATE_SK#9780, D_YEAR#9786]
Condition : (isnotnull(D_YEAR#9786) AND (D_YEAR#9786 = 2002.000000000000000000))
(30) Sort [codegen id : 9]
Input [2]: [D_DATE_SK#9780, D_YEAR#9786]
Arguments: [d_date_sk#9780 ASC NULLS FIRST], false, 0
(31) SortMergeJoin [codegen id : 10]
Left keys [1]: [ss_sold_date_sk#9757]
Right keys [1]: [d_date_sk#9780]
Join condition: None
(32) Project [codegen id : 10]
Output [10]: [C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774, D_YEAR#9786]
Input [12]: [C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755, SS_SOLD_DATE_SK#9757, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774, D_DATE_SK#9780, D_YEAR#9786]
(33) HashAggregate [codegen id : 10]
Input [10]: [C_CUSTOMER_ID#9740, C_FIRST_NAME#9747, C_LAST_NAME#9748, C_PREFERRED_CUST_FLAG#9749, C_BIRTH_COUNTRY#9753, C_LOGIN#9754, C_EMAIL_ADDRESS#9755, SS_EXT_DISCOUNT_AMT#9771, SS_EXT_LIST_PRICE#9774, D_YEAR#9786]
Keys [8]: [c_customer_id#9740, c_first_name#9747, c_last_name#9748, c_preferred_cust_flag#9749, c_birth_country#9753, c_login#9754, c_email_address#9755, d_year#9786]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#9774 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#9771 as decimal(38,17)))), DecimalType(38,17), true))]
Aggregate Attributes [2]: [sum#10392, isEmpty#10393]
Results [10]: [c_customer_id#9740, c_first_name#9747, c_last_name#9748, c_preferred_cust_flag#9749, c_birth_country#9753, c_login#9754, c_email_address#9755, d_year#9786, sum#10394, isEmpty#10395]
(34) HashAggregate [codegen id : 10]
Input [10]: [c_customer_id#9740, c_first_name#9747, c_last_name#9748, c_preferred_cust_flag#9749, c_birth_country#9753, c_login#9754, c_email_address#9755, d_year#9786, sum#10394, isEmpty#10395]
Keys [8]: [c_customer_id#9740, c_first_name#9747, c_last_name#9748, c_preferred_cust_flag#9749, c_birth_country#9753, c_login#9754, c_email_address#9755, d_year#9786]
Functions [1]: [sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#9774 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#9771 as decimal(38,17)))), DecimalType(38,17), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#9774 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#9771 as decimal(38,17)))), DecimalType(38,17), true))#10188]
Results [5]: [c_customer_id#9740 AS customer_id#10194, c_first_name#9747 AS customer_first_name#10195, c_last_name#9748 AS customer_last_name#10196, c_preferred_cust_flag#9749 AS customer_preferred_cust_flag#10197, sum(CheckOverflow((promote_precision(cast(ss_ext_list_price#9774 as decimal(38,17))) - promote_precision(cast(ss_ext_discount_amt#9771 as decimal(38,17)))), DecimalType(38,17), true))#10188 AS year_total#10202]
(35) Sort [codegen id : 10]
Input [5]: [customer_id#10194, customer_first_name#10195, customer_last_name#10196, customer_preferred_cust_flag#10197, year_total#10202]
Arguments: [customer_id#10194 ASC NULLS FIRST], false, 0
(36) SortMergeJoin [codegen id : 11]
Left keys [1]: [customer_id#9570]
Right keys [1]: [customer_id#10194]
Join condition: None
(37) BatchScan
Output [8]: [C_CUSTOMER_SK#9957, C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#10320, C_CUSTOMER_ID#10321, C_FIRST_NAME#10322, C_LAST_NAME#10323, C_PREFERRED_CUST_FLAG#10324, C_BIRTH_COUNTRY#10325, C_LOGIN#10326, C_EMAIL_ADDRESS#10327], [oracolumnref(C_CUSTOMER_SK#10320), oracolumnref(C_CUSTOMER_ID#10321), oracolumnref(C_FIRST_NAME#10322), oracolumnref(C_LAST_NAME#10323), oracolumnref(C_PREFERRED_CUST_FLAG#10324), oracolumnref(C_BIRTH_COUNTRY#10325), oracolumnref(C_LOGIN#10326), oracolumnref(C_EMAIL_ADDRESS#10327)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(38) Project [codegen id : 12]
Output [8]: [C_CUSTOMER_SK#9957, C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973]
Input [8]: [C_CUSTOMER_SK#9957, C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973]
(39) Sort [codegen id : 12]
Input [8]: [C_CUSTOMER_SK#9957, C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973]
Arguments: [c_customer_sk#9957 ASC NULLS FIRST], false, 0
(40) BatchScan
Output [4]: [WS_BILL_CUSTOMER_SK#9979, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000, WS_SOLD_DATE_SK#9975]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_BILL_CUSTOMER_SK#10336, WS_EXT_DISCOUNT_AMT#10337, WS_EXT_LIST_PRICE#10338, WS_SOLD_DATE_SK#10339], [oracolumnref(WS_BILL_CUSTOMER_SK#10336), oracolumnref(WS_EXT_DISCOUNT_AMT#10337), oracolumnref(WS_EXT_LIST_PRICE#10338), oracolumnref(WS_SOLD_DATE_SK#10339)], orapostfixunaryopexpression(isnotnull(WS_BILL_CUSTOMER_SK#9979))
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_BILL_CUSTOMER_SK:decimal(38,18),WS_EXT_DISCOUNT_AMT:decimal(38,18),WS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_BILL_CUSTOMER_SK", "WS_EXT_DISCOUNT_AMT", "WS_EXT_LIST_PRICE", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_BILL_CUSTOMER_SK" IS NOT NULL and "WS_SOLD_DATE_SK" IS NOT NULL
(41) Filter [codegen id : 13]
Input [4]: [WS_BILL_CUSTOMER_SK#9979, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000, WS_SOLD_DATE_SK#9975]
Condition : isnotnull(WS_BILL_CUSTOMER_SK#9979)
(42) Sort [codegen id : 13]
Input [4]: [WS_BILL_CUSTOMER_SK#9979, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000, WS_SOLD_DATE_SK#9975]
Arguments: [ws_bill_customer_sk#9979 ASC NULLS FIRST], false, 0
(43) SortMergeJoin [codegen id : 14]
Left keys [1]: [c_customer_sk#9957]
Right keys [1]: [ws_bill_customer_sk#9979]
Join condition: None
(44) Project [codegen id : 14]
Output [10]: [C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973, WS_SOLD_DATE_SK#9975, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000]
Input [12]: [C_CUSTOMER_SK#9957, C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973, WS_BILL_CUSTOMER_SK#9979, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000, WS_SOLD_DATE_SK#9975]
(45) Sort [codegen id : 14]
Input [10]: [C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973, WS_SOLD_DATE_SK#9975, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000]
Arguments: [ws_sold_date_sk#9975 ASC NULLS FIRST], false, 0
(46) BatchScan
Output [2]: [D_DATE_SK#10009, D_YEAR#10015]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#10344, D_YEAR#10345], [oracolumnref(D_DATE_SK#10344), oracolumnref(D_YEAR#10345)], orabinaryopexpression((isnotnull(D_YEAR#10015) AND (D_YEAR#10015 = 2001.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(47) Filter [codegen id : 15]
Input [2]: [D_DATE_SK#10009, D_YEAR#10015]
Condition : (isnotnull(D_YEAR#10015) AND (D_YEAR#10015 = 2001.000000000000000000))
(48) Sort [codegen id : 15]
Input [2]: [D_DATE_SK#10009, D_YEAR#10015]
Arguments: [d_date_sk#10009 ASC NULLS FIRST], false, 0
(49) SortMergeJoin [codegen id : 16]
Left keys [1]: [ws_sold_date_sk#9975]
Right keys [1]: [d_date_sk#10009]
Join condition: None
(50) Project [codegen id : 16]
Output [10]: [C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000, D_YEAR#10015]
Input [12]: [C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973, WS_SOLD_DATE_SK#9975, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000, D_DATE_SK#10009, D_YEAR#10015]
(51) HashAggregate [codegen id : 16]
Input [10]: [C_CUSTOMER_ID#9958, C_FIRST_NAME#9965, C_LAST_NAME#9966, C_PREFERRED_CUST_FLAG#9967, C_BIRTH_COUNTRY#9971, C_LOGIN#9972, C_EMAIL_ADDRESS#9973, WS_EXT_DISCOUNT_AMT#9997, WS_EXT_LIST_PRICE#10000, D_YEAR#10015]
Keys [8]: [c_customer_id#9958, c_first_name#9965, c_last_name#9966, c_preferred_cust_flag#9967, c_birth_country#9971, c_login#9972, c_email_address#9973, d_year#10015]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10000 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#9997 as decimal(38,17)))), DecimalType(38,17), true))]
Aggregate Attributes [2]: [sum#10396, isEmpty#10397]
Results [10]: [c_customer_id#9958, c_first_name#9965, c_last_name#9966, c_preferred_cust_flag#9967, c_birth_country#9971, c_login#9972, c_email_address#9973, d_year#10015, sum#10398, isEmpty#10399]
(52) HashAggregate [codegen id : 16]
Input [10]: [c_customer_id#9958, c_first_name#9965, c_last_name#9966, c_preferred_cust_flag#9967, c_birth_country#9971, c_login#9972, c_email_address#9973, d_year#10015, sum#10398, isEmpty#10399]
Keys [8]: [c_customer_id#9958, c_first_name#9965, c_last_name#9966, c_preferred_cust_flag#9967, c_birth_country#9971, c_login#9972, c_email_address#9973, d_year#10015]
Functions [1]: [sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10000 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#9997 as decimal(38,17)))), DecimalType(38,17), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10000 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#9997 as decimal(38,17)))), DecimalType(38,17), true))#10191]
Results [2]: [c_customer_id#9958 AS customer_id#9580, sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10000 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#9997 as decimal(38,17)))), DecimalType(38,17), true))#10191 AS year_total#9588]
(53) Filter [codegen id : 16]
Input [2]: [customer_id#9580, year_total#9588]
Condition : (isnotnull(year_total#9588) AND (year_total#9588 > 0E-17))
(54) Project [codegen id : 16]
Output [2]: [customer_id#9580 AS customer_id#10204, year_total#9588 AS year_total#10212]
Input [2]: [customer_id#9580, year_total#9588]
(55) Sort [codegen id : 16]
Input [2]: [customer_id#10204, year_total#10212]
Arguments: [customer_id#10204 ASC NULLS FIRST], false, 0
(56) SortMergeJoin [codegen id : 17]
Left keys [1]: [customer_id#9570]
Right keys [1]: [customer_id#10204]
Join condition: None
(57) Project [codegen id : 17]
Output [8]: [customer_id#9570, year_total#9578, customer_id#10194, customer_first_name#10195, customer_last_name#10196, customer_preferred_cust_flag#10197, year_total#10202, year_total#10212]
Input [9]: [customer_id#9570, year_total#9578, customer_id#10194, customer_first_name#10195, customer_last_name#10196, customer_preferred_cust_flag#10197, year_total#10202, customer_id#10204, year_total#10212]
(58) BatchScan
Output [8]: [C_CUSTOMER_SK#10106, C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER, [C_CUSTOMER_SK#10360, C_CUSTOMER_ID#10361, C_FIRST_NAME#10362, C_LAST_NAME#10363, C_PREFERRED_CUST_FLAG#10364, C_BIRTH_COUNTRY#10365, C_LOGIN#10366, C_EMAIL_ADDRESS#10367], [oracolumnref(C_CUSTOMER_SK#10360), oracolumnref(C_CUSTOMER_ID#10361), oracolumnref(C_FIRST_NAME#10362), oracolumnref(C_LAST_NAME#10363), oracolumnref(C_PREFERRED_CUST_FLAG#10364), oracolumnref(C_BIRTH_COUNTRY#10365), oracolumnref(C_LOGIN#10366), oracolumnref(C_EMAIL_ADDRESS#10367)]
PartitionSchema: struct<>
ReadSchema: struct<C_CUSTOMER_SK:decimal(38,18),C_CUSTOMER_ID:string,C_FIRST_NAME:string,C_LAST_NAME:string,C_PREFERRED_CUST_FLAG:string,C_BIRTH_COUNTRY:string,C_LOGIN:string,C_EMAIL_ADDRESS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "C_CUSTOMER_SK", "C_CUSTOMER_ID", "C_FIRST_NAME", "C_LAST_NAME", "C_PREFERRED_CUST_FLAG", "C_BIRTH_COUNTRY", "C_LOGIN", "C_EMAIL_ADDRESS"
from TPCDS.CUSTOMER
(59) Project [codegen id : 18]
Output [8]: [C_CUSTOMER_SK#10106, C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122]
Input [8]: [C_CUSTOMER_SK#10106, C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122]
(60) Sort [codegen id : 18]
Input [8]: [C_CUSTOMER_SK#10106, C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122]
Arguments: [c_customer_sk#10106 ASC NULLS FIRST], false, 0
(61) BatchScan
Output [4]: [WS_BILL_CUSTOMER_SK#10128, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149, WS_SOLD_DATE_SK#10124]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_BILL_CUSTOMER_SK#10376, WS_EXT_DISCOUNT_AMT#10377, WS_EXT_LIST_PRICE#10378, WS_SOLD_DATE_SK#10379], [oracolumnref(WS_BILL_CUSTOMER_SK#10376), oracolumnref(WS_EXT_DISCOUNT_AMT#10377), oracolumnref(WS_EXT_LIST_PRICE#10378), oracolumnref(WS_SOLD_DATE_SK#10379)], orapostfixunaryopexpression(isnotnull(WS_BILL_CUSTOMER_SK#10128))
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_BILL_CUSTOMER_SK:decimal(38,18),WS_EXT_DISCOUNT_AMT:decimal(38,18),WS_EXT_LIST_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_BILL_CUSTOMER_SK", "WS_EXT_DISCOUNT_AMT", "WS_EXT_LIST_PRICE", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_BILL_CUSTOMER_SK" IS NOT NULL and "WS_SOLD_DATE_SK" IS NOT NULL
(62) Filter [codegen id : 19]
Input [4]: [WS_BILL_CUSTOMER_SK#10128, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149, WS_SOLD_DATE_SK#10124]
Condition : isnotnull(WS_BILL_CUSTOMER_SK#10128)
(63) Sort [codegen id : 19]
Input [4]: [WS_BILL_CUSTOMER_SK#10128, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149, WS_SOLD_DATE_SK#10124]
Arguments: [ws_bill_customer_sk#10128 ASC NULLS FIRST], false, 0
(64) SortMergeJoin [codegen id : 20]
Left keys [1]: [c_customer_sk#10106]
Right keys [1]: [ws_bill_customer_sk#10128]
Join condition: None
(65) Project [codegen id : 20]
Output [10]: [C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122, WS_SOLD_DATE_SK#10124, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149]
Input [12]: [C_CUSTOMER_SK#10106, C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122, WS_BILL_CUSTOMER_SK#10128, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149, WS_SOLD_DATE_SK#10124]
(66) Sort [codegen id : 20]
Input [10]: [C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122, WS_SOLD_DATE_SK#10124, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149]
Arguments: [ws_sold_date_sk#10124 ASC NULLS FIRST], false, 0
(67) BatchScan
Output [2]: [D_DATE_SK#10158, D_YEAR#10164]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#10384, D_YEAR#10385], [oracolumnref(D_DATE_SK#10384), oracolumnref(D_YEAR#10385)], orabinaryopexpression((isnotnull(D_YEAR#10164) AND (D_YEAR#10164 = 2002.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2002.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(68) Filter [codegen id : 21]
Input [2]: [D_DATE_SK#10158, D_YEAR#10164]
Condition : (isnotnull(D_YEAR#10164) AND (D_YEAR#10164 = 2002.000000000000000000))
(69) Sort [codegen id : 21]
Input [2]: [D_DATE_SK#10158, D_YEAR#10164]
Arguments: [d_date_sk#10158 ASC NULLS FIRST], false, 0
(70) SortMergeJoin [codegen id : 22]
Left keys [1]: [ws_sold_date_sk#10124]
Right keys [1]: [d_date_sk#10158]
Join condition: None
(71) Project [codegen id : 22]
Output [10]: [C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149, D_YEAR#10164]
Input [12]: [C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122, WS_SOLD_DATE_SK#10124, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149, D_DATE_SK#10158, D_YEAR#10164]
(72) HashAggregate [codegen id : 22]
Input [10]: [C_CUSTOMER_ID#10107, C_FIRST_NAME#10114, C_LAST_NAME#10115, C_PREFERRED_CUST_FLAG#10116, C_BIRTH_COUNTRY#10120, C_LOGIN#10121, C_EMAIL_ADDRESS#10122, WS_EXT_DISCOUNT_AMT#10146, WS_EXT_LIST_PRICE#10149, D_YEAR#10164]
Keys [8]: [c_customer_id#10107, c_first_name#10114, c_last_name#10115, c_preferred_cust_flag#10116, c_birth_country#10120, c_login#10121, c_email_address#10122, d_year#10164]
Functions [1]: [partial_sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10149 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#10146 as decimal(38,17)))), DecimalType(38,17), true))]
Aggregate Attributes [2]: [sum#10400, isEmpty#10401]
Results [10]: [c_customer_id#10107, c_first_name#10114, c_last_name#10115, c_preferred_cust_flag#10116, c_birth_country#10120, c_login#10121, c_email_address#10122, d_year#10164, sum#10402, isEmpty#10403]
(73) HashAggregate [codegen id : 22]
Input [10]: [c_customer_id#10107, c_first_name#10114, c_last_name#10115, c_preferred_cust_flag#10116, c_birth_country#10120, c_login#10121, c_email_address#10122, d_year#10164, sum#10402, isEmpty#10403]
Keys [8]: [c_customer_id#10107, c_first_name#10114, c_last_name#10115, c_preferred_cust_flag#10116, c_birth_country#10120, c_login#10121, c_email_address#10122, d_year#10164]
Functions [1]: [sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10149 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#10146 as decimal(38,17)))), DecimalType(38,17), true))]
Aggregate Attributes [1]: [sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10149 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#10146 as decimal(38,17)))), DecimalType(38,17), true))#10193]
Results [2]: [c_customer_id#10107 AS customer_id#10214, sum(CheckOverflow((promote_precision(cast(ws_ext_list_price#10149 as decimal(38,17))) - promote_precision(cast(ws_ext_discount_amt#10146 as decimal(38,17)))), DecimalType(38,17), true))#10193 AS year_total#10222]
(74) Sort [codegen id : 22]
Input [2]: [customer_id#10214, year_total#10222]
Arguments: [customer_id#10214 ASC NULLS FIRST], false, 0
(75) SortMergeJoin [codegen id : 23]
Left keys [1]: [customer_id#9570]
Right keys [1]: [customer_id#10214]
Join condition: (CASE WHEN (year_total#10212 > 0E-17) THEN CheckOverflow((promote_precision(year_total#10222) / promote_precision(year_total#10212)), DecimalType(38,6), true) ELSE 0.000000 END > CASE WHEN (year_total#9578 > 0E-17) THEN CheckOverflow((promote_precision(year_total#10202) / promote_precision(year_total#9578)), DecimalType(38,6), true) ELSE 0.000000 END)
(76) Project [codegen id : 23]
Output [4]: [customer_id#10194, customer_first_name#10195, customer_last_name#10196, customer_preferred_cust_flag#10197]
Input [10]: [customer_id#9570, year_total#9578, customer_id#10194, customer_first_name#10195, customer_last_name#10196, customer_preferred_cust_flag#10197, year_total#10202, year_total#10212, customer_id#10214, year_total#10222]
(77) TakeOrderedAndProject
Input [4]: [customer_id#10194, customer_first_name#10195, customer_last_name#10196, customer_preferred_cust_flag#10197]
Arguments: 100, [customer_id#10194 ASC NULLS FIRST, customer_first_name#10195 ASC NULLS FIRST, customer_last_name#10196 ASC NULLS FIRST, customer_preferred_cust_flag#10197 ASC NULLS FIRST], [customer_id#10194, customer_first_name#10195, customer_last_name#10196, customer_preferred_cust_flag#10197]
select i_item_id
,i_item_desc
,i_category
,i_class
,i_current_price
,sum(ws_ext_sales_price) as itemrevenue
,sum(ws_ext_sales_price)*100/sum(sum(ws_ext_sales_price)) over
(partition by i_class) as revenueratio
from
web_sales
,item
,date_dim
where
ws_item_sk = i_item_sk
and i_category in ('Sports', 'Books', 'Home')
and ws_sold_date_sk = d_date_sk
and d_date between cast('1999-02-22' as date)
and date_add(cast('1999-02-22' as date), 30 )
group by
i_item_id
,i_item_desc
,i_category
,i_class
,i_current_price
order by
i_category
,i_class
,i_item_id
,i_item_desc
,revenueratio
limit 100;
== Physical Plan ==
TakeOrderedAndProject (6)
+- * Project (5)
+- Window (4)
+- * Sort (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [8]: [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, _w0#11438, _w1#11439]
OraPlan: 00 OraSingleQueryBlock [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, sum(ws_ext_sales_price#11373) AS itemrevenue#11348, sum(ws_ext_sales_price#11373) AS _w0#11438, sum(ws_ext_sales_price#11373) AS _w1#11439], [oracolumnref(i_item_id#11385), oracolumnref(i_item_desc#11388), oracolumnref(i_category#11396), oracolumnref(i_class#11394), oracolumnref(i_current_price#11389), oraalias(sum(ws_ext_sales_price#11373) AS itemrevenue#11348), oraalias(sum(ws_ext_sales_price#11373) AS _w0#11438), oraalias(sum(ws_ext_sales_price#11373) AS _w1#11439)], orabinaryopexpression(((isnotnull(WS_SOLD_DATE_SK#11350) AND I_CATEGORY#11396 IN (Sports,Books,Home)) AND ((isnotnull(D_DATE#11408) AND (D_DATE#11408 >= 10644)) AND (D_DATE#11408 <= 10674)))), List(oracolumnref(i_item_id#11385), oracolumnref(i_item_desc#11388), oracolumnref(i_category#11396), oracolumnref(i_class#11394), oracolumnref(i_current_price#11389))
01 :- OraTableScan TPCDS.WEB_SALES, [WS_ITEM_SK#11353, WS_EXT_SALES_PRICE#11373, WS_SOLD_DATE_SK#11350]
02 :- OraTableScan TPCDS.ITEM, [I_ITEM_SK#11384, I_ITEM_ID#11385, I_ITEM_DESC#11388, I_CURRENT_PRICE#11389, I_CLASS#11394, I_CATEGORY#11396]
03 +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#11406, D_DATE#11408]
ReadSchema: struct<i_item_id:string,i_item_desc:string,i_category:string,i_class:string,i_current_price:decimal(38,18),itemrevenue:decimal(38,18),_w0:decimal(38,18),_w1:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: Sports, Books, Home, 10644, 10674
oraPushdownSQL: select "I_ITEM_ID", "I_ITEM_DESC", "I_CATEGORY", "I_CLASS", "I_CURRENT_PRICE", SUM("WS_EXT_SALES_PRICE") AS "itemrevenue", SUM("WS_EXT_SALES_PRICE") AS "_w0", SUM("WS_EXT_SALES_PRICE") AS "_w1"
from TPCDS.WEB_SALES join TPCDS.ITEM on ("WS_ITEM_SK" = "I_ITEM_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_SOLD_DATE_SK" IS NOT NULL AND "I_CATEGORY" IN ( ?, ?, ? )) AND (("D_DATE" IS NOT NULL AND ("D_DATE" >= ?)) AND ("D_DATE" <= ?))) group by "I_ITEM_ID", "I_ITEM_DESC", "I_CATEGORY", "I_CLASS", "I_CURRENT_PRICE"
(2) Project [codegen id : 1]
Output [8]: [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, _w0#11438, _w1#11439]
Input [8]: [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, _w0#11438, _w1#11439]
(3) Sort [codegen id : 1]
Input [8]: [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, _w0#11438, _w1#11439]
Arguments: [i_class#11394 ASC NULLS FIRST], false, 0
(4) Window
Input [8]: [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, _w0#11438, _w1#11439]
Arguments: [sum(_w1#11439) windowspecdefinition(i_class#11394, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#11440], [i_class#11394]
(5) Project [codegen id : 2]
Output [7]: [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(_w0#11438) * 100.000000000000000000), DecimalType(38,14), true) as decimal(38,18))) / promote_precision(_we0#11440)), DecimalType(38,6), true) AS revenueratio#11349]
Input [9]: [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, _w0#11438, _w1#11439, _we0#11440]
(6) TakeOrderedAndProject
Input [7]: [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, revenueratio#11349]
Arguments: 100, [i_category#11396 ASC NULLS FIRST, i_class#11394 ASC NULLS FIRST, i_item_id#11385 ASC NULLS FIRST, i_item_desc#11388 ASC NULLS FIRST, revenueratio#11349 ASC NULLS FIRST], [i_item_id#11385, i_item_desc#11388, i_category#11396, i_class#11394, i_current_price#11389, itemrevenue#11348, revenueratio#11349]
select "I_ITEM_ID", "I_ITEM_DESC", "I_CATEGORY", "I_CLASS", "I_CURRENT_PRICE", SUM("WS_EXT_SALES_PRICE") AS "itemrevenue", SUM("WS_EXT_SALES_PRICE") AS "_w0", SUM("WS_EXT_SALES_PRICE") AS "_w1"
from TPCDS.WEB_SALES join TPCDS.ITEM on ("WS_ITEM_SK" = "I_ITEM_SK") join TPCDS.DATE_DIM on ("WS_SOLD_DATE_SK" = "D_DATE_SK")
where (("WS_SOLD_DATE_SK" IS NOT NULL AND "I_CATEGORY" IN ( 'Sports', 'Books', 'Home' )) AND (("D_DATE" IS NOT NULL AND ("D_DATE" >= TRUNC(TIMESTAMP '1999-02-22 08:00:00.000000'))) AND ("D_DATE" <= TRUNC(TIMESTAMP '1999-03-24 08:00:00.000000')))) group by "I_ITEM_ID", "I_ITEM_DESC", "I_CATEGORY", "I_CLASS", "I_CURRENT_PRICE"
== Physical Plan ==
TakeOrderedAndProject (21)
+- * Project (20)
+- Window (19)
+- * Sort (18)
+- * HashAggregate (17)
+- * HashAggregate (16)
+- * Project (15)
+- * SortMergeJoin Inner (14)
:- * Sort (9)
: +- * Project (8)
: +- * SortMergeJoin Inner (7)
: :- * Sort (3)
: : +- * Project (2)
: : +- BatchScan (1)
: +- * Sort (6)
: +- * Filter (5)
: +- BatchScan (4)
+- * Sort (13)
+- * Project (12)
+- * Filter (11)
+- BatchScan (10)
(1) BatchScan
Output [3]: [WS_ITEM_SK#11227, WS_EXT_SALES_PRICE#11247, WS_SOLD_DATE_SK#11224]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.WEB_SALES, [WS_ITEM_SK#11322, WS_EXT_SALES_PRICE#11323, WS_SOLD_DATE_SK#11324], [oracolumnref(WS_ITEM_SK#11322), oracolumnref(WS_EXT_SALES_PRICE#11323), oracolumnref(WS_SOLD_DATE_SK#11324)]
PartitionSchema: struct<WS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<WS_ITEM_SK:decimal(38,18),WS_EXT_SALES_PRICE:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "WS_ITEM_SK", "WS_EXT_SALES_PRICE", "WS_SOLD_DATE_SK"
from TPCDS.WEB_SALES
where "WS_SOLD_DATE_SK" IS NOT NULL
(2) Project [codegen id : 1]
Output [3]: [WS_SOLD_DATE_SK#11224, WS_ITEM_SK#11227, WS_EXT_SALES_PRICE#11247]
Input [3]: [WS_ITEM_SK#11227, WS_EXT_SALES_PRICE#11247, WS_SOLD_DATE_SK#11224]
(3) Sort [codegen id : 1]
Input [3]: [WS_SOLD_DATE_SK#11224, WS_ITEM_SK#11227, WS_EXT_SALES_PRICE#11247]
Arguments: [ws_item_sk#11227 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [6]: [I_ITEM_SK#11258, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.ITEM, [I_ITEM_SK#11328, I_ITEM_ID#11329, I_ITEM_DESC#11330, I_CURRENT_PRICE#11331, I_CLASS#11332, I_CATEGORY#11333], [oracolumnref(I_ITEM_SK#11328), oracolumnref(I_ITEM_ID#11329), oracolumnref(I_ITEM_DESC#11330), oracolumnref(I_CURRENT_PRICE#11331), oracolumnref(I_CLASS#11332), oracolumnref(I_CATEGORY#11333)], orain(I_CATEGORY#11270 IN (Sports,Books,Home))
PartitionSchema: struct<>
ReadSchema: struct<I_ITEM_SK:decimal(38,18),I_ITEM_ID:string,I_ITEM_DESC:string,I_CURRENT_PRICE:decimal(38,18),I_CLASS:string,I_CATEGORY:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: Sports, Books, Home
oraPushdownSQL: select "I_ITEM_SK", "I_ITEM_ID", "I_ITEM_DESC", "I_CURRENT_PRICE", "I_CLASS", "I_CATEGORY"
from TPCDS.ITEM
where "I_CATEGORY" IN ( ?, ?, ? )
(5) Filter [codegen id : 2]
Input [6]: [I_ITEM_SK#11258, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270]
Condition : I_CATEGORY#11270 IN (Sports,Books,Home)
(6) Sort [codegen id : 2]
Input [6]: [I_ITEM_SK#11258, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270]
Arguments: [i_item_sk#11258 ASC NULLS FIRST], false, 0
(7) SortMergeJoin [codegen id : 3]
Left keys [1]: [ws_item_sk#11227]
Right keys [1]: [i_item_sk#11258]
Join condition: None
(8) Project [codegen id : 3]
Output [7]: [WS_SOLD_DATE_SK#11224, WS_EXT_SALES_PRICE#11247, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270]
Input [9]: [WS_SOLD_DATE_SK#11224, WS_ITEM_SK#11227, WS_EXT_SALES_PRICE#11247, I_ITEM_SK#11258, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270]
(9) Sort [codegen id : 3]
Input [7]: [WS_SOLD_DATE_SK#11224, WS_EXT_SALES_PRICE#11247, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270]
Arguments: [ws_sold_date_sk#11224 ASC NULLS FIRST], false, 0
(10) BatchScan
Output [2]: [D_DATE_SK#11280, D_DATE#11282]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#11340, D_DATE#11341], [oracolumnref(D_DATE_SK#11340), oracolumnref(D_DATE#11341)], orabinaryopexpression(((isnotnull(D_DATE#11282) AND (D_DATE#11282 >= 10644)) AND (D_DATE#11282 <= 10674)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_DATE:date>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 10644, 10674
oraPushdownSQL: select "D_DATE_SK", "D_DATE"
from TPCDS.DATE_DIM
where (("D_DATE" IS NOT NULL AND ("D_DATE" >= ?)) AND ("D_DATE" <= ?))
(11) Filter [codegen id : 4]
Input [2]: [D_DATE_SK#11280, D_DATE#11282]
Condition : ((isnotnull(D_DATE#11282) AND (D_DATE#11282 >= 10644)) AND (D_DATE#11282 <= 10674))
(12) Project [codegen id : 4]
Output [1]: [D_DATE_SK#11280]
Input [2]: [D_DATE_SK#11280, D_DATE#11282]
(13) Sort [codegen id : 4]
Input [1]: [D_DATE_SK#11280]
Arguments: [d_date_sk#11280 ASC NULLS FIRST], false, 0
(14) SortMergeJoin [codegen id : 5]
Left keys [1]: [ws_sold_date_sk#11224]
Right keys [1]: [d_date_sk#11280]
Join condition: None
(15) Project [codegen id : 5]
Output [6]: [WS_EXT_SALES_PRICE#11247, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270]
Input [8]: [WS_SOLD_DATE_SK#11224, WS_EXT_SALES_PRICE#11247, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270, D_DATE_SK#11280]
(16) HashAggregate [codegen id : 5]
Input [6]: [WS_EXT_SALES_PRICE#11247, I_ITEM_ID#11259, I_ITEM_DESC#11262, I_CURRENT_PRICE#11263, I_CLASS#11268, I_CATEGORY#11270]
Keys [5]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263]
Functions [1]: [partial_sum(ws_ext_sales_price#11247)]
Aggregate Attributes [2]: [sum#11344, isEmpty#11345]
Results [7]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, sum#11346, isEmpty#11347]
(17) HashAggregate [codegen id : 5]
Input [7]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, sum#11346, isEmpty#11347]
Keys [5]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263]
Functions [1]: [sum(ws_ext_sales_price#11247)]
Aggregate Attributes [1]: [sum(ws_ext_sales_price#11247)#11308]
Results [8]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, sum(ws_ext_sales_price#11247)#11308 AS itemrevenue#11222, sum(ws_ext_sales_price#11247)#11308 AS _w0#11312, sum(ws_ext_sales_price#11247)#11308 AS _w1#11313]
(18) Sort [codegen id : 5]
Input [8]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, itemrevenue#11222, _w0#11312, _w1#11313]
Arguments: [i_class#11268 ASC NULLS FIRST], false, 0
(19) Window
Input [8]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, itemrevenue#11222, _w0#11312, _w1#11313]
Arguments: [sum(_w1#11313) windowspecdefinition(i_class#11268, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#11314], [i_class#11268]
(20) Project [codegen id : 6]
Output [7]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, itemrevenue#11222, CheckOverflow((promote_precision(cast(CheckOverflow((promote_precision(_w0#11312) * 100.000000000000000000), DecimalType(38,14), true) as decimal(38,18))) / promote_precision(_we0#11314)), DecimalType(38,6), true) AS revenueratio#11223]
Input [9]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, itemrevenue#11222, _w0#11312, _w1#11313, _we0#11314]
(21) TakeOrderedAndProject
Input [7]: [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, itemrevenue#11222, revenueratio#11223]
Arguments: 100, [i_category#11270 ASC NULLS FIRST, i_class#11268 ASC NULLS FIRST, i_item_id#11259 ASC NULLS FIRST, i_item_desc#11262 ASC NULLS FIRST, revenueratio#11223 ASC NULLS FIRST], [i_item_id#11259, i_item_desc#11262, i_category#11270, i_class#11268, i_current_price#11263, itemrevenue#11222, revenueratio#11223]
select avg(ss_quantity)
,avg(ss_ext_sales_price)
,avg(ss_ext_wholesale_cost)
,sum(ss_ext_wholesale_cost)
from store_sales
,store
,customer_demographics
,household_demographics
,customer_address
,date_dim
where s_store_sk = ss_store_sk
and ss_sold_date_sk = d_date_sk and d_year = 2001
and((ss_hdemo_sk=hd_demo_sk
and cd_demo_sk = ss_cdemo_sk
and cd_marital_status = 'M'
and cd_education_status = 'Advanced Degree'
and ss_sales_price between 100.00 and 150.00
and hd_dep_count = 3
)or
(ss_hdemo_sk=hd_demo_sk
and cd_demo_sk = ss_cdemo_sk
and cd_marital_status = 'S'
and cd_education_status = 'College'
and ss_sales_price between 50.00 and 100.00
and hd_dep_count = 1
) or
(ss_hdemo_sk=hd_demo_sk
and cd_demo_sk = ss_cdemo_sk
and cd_marital_status = 'W'
and cd_education_status = '2 yr Degree'
and ss_sales_price between 150.00 and 200.00
and hd_dep_count = 1
))
and((ss_addr_sk = ca_address_sk
and ca_country = 'United States'
and ca_state in ('TX', 'OH', 'TX')
and ss_net_profit between 100 and 200
) or
(ss_addr_sk = ca_address_sk
and ca_country = 'United States'
and ca_state in ('OR', 'NM', 'KY')
and ss_net_profit between 150 and 300
) or
(ss_addr_sk = ca_address_sk
and ca_country = 'United States'
and ca_state in ('VA', 'TX', 'MS')
and ss_net_profit between 50 and 250
))
;
== Physical Plan ==
* Project (2)
+- BatchScan (1)
(1) BatchScan
Output [4]: [avg(ss_quantity)#11758, avg(ss_ext_sales_price)#11759, avg(ss_ext_wholesale_cost)#11760, sum(ss_ext_wholesale_cost)#11761]
OraPlan: 00 OraSingleQueryBlock [avg(ss_quantity#11657) AS avg(ss_quantity)#11758, avg(ss_ext_sales_price#11662) AS avg(ss_ext_sales_price)#11759, avg(ss_ext_wholesale_cost#11663) AS avg(ss_ext_wholesale_cost)#11760, sum(ss_ext_wholesale_cost#11663) AS sum(ss_ext_wholesale_cost)#11761], [oraalias(avg(ss_quantity#11657) AS avg(ss_quantity)#11758), oraalias(avg(ss_ext_sales_price#11662) AS avg(ss_ext_sales_price)#11759), oraalias(avg(ss_ext_wholesale_cost#11663) AS avg(ss_ext_wholesale_cost)#11760), oraalias(sum(ss_ext_wholesale_cost#11663) AS sum(ss_ext_wholesale_cost)#11761)], orabinaryopexpression(((((((isnotnull(SS_STORE_SK#11654) AND isnotnull(SS_ADDR_SK#11653)) AND isnotnull(SS_CDEMO_SK#11651)) AND isnotnull(SS_HDEMO_SK#11652)) AND ((((SS_NET_PROFIT#11669 >= 100.000000000000000000) AND (SS_NET_PROFIT#11669 <= 200.000000000000000000)) OR ((SS_NET_PROFIT#11669 >= 150.000000000000000000) AND (SS_NET_PROFIT#11669 <= 300.000000000000000000))) OR ((SS_NET_PROFIT#11669 >= 50.000000000000000000) AND (SS_NET_PROFIT#11669 <= 250.000000000000000000)))) AND ((((SS_SALES_PRICE#11660 >= 100.000000000000000000) AND (SS_SALES_PRICE#11660 <= 150.000000000000000000)) OR ((SS_SALES_PRICE#11660 >= 50.000000000000000000) AND (SS_SALES_PRICE#11660 <= 100.000000000000000000))) OR ((SS_SALES_PRICE#11660 >= 150.000000000000000000) AND (SS_SALES_PRICE#11660 <= 200.000000000000000000)))) AND (isnotnull(D_YEAR#11732) AND (D_YEAR#11732 = 2001.000000000000000000)))), List()
01 :- OraTableScan TPCDS.STORE_SALES, [SS_CDEMO_SK#11651, SS_HDEMO_SK#11652, SS_ADDR_SK#11653, SS_STORE_SK#11654, SS_QUANTITY#11657, SS_SALES_PRICE#11660, SS_EXT_SALES_PRICE#11662, SS_EXT_WHOLESALE_COST#11663, SS_NET_PROFIT#11669, SS_SOLD_DATE_SK#11647]
02 :- OraTableScan TPCDS.STORE, [S_STORE_SK#11670]
03 :- OraSingleQueryBlock [CA_ADDRESS_SK#11713, CA_STATE#11721], [oracolumnref(CA_ADDRESS_SK#11713), oracolumnref(CA_STATE#11721)], orabinaryopexpression(((isnotnull(CA_COUNTRY#11723) AND (CA_COUNTRY#11723 = United States)) AND ((CA_STATE#11721 IN (TX,OH) OR CA_STATE#11721 IN (OR,NM,KY)) OR CA_STATE#11721 IN (VA,TX,MS))))
04 : +- OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ADDRESS_SK#11713, CA_STATE#11721, CA_COUNTRY#11723]
05 :- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#11726, D_YEAR#11732]
06 :- OraSingleQueryBlock [CD_DEMO_SK#11699, CD_MARITAL_STATUS#11701, CD_EDUCATION_STATUS#11702], [oracolumnref(CD_DEMO_SK#11699), oracolumnref(CD_MARITAL_STATUS#11701), oracolumnref(CD_EDUCATION_STATUS#11702)], orabinaryopexpression(((((CD_MARITAL_STATUS#11701 = M) AND (CD_EDUCATION_STATUS#11702 = Advanced Degree)) OR ((CD_MARITAL_STATUS#11701 = S) AND (CD_EDUCATION_STATUS#11702 = College))) OR ((CD_MARITAL_STATUS#11701 = W) AND (CD_EDUCATION_STATUS#11702 = 2 yr Degree))))
07 : +- OraTableScan TPCDS.CUSTOMER_DEMOGRAPHICS, [CD_DEMO_SK#11699, CD_MARITAL_STATUS#11701, CD_EDUCATION_STATUS#11702]
08 +- OraSingleQueryBlock [HD_DEMO_SK#11708, HD_DEP_COUNT#11711], [oracolumnref(HD_DEMO_SK#11708), oracolumnref(HD_DEP_COUNT#11711)], orabinaryopexpression((((HD_DEP_COUNT#11711 = 3.000000000000000000) OR (HD_DEP_COUNT#11711 = 1.000000000000000000)) OR (HD_DEP_COUNT#11711 = 1.000000000000000000)))
09 +- OraTableScan TPCDS.HOUSEHOLD_DEMOGRAPHICS, [HD_DEMO_SK#11708, HD_DEP_COUNT#11711]
ReadSchema: struct<avg(ss_quantity):decimal(38,22),avg(ss_ext_sales_price):decimal(38,22),avg(ss_ext_wholesale_cost):decimal(38,22),sum(ss_ext_wholesale_cost):decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: United States, TX, OH, OR, NM, KY, VA, TX, MS, M, Advanced Degree, S, College, W, 2 yr Degree, 3.000000000000000000, 1.000000000000000000, 1.000000000000000000, 100.000000000000000000, 200.000000000000000000, 150.000000000000000000, 300.000000000000000000, 50.000000000000000000, 250.000000000000000000, 100.000000000000000000, 150.000000000000000000, 50.000000000000000000, 100.000000000000000000, 150.000000000000000000, 200.000000000000000000, 2001.000000000000000000
oraPushdownSQL: select AVG("SS_QUANTITY") AS "avg(ss_quantity)", AVG("SS_EXT_SALES_PRICE") AS "avg(ss_ext_sales_price)", AVG("SS_EXT_WHOLESALE_COST") AS "avg(ss_ext_wholesale_cost)", SUM("SS_EXT_WHOLESALE_COST") AS "sum(ss_ext_wholesale_cost)"
from TPCDS.STORE_SALES join TPCDS.STORE on ("SS_STORE_SK" = "S_STORE_SK") join ( select "CA_ADDRESS_SK", "CA_STATE"
from TPCDS.CUSTOMER_ADDRESS
where (("CA_COUNTRY" IS NOT NULL AND ("CA_COUNTRY" = ?)) AND (("CA_STATE" IN ( ?, ? ) OR "CA_STATE" IN ( ?, ?, ? )) OR "CA_STATE" IN ( ?, ?, ? ))) ) on (("SS_ADDR_SK" = "CA_ADDRESS_SK") AND (((("CA_STATE" IN ( 'TX', 'OH' ) AND ("SS_NET_PROFIT" >= 100.000000000000000000)) AND ("SS_NET_PROFIT" <= 200.000000000000000000)) OR (("CA_STATE" IN ( 'OR', 'NM', 'KY' ) AND ("SS_NET_PROFIT" >= 150.000000000000000000)) AND ("SS_NET_PROFIT" <= 300.000000000000000000))) OR (("CA_STATE" IN ( 'VA', 'TX', 'MS' ) AND ("SS_NET_PROFIT" >= 50.000000000000000000)) AND ("SS_NET_PROFIT" <= 250.000000000000000000)))) join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK") join ( select "CD_DEMO_SK", "CD_MARITAL_STATUS", "CD_EDUCATION_STATUS"
from TPCDS.CUSTOMER_DEMOGRAPHICS
where (((("CD_MARITAL_STATUS" = ?) AND ("CD_EDUCATION_STATUS" = ?)) OR (("CD_MARITAL_STATUS" = ?) AND ("CD_EDUCATION_STATUS" = ?))) OR (("CD_MARITAL_STATUS" = ?) AND ("CD_EDUCATION_STATUS" = ?))) ) on (("SS_CDEMO_SK" = "CD_DEMO_SK") AND (((((("CD_MARITAL_STATUS" = 'M') AND ("CD_EDUCATION_STATUS" = 'Advanced Degree')) AND ("SS_SALES_PRICE" >= 100.000000000000000000)) AND ("SS_SALES_PRICE" <= 150.000000000000000000)) OR (((("CD_MARITAL_STATUS" = 'S') AND ("CD_EDUCATION_STATUS" = 'College')) AND ("SS_SALES_PRICE" >= 50.000000000000000000)) AND ("SS_SALES_PRICE" <= 100.000000000000000000))) OR (((("CD_MARITAL_STATUS" = 'W') AND ("CD_EDUCATION_STATUS" = '2 yr Degree')) AND ("SS_SALES_PRICE" >= 150.000000000000000000)) AND ("SS_SALES_PRICE" <= 200.000000000000000000)))) join ( select "HD_DEMO_SK", "HD_DEP_COUNT"
from TPCDS.HOUSEHOLD_DEMOGRAPHICS
where ((("HD_DEP_COUNT" = ?) OR ("HD_DEP_COUNT" = ?)) OR ("HD_DEP_COUNT" = ?)) ) on (("SS_HDEMO_SK" = "HD_DEMO_SK") AND ((((((("CD_MARITAL_STATUS" = 'M') AND ("CD_EDUCATION_STATUS" = 'Advanced Degree')) AND ("SS_SALES_PRICE" >= 100.000000000000000000)) AND ("SS_SALES_PRICE" <= 150.000000000000000000)) AND ("HD_DEP_COUNT" = 3.000000000000000000)) OR ((((("CD_MARITAL_STATUS" = 'S') AND ("CD_EDUCATION_STATUS" = 'College')) AND ("SS_SALES_PRICE" >= 50.000000000000000000)) AND ("SS_SALES_PRICE" <= 100.000000000000000000)) AND ("HD_DEP_COUNT" = 1.000000000000000000))) OR ((((("CD_MARITAL_STATUS" = 'W') AND ("CD_EDUCATION_STATUS" = '2 yr Degree')) AND ("SS_SALES_PRICE" >= 150.000000000000000000)) AND ("SS_SALES_PRICE" <= 200.000000000000000000)) AND ("HD_DEP_COUNT" = 1.000000000000000000))))
where ((((((("SS_STORE_SK" IS NOT NULL AND "SS_ADDR_SK" IS NOT NULL) AND "SS_CDEMO_SK" IS NOT NULL) AND "SS_HDEMO_SK" IS NOT NULL) AND (((("SS_NET_PROFIT" >= ?) AND ("SS_NET_PROFIT" <= ?)) OR (("SS_NET_PROFIT" >= ?) AND ("SS_NET_PROFIT" <= ?))) OR (("SS_NET_PROFIT" >= ?) AND ("SS_NET_PROFIT" <= ?)))) AND (((("SS_SALES_PRICE" >= ?) AND ("SS_SALES_PRICE" <= ?)) OR (("SS_SALES_PRICE" >= ?) AND ("SS_SALES_PRICE" <= ?))) OR (("SS_SALES_PRICE" >= ?) AND ("SS_SALES_PRICE" <= ?)))) AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?)))
(2) Project [codegen id : 1]
Output [4]: [avg(ss_quantity)#11758, avg(ss_ext_sales_price)#11759, avg(ss_ext_wholesale_cost)#11760, sum(ss_ext_wholesale_cost)#11761]
Input [4]: [avg(ss_quantity)#11758, avg(ss_ext_sales_price)#11759, avg(ss_ext_wholesale_cost)#11760, sum(ss_ext_wholesale_cost)#11761]
select AVG("SS_QUANTITY") AS "avg(ss_quantity)", AVG("SS_EXT_SALES_PRICE") AS "avg(ss_ext_sales_price)", AVG("SS_EXT_WHOLESALE_COST") AS "avg(ss_ext_wholesale_cost)", SUM("SS_EXT_WHOLESALE_COST") AS "sum(ss_ext_wholesale_cost)"
from TPCDS.STORE_SALES join TPCDS.STORE on ("SS_STORE_SK" = "S_STORE_SK") join ( select "CA_ADDRESS_SK", "CA_STATE"
from TPCDS.CUSTOMER_ADDRESS
where (("CA_COUNTRY" IS NOT NULL AND ("CA_COUNTRY" = 'United States')) AND (("CA_STATE" IN ( 'TX', 'OH' ) OR "CA_STATE" IN ( 'OR', 'NM', 'KY' )) OR "CA_STATE" IN ( 'VA', 'TX', 'MS' ))) ) on (("SS_ADDR_SK" = "CA_ADDRESS_SK") AND (((("CA_STATE" IN ( 'TX', 'OH' ) AND ("SS_NET_PROFIT" >= 100.000000000000000000)) AND ("SS_NET_PROFIT" <= 200.000000000000000000)) OR (("CA_STATE" IN ( 'OR', 'NM', 'KY' ) AND ("SS_NET_PROFIT" >= 150.000000000000000000)) AND ("SS_NET_PROFIT" <= 300.000000000000000000))) OR (("CA_STATE" IN ( 'VA', 'TX', 'MS' ) AND ("SS_NET_PROFIT" >= 50.000000000000000000)) AND ("SS_NET_PROFIT" <= 250.000000000000000000)))) join TPCDS.DATE_DIM on ("SS_SOLD_DATE_SK" = "D_DATE_SK") join ( select "CD_DEMO_SK", "CD_MARITAL_STATUS", "CD_EDUCATION_STATUS"
from TPCDS.CUSTOMER_DEMOGRAPHICS
where (((("CD_MARITAL_STATUS" = 'M') AND ("CD_EDUCATION_STATUS" = 'Advanced Degree')) OR (("CD_MARITAL_STATUS" = 'S') AND ("CD_EDUCATION_STATUS" = 'College'))) OR (("CD_MARITAL_STATUS" = 'W') AND ("CD_EDUCATION_STATUS" = '2 yr Degree'))) ) on (("SS_CDEMO_SK" = "CD_DEMO_SK") AND (((((("CD_MARITAL_STATUS" = 'M') AND ("CD_EDUCATION_STATUS" = 'Advanced Degree')) AND ("SS_SALES_PRICE" >= 100.000000000000000000)) AND ("SS_SALES_PRICE" <= 150.000000000000000000)) OR (((("CD_MARITAL_STATUS" = 'S') AND ("CD_EDUCATION_STATUS" = 'College')) AND ("SS_SALES_PRICE" >= 50.000000000000000000)) AND ("SS_SALES_PRICE" <= 100.000000000000000000))) OR (((("CD_MARITAL_STATUS" = 'W') AND ("CD_EDUCATION_STATUS" = '2 yr Degree')) AND ("SS_SALES_PRICE" >= 150.000000000000000000)) AND ("SS_SALES_PRICE" <= 200.000000000000000000)))) join ( select "HD_DEMO_SK", "HD_DEP_COUNT"
from TPCDS.HOUSEHOLD_DEMOGRAPHICS
where ((("HD_DEP_COUNT" = 3.000000000000000000) OR ("HD_DEP_COUNT" = 1.000000000000000000)) OR ("HD_DEP_COUNT" = 1.000000000000000000)) ) on (("SS_HDEMO_SK" = "HD_DEMO_SK") AND ((((((("CD_MARITAL_STATUS" = 'M') AND ("CD_EDUCATION_STATUS" = 'Advanced Degree')) AND ("SS_SALES_PRICE" >= 100.000000000000000000)) AND ("SS_SALES_PRICE" <= 150.000000000000000000)) AND ("HD_DEP_COUNT" = 3.000000000000000000)) OR ((((("CD_MARITAL_STATUS" = 'S') AND ("CD_EDUCATION_STATUS" = 'College')) AND ("SS_SALES_PRICE" >= 50.000000000000000000)) AND ("SS_SALES_PRICE" <= 100.000000000000000000)) AND ("HD_DEP_COUNT" = 1.000000000000000000))) OR ((((("CD_MARITAL_STATUS" = 'W') AND ("CD_EDUCATION_STATUS" = '2 yr Degree')) AND ("SS_SALES_PRICE" >= 150.000000000000000000)) AND ("SS_SALES_PRICE" <= 200.000000000000000000)) AND ("HD_DEP_COUNT" = 1.000000000000000000))))
where ((((((("SS_STORE_SK" IS NOT NULL AND "SS_ADDR_SK" IS NOT NULL) AND "SS_CDEMO_SK" IS NOT NULL) AND "SS_HDEMO_SK" IS NOT NULL) AND (((("SS_NET_PROFIT" >= 100.000000000000000000) AND ("SS_NET_PROFIT" <= 200.000000000000000000)) OR (("SS_NET_PROFIT" >= 150.000000000000000000) AND ("SS_NET_PROFIT" <= 300.000000000000000000))) OR (("SS_NET_PROFIT" >= 50.000000000000000000) AND ("SS_NET_PROFIT" <= 250.000000000000000000)))) AND (((("SS_SALES_PRICE" >= 100.000000000000000000) AND ("SS_SALES_PRICE" <= 150.000000000000000000)) OR (("SS_SALES_PRICE" >= 50.000000000000000000) AND ("SS_SALES_PRICE" <= 100.000000000000000000))) OR (("SS_SALES_PRICE" >= 150.000000000000000000) AND ("SS_SALES_PRICE" <= 200.000000000000000000)))) AND "SS_SOLD_DATE_SK" IS NOT NULL) AND ("D_YEAR" IS NOT NULL AND ("D_YEAR" = 2001.000000000000000000)))
== Physical Plan ==
* HashAggregate (36)
+- * HashAggregate (35)
+- * Project (34)
+- * SortMergeJoin Inner (33)
:- * Sort (29)
: +- * Project (28)
: +- * SortMergeJoin Inner (27)
: :- * Sort (23)
: : +- * Project (22)
: : +- * SortMergeJoin Inner (21)
: : :- * Sort (16)
: : : +- * Project (15)
: : : +- * SortMergeJoin Inner (14)
: : : :- * Sort (9)
: : : : +- * Project (8)
: : : : +- * SortMergeJoin Inner (7)
: : : : :- * Sort (3)
: : : : : +- * Filter (2)
: : : : : +- BatchScan (1)
: : : : +- * Sort (6)
: : : : +- * Project (5)
: : : : +- BatchScan (4)
: : : +- * Sort (13)
: : : +- * Project (12)
: : : +- * Filter (11)
: : : +- BatchScan (10)
: : +- * Sort (20)
: : +- * Project (19)
: : +- * Filter (18)
: : +- BatchScan (17)
: +- * Sort (26)
: +- * Filter (25)
: +- BatchScan (24)
+- * Sort (32)
+- * Filter (31)
+- BatchScan (30)
(1) BatchScan
Output [10]: [SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_ADDR_SK#11476, SS_STORE_SK#11477, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, SS_NET_PROFIT#11492, SS_SOLD_DATE_SK#11470]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE_SALES, [SS_CDEMO_SK#11589, SS_HDEMO_SK#11590, SS_ADDR_SK#11591, SS_STORE_SK#11592, SS_QUANTITY#11593, SS_SALES_PRICE#11594, SS_EXT_SALES_PRICE#11595, SS_EXT_WHOLESALE_COST#11596, SS_NET_PROFIT#11597, SS_SOLD_DATE_SK#11598], [oracolumnref(SS_CDEMO_SK#11589), oracolumnref(SS_HDEMO_SK#11590), oracolumnref(SS_ADDR_SK#11591), oracolumnref(SS_STORE_SK#11592), oracolumnref(SS_QUANTITY#11593), oracolumnref(SS_SALES_PRICE#11594), oracolumnref(SS_EXT_SALES_PRICE#11595), oracolumnref(SS_EXT_WHOLESALE_COST#11596), oracolumnref(SS_NET_PROFIT#11597), oracolumnref(SS_SOLD_DATE_SK#11598)], orabinaryopexpression((((((isnotnull(SS_STORE_SK#11477) AND isnotnull(SS_ADDR_SK#11476)) AND isnotnull(SS_CDEMO_SK#11474)) AND isnotnull(SS_HDEMO_SK#11475)) AND ((((SS_NET_PROFIT#11492 >= 100.000000000000000000) AND (SS_NET_PROFIT#11492 <= 200.000000000000000000)) OR ((SS_NET_PROFIT#11492 >= 150.000000000000000000) AND (SS_NET_PROFIT#11492 <= 300.000000000000000000))) OR ((SS_NET_PROFIT#11492 >= 50.000000000000000000) AND (SS_NET_PROFIT#11492 <= 250.000000000000000000)))) AND ((((SS_SALES_PRICE#11483 >= 100.000000000000000000) AND (SS_SALES_PRICE#11483 <= 150.000000000000000000)) OR ((SS_SALES_PRICE#11483 >= 50.000000000000000000) AND (SS_SALES_PRICE#11483 <= 100.000000000000000000))) OR ((SS_SALES_PRICE#11483 >= 150.000000000000000000) AND (SS_SALES_PRICE#11483 <= 200.000000000000000000)))))
PartitionSchema: struct<SS_SOLD_DATE_SK:decimal(38,18)>
ReadSchema: struct<SS_CDEMO_SK:decimal(38,18),SS_HDEMO_SK:decimal(38,18),SS_ADDR_SK:decimal(38,18),SS_STORE_SK:decimal(38,18),SS_QUANTITY:decimal(38,18),SS_SALES_PRICE:decimal(38,18),SS_EXT_SALES_PRICE:decimal(38,18),SS_EXT_WHOLESALE_COST:decimal(38,18),SS_NET_PROFIT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 100.000000000000000000, 200.000000000000000000, 150.000000000000000000, 300.000000000000000000, 50.000000000000000000, 250.000000000000000000, 100.000000000000000000, 150.000000000000000000, 50.000000000000000000, 100.000000000000000000, 150.000000000000000000, 200.000000000000000000
oraPushdownSQL: select "SS_CDEMO_SK", "SS_HDEMO_SK", "SS_ADDR_SK", "SS_STORE_SK", "SS_QUANTITY", "SS_SALES_PRICE", "SS_EXT_SALES_PRICE", "SS_EXT_WHOLESALE_COST", "SS_NET_PROFIT", "SS_SOLD_DATE_SK"
from TPCDS.STORE_SALES
where ((((("SS_STORE_SK" IS NOT NULL AND "SS_ADDR_SK" IS NOT NULL) AND "SS_CDEMO_SK" IS NOT NULL) AND "SS_HDEMO_SK" IS NOT NULL) AND (((("SS_NET_PROFIT" >= ?) AND ("SS_NET_PROFIT" <= ?)) OR (("SS_NET_PROFIT" >= ?) AND ("SS_NET_PROFIT" <= ?))) OR (("SS_NET_PROFIT" >= ?) AND ("SS_NET_PROFIT" <= ?)))) AND (((("SS_SALES_PRICE" >= ?) AND ("SS_SALES_PRICE" <= ?)) OR (("SS_SALES_PRICE" >= ?) AND ("SS_SALES_PRICE" <= ?))) OR (("SS_SALES_PRICE" >= ?) AND ("SS_SALES_PRICE" <= ?)))) and "SS_SOLD_DATE_SK" IS NOT NULL
(2) Filter [codegen id : 1]
Input [10]: [SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_ADDR_SK#11476, SS_STORE_SK#11477, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, SS_NET_PROFIT#11492, SS_SOLD_DATE_SK#11470]
Condition : (((((isnotnull(SS_STORE_SK#11477) AND isnotnull(SS_ADDR_SK#11476)) AND isnotnull(SS_CDEMO_SK#11474)) AND isnotnull(SS_HDEMO_SK#11475)) AND ((((SS_NET_PROFIT#11492 >= 100.000000000000000000) AND (SS_NET_PROFIT#11492 <= 200.000000000000000000)) OR ((SS_NET_PROFIT#11492 >= 150.000000000000000000) AND (SS_NET_PROFIT#11492 <= 300.000000000000000000))) OR ((SS_NET_PROFIT#11492 >= 50.000000000000000000) AND (SS_NET_PROFIT#11492 <= 250.000000000000000000)))) AND ((((SS_SALES_PRICE#11483 >= 100.000000000000000000) AND (SS_SALES_PRICE#11483 <= 150.000000000000000000)) OR ((SS_SALES_PRICE#11483 >= 50.000000000000000000) AND (SS_SALES_PRICE#11483 <= 100.000000000000000000))) OR ((SS_SALES_PRICE#11483 >= 150.000000000000000000) AND (SS_SALES_PRICE#11483 <= 200.000000000000000000))))
(3) Sort [codegen id : 1]
Input [10]: [SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_ADDR_SK#11476, SS_STORE_SK#11477, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, SS_NET_PROFIT#11492, SS_SOLD_DATE_SK#11470]
Arguments: [ss_store_sk#11477 ASC NULLS FIRST], false, 0
(4) BatchScan
Output [1]: [S_STORE_SK#11493]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.STORE, [S_STORE_SK#11609], [oracolumnref(S_STORE_SK#11609)]
PartitionSchema: struct<>
ReadSchema: struct<S_STORE_SK:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownSQL: select "S_STORE_SK"
from TPCDS.STORE
(5) Project [codegen id : 2]
Output [1]: [S_STORE_SK#11493]
Input [1]: [S_STORE_SK#11493]
(6) Sort [codegen id : 2]
Input [1]: [S_STORE_SK#11493]
Arguments: [s_store_sk#11493 ASC NULLS FIRST], false, 0
(7) SortMergeJoin [codegen id : 3]
Left keys [1]: [ss_store_sk#11477]
Right keys [1]: [s_store_sk#11493]
Join condition: None
(8) Project [codegen id : 3]
Output [9]: [SS_SOLD_DATE_SK#11470, SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_ADDR_SK#11476, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, SS_NET_PROFIT#11492]
Input [11]: [SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_ADDR_SK#11476, SS_STORE_SK#11477, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, SS_NET_PROFIT#11492, SS_SOLD_DATE_SK#11470, S_STORE_SK#11493]
(9) Sort [codegen id : 3]
Input [9]: [SS_SOLD_DATE_SK#11470, SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_ADDR_SK#11476, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, SS_NET_PROFIT#11492]
Arguments: [ss_addr_sk#11476 ASC NULLS FIRST], false, 0
(10) BatchScan
Output [3]: [CA_ADDRESS_SK#11536, CA_STATE#11544, CA_COUNTRY#11546]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER_ADDRESS, [CA_ADDRESS_SK#11611, CA_STATE#11612, CA_COUNTRY#11613], [oracolumnref(CA_ADDRESS_SK#11611), oracolumnref(CA_STATE#11612), oracolumnref(CA_COUNTRY#11613)], orabinaryopexpression(((isnotnull(CA_COUNTRY#11546) AND (CA_COUNTRY#11546 = United States)) AND ((CA_STATE#11544 IN (TX,OH) OR CA_STATE#11544 IN (OR,NM,KY)) OR CA_STATE#11544 IN (VA,TX,MS))))
PartitionSchema: struct<>
ReadSchema: struct<CA_ADDRESS_SK:decimal(38,18),CA_STATE:string,CA_COUNTRY:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: United States, TX, OH, OR, NM, KY, VA, TX, MS
oraPushdownSQL: select "CA_ADDRESS_SK", "CA_STATE", "CA_COUNTRY"
from TPCDS.CUSTOMER_ADDRESS
where (("CA_COUNTRY" IS NOT NULL AND ("CA_COUNTRY" = ?)) AND (("CA_STATE" IN ( ?, ? ) OR "CA_STATE" IN ( ?, ?, ? )) OR "CA_STATE" IN ( ?, ?, ? )))
(11) Filter [codegen id : 4]
Input [3]: [CA_ADDRESS_SK#11536, CA_STATE#11544, CA_COUNTRY#11546]
Condition : ((isnotnull(CA_COUNTRY#11546) AND (CA_COUNTRY#11546 = United States)) AND ((CA_STATE#11544 IN (TX,OH) OR CA_STATE#11544 IN (OR,NM,KY)) OR CA_STATE#11544 IN (VA,TX,MS)))
(12) Project [codegen id : 4]
Output [2]: [CA_ADDRESS_SK#11536, CA_STATE#11544]
Input [3]: [CA_ADDRESS_SK#11536, CA_STATE#11544, CA_COUNTRY#11546]
(13) Sort [codegen id : 4]
Input [2]: [CA_ADDRESS_SK#11536, CA_STATE#11544]
Arguments: [ca_address_sk#11536 ASC NULLS FIRST], false, 0
(14) SortMergeJoin [codegen id : 5]
Left keys [1]: [ss_addr_sk#11476]
Right keys [1]: [ca_address_sk#11536]
Join condition: ((((ca_state#11544 IN (TX,OH) AND (ss_net_profit#11492 >= 100.000000000000000000)) AND (ss_net_profit#11492 <= 200.000000000000000000)) OR ((ca_state#11544 IN (OR,NM,KY) AND (ss_net_profit#11492 >= 150.000000000000000000)) AND (ss_net_profit#11492 <= 300.000000000000000000))) OR ((ca_state#11544 IN (VA,TX,MS) AND (ss_net_profit#11492 >= 50.000000000000000000)) AND (ss_net_profit#11492 <= 250.000000000000000000)))
(15) Project [codegen id : 5]
Output [7]: [SS_SOLD_DATE_SK#11470, SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486]
Input [11]: [SS_SOLD_DATE_SK#11470, SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_ADDR_SK#11476, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, SS_NET_PROFIT#11492, CA_ADDRESS_SK#11536, CA_STATE#11544]
(16) Sort [codegen id : 5]
Input [7]: [SS_SOLD_DATE_SK#11470, SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486]
Arguments: [ss_sold_date_sk#11470 ASC NULLS FIRST], false, 0
(17) BatchScan
Output [2]: [D_DATE_SK#11549, D_YEAR#11555]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#11617, D_YEAR#11618], [oracolumnref(D_DATE_SK#11617), oracolumnref(D_YEAR#11618)], orabinaryopexpression((isnotnull(D_YEAR#11555) AND (D_YEAR#11555 = 2001.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<D_DATE_SK:decimal(38,18),D_YEAR:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 2001.000000000000000000
oraPushdownSQL: select "D_DATE_SK", "D_YEAR"
from TPCDS.DATE_DIM
where ("D_YEAR" IS NOT NULL AND ("D_YEAR" = ?))
(18) Filter [codegen id : 6]
Input [2]: [D_DATE_SK#11549, D_YEAR#11555]
Condition : (isnotnull(D_YEAR#11555) AND (D_YEAR#11555 = 2001.000000000000000000))
(19) Project [codegen id : 6]
Output [1]: [D_DATE_SK#11549]
Input [2]: [D_DATE_SK#11549, D_YEAR#11555]
(20) Sort [codegen id : 6]
Input [1]: [D_DATE_SK#11549]
Arguments: [d_date_sk#11549 ASC NULLS FIRST], false, 0
(21) SortMergeJoin [codegen id : 7]
Left keys [1]: [ss_sold_date_sk#11470]
Right keys [1]: [d_date_sk#11549]
Join condition: None
(22) Project [codegen id : 7]
Output [6]: [SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486]
Input [8]: [SS_SOLD_DATE_SK#11470, SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, D_DATE_SK#11549]
(23) Sort [codegen id : 7]
Input [6]: [SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486]
Arguments: [ss_cdemo_sk#11474 ASC NULLS FIRST], false, 0
(24) BatchScan
Output [3]: [CD_DEMO_SK#11522, CD_MARITAL_STATUS#11524, CD_EDUCATION_STATUS#11525]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.CUSTOMER_DEMOGRAPHICS, [CD_DEMO_SK#11621, CD_MARITAL_STATUS#11622, CD_EDUCATION_STATUS#11623], [oracolumnref(CD_DEMO_SK#11621), oracolumnref(CD_MARITAL_STATUS#11622), oracolumnref(CD_EDUCATION_STATUS#11623)], orabinaryopexpression(((((CD_MARITAL_STATUS#11524 = M) AND (CD_EDUCATION_STATUS#11525 = Advanced Degree)) OR ((CD_MARITAL_STATUS#11524 = S) AND (CD_EDUCATION_STATUS#11525 = College))) OR ((CD_MARITAL_STATUS#11524 = W) AND (CD_EDUCATION_STATUS#11525 = 2 yr Degree))))
PartitionSchema: struct<>
ReadSchema: struct<CD_DEMO_SK:decimal(38,18),CD_MARITAL_STATUS:string,CD_EDUCATION_STATUS:string>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: M, Advanced Degree, S, College, W, 2 yr Degree
oraPushdownSQL: select "CD_DEMO_SK", "CD_MARITAL_STATUS", "CD_EDUCATION_STATUS"
from TPCDS.CUSTOMER_DEMOGRAPHICS
where (((("CD_MARITAL_STATUS" = ?) AND ("CD_EDUCATION_STATUS" = ?)) OR (("CD_MARITAL_STATUS" = ?) AND ("CD_EDUCATION_STATUS" = ?))) OR (("CD_MARITAL_STATUS" = ?) AND ("CD_EDUCATION_STATUS" = ?)))
(25) Filter [codegen id : 8]
Input [3]: [CD_DEMO_SK#11522, CD_MARITAL_STATUS#11524, CD_EDUCATION_STATUS#11525]
Condition : ((((CD_MARITAL_STATUS#11524 = M) AND (CD_EDUCATION_STATUS#11525 = Advanced Degree)) OR ((CD_MARITAL_STATUS#11524 = S) AND (CD_EDUCATION_STATUS#11525 = College))) OR ((CD_MARITAL_STATUS#11524 = W) AND (CD_EDUCATION_STATUS#11525 = 2 yr Degree)))
(26) Sort [codegen id : 8]
Input [3]: [CD_DEMO_SK#11522, CD_MARITAL_STATUS#11524, CD_EDUCATION_STATUS#11525]
Arguments: [cd_demo_sk#11522 ASC NULLS FIRST], false, 0
(27) SortMergeJoin [codegen id : 9]
Left keys [1]: [ss_cdemo_sk#11474]
Right keys [1]: [cd_demo_sk#11522]
Join condition: ((((((cd_marital_status#11524 = M) AND (cd_education_status#11525 = Advanced Degree)) AND (ss_sales_price#11483 >= 100.000000000000000000)) AND (ss_sales_price#11483 <= 150.000000000000000000)) OR ((((cd_marital_status#11524 = S) AND (cd_education_status#11525 = College)) AND (ss_sales_price#11483 >= 50.000000000000000000)) AND (ss_sales_price#11483 <= 100.000000000000000000))) OR ((((cd_marital_status#11524 = W) AND (cd_education_status#11525 = 2 yr Degree)) AND (ss_sales_price#11483 >= 150.000000000000000000)) AND (ss_sales_price#11483 <= 200.000000000000000000)))
(28) Project [codegen id : 9]
Output [7]: [SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, CD_MARITAL_STATUS#11524, CD_EDUCATION_STATUS#11525]
Input [9]: [SS_CDEMO_SK#11474, SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, CD_DEMO_SK#11522, CD_MARITAL_STATUS#11524, CD_EDUCATION_STATUS#11525]
(29) Sort [codegen id : 9]
Input [7]: [SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, CD_MARITAL_STATUS#11524, CD_EDUCATION_STATUS#11525]
Arguments: [ss_hdemo_sk#11475 ASC NULLS FIRST], false, 0
(30) BatchScan
Output [2]: [HD_DEMO_SK#11531, HD_DEP_COUNT#11534]
Format: orafile
OraPlan: 00 OraTableScan TPCDS.HOUSEHOLD_DEMOGRAPHICS, [HD_DEMO_SK#11627, HD_DEP_COUNT#11628], [oracolumnref(HD_DEMO_SK#11627), oracolumnref(HD_DEP_COUNT#11628)], orabinaryopexpression((((HD_DEP_COUNT#11534 = 3.000000000000000000) OR (HD_DEP_COUNT#11534 = 1.000000000000000000)) OR (HD_DEP_COUNT#11534 = 1.000000000000000000)))
PartitionSchema: struct<>
ReadSchema: struct<HD_DEMO_SK:decimal(38,18),HD_DEP_COUNT:decimal(38,18)>
dsKey: DataSourceKey(jdbc:oracle:thin:@mammoth_medium,tpcds)
oraPushdownBindValues: 3.000000000000000000, 1.000000000000000000, 1.000000000000000000
oraPushdownSQL: select "HD_DEMO_SK", "HD_DEP_COUNT"
from TPCDS.HOUSEHOLD_DEMOGRAPHICS
where ((("HD_DEP_COUNT" = ?) OR ("HD_DEP_COUNT" = ?)) OR ("HD_DEP_COUNT" = ?))
(31) Filter [codegen id : 10]
Input [2]: [HD_DEMO_SK#11531, HD_DEP_COUNT#11534]
Condition : (((HD_DEP_COUNT#11534 = 3.000000000000000000) OR (HD_DEP_COUNT#11534 = 1.000000000000000000)) OR (HD_DEP_COUNT#11534 = 1.000000000000000000))
(32) Sort [codegen id : 10]
Input [2]: [HD_DEMO_SK#11531, HD_DEP_COUNT#11534]
Arguments: [hd_demo_sk#11531 ASC NULLS FIRST], false, 0
(33) SortMergeJoin [codegen id : 11]
Left keys [1]: [ss_hdemo_sk#11475]
Right keys [1]: [hd_demo_sk#11531]
Join condition: (((((((cd_marital_status#11524 = M) AND (cd_education_status#11525 = Advanced Degree)) AND (ss_sales_price#11483 >= 100.000000000000000000)) AND (ss_sales_price#11483 <= 150.000000000000000000)) AND (hd_dep_count#11534 = 3.000000000000000000)) OR (((((cd_marital_status#11524 = S) AND (cd_education_status#11525 = College)) AND (ss_sales_price#11483 >= 50.000000000000000000)) AND (ss_sales_price#11483 <= 100.000000000000000000)) AND (hd_dep_count#11534 = 1.000000000000000000))) OR (((((cd_marital_status#11524 = W) AND (cd_education_status#11525 = 2 yr Degree)) AND (ss_sales_price#11483 >= 150.000000000000000000)) AND (ss_sales_price#11483 <= 200.000000000000000000)) AND (hd_dep_count#11534 = 1.000000000000000000)))
(34) Project [codegen id : 11]
Output [3]: [SS_QUANTITY#11480, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486]
Input [9]: [SS_HDEMO_SK#11475, SS_QUANTITY#11480, SS_SALES_PRICE#11483, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486, CD_MARITAL_STATUS#11524, CD_EDUCATION_STATUS#11525, HD_DEMO_SK#11531, HD_DEP_COUNT#11534]
(35) HashAggregate [codegen id : 11]
Input [3]: [SS_QUANTITY#11480, SS_EXT_SALES_PRICE#11485, SS_EXT_WHOLESALE_COST#11486]
Keys: []
Functions [4]: [partial_avg(ss_quantity#11480), partial_avg(ss_ext_sales_price#11485), partial_avg(ss_ext_wholesale_cost#11486), partial_sum(ss_ext_wholesale_cost#11486)]
Aggregate Attributes [8]: [sum#11631, count#11632L, sum#11633, count#11634L, sum#11635, count#11636L, sum#11637, isEmpty#11638]
Results [8]: [sum#11639, count#11640L, sum#11641, count#11642L, sum#11643, count#11644L, sum#11645, isEmpty#11646]
(36) HashAggregate [codegen id : 11]
Input [8]: [sum#11639, count#11640L, sum#11641, count#11642L, sum#11643, count#11644L, sum#11645, isEmpty#11646]
Keys: []
Functions [4]: [avg(ss_quantity#11480), avg(ss_ext_sales_price#11485), avg(ss_ext_wholesale_cost#11486), sum(ss_ext_wholesale_cost#11486)]
Aggregate Attributes [4]: [avg(ss_quantity#11480)#11577, avg(ss_ext_sales_price#11485)#11578, avg(ss_ext_wholesale_cost#11486)#11579, sum(ss_ext_wholesale_cost#11486)#11580]
Results [4]: [avg(ss_quantity#11480)#11577 AS avg(ss_quantity)#11581, avg(ss_ext_sales_price#11485)#11578 AS avg(ss_ext_sales_price)#11582, avg(ss_ext_wholesale_cost#11486)#11579 AS avg(ss_ext_wholesale_cost)#11583, sum(ss_ext_wholesale_cost#11486)#11580 AS sum(ss_ext_wholesale_cost)#11584]
with cross_items as
(select i_item_sk ss_item_sk
from item,
(select iss.i_brand_id brand_id
,iss.i_class_id class_id
,iss.i_category_id category_id
from store_sales
,item iss
,date_dim d1
where ss_item_sk = iss.i_item_sk
and ss_sold_date_sk = d1.d_date_sk
and d1.d_year between 1999 AND 1999 + 2
intersect
select ics.i_brand_id
,ics.i_class_id
,ics.i_category_id
from catalog_sales
,item ics
,date_dim d2
where cs_item_sk = ics.i_item_sk
and cs_sold_date_sk = d2.d_date_sk
and d2.d_year between 1999 AND 1999 + 2
intersect
select iws.i_brand_id
,iws.i_class_id
,iws.i_category_id
from web_sales
,item iws
,date_dim d3
where ws_item_sk = iws.i_item_sk
and ws_sold_date_sk = d3.d_date_sk
and d3.d_year between 1999 AND 1999 + 2)
where i_brand_id = brand_id
and i_class_id = class_id
and i_category_id = category_id
),
avg_sales as
(select avg(quantity*list_price) average_sales
from (select ss_quantity quantity
,ss_list_price list_price
from store_sales
,date_dim
where ss_sold_date_sk = d_date_sk
and d_year between 1999 and 1999 + 2
union all
select cs_quantity quantity
,cs_list_price list_price
from catalog_sales
,date_dim
where cs_sold_date_sk = d_date_sk
and d_year between 1999 and 1999 + 2
union all
select ws_quantity quantity
,ws_list_price list_price
from web_sales
,date_dim
where ws_sold_date_sk = d_date_sk
and d_year between 1999 and 1999 + 2) x)
select channel, i_brand_id,i_class_id,i_category_id,sum(sales), sum(number_sales)
from(
select 'store' channel, i_brand_id,i_class_id
,i_category_id,sum(ss_quantity*ss_list_price) sales
, count(*) number_sales
from store_sales
,item
,date_dim
where ss_item_sk in (select ss_item_sk from cross_items)
and ss_item_sk = i_item_sk
and ss_sold_date_sk = d_date_sk
and d_year = 1999+2
and d_moy = 11
group by i_brand_id,i_class_id,i_category_id
having sum(ss_quantity*ss_list_price) > (select average_sales from avg_sales)
union all
select 'catalog' channel, i_brand_id,i_class_id,i_category_id, sum(cs_quantity*cs_list_price) sales, count(*) number_sales
from catalog_sales
,item
,date_dim
where cs_item_sk in (select ss_item_sk from cross_items)
and cs_item_sk = i_item_sk
and cs_sold_date_sk = d_date_sk
and d_year = 1999+2
and d_moy = 11
group by i_brand_id,i_class_id,i_category_id
having sum(cs_quantity*cs_list_price) > (select average_sales from avg_sales)
union all
select 'web' channel, i_brand_id,i_class_id,i_category_id, sum(ws_quantity*ws_list_price) sales , count(*) number_sales
from web_sales
,item
,date_dim
where ws_item_sk in (select ss_item_sk from cross_items)
and ws_item_sk = i_item_sk
and ws_sold_date_sk = d_date_sk
and d_year = 1999+2
and d_moy = 11
group by i_brand_id,i_class_id,i_category_id
having sum(ws_quantity*ws_list_price) > (select average_sales from avg_sales)
) y
group by rollup (channel, i_brand_id,i_class_id,i_category_id)
order by channel,i_brand_id,i_class_id,i_category_id
limit 100;
== Physical Plan ==
TakeOrderedAndProject (3)
+- * Project (2)
+- BatchScan (1)
(1) BatchScan
Output [6]: [channel#15445, i_brand_id#15446, i_class_id#15447, i_category_id#15448, sum(sales)#15435, sum(number_sales)#15436L]
OraPlan: 00 OraSingleQueryBlock [channel#15445, i_brand_id#15446, i_class_id#15447, i_category_id#15448, sum(sales#13836) AS sum(sales)#15435, sum(number_sales#13837L) AS sum(number_sales)#15436L], [oracolumnref(channel#15445), oracolumnref(i_brand_id#15446), oracolumnref(i_class_id#15447), oracolumnref(i_category_id#15448), oraalias(sum(sales#13836) AS sum(sales)#15435), oraalias(sum(number_sales#13837L) AS sum(number_sales)#15436L)], List(oracolumnref(channel#15445), oracolumnref(i_brand_id#15446), oracolumnref(i_class_id#15447), oracolumnref(i_category_id#15448), oracolumnref(spark_grouping_id#15444L))
01 +- OraCompositeQueryBlock Union false, false, [sales#13836, number_sales#13837L, channel#15440, i_brand_id#13890, i_class_id#13892, i_category_id#13894], SQLSnippet(value: UNION ALL, parameters: ArrayBuffer())
02 :- OraSingleQueryBlock [sales#13836, number_sales#13837L, store AS channel#15440, i_brand_id#13890, i_class_id#13892, i_category_id#13894], [oracolumnref(sales#13836), oracolumnref(number_sales#13837L), oraalias(store AS channel#15440), oracolumnref(i_brand_id#13890), oracolumnref(i_class_id#13892), oracolumnref(i_category_id#13894)], orabinaryopexpression((isnotnull(sum(CheckOverflow((promote_precision(cast(ss_quantity#13870 as decimal(38,18))) * promote_precision(cast(ss_list_price#13872 as decimal(38,18)))), DecimalType(38,6), true))#15426) AND (cast(sum(CheckOverflow((promote_precision(cast(ss_quantity#13870 as decimal(38,18))) * promote_precision(cast(ss_list_price#13872 as decimal(38,18)))), DecimalType(38,6), true))#15426 as decimal(38,10)) > scalar-subquery#13838 [])))
03 : +- OraSingleQueryBlock [i_brand_id#13890, i_class_id#13892, i_category_id#13894, sum(CheckOverflow((promote_precision(ss_quantity#13870) * promote_precision(ss_list_price#13872)), DecimalType(38,6), true)) AS sales#13836, count(1) AS number_sales#13837L, sum(CheckOverflow((promote_precision(ss_quantity#13870) * promote_precision(ss_list_price#13872)), DecimalType(38,6), true)) AS sum(CheckOverflow((promote_precision(cast(ss_quantity#13870 as decimal(38,18))) * promote_precision(cast(ss_list_price#13872 as decimal(38,18)))), DecimalType(38,6), true))#15426], [oracolumnref(i_brand_id#13890), oracolumnref(i_class_id#13892), oracolumnref(i_category_id#13894), oraalias(sum(CheckOverflow((promote_precision(ss_quantity#13870) * promote_precision(ss_list_price#13872)), DecimalType(38,6), true)) AS sales#13836), oraalias(count(1) AS number_sales#13837L), oraalias(sum(CheckOverflow((promote_precision(ss_quantity#13870) * promote_precision(ss_list_price#13872)), DecimalType(38,6), true)) AS sum(CheckOverflow((promote_precision(cast(ss_quantity#13870 as decimal(38,18))) * promote_precision(cast(ss_list_price#13872 as decimal(38,18)))), DecimalType(38,6), true))#15426)], orabinaryopexpression((((isnotnull(SS_SOLD_DATE_SK#13860) AND (SS_ITEM_SK#13862 = ss_item_sk#13852)) AND (I_ITEM_SK#13883 = ss_item_sk#13852)) AND (((isnotnull(D_YEAR#13911) AND isnotnull(D_MOY#13913)) AND (D_YEAR#13911 = 2001.000000000000000000)) AND (D_MOY#13913 = 11.000000000000000000)))), List(oracolumnref(i_brand_id#13890), oracolumnref(i_class_id#13892), oracolumnref(i_category_id#13894))
04 : :- OraTableScan TPCDS.STORE_SALES, [SS_ITEM_SK#13862, SS_QUANTITY#13870, SS_LIST_PRICE#13872, SS_SOLD_DATE_SK#13860]
05 : :- OraTableScan TPCDS.ITEM, [I_ITEM_SK#13883, I_BRAND_ID#13890, I_CLASS_ID#13892, I_CATEGORY_ID#13894]
06 : +- OraTableScan TPCDS.DATE_DIM, [D_DATE_SK#13905, D_YEAR#13911, D_MOY#13913]
07 :- OraSingleQueryBlock [sales#13841, number_sales#13842L, catalog AS channel#15732, i_brand_id#13974, i_class_id#13976, i_category_id#13978], [oracolumnref(sales#13841), oracolumnref(number_sales#13842L), oraalias(catalog AS channel#15732), oracolumnref(i_brand_id#13974), oracolumnref(i_class_id#13976), oracolumnref(i_category_id#13978)], orabinaryopexpression((isnotnull(sum(CheckOverflow((promote_precision(cast(cs_quantity#13951 as decimal(38,18))) * promote_precision(cast(cs_list_price#13953 as decimal(38,18)))), DecimalType(38,6), true))#15429) AND (cast(sum(CheckOverflow((promote_precision(cast(cs_quantity#13951 as decimal(38,18))) * promote_precision(cast(cs_list_price#13953 as decimal(38,18)))), DecimalType(38,6), true))#15429 as decimal(38,10)) > scalar-subquery#13843 [])))
08 : +- OraSingleQueryBlock [i_brand_id#13974, i_class_id#13976, i_category_id#13978, sum(CheckOverflow((promote_precision(c
- Quick Start
- Latest Demo
- Configuration
- Catalog
- Translation
- Query Splitting details
- DML Operations
- Language Integration
- Dockerized Demo env.
- Sharded Database
- Developer Notes