【问题标题】:Proper way to calculate percentage of?计算百分比的正确方法?
【发布时间】:2020-06-19 17:48:36
【问题描述】:

我正在尝试根据以下问题找出计算 sql 百分比的正确方法:

假设有两种交付方式:“立即”和“预定”。如果请求的交付时间在创建交付的一小时内,则交付为“立即”,如果超过一小时,则为“预定”。 “立即”交付占总交付的百分比?

Table name: deliveries

delivery_id                 int        
order_created_at            timestamp  
predicted_store_pickup_time timestamp  
actual_store_pickup_at      timestamp  
requested_delivery_time     timestamp  
dasher_id                   int        
restaurant_id               int        
consumer_id                 int

我有类似下面的东西,但不确定是否有更有效的计算方法?

 with immediate as (
select *
from deliveries
where datediff(hour, order_created_at, requested_delivery_time) <= 1

)

select count(i.*) / count(d.*) as ratio
from immediate i
full outer join deliveries d
on i.delivery_id = d.delivery_id

【问题讨论】:

    标签: sql group-by count presto


    【解决方案1】:

    我会使用avg():

    select 
        avg(
            case 
                when requested_delivery_time <= order_created_at + interval '1' hour
                then 1.0
                else 0
            end
        ) on_time_ratio
    from deliveries
    

    【讨论】:

    • 这会是所有的百分比吗?
    • @Chris90:是的。这为您提供了整个表格的准时交货率,以 0 到 1 之间的数字表示。
    猜你喜欢
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多