【问题标题】:SUM of COUNT with only certain variables仅包含某些变量的 COUNT 的总和
【发布时间】:2018-12-13 14:17:28
【问题描述】:

我有以下正在返回结果的查询,但我需要将某些变量从 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

部分给我“问题”:

... 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 行的总和。

完整查询返回的内容的视图,预期结果用红色书写。

【问题讨论】:

    标签: sql oracle count sum partition


    【解决方案1】:

    我假设您只想对 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 ....
    

    【讨论】:

    • 完美...谢谢!我知道它必须简单,只是无法完成正确的编码。
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 2018-08-08
    相关资源
    最近更新 更多