高效使用窗口函数计算自定义规则数据

项目实战

--当期
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where DATADATE::INTEGER=replace($日期$||'','-','')::integer) 当日数据,
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where DATADATE::INTEGER/100=replace($日期$||'','-','')::integer/100 and DATADATE::INTEGER<=replace($日期$||'','-','')::integer) 当月数据,
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where DATADATE::INTEGER/10000=replace($日期$||'','-','')::integer/10000 and DATADATE::INTEGER<=replace($日期$||'','-','')::integer) 当年数据,

--同期
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where DATADATE::INTEGER=replace($日期$||'','-','')::integer-10000) 日同期,
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where (DATADATE::INTEGER)/100=(replace($日期$||'','-','')::integer-10000)/100 and (DATADATE::INTEGER)<=(replace($日期$||'','-','')::integer-10000)) 月同期,
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where (DATADATE::INTEGER)/10000=(replace($日期$||'','-','')::integer-10000)/10000 and (DATADATE::INTEGER)<=(replace($日期$||'','-','')::integer-10000)) 年同期,

--自定义同期
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where DATADATE::INTEGER=(20220000 + mod(replace(replace(''||$日期$,'-','')||'','-','')::integer,10000))) 22年日同期,
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where (DATADATE::INTEGER)/100=(20220000 + mod(replace(replace(''||$日期$,'-','')||'','-','')::integer,10000))/100 and (DATADATE::INTEGER)<=(20220000 + mod(replace(replace(''||$日期$,'-','')||'','-','')::integer,10000))) 22年月同期,
sum(COALESCE($字段名称$::NUMERIC(17,10),0.0)) filter(where (DATADATE::INTEGER)/10000=(20220000 + mod(replace(replace(''||$日期$,'-','')||'','-','')::integer,10000))/10000 and (DATADATE::INTEGER)<=(20220000 + mod(replace(replace(''||$日期$,'-','')||'','-','')::integer,10000))) 22年年同期,
 

窗口函数

SELECT column1, 
       column2, 
       SUM(column3) OVER (PARTITION BY column1 ORDER BY column2 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS sum_column
FROM table_name
WHERE condition

FILTER子句
SELECT column1, 
       column2, 
       SUM(column3) FILTER (WHERE condition) OVER (PARTITION BY column1 ORDER BY column2 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS sum_column
FROM table_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值