[英]Snowflake Count Group By With Condition
我需要测量“每个 Object 的总查询失败数/每个对象的总查询数”的比率
我的数据如下所示。
查询编号 | object | 地位 |
---|---|---|
1个 | 一种 | 成功 |
2个 | 一种 | 失败 |
3个 | 一种 | 失败 |
4个 | b | 成功 |
5个 | b | 失败 |
我可以使用下面的方法来衡量每个 object 的总失败数/总失败数,例如
select
object
count(distinct query_id) as num_distinct_queries
ratio_to_report(count(distinct query_id) over () as percent_of_total_fails
from my_table
where status='fail'
group by object
order by 3
object | num_distinct_queries | percent_of_total_fails |
---|---|---|
一种 | 2个 | 0.666666 |
b | 1个 | 0.333333 |
我想实现类似的目标:
object | num_distinct_queries | 失败次数 | percent_of_fails_per_table |
---|---|---|---|
一种 | 3个 | 2个 | 0.666666 |
b | 2个 | 1个 | 0.5 |
任何建议如何实现第二个选项? 每 object 的总失败数/每 object 的总查询数。
使用COUNT_IF执行条件聚合:
select object,
count(distinct query_id) as num_distinct_queries,
count_if(status='fail') AS num_fails,
count_if(status='fail')/count(*) as percent_of_total_fails
from my_table
group by object
order by 3;
Output:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.