首页 > 解决方案 > 如何将算术和与 SQL 中的分析函数结合起来进行运行

问题描述

我正在尝试从普通 SQL 中的表中计算两个计数的结果(如下面的 SQL 摘录所示)的运行百分比,如下所示:

表数据库

我的想法是这样的:

    SELECT week(beginning),
(select count(enquired_at) from TABLE) / (select count(*) from TABLE) * 100 OVER (partition by beginning order by beginning desc)

我想要一个如下所示的结果集:

结果集

一个人将如何进行这种算术计算并使其从第 1 周开始累积计算?

谢谢!

标签: sqlanalytic-functions

解决方案


根据您的查询,您似乎希望运行次数enquired_at不为空。如果是这样:

select t.*,
       ( count(enquired_at) over (order by beginning) * 1.0 /
         count(*) over (order by beginning)
       ) as ratio
from t;

或者更简单地说:

select t.*,
       avg(case when enquired_at is not null then 1.0 else 0 end) over (order by beginning) as ratio
from t

编辑:

您可以将其放入聚合查询中:

select week(beginning), 
       ( sum(count(enquired_at)) over (order by min(beginning)) * 1.0 /
         sum(count(*)) over (order by min(beginning))
       ) as ratio
from t
group by week(beginning);

推荐阅读