2

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

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

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
4

1 回答 1

0

我会使用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
于 2020-03-07T01:02:10.113 回答