WholeStageCodegen (18)
  BroadcastNestedLoopJoin
    BroadcastNestedLoopJoin
      BroadcastNestedLoopJoin
        BroadcastNestedLoopJoin
          BroadcastNestedLoopJoin
            HashAggregate [sum,count,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),B1_LP,B1_CNT,B1_CNTD,sum,count,count,count]
              InputAdapter
                Exchange #1
                  WholeStageCodegen (2)
                    HashAggregate [sum,count,count,ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),count,sum,count,count,count]
                      HashAggregate [ss_list_price,sum,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count]
                        InputAdapter
                          Exchange [ss_list_price] #2
                            WholeStageCodegen (1)
                              HashAggregate [ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
                                Project [ss_list_price]
                                  Filter [ss_quantity,ss_list_price,ss_coupon_amt,ss_wholesale_cost]
                                    ColumnarToRow
                                      InputAdapter
                                        Scan parquet spark_catalog.default.store_sales [ss_quantity,ss_wholesale_cost,ss_list_price,ss_coupon_amt,ss_sold_date_sk]
            InputAdapter
              BroadcastExchange #3
                WholeStageCodegen (5)
                  HashAggregate [sum,count,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),B2_LP,B2_CNT,B2_CNTD,sum,count,count,count]
                    InputAdapter
                      Exchange #4
                        WholeStageCodegen (4)
                          HashAggregate [sum,count,count,ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),count,sum,count,count,count]
                            HashAggregate [ss_list_price,sum,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count]
                              InputAdapter
                                Exchange [ss_list_price] #5
                                  WholeStageCodegen (3)
                                    HashAggregate [ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
                                      Project [ss_list_price]
                                        Filter [ss_quantity,ss_list_price,ss_coupon_amt,ss_wholesale_cost]
                                          ColumnarToRow
                                            InputAdapter
                                              Scan parquet spark_catalog.default.store_sales [ss_quantity,ss_wholesale_cost,ss_list_price,ss_coupon_amt,ss_sold_date_sk]
          InputAdapter
            BroadcastExchange #6
              WholeStageCodegen (8)
                HashAggregate [sum,count,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),B3_LP,B3_CNT,B3_CNTD,sum,count,count,count]
                  InputAdapter
                    Exchange #7
                      WholeStageCodegen (7)
                        HashAggregate [sum,count,count,ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),count,sum,count,count,count]
                          HashAggregate [ss_list_price,sum,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count]
                            InputAdapter
                              Exchange [ss_list_price] #8
                                WholeStageCodegen (6)
                                  HashAggregate [ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
                                    Project [ss_list_price]
                                      Filter [ss_quantity,ss_list_price,ss_coupon_amt,ss_wholesale_cost]
                                        ColumnarToRow
                                          InputAdapter
                                            Scan parquet spark_catalog.default.store_sales [ss_quantity,ss_wholesale_cost,ss_list_price,ss_coupon_amt,ss_sold_date_sk]
        InputAdapter
          BroadcastExchange #9
            WholeStageCodegen (11)
              HashAggregate [sum,count,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),B4_LP,B4_CNT,B4_CNTD,sum,count,count,count]
                InputAdapter
                  Exchange #10
                    WholeStageCodegen (10)
                      HashAggregate [sum,count,count,ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),count,sum,count,count,count]
                        HashAggregate [ss_list_price,sum,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count]
                          InputAdapter
                            Exchange [ss_list_price] #11
                              WholeStageCodegen (9)
                                HashAggregate [ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
                                  Project [ss_list_price]
                                    Filter [ss_quantity,ss_list_price,ss_coupon_amt,ss_wholesale_cost]
                                      ColumnarToRow
                                        InputAdapter
                                          Scan parquet spark_catalog.default.store_sales [ss_quantity,ss_wholesale_cost,ss_list_price,ss_coupon_amt,ss_sold_date_sk]
      InputAdapter
        BroadcastExchange #12
          WholeStageCodegen (14)
            HashAggregate [sum,count,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),B5_LP,B5_CNT,B5_CNTD,sum,count,count,count]
              InputAdapter
                Exchange #13
                  WholeStageCodegen (13)
                    HashAggregate [sum,count,count,ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),count,sum,count,count,count]
                      HashAggregate [ss_list_price,sum,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count]
                        InputAdapter
                          Exchange [ss_list_price] #14
                            WholeStageCodegen (12)
                              HashAggregate [ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
                                Project [ss_list_price]
                                  Filter [ss_quantity,ss_list_price,ss_coupon_amt,ss_wholesale_cost]
                                    ColumnarToRow
                                      InputAdapter
                                        Scan parquet spark_catalog.default.store_sales [ss_quantity,ss_wholesale_cost,ss_list_price,ss_coupon_amt,ss_sold_date_sk]
    InputAdapter
      BroadcastExchange #15
        WholeStageCodegen (17)
          HashAggregate [sum,count,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),B6_LP,B6_CNT,B6_CNTD,sum,count,count,count]
            InputAdapter
              Exchange #16
                WholeStageCodegen (16)
                  HashAggregate [sum,count,count,ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),count,sum,count,count,count]
                    HashAggregate [ss_list_price,sum,count,count] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count]
                      InputAdapter
                        Exchange [ss_list_price] #17
                          WholeStageCodegen (15)
                            HashAggregate [ss_list_price] [avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
                              Project [ss_list_price]
                                Filter [ss_quantity,ss_list_price,ss_coupon_amt,ss_wholesale_cost]
                                  ColumnarToRow
                                    InputAdapter
                                      Scan parquet spark_catalog.default.store_sales [ss_quantity,ss_wholesale_cost,ss_list_price,ss_coupon_amt,ss_sold_date_sk]
