== Physical Plan ==
* ColumnarToRow (33)
+- CometTakeOrderedAndProject (32)
   +- CometProject (31)
      +- CometBroadcastHashJoin (30)
         :- CometProject (28)
         :  +- CometBroadcastHashJoin (27)
         :     :- CometFilter (22)
         :     :  +- CometHashAggregate (21)
         :     :     +- CometExchange (20)
         :     :        +- CometHashAggregate (19)
         :     :           +- CometProject (18)
         :     :              +- CometBroadcastHashJoin (17)
         :     :                 :- CometProject (7)
         :     :                 :  +- CometBroadcastHashJoin (6)
         :     :                 :     :- CometFilter (2)
         :     :                 :     :  +- CometNativeScan: `spark_catalog`.`default`.`store_sales` (1)
         :     :                 :     +- CometBroadcastExchange (5)
         :     :                 :        +- CometFilter (4)
         :     :                 :           +- CometNativeScan: `spark_catalog`.`default`.`item` (3)
         :     :                 +- CometBroadcastExchange (16)
         :     :                    +- CometProject (15)
         :     :                       +- CometBroadcastHashJoin (14)
         :     :                          :- CometFilter (9)
         :     :                          :  +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (8)
         :     :                          +- CometBroadcastExchange (13)
         :     :                             +- CometProject (12)
         :     :                                +- CometFilter (11)
         :     :                                   +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (10)
         :     +- CometBroadcastExchange (26)
         :        +- CometFilter (25)
         :           +- CometHashAggregate (24)
         :              +- ReusedExchange (23)
         +- ReusedExchange (29)


(1) CometNativeScan: `spark_catalog`.`default`.`store_sales`
Output [3]: [ss_item_sk#1, ss_ext_sales_price#2, ss_sold_date_sk#3]
Arguments: [ss_item_sk#1, ss_ext_sales_price#2, ss_sold_date_sk#3]

(2) CometFilter
Input [3]: [ss_item_sk#1, ss_ext_sales_price#2, ss_sold_date_sk#3]
Condition : isnotnull(ss_item_sk#1)

(3) CometNativeScan: `spark_catalog`.`default`.`item`
Output [2]: [i_item_sk#4, i_item_id#5]
Arguments: [i_item_sk#4, i_item_id#5]

(4) CometFilter
Input [2]: [i_item_sk#4, i_item_id#5]
Condition : (isnotnull(i_item_sk#4) AND isnotnull(i_item_id#5))

(5) CometBroadcastExchange
Input [2]: [i_item_sk#4, i_item_id#5]
Arguments: [i_item_sk#4, i_item_id#5]

(6) CometBroadcastHashJoin
Left output [3]: [ss_item_sk#1, ss_ext_sales_price#2, ss_sold_date_sk#3]
Right output [2]: [i_item_sk#4, i_item_id#5]
Arguments: [ss_item_sk#1], [i_item_sk#4], Inner, BuildRight

(7) CometProject
Input [5]: [ss_item_sk#1, ss_ext_sales_price#2, ss_sold_date_sk#3, i_item_sk#4, i_item_id#5]
Arguments: [ss_ext_sales_price#2, ss_sold_date_sk#3, i_item_id#5], [ss_ext_sales_price#2, ss_sold_date_sk#3, i_item_id#5]

(8) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [2]: [d_date_sk#6, d_date#7]
Arguments: [d_date_sk#6, d_date#7]

(9) CometFilter
Input [2]: [d_date_sk#6, d_date#7]
Condition : isnotnull(d_date_sk#6)

(10) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [2]: [d_date#8, d_week_seq#9]
Arguments: [d_date#8, d_week_seq#9]

(11) CometFilter
Input [2]: [d_date#8, d_week_seq#9]
Condition : (isnotnull(d_week_seq#9) AND (d_week_seq#9 = Subquery scalar-subquery#10, [id=#11]))

(12) CometProject
Input [2]: [d_date#8, d_week_seq#9]
Arguments: [d_date#8], [d_date#8]

(13) CometBroadcastExchange
Input [1]: [d_date#8]
Arguments: [d_date#8]

(14) CometBroadcastHashJoin
Left output [2]: [d_date_sk#6, d_date#7]
Right output [1]: [d_date#8]
Arguments: [d_date#7], [d_date#8], LeftSemi, BuildRight

(15) CometProject
Input [2]: [d_date_sk#6, d_date#7]
Arguments: [d_date_sk#6], [d_date_sk#6]

(16) CometBroadcastExchange
Input [1]: [d_date_sk#6]
Arguments: [d_date_sk#6]

(17) CometBroadcastHashJoin
Left output [3]: [ss_ext_sales_price#2, ss_sold_date_sk#3, i_item_id#5]
Right output [1]: [d_date_sk#6]
Arguments: [ss_sold_date_sk#3], [d_date_sk#6], Inner, BuildRight

(18) CometProject
Input [4]: [ss_ext_sales_price#2, ss_sold_date_sk#3, i_item_id#5, d_date_sk#6]
Arguments: [ss_ext_sales_price#2, i_item_id#5], [ss_ext_sales_price#2, i_item_id#5]

(19) CometHashAggregate
Input [2]: [ss_ext_sales_price#2, i_item_id#5]
Keys [1]: [i_item_id#5]
Functions [1]: [partial_sum(UnscaledValue(ss_ext_sales_price#2))]

(20) CometExchange
Input [2]: [i_item_id#5, sum#12]
Arguments: hashpartitioning(i_item_id#5, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(21) CometHashAggregate
Input [2]: [i_item_id#5, sum#12]
Keys [1]: [i_item_id#5]
Functions [1]: [sum(UnscaledValue(ss_ext_sales_price#2))]

(22) CometFilter
Input [2]: [item_id#13, ss_item_rev#14]
Condition : isnotnull(ss_item_rev#14)

(23) ReusedExchange [Reuses operator id: 20]
Output [2]: [i_item_id#15, sum#16]

(24) CometHashAggregate
Input [2]: [i_item_id#15, sum#16]
Keys [1]: [i_item_id#15]
Functions [1]: [sum(UnscaledValue(cs_ext_sales_price#17))]

(25) CometFilter
Input [2]: [item_id#18, cs_item_rev#19]
Condition : isnotnull(cs_item_rev#19)

(26) CometBroadcastExchange
Input [2]: [item_id#18, cs_item_rev#19]
Arguments: [item_id#18, cs_item_rev#19]

(27) CometBroadcastHashJoin
Left output [2]: [item_id#13, ss_item_rev#14]
Right output [2]: [item_id#18, cs_item_rev#19]
Arguments: [item_id#13], [item_id#18], Inner, ((((cast(ss_item_rev#14 as decimal(19,3)) >= (0.9 * cs_item_rev#19)) AND (cast(ss_item_rev#14 as decimal(20,3)) <= (1.1 * cs_item_rev#19))) AND (cast(cs_item_rev#19 as decimal(19,3)) >= (0.9 * ss_item_rev#14))) AND (cast(cs_item_rev#19 as decimal(20,3)) <= (1.1 * ss_item_rev#14))), BuildRight

(28) CometProject
Input [4]: [item_id#13, ss_item_rev#14, item_id#18, cs_item_rev#19]
Arguments: [item_id#13, ss_item_rev#14, cs_item_rev#19], [item_id#13, ss_item_rev#14, cs_item_rev#19]

(29) ReusedExchange [Reuses operator id: 26]
Output [2]: [item_id#20, ws_item_rev#21]

(30) CometBroadcastHashJoin
Left output [3]: [item_id#13, ss_item_rev#14, cs_item_rev#19]
Right output [2]: [item_id#20, ws_item_rev#21]
Arguments: [item_id#13], [item_id#20], Inner, ((((((((cast(ss_item_rev#14 as decimal(19,3)) >= (0.9 * ws_item_rev#21)) AND (cast(ss_item_rev#14 as decimal(20,3)) <= (1.1 * ws_item_rev#21))) AND (cast(cs_item_rev#19 as decimal(19,3)) >= (0.9 * ws_item_rev#21))) AND (cast(cs_item_rev#19 as decimal(20,3)) <= (1.1 * ws_item_rev#21))) AND (cast(ws_item_rev#21 as decimal(19,3)) >= (0.9 * ss_item_rev#14))) AND (cast(ws_item_rev#21 as decimal(20,3)) <= (1.1 * ss_item_rev#14))) AND (cast(ws_item_rev#21 as decimal(19,3)) >= (0.9 * cs_item_rev#19))) AND (cast(ws_item_rev#21 as decimal(20,3)) <= (1.1 * cs_item_rev#19))), BuildRight

(31) CometProject
Input [5]: [item_id#13, ss_item_rev#14, cs_item_rev#19, item_id#20, ws_item_rev#21]
Arguments: [item_id#13, ss_item_rev#14, ss_dev#22, cs_item_rev#19, cs_dev#23, ws_item_rev#21, ws_dev#24, average#25], [item_id#13, ss_item_rev#14, (((ss_item_rev#14 / ((ss_item_rev#14 + cs_item_rev#19) + ws_item_rev#21)) / 3) * 100) AS ss_dev#22, cs_item_rev#19, (((cs_item_rev#19 / ((ss_item_rev#14 + cs_item_rev#19) + ws_item_rev#21)) / 3) * 100) AS cs_dev#23, ws_item_rev#21, (((ws_item_rev#21 / ((ss_item_rev#14 + cs_item_rev#19) + ws_item_rev#21)) / 3) * 100) AS ws_dev#24, (((ss_item_rev#14 + cs_item_rev#19) + ws_item_rev#21) / 3) AS average#25]

(32) CometTakeOrderedAndProject
Input [8]: [item_id#13, ss_item_rev#14, ss_dev#22, cs_item_rev#19, cs_dev#23, ws_item_rev#21, ws_dev#24, average#25]
Arguments: TakeOrderedAndProject(limit=100, orderBy=[item_id#13 ASC NULLS FIRST,ss_item_rev#14 ASC NULLS FIRST], output=[item_id#13,ss_item_rev#14,ss_dev#22,cs_item_rev#19,cs_dev#23,ws_item_rev#21,ws_dev#24,average#25]), [item_id#13, ss_item_rev#14, ss_dev#22, cs_item_rev#19, cs_dev#23, ws_item_rev#21, ws_dev#24, average#25], 100, [item_id#13 ASC NULLS FIRST, ss_item_rev#14 ASC NULLS FIRST], [item_id#13, ss_item_rev#14, ss_dev#22, cs_item_rev#19, cs_dev#23, ws_item_rev#21, ws_dev#24, average#25]

(33) ColumnarToRow [codegen id : 1]
Input [8]: [item_id#13, ss_item_rev#14, ss_dev#22, cs_item_rev#19, cs_dev#23, ws_item_rev#21, ws_dev#24, average#25]

===== Subqueries =====

Subquery:1 Hosting operator id = 11 Hosting Expression = Subquery scalar-subquery#10, [id=#11]
* ColumnarToRow (37)
+- CometProject (36)
   +- CometFilter (35)
      +- CometNativeScan: `spark_catalog`.`default`.`date_dim` (34)


(34) CometNativeScan: `spark_catalog`.`default`.`date_dim`
Output [2]: [d_date#26, d_week_seq#27]
Arguments: [d_date#26, d_week_seq#27]

(35) CometFilter
Input [2]: [d_date#26, d_week_seq#27]
Condition : (isnotnull(d_date#26) AND (d_date#26 = 2000-01-03))

(36) CometProject
Input [2]: [d_date#26, d_week_seq#27]
Arguments: [d_week_seq#27], [d_week_seq#27]

(37) ColumnarToRow [codegen id : 1]
Input [1]: [d_week_seq#27]


