SQL语句优化:缩减小数点后位数并格式化百分比
以下 SQL 语句用于计算某个时间段内,每个大区、督导的总销量占全产品销量的百分比,并格式化为两位小数的百分比形式。
CONVERT(VARCHAR, ROUND((SUM(CASE WHEN 日期 >= '2023-03-14' THEN 总销量 END) OVER (PARTITION BY 大区, 督导 ORDER BY 日期, 大区, 督导) * 100.0 / NULLIF(SUM(CASE WHEN 日期 >= '2023-03-14' THEN 全产品销量 END) OVER (PARTITION BY 大区, 督导 ORDER BY 日期, 大区, 督导), 0)), 2), 2) + '%'
该语句中,我们使用了 CONVERT 和 ROUND 函数来缩减小数点后位数并格式化百分比。
ROUND(..., 2)函数用于将计算结果保留两位小数。CONVERT(VARCHAR, ..., 2)函数将结果转换为字符串类型,并保留两位小数。+'%'用于在结果后添加百分号。
示例:
假设我们有一个名为 sales 的表,包含以下列:
日期: 日期大区: 大区督导: 督导总销量: 总销量全产品销量: 全产品销量
以下 SQL 语句将计算每个大区、督导的总销量占全产品销量的百分比,并格式化为两位小数的百分比形式:
SELECT
日期,
大区,
督导,
CONVERT(VARCHAR, ROUND((SUM(CASE WHEN 日期 >= '2023-03-14' THEN 总销量 END) OVER (PARTITION BY 大区, 督导 ORDER BY 日期, 大区, 督导) * 100.0 / NULLIF(SUM(CASE WHEN 日期 >= '2023-03-14' THEN 全产品销量 END) OVER (PARTITION BY 大区, 督导 ORDER BY 日期, 大区, 督导), 0)), 2), 2) + '%' AS 百分比
FROM
sales
WHERE
日期 >= '2023-03-14';
输出结果示例:
| 日期 | 大区 | 督导 | 百分比 | |---|---|---|---| | 2023-03-14 | 华东 | 张三 | 10.50% | | 2023-03-15 | 华东 | 张三 | 12.25% | | 2023-03-14 | 华南 | 李四 | 8.75% | | 2023-03-15 | 华南 | 李四 | 9.50% |
通过以上 SQL 语句和示例,我们可以轻松实现对计算结果的缩减小数点后位数并格式化百分比,使数据更加清晰易懂。
原文地址: https://www.cveoy.top/t/topic/m2fX 著作权归作者所有。请勿转载和采集!