以下 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) + '%'

该语句中,我们使用了 CONVERTROUND 函数来缩减小数点后位数并格式化百分比。

  • 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 语句和示例,我们可以轻松实现对计算结果的缩减小数点后位数并格式化百分比,使数据更加清晰易懂。

SQL语句优化:缩减小数点后位数并格式化百分比

原文地址: https://www.cveoy.top/t/topic/m2fX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录