使用窗口函数和case-when语句除法的另一种方法是什么

fquxozlt  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(505)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

10个月前关门了。
改进这个问题
我想计算一个特定时间内的每印象成本(cpm),所以我用这个,工作过,但有没有其他更短的方法?我用窗口功能来显示所有行不需要 GROUP BY ```
select (sum(case when
time_of_day_viewers_time_zone >= '06:00:00 - 06:59:59'
and time_of_day_viewers_time_zone <= '10:00:00 - 10:59:59'
then amount_spent_usd else null end) over ()/
sum(case when time_of_day_viewers_time_zone >= '06:00:00 - 06:59:59'
and time_of_day_viewers_time_zone <= '10:00:00 - 10:59:59'
then impressions else null end) over ())*1000
as CPM
from t1

我用这个但不工作

select
case when time_of_day_viewers_time_zone >= '06:00:00 - 06:59:59'
and time_of_day_viewers_time_zone <= '10:00:00 - 10:59:59'
then (sum(amount_spent_usd) over ()/ sum(impressions) over ())*1000
else null end as cpm
from t1

zpgglvta

zpgglvta1#

过滤的聚合应执行以下操作:

(sum(amount_spent_usd) filter (where time_of_day_viewers_time_zone >= '06:00:00 - 06:59:59'
                                 and time_of_day_viewers_time_zone <= '10:00:00 - 10:59:59') over ())

/ 

((sum(impressions) filter (where time_of_day_viewers_time_zone >= '06:00:00 - 06:59:59'
                             and time_of_day_viewers_time_zone <= '10:00:00 - 10:59:59') over ()) * 1000)

相关问题