【发布时间】: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