[英]SQL query to find the cancellation rate of requests made between two dates using WITH
我試圖了解從兩個查詢中划分計數和的正確方法。
我正在自學 sql 並在線練習。
問題:
編寫一個 SQL 查詢以查找 2017-08-01 和 2017-08-03 之間發出的請求的取消率。 取消率是通過將取消的請求數除以每天的總乘車次數得出的。 結果表應該有 2 列,即顯示每一天的 Day 和提供當天取消率的 Cancellation Rate。
表是:
我嘗試的是:
with
cancelled_rides as
(select count(*) cancel_count, status, Request_id
from TRIPS
where status = 'cncld_driver'
group by state, Request_id)
all_rides as (
select count(*) day_count, status, Request_id
from TRIPS
group by state, Request_id) ,
select cancelled_rides.Request_id as DAY,
(cancelled_rides.cancel_count/all_rides.day_count) as 'Cancellation Rate'
FROM cancelled_rides, all_rides;
這看起來對嗎? 注意我故意忽略了包括日期范圍,因為該表只有有限的條目。
我沒有看到 CTE 對這個查詢有任何幫助。 只需使用條件聚合:
select t.Request_id as day, count(*) as total,
sum( status = 'cncld_driver' ) as num_cancelled,
avg( status = 'cncld_driver' ) as cancellation_rate
from trips t
where request_id >= '2017-08-01' and
request_id < '2017-08-04'
group by request_id;
調用日期“request_id”相當混亂。 您應該有一個對每一行都是唯一的請求 ID 和一個帶有日期/時間的單獨列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.