SQL 代码分析:将数据插入到分区表中并进行分组聚合
这段代码是一个 SQL 查询语句,用于将数据从名为 temp_lgl_sx_dev_charge 的表插入到名为 temp_lgl_sx_dev_charge_result 的分区表中。
代码分析
-
第一部分:
- 使用
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将结果与下一个查询结果合并。
- 使用
-
第二部分:
- 选择了四个列:
b.prov_part列(来自DIM_PROV_ORD表)a.pro_type列m_fee列total_fee列
- 从
temp_lgl_sx_dev_charge表中选择符合条件(month_id等于变量v_month)的行。 - 使用子查询
a获取prov_id、pro_type、total_fee和m_fee列的值。 - 使用
LEFT JOIN将子查询a的结果与子查询b的结果进行连接,连接条件是a.prov_id等于b.prov_id。 - 根据
b.prov_part和a.pro_type进行分组。 - 使用
UNION ALL将结果与下一个查询结果合并。
- 选择了四个列:
-
第三部分:
- 选择了四个列:
b.prov_desc列(来自DIM_PROV_ORD表)pro_type列m_fee列total_fee列
- 从
temp_lgl_sx_dev_charge表中选择符合条件(month_id等于变量v_month)的行。 - 使用
LEFT JOIN将temp_lgl_sx_dev_charge表的结果与子查询b的结果进行连接,连接条件是temp_lgl_sx_dev_charge表的prov_id等于子查询b的prov_id。 - 根据
b.prov_desc和pro_type进行分组。
- 选择了四个列:
总结:
这段代码的目的是将 temp_lgl_sx_dev_charge 表中符合条件的数据插入到 temp_lgl_sx_dev_charge_result 表中的指定分区中。插入的数据包括当月出账收入 (m_fee) 和本年累计出账收入 (total_fee),并根据不同的条件进行分组。
原文地址: https://www.cveoy.top/t/topic/fBxs 著作权归作者所有。请勿转载和采集!