You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计DAYS_LATE值在-364至-182间的行数并计算占比

DAYS_LATE区间统计及占比实现方案

核心思路

基于你现有的WORK_ORDER与PART关联查询,通过嵌套查询或CTE先获取全量数据,再用条件统计目标区间行数,最后计算占比。

实现代码

方式一:使用CTE(可读性更强)

WITH base_workorder_data AS (
    -- 替换为你现有的关联WORK_ORDER和PART的查询语句
    SELECT 
        wo.*,
        p.*,
        DAYS_LATE,
        Late_Group_By
    FROM WORK_ORDER wo
    JOIN PART p ON wo.part_id = p.part_id
    -- 若原查询有过滤条件,直接添加在这里
)
SELECT 
    -- 统计DAYS_LATE在-364至-182区间的行数
    COUNT(CASE WHEN DAYS_LATE BETWEEN -364 AND -182 THEN 1 END) AS target_row_count,
    -- 计算占总行数的百分比,保留2位小数
    ROUND(
        COUNT(CASE WHEN DAYS_LATE BETWEEN -364 AND -182 THEN 1 END) * 100.0 / COUNT(*),
        2
    ) AS target_percentage
FROM base_workorder_data;

方式二:使用子查询(更简洁)

SELECT 
    COUNT(CASE WHEN DAYS_LATE BETWEEN -364 AND -182 THEN 1 END) AS target_row_count,
    ROUND(
        COUNT(CASE WHEN DAYS_LATE BETWEEN -364 AND -182 THEN 1 END) * 100.0 / COUNT(*),
        2
    ) AS target_percentage
FROM (
    -- 替换为你现有的关联WORK_ORDER和PART的查询语句
    SELECT DAYS_LATE
    FROM WORK_ORDER wo
    JOIN PART p ON wo.part_id = p.part_id
) AS workorder_sub;

关键说明

  • CASE WHEN条件统计:仅对符合区间的行计数,不符合的行返回NULL,COUNT函数会自动忽略NULL值
  • 浮点运算:乘以100.0确保计算时用浮点型,避免整数除法导致的精度丢失
  • 精度控制:ROUND函数的第二个参数可调整百分比的小数位数,按需修改即可

内容的提问来源于stack exchange,提问作者SQL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 12:45:32