Sql语句null+1,case when

博客主要围绕null自增问题展开,聚焦信息技术领域中相关内容,虽未详细阐述,但点明核心问题为null自增。

在这里插入图片描述

关于null自增的问题

【postgresql】希望sum相除后的值可以保留小数点后2位,SELECT ( SUM( (CASE WHEN g3_left_areatype1 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype2 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype3 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype4 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype1 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype2 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype3 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype4 = '1' THEN 1 ELSE 0 END) )/(sum((CASE WHEN g3_left_areatype1 notnull THEN 1 ELSE 0 END))*8)) AS total_ok, SUM( (CASE WHEN g3_left_areatype1 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype2 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype3 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype4 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype1 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype2 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype3 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype4 = '2' THEN 1 ELSE 0 END) ) AS total_duo, SUM( (CASE WHEN g3_left_areatype1 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype2 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype3 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype4 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype1 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype2 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype3 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype4 = '3' THEN 1 ELSE 0 END) ) AS total_shao, SUM( (CASE WHEN g3_left_areatype1 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype2 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype3 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype4 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype1 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype2 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype3 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype4 = '4' THEN 1 ELSE 0 END) ) AS total_y, (sum((CASE WHEN g3_left_areatype1 notnull THEN 1 ELSE 0 END))*8) as total FROM bcm_data_log_record_1_2025; ,如何修改这个sql语句
最新发布
11-22
在 PostgreSQL 中,可以使用 `ROUND` 函数来实现保留小数点后 2 位的需求。修改后的 SQL 语句如下: ```sql SELECT ROUND( SUM( (CASE WHEN g3_left_areatype1 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype2 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype3 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype4 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype1 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype2 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype3 = '1' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype4 = '1' THEN 1 ELSE 0 END) )::numeric / (SUM((CASE WHEN g3_left_areatype1 IS NOT NULL THEN 1 ELSE 0 END)) * 8)::numeric, 2 ) AS total_ok, SUM( (CASE WHEN g3_left_areatype1 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype2 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype3 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype4 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype1 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype2 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype3 = '2' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype4 = '2' THEN 1 ELSE 0 END) ) AS total_duo, SUM( (CASE WHEN g3_left_areatype1 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype2 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype3 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype4 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype1 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype2 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype3 = '3' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype4 = '3' THEN 1 ELSE 0 END) ) AS total_shao, SUM( (CASE WHEN g3_left_areatype1 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype2 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype3 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_left_areatype4 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype1 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype2 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype3 = '4' THEN 1 ELSE 0 END) + (CASE WHEN g3_right_areatype4 = '4' THEN 1 ELSE 0 END) ) AS total_y, SUM((CASE WHEN g3_left_areatype1 IS NOT NULL THEN 1 ELSE 0 END)) * 8 AS total FROM bcm_data_log_record_1_2025; ``` 上述代码中,在除法运算前后将参与运算的表达式转换为 `numeric` 类型,以确保进行精确的小数运算。然后使用 `ROUND` 函数对除法结果进行四舍五入,保留小数点后 2 位。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值