12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 你是一名数据库工程师,正在构建一个PostgreSQL数据中的汇总逻辑。请为以下需求生成一段标准的 PostgreSQL SQL 脚本:
- 1.有一个源表: personal_loan_resource,它的定义语句如下:
- CREATE TABLE personal_loan_resource (
- employee_profit_sharing_ratio numeric(18,6) COMMENT '员工分润比例',
- customer_level_identifier smallint COMMENT '管户层级标识',
- superior_organization_code varchar(15) COMMENT '上级机构编码',
- amount_disbursed numeric(15,2) COMMENT '发放金额',
- unified_authentication_code_2 varchar(255) COMMENT '统一认证码2',
- customer_weight_coefficient numeric(18,6) COMMENT '客户权重系数',
- monthly_interest_received_total numeric(15,2) COMMENT '月累计实收利息',
- institution_code varchar(15) COMMENT '机构编码',
- agreement_status_code varchar(10) COMMENT '协议状态代码',
- secondary_subject_code varchar(50) COMMENT '二级科目编码',
- unified_authentication_code_1 varchar(255) COMMENT '统一认证码1',
- data_date date COMMENT '数据日期',
- customer_category_identifier smallint COMMENT '客户类别标识',
- customer_id varchar(50) COMMENT '客户编号',
- disbursement_date date COMMENT '发放日期'
- );
- COMMENT ON TABLE personal_loan_resource IS '个人贷款_资源';
- 2.有一个目标表:customer_service_ledger,它的定义语句如下:
- CREATE TABLE customer_service_ledger (
- original_profit_sharing_record char COMMENT '原始分润记录',
- unified_authentication_code_2 varchar(255) COMMENT '统一认证码2',
- data_date date COMMENT '数据日期',
- customer_category_identifier smallint COMMENT '客户类别标识',
- secondary_subject varchar(50) COMMENT '二级科目',
- primary_subject varchar(50) COMMENT '一级科目',
- unified_authentication_code_1 varchar(255) COMMENT '统一认证码1',
- customer_id varchar(50) COMMENT '客户编号',
- customer_level_identifier smallint COMMENT '管户层级标识',
- employee_profit_sharing_ratio numeric(18,6) COMMENT '员工分润比例',
- customer_weight_coefficient numeric(18,6) COMMENT '客户权重系数',
- amount numeric(15,2) COMMENT '金额',
- superior_organization_code varchar(15) COMMENT '上级机构编码',
- institution_code varchar(15) COMMENT '机构编码'
- );
- COMMENT ON TABLE customer_service_ledger IS '客户维业绩流水账';
- 3.处理逻辑为:从源表里读取记录,根据贷款发放日期进行判断,如果贷款发放日期与数据日期为同一个月,则提取发放金额作为金额,在目标表里插入一条记录,“一级科目”字段设置内容为“当期个人贷款新发放金额”。;如果贷款发放日期与数据日期不是同一个月,则提取月累计实收利息作为金额,在目标表里插入一条记录,“一级科目”字段设置内容为“当期个人贷款月累计收息”。其他字段内容按照目标表的字段定义,从源表中读取对应字段进行填充。
- 4.脚本应使用标准的 PostgreSQL 语法,适合在 Airflow、Python 脚本、或调度系统中调用;
- 5.无需使用 UPSERT 或 ON CONFLICT
- 6.请直接输出SQL,无需进行解释。
- 7.请给这段sql起个英文名,不少于三个英文单词,使用"_"分隔,采用蛇形命名法。把sql的名字作为注释写在返回的sql中。
- 8.生成的sql在向目标表插入数据的时候,向create_time字段写入当前日期时间now(),不用处理update_time字段
|