== Physical Plan ==
* Filter (42)
+- * HashAggregate (41)
   +- Exchange (40)
      +- * HashAggregate (39)
         +- * HashAggregate (38)
            +- Exchange (37)
               +- * HashAggregate (36)
                  +- * Project (35)
                     +- * BroadcastHashJoin Inner BuildRight (34)
                        :- * ColumnarToRow (29)
                        :  +- CometProject (28)
                        :     +- CometBroadcastHashJoin (27)
                        :        :- CometProject (23)
                        :        :  +- CometBroadcastHashJoin (22)
                        :        :     :- CometProject (18)
                        :        :     :  +- CometBroadcastHashJoin (17)
                        :        :     :     :- CometProject (12)
                        :        :     :     :  +- CometSortMergeJoin (11)
                        :        :     :     :     :- CometSort (5)
                        :        :     :     :     :  +- CometExchange (4)
                        :        :     :     :     :     +- CometProject (3)
                        :        :     :     :     :        +- CometFilter (2)
                        :        :     :     :     :           +- CometScan parquet spark_catalog.default.store_sales (1)
                        :        :     :     :     +- CometSort (10)
                        :        :     :     :        +- CometExchange (9)
                        :        :     :     :           +- CometProject (8)
                        :        :     :     :              +- CometFilter (7)
                        :        :     :     :                 +- CometScan parquet spark_catalog.default.store_returns (6)
                        :        :     :     +- CometBroadcastExchange (16)
                        :        :     :        +- CometProject (15)
                        :        :     :           +- CometFilter (14)
                        :        :     :              +- CometScan parquet spark_catalog.default.store (13)
                        :        :     +- CometBroadcastExchange (21)
                        :        :        +- CometFilter (20)
                        :        :           +- CometScan parquet spark_catalog.default.item (19)
                        :        +- CometBroadcastExchange (26)
                        :           +- CometFilter (25)
                        :              +- CometScan parquet spark_catalog.default.customer (24)
                        +- BroadcastExchange (33)
                           +- * ColumnarToRow (32)
                              +- CometFilter (31)
                                 +- CometScan parquet spark_catalog.default.customer_address (30)


(1) CometScan parquet spark_catalog.default.store_sales
Output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, ss_sold_date_sk#6]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_ticket_number), IsNotNull(ss_item_sk), IsNotNull(ss_store_sk), IsNotNull(ss_customer_sk)]
ReadSchema: struct<ss_item_sk:int,ss_customer_sk:int,ss_store_sk:int,ss_ticket_number:int,ss_net_paid:decimal(7,2)>

(2) CometFilter
Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, ss_sold_date_sk#6]
Condition : (((isnotnull(ss_ticket_number#4) AND isnotnull(ss_item_sk#1)) AND isnotnull(ss_store_sk#3)) AND isnotnull(ss_customer_sk#2))

(3) CometProject
Input [6]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, ss_sold_date_sk#6]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5], [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]

(4) CometExchange
Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Arguments: hashpartitioning(ss_ticket_number#4, ss_item_sk#1, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=1]

(5) CometSort
Input [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5], [ss_ticket_number#4 ASC NULLS FIRST, ss_item_sk#1 ASC NULLS FIRST]

(6) CometScan parquet spark_catalog.default.store_returns
Output [3]: [sr_item_sk#7, sr_ticket_number#8, sr_returned_date_sk#9]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store_returns]
PushedFilters: [IsNotNull(sr_ticket_number), IsNotNull(sr_item_sk)]
ReadSchema: struct<sr_item_sk:int,sr_ticket_number:int>

(7) CometFilter
Input [3]: [sr_item_sk#7, sr_ticket_number#8, sr_returned_date_sk#9]
Condition : (isnotnull(sr_ticket_number#8) AND isnotnull(sr_item_sk#7))

(8) CometProject
Input [3]: [sr_item_sk#7, sr_ticket_number#8, sr_returned_date_sk#9]
Arguments: [sr_item_sk#7, sr_ticket_number#8], [sr_item_sk#7, sr_ticket_number#8]

(9) CometExchange
Input [2]: [sr_item_sk#7, sr_ticket_number#8]
Arguments: hashpartitioning(sr_ticket_number#8, sr_item_sk#7, 5), ENSURE_REQUIREMENTS, CometNativeShuffle, [plan_id=2]

(10) CometSort
Input [2]: [sr_item_sk#7, sr_ticket_number#8]
Arguments: [sr_item_sk#7, sr_ticket_number#8], [sr_ticket_number#8 ASC NULLS FIRST, sr_item_sk#7 ASC NULLS FIRST]

(11) CometSortMergeJoin
Left output [5]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5]
Right output [2]: [sr_item_sk#7, sr_ticket_number#8]
Arguments: [ss_ticket_number#4, ss_item_sk#1], [sr_ticket_number#8, sr_item_sk#7], Inner

(12) CometProject
Input [7]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_ticket_number#4, ss_net_paid#5, sr_item_sk#7, sr_ticket_number#8]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5], [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5]

(13) CometScan parquet spark_catalog.default.store
Output [5]: [s_store_sk#10, s_store_name#11, s_market_id#12, s_state#13, s_zip#14]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store]
PushedFilters: [IsNotNull(s_market_id), EqualTo(s_market_id,8), IsNotNull(s_store_sk), IsNotNull(s_zip)]
ReadSchema: struct<s_store_sk:int,s_store_name:string,s_market_id:int,s_state:string,s_zip:string>

(14) CometFilter
Input [5]: [s_store_sk#10, s_store_name#11, s_market_id#12, s_state#13, s_zip#14]
Condition : (((isnotnull(s_market_id#12) AND (s_market_id#12 = 8)) AND isnotnull(s_store_sk#10)) AND isnotnull(s_zip#14))

(15) CometProject
Input [5]: [s_store_sk#10, s_store_name#11, s_market_id#12, s_state#13, s_zip#14]
Arguments: [s_store_sk#10, s_store_name#11, s_state#13, s_zip#14], [s_store_sk#10, s_store_name#11, s_state#13, s_zip#14]

(16) CometBroadcastExchange
Input [4]: [s_store_sk#10, s_store_name#11, s_state#13, s_zip#14]
Arguments: [s_store_sk#10, s_store_name#11, s_state#13, s_zip#14]

(17) CometBroadcastHashJoin
Left output [4]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5]
Right output [4]: [s_store_sk#10, s_store_name#11, s_state#13, s_zip#14]
Arguments: [ss_store_sk#3], [s_store_sk#10], Inner, BuildRight

(18) CometProject
Input [8]: [ss_item_sk#1, ss_customer_sk#2, ss_store_sk#3, ss_net_paid#5, s_store_sk#10, s_store_name#11, s_state#13, s_zip#14]
Arguments: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14], [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14]

(19) CometScan parquet spark_catalog.default.item
Output [6]: [i_item_sk#15, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_color), EqualTo(i_color,chiffon             ), IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_current_price:decimal(7,2),i_size:string,i_color:string,i_units:string,i_manager_id:int>

(20) CometFilter
Input [6]: [i_item_sk#15, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20]
Condition : ((isnotnull(i_color#18) AND (i_color#18 = chiffon             )) AND isnotnull(i_item_sk#15))

(21) CometBroadcastExchange
Input [6]: [i_item_sk#15, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20]
Arguments: [i_item_sk#15, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20]

(22) CometBroadcastHashJoin
Left output [6]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14]
Right output [6]: [i_item_sk#15, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20]
Arguments: [ss_item_sk#1], [i_item_sk#15], Inner, BuildRight

(23) CometProject
Input [12]: [ss_item_sk#1, ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_item_sk#15, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20]
Arguments: [ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20], [ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20]

(24) CometScan parquet spark_catalog.default.customer
Output [4]: [c_customer_sk#21, c_first_name#22, c_last_name#23, c_birth_country#24]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_birth_country)]
ReadSchema: struct<c_customer_sk:int,c_first_name:string,c_last_name:string,c_birth_country:string>

(25) CometFilter
Input [4]: [c_customer_sk#21, c_first_name#22, c_last_name#23, c_birth_country#24]
Condition : (isnotnull(c_customer_sk#21) AND isnotnull(c_birth_country#24))

(26) CometBroadcastExchange
Input [4]: [c_customer_sk#21, c_first_name#22, c_last_name#23, c_birth_country#24]
Arguments: [c_customer_sk#21, c_first_name#22, c_last_name#23, c_birth_country#24]

(27) CometBroadcastHashJoin
Left output [10]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20]
Right output [4]: [c_customer_sk#21, c_first_name#22, c_last_name#23, c_birth_country#24]
Arguments: [ss_customer_sk#2], [c_customer_sk#21], Inner, BuildRight

(28) CometProject
Input [14]: [ss_customer_sk#2, ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20, c_customer_sk#21, c_first_name#22, c_last_name#23, c_birth_country#24]
Arguments: [ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20, c_first_name#22, c_last_name#23, c_birth_country#24], [ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20, c_first_name#22, c_last_name#23, c_birth_country#24]

(29) ColumnarToRow [codegen id : 2]
Input [12]: [ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20, c_first_name#22, c_last_name#23, c_birth_country#24]

(30) CometScan parquet spark_catalog.default.customer_address
Output [3]: [ca_state#25, ca_zip#26, ca_country#27]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer_address]
PushedFilters: [IsNotNull(ca_country), IsNotNull(ca_zip)]
ReadSchema: struct<ca_state:string,ca_zip:string,ca_country:string>

(31) CometFilter
Input [3]: [ca_state#25, ca_zip#26, ca_country#27]
Condition : (isnotnull(ca_country#27) AND isnotnull(ca_zip#26))

(32) ColumnarToRow [codegen id : 1]
Input [3]: [ca_state#25, ca_zip#26, ca_country#27]

(33) BroadcastExchange
Input [3]: [ca_state#25, ca_zip#26, ca_country#27]
Arguments: HashedRelationBroadcastMode(List(upper(input[2, string, false]), input[1, string, false]),false), [plan_id=3]

(34) BroadcastHashJoin [codegen id : 2]
Left keys [2]: [c_birth_country#24, s_zip#14]
Right keys [2]: [upper(ca_country#27), ca_zip#26]
Join type: Inner
Join condition: None

(35) Project [codegen id : 2]
Output [11]: [ss_net_paid#5, s_store_name#11, s_state#13, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20, c_first_name#22, c_last_name#23, ca_state#25]
Input [15]: [ss_net_paid#5, s_store_name#11, s_state#13, s_zip#14, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20, c_first_name#22, c_last_name#23, c_birth_country#24, ca_state#25, ca_zip#26, ca_country#27]

(36) HashAggregate [codegen id : 2]
Input [11]: [ss_net_paid#5, s_store_name#11, s_state#13, i_current_price#16, i_size#17, i_color#18, i_units#19, i_manager_id#20, c_first_name#22, c_last_name#23, ca_state#25]
Keys [10]: [c_last_name#23, c_first_name#22, s_store_name#11, ca_state#25, s_state#13, i_color#18, i_current_price#16, i_manager_id#20, i_units#19, i_size#17]
Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#5))]
Aggregate Attributes [1]: [sum#28]
Results [11]: [c_last_name#23, c_first_name#22, s_store_name#11, ca_state#25, s_state#13, i_color#18, i_current_price#16, i_manager_id#20, i_units#19, i_size#17, sum#29]

(37) Exchange
Input [11]: [c_last_name#23, c_first_name#22, s_store_name#11, ca_state#25, s_state#13, i_color#18, i_current_price#16, i_manager_id#20, i_units#19, i_size#17, sum#29]
Arguments: hashpartitioning(c_last_name#23, c_first_name#22, s_store_name#11, ca_state#25, s_state#13, i_color#18, i_current_price#16, i_manager_id#20, i_units#19, i_size#17, 5), ENSURE_REQUIREMENTS, [plan_id=4]

(38) HashAggregate [codegen id : 3]
Input [11]: [c_last_name#23, c_first_name#22, s_store_name#11, ca_state#25, s_state#13, i_color#18, i_current_price#16, i_manager_id#20, i_units#19, i_size#17, sum#29]
Keys [10]: [c_last_name#23, c_first_name#22, s_store_name#11, ca_state#25, s_state#13, i_color#18, i_current_price#16, i_manager_id#20, i_units#19, i_size#17]
Functions [1]: [sum(UnscaledValue(ss_net_paid#5))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#5))#30]
Results [4]: [c_last_name#23, c_first_name#22, s_store_name#11, MakeDecimal(sum(UnscaledValue(ss_net_paid#5))#30,17,2) AS netpaid#31]

(39) HashAggregate [codegen id : 3]
Input [4]: [c_last_name#23, c_first_name#22, s_store_name#11, netpaid#31]
Keys [3]: [c_last_name#23, c_first_name#22, s_store_name#11]
Functions [1]: [partial_sum(netpaid#31)]
Aggregate Attributes [2]: [sum#32, isEmpty#33]
Results [5]: [c_last_name#23, c_first_name#22, s_store_name#11, sum#34, isEmpty#35]

(40) Exchange
Input [5]: [c_last_name#23, c_first_name#22, s_store_name#11, sum#34, isEmpty#35]
Arguments: hashpartitioning(c_last_name#23, c_first_name#22, s_store_name#11, 5), ENSURE_REQUIREMENTS, [plan_id=5]

(41) HashAggregate [codegen id : 4]
Input [5]: [c_last_name#23, c_first_name#22, s_store_name#11, sum#34, isEmpty#35]
Keys [3]: [c_last_name#23, c_first_name#22, s_store_name#11]
Functions [1]: [sum(netpaid#31)]
Aggregate Attributes [1]: [sum(netpaid#31)#36]
Results [4]: [c_last_name#23, c_first_name#22, s_store_name#11, sum(netpaid#31)#36 AS paid#37]

(42) Filter [codegen id : 4]
Input [4]: [c_last_name#23, c_first_name#22, s_store_name#11, paid#37]
Condition : (isnotnull(paid#37) AND (cast(paid#37 as decimal(33,8)) > cast(Subquery scalar-subquery#38, [id=#39] as decimal(33,8))))

===== Subqueries =====

Subquery:1 Hosting operator id = 42 Hosting Expression = Subquery scalar-subquery#38, [id=#39]
* HashAggregate (69)
+- Exchange (68)
   +- * HashAggregate (67)
      +- * HashAggregate (66)
         +- Exchange (65)
            +- * HashAggregate (64)
               +- * Project (63)
                  +- * BroadcastHashJoin Inner BuildRight (62)
                     :- * ColumnarToRow (60)
                     :  +- CometProject (59)
                     :     +- CometBroadcastHashJoin (58)
                     :        :- CometProject (56)
                     :        :  +- CometBroadcastHashJoin (55)
                     :        :     :- CometProject (51)
                     :        :     :  +- CometBroadcastHashJoin (50)
                     :        :     :     :- CometProject (48)
                     :        :     :     :  +- CometSortMergeJoin (47)
                     :        :     :     :     :- CometSort (44)
                     :        :     :     :     :  +- ReusedExchange (43)
                     :        :     :     :     +- CometSort (46)
                     :        :     :     :        +- ReusedExchange (45)
                     :        :     :     +- ReusedExchange (49)
                     :        :     +- CometBroadcastExchange (54)
                     :        :        +- CometFilter (53)
                     :        :           +- CometScan parquet spark_catalog.default.item (52)
                     :        +- ReusedExchange (57)
                     +- ReusedExchange (61)


(43) ReusedExchange [Reuses operator id: 4]
Output [5]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_ticket_number#43, ss_net_paid#44]

(44) CometSort
Input [5]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_ticket_number#43, ss_net_paid#44]
Arguments: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_ticket_number#43, ss_net_paid#44], [ss_ticket_number#43 ASC NULLS FIRST, ss_item_sk#40 ASC NULLS FIRST]

(45) ReusedExchange [Reuses operator id: 9]
Output [2]: [sr_item_sk#45, sr_ticket_number#46]

(46) CometSort
Input [2]: [sr_item_sk#45, sr_ticket_number#46]
Arguments: [sr_item_sk#45, sr_ticket_number#46], [sr_ticket_number#46 ASC NULLS FIRST, sr_item_sk#45 ASC NULLS FIRST]

(47) CometSortMergeJoin
Left output [5]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_ticket_number#43, ss_net_paid#44]
Right output [2]: [sr_item_sk#45, sr_ticket_number#46]
Arguments: [ss_ticket_number#43, ss_item_sk#40], [sr_ticket_number#46, sr_item_sk#45], Inner

(48) CometProject
Input [7]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_ticket_number#43, ss_net_paid#44, sr_item_sk#45, sr_ticket_number#46]
Arguments: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_net_paid#44], [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_net_paid#44]

(49) ReusedExchange [Reuses operator id: 16]
Output [4]: [s_store_sk#47, s_store_name#48, s_state#49, s_zip#50]

(50) CometBroadcastHashJoin
Left output [4]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_net_paid#44]
Right output [4]: [s_store_sk#47, s_store_name#48, s_state#49, s_zip#50]
Arguments: [ss_store_sk#42], [s_store_sk#47], Inner, BuildRight

(51) CometProject
Input [8]: [ss_item_sk#40, ss_customer_sk#41, ss_store_sk#42, ss_net_paid#44, s_store_sk#47, s_store_name#48, s_state#49, s_zip#50]
Arguments: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50], [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50]

(52) CometScan parquet spark_catalog.default.item
Output [6]: [i_item_sk#51, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56]
Batched: true
Location [not included in comparison]/{warehouse_dir}/item]
PushedFilters: [IsNotNull(i_item_sk)]
ReadSchema: struct<i_item_sk:int,i_current_price:decimal(7,2),i_size:string,i_color:string,i_units:string,i_manager_id:int>

(53) CometFilter
Input [6]: [i_item_sk#51, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56]
Condition : isnotnull(i_item_sk#51)

(54) CometBroadcastExchange
Input [6]: [i_item_sk#51, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56]
Arguments: [i_item_sk#51, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56]

(55) CometBroadcastHashJoin
Left output [6]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50]
Right output [6]: [i_item_sk#51, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56]
Arguments: [ss_item_sk#40], [i_item_sk#51], Inner, BuildRight

(56) CometProject
Input [12]: [ss_item_sk#40, ss_customer_sk#41, ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_item_sk#51, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56]
Arguments: [ss_customer_sk#41, ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56], [ss_customer_sk#41, ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56]

(57) ReusedExchange [Reuses operator id: 26]
Output [4]: [c_customer_sk#57, c_first_name#58, c_last_name#59, c_birth_country#60]

(58) CometBroadcastHashJoin
Left output [10]: [ss_customer_sk#41, ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56]
Right output [4]: [c_customer_sk#57, c_first_name#58, c_last_name#59, c_birth_country#60]
Arguments: [ss_customer_sk#41], [c_customer_sk#57], Inner, BuildRight

(59) CometProject
Input [14]: [ss_customer_sk#41, ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56, c_customer_sk#57, c_first_name#58, c_last_name#59, c_birth_country#60]
Arguments: [ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56, c_first_name#58, c_last_name#59, c_birth_country#60], [ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56, c_first_name#58, c_last_name#59, c_birth_country#60]

(60) ColumnarToRow [codegen id : 2]
Input [12]: [ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56, c_first_name#58, c_last_name#59, c_birth_country#60]

(61) ReusedExchange [Reuses operator id: 33]
Output [3]: [ca_state#61, ca_zip#62, ca_country#63]

(62) BroadcastHashJoin [codegen id : 2]
Left keys [2]: [c_birth_country#60, s_zip#50]
Right keys [2]: [upper(ca_country#63), ca_zip#62]
Join type: Inner
Join condition: None

(63) Project [codegen id : 2]
Output [11]: [ss_net_paid#44, s_store_name#48, s_state#49, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56, c_first_name#58, c_last_name#59, ca_state#61]
Input [15]: [ss_net_paid#44, s_store_name#48, s_state#49, s_zip#50, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56, c_first_name#58, c_last_name#59, c_birth_country#60, ca_state#61, ca_zip#62, ca_country#63]

(64) HashAggregate [codegen id : 2]
Input [11]: [ss_net_paid#44, s_store_name#48, s_state#49, i_current_price#52, i_size#53, i_color#54, i_units#55, i_manager_id#56, c_first_name#58, c_last_name#59, ca_state#61]
Keys [10]: [c_last_name#59, c_first_name#58, s_store_name#48, ca_state#61, s_state#49, i_color#54, i_current_price#52, i_manager_id#56, i_units#55, i_size#53]
Functions [1]: [partial_sum(UnscaledValue(ss_net_paid#44))]
Aggregate Attributes [1]: [sum#64]
Results [11]: [c_last_name#59, c_first_name#58, s_store_name#48, ca_state#61, s_state#49, i_color#54, i_current_price#52, i_manager_id#56, i_units#55, i_size#53, sum#65]

(65) Exchange
Input [11]: [c_last_name#59, c_first_name#58, s_store_name#48, ca_state#61, s_state#49, i_color#54, i_current_price#52, i_manager_id#56, i_units#55, i_size#53, sum#65]
Arguments: hashpartitioning(c_last_name#59, c_first_name#58, s_store_name#48, ca_state#61, s_state#49, i_color#54, i_current_price#52, i_manager_id#56, i_units#55, i_size#53, 5), ENSURE_REQUIREMENTS, [plan_id=6]

(66) HashAggregate [codegen id : 3]
Input [11]: [c_last_name#59, c_first_name#58, s_store_name#48, ca_state#61, s_state#49, i_color#54, i_current_price#52, i_manager_id#56, i_units#55, i_size#53, sum#65]
Keys [10]: [c_last_name#59, c_first_name#58, s_store_name#48, ca_state#61, s_state#49, i_color#54, i_current_price#52, i_manager_id#56, i_units#55, i_size#53]
Functions [1]: [sum(UnscaledValue(ss_net_paid#44))]
Aggregate Attributes [1]: [sum(UnscaledValue(ss_net_paid#44))#30]
Results [1]: [MakeDecimal(sum(UnscaledValue(ss_net_paid#44))#30,17,2) AS netpaid#66]

(67) HashAggregate [codegen id : 3]
Input [1]: [netpaid#66]
Keys: []
Functions [1]: [partial_avg(netpaid#66)]
Aggregate Attributes [2]: [sum#67, count#68]
Results [2]: [sum#69, count#70]

(68) Exchange
Input [2]: [sum#69, count#70]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=7]

(69) HashAggregate [codegen id : 4]
Input [2]: [sum#69, count#70]
Keys: []
Functions [1]: [avg(netpaid#66)]
Aggregate Attributes [1]: [avg(netpaid#66)#71]
Results [1]: [(0.05 * avg(netpaid#66)#71) AS (0.05 * avg(netpaid))#72]


