这段代码是一个 SQL 查询语句,用于将数据从名为 temp_lgl_sx_dev_charge 的表插入到名为 temp_lgl_sx_dev_charge_result 的分区表中。

代码分析

  1. 第一部分:

    • 使用 INSERT OVERWRITE 语句将数据插入到 temp_lgl_sx_dev_charge_result 表中的指定分区,分区的月份由变量 v_month 决定。
    • 选择了四个列:
      • '全国' 作为 prov_part 列的值
      • pro_type 列的值
      • m_fee 列的值(将 m_fee 列的值转换为 double 类型)
      • total_fee 列的值(将 total_fee 列的值转换为 double 类型)
    • temp_lgl_sx_dev_charge 表中选择符合条件(month_id 等于变量 v_month)的行。
    • 根据 '全国' 和 pro_type 进行分组。
    • 使用 UNION ALL 将结果与下一个查询结果合并。
  2. 第二部分:

    • 选择了四个列:
      • b.prov_part 列(来自 DIM_PROV_ORD 表)
      • a.pro_type
      • m_fee
      • total_fee
    • temp_lgl_sx_dev_charge 表中选择符合条件(month_id 等于变量 v_month)的行。
    • 使用子查询 a 获取 prov_idpro_typetotal_feem_fee 列的值。
    • 使用 LEFT JOIN 将子查询 a 的结果与子查询 b 的结果进行连接,连接条件是 a.prov_id 等于 b.prov_id
    • 根据 b.prov_parta.pro_type 进行分组。
    • 使用 UNION ALL 将结果与下一个查询结果合并。
  3. 第三部分:

    • 选择了四个列:
      • b.prov_desc 列(来自 DIM_PROV_ORD 表)
      • pro_type
      • m_fee
      • total_fee
    • temp_lgl_sx_dev_charge 表中选择符合条件(month_id 等于变量 v_month)的行。
    • 使用 LEFT JOINtemp_lgl_sx_dev_charge 表的结果与子查询 b 的结果进行连接,连接条件是 temp_lgl_sx_dev_charge 表的 prov_id 等于子查询 bprov_id
    • 根据 b.prov_descpro_type 进行分组。

总结:

这段代码的目的是将 temp_lgl_sx_dev_charge 表中符合条件的数据插入到 temp_lgl_sx_dev_charge_result 表中的指定分区中。插入的数据包括当月出账收入 (m_fee) 和本年累计出账收入 (total_fee),并根据不同的条件进行分组。

SQL 代码分析:将数据插入到分区表中并进行分组聚合

原文地址: https://www.cveoy.top/t/topic/fBxs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录