需求:根据传入的年月值,计算当月的天数/完成数量的数字指标
1.sql如下
select
case
when dd.date1=0 then 0 else cast((select
DATE_PART('days',DATE_Trunc('month',to_timestamp('2023-07','yyyy-mm'))
+'1 MONTH'::INTERVAL
- '1 DAY'::INTERVAL ))/dd.date1 as decimal(10,2))
end
from (select count(1) as date1 from tableName
where to_char(complate_date::DATE,'yyyy-mm')='2023-07') dd
//计算某个月的天数
DATE_PART('days',DATE_Trunc('month',to_timestamp('2023-07','yyyy-mm'))
+'1 MONTH'::INTERVAL
- '1 DAY'::INTERVAL )
//对计算出来的数据转成decimal格式然后保留两位小数
cast(time as decimal(10,2))
//相当于if判断如果dd.date1=0 then就是返回的值0 else否则就返回1
select
case when dd.date1=0 then 0 else 1 end
注:以上就整个sql的分段解析,组合查询天数/数量 然后保留计算出来的两位小数值。
加case when then 的if判断是防止子查询返回的count等于0的话就会出现报错问题