只有某些变量的 COUNT 的总和

SUM of COUNT with only certain variables

我有以下返回结果的查询,但我需要从 filled_orders 列中排除某些变量。

整个查询:

SELECT
    order_date,
    p_category,
    issue_group,
    srt_level,
    order_count,
    filled_orders,
    total_orders,
    round(100 *(order_count / total_orders), 1) AS monthly_metric
FROM
    (
        SELECT
            order_date,
            p_category,
            issue_group,
            srt_level,
            order_count,
            CASE
                WHEN srt_level = '80'  THEN order_count
                WHEN srt_level = '100' THEN SUM(order_count) OVER(
                    PARTITION BY order_date, issue_group, p_category
                )
            END AS filled_orders,
            total_orders
        FROM
            (
                SELECT
                    order_date,
                    p_category,
                    issue_group,
                    srt_level,
                    order_count,
                    SUM(order_count) OVER(
                        PARTITION BY order_date, issue_group, p_category
                    ) AS total_orders
                FROM
                    (
                        SELECT
                            order_date,
                            p_category,
                            CASE
                                WHEN ( issue_grp = 1 ) THEN '1'
                                ELSE '2/3 '
                            END AS issue_group,
                            srt   AS srt_level,
                            COUNT(*) AS order_count
                        FROM
                            database.tcon_mv
                        WHERE
                            order_date IN (
                                '201803'
                            )
                        GROUP BY
                            p_category,
                            CASE
                                WHEN ( issue_grp = 1 ) THEN '1'
                                ELSE '2/3 '
                            END,
                            srt,
                            order_date
                    )
            )
    )
ORDER BY
    order_date,
    p_category,
    issue_group

部分给我 "issues":

... SELECT
                order_date,
                p_category,
                issue_group,
                srt_level,
                order_count,
                CASE
                    WHEN srt_level = '80'  THEN order_count
                    WHEN srt_level = '100' THEN SUM(order_count) OVER(
                        PARTITION BY order_date, issue_group, p_category
                    )
                END AS filled_orders,
                total_orders
            FROM ....

srt_level 是一个 varchar 列,它的结果只有 3 个选项(80、100 和 Late)。当 srt_level = '100' 时,我需要的计数只包括 80 行和 100 行的总和。

完整查询返回的视图,预期结果用红色表示。

我假设您只想对 order_count 个值求和,其中 srt_level 不是 Late。然后说是在你的 sum:

SELECT
    order_date,
    p_category,
    issue_group,
    srt_level,
    order_count,
    CASE
        WHEN srt_level = '80'  THEN order_count
        WHEN srt_level = '100' THEN 
            SUM(CASE WHEN srt_level != 'Late' THEN order_count END) OVER(
               PARTITION BY order_date, issue_group, p_category
            )
    END AS filled_orders,
    total_orders
FROM ....