sql - 如何将算术和与 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 周开始累积计算?
谢谢!
解决方案
根据您的查询,您似乎希望运行次数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);
推荐阅读
- html - 带有选项的多步表单提示不同的表单
- mongodb - 比较文档中的两个值并在结果中显示每行中的公共值
- tensorflow - 使用带有 cifar10 数据的 gabor 滤波器,然后堆叠过滤后的图像并将堆叠的图像馈送到神经网络
- bash - Bash 重试 - Azure CLI
- scheme - 在其过滤过程中使用局部状态突变的方案中的 Eratosthenes 筛选
- html - html 标记 nobr 在 Outlook 邮件中不起作用,试图避免换行
- vue.js - 在 Vue 中浏览不同组件时如何更改导航栏?
- python - 使用来自 REST 响应的数组中的对象
- c++ - 为什么将库与 MSVC 链接可以同时使用 `/MD` 或 `/ML`?
- javascript - Javascript 从 HTML 日期字符串中获取日期