对于一个不完整的数据集,我需要在执行聚合函数的同时,避免只有特定的聚合函数的空值都来自同一个表。所以比如我尝试把它放在子查询中。
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
会影响两个聚合函数,因为它是先过滤整个数据集。
有什么建议吗?谢谢
EDIT.我希望在汇总数据时,只忽略第4行,而销售汇总则只忽略第4行。
例如,我希望在汇总时,支出汇总只忽略第4行,销售汇总只忽略第2行。
我就希望最终的结果是。
聚合函数忽略 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`