对于不完整的数据集,我需要执行聚合函数,同时避免所有来自同一个表的特定聚合函数为空。因此,例如,我尝试将其放入子查询中:
WITH spend AS (
SELECT
(SUM(current_spend)-SUM(baseline_spend))/SUM(baseline_spend) percent_change_spend
FROM
`table_one`
WHERE
baseline_spend IS NOT NULL
),
sales AS (
SELECT
(SUM(current_sales)-SUM(baseline_sales))/SUM(baseline_sales) percent_change_sales
FROM
`table_one`
WHERE
baseline_sales IS NOT NULL
)
SELECT
percentage_change_spend,
percentage_change_sales
FROM
table_one ...
我不能使用常规查询,因为应用WHERE baseline_spend IS NOT NULL
或baseline_sales IS NOT NULL
会影响两个聚合函数,因为它首先过滤整个数据集。
有什么建议吗?谢谢!
编辑:
例如,我希望spend聚合在聚合时仅忽略第4行,而sales聚合仅忽略第2行
然后,我希望最终结果是:
发布于 2020-06-16 01:50:22
聚合函数会忽略NULL
值,因此这应该会执行您想要的操作:
SELECT (SUM(current_spend)-SUM(baseline_spend)) / SUM(baseline_spend) as percent_change_spend,
(SUM(current_sales)-SUM(baseline_sales)) / SUM(baseline_sales) as percent_change_sales
FROM `table_one`
https://stackoverflow.com/questions/62399717
复制