Trips and Users ---刷完database 留念

本文通过SQL查询技术,详细解析如何计算特定日期(10月1日至3日)内,非禁止用户在打车订单中的预订终止率。采用左连接方式整合Trips表和Users表,并通过条件筛选,计算出终止订单数量与总订单数量的比例,从而得出终止率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意

    给定Trips表和Users表,trips记录每次打车订单的情况,users表示目前存在的用户信息,求10月1号到3号之间,非禁止的用户打车预订终止率

解题思路

     首先肯定是将两张表进行连接,由于一切都是以client为中心的,因此这里使用client_id的左连接,然后统计当前天非禁止用户下单终止个数counter,同时将结果按照天数进行分组并统计每组的总订单数,二者相除就能满足最终题目需求。

总结

    注意要先对连接后的表按照日期进行排序,同时在查表时要跳过那些不在区间范围的时间。

代码

SELECT request_at AS Day, round((max(counter)*1.0/count(request_at)),2) AS Cancellation_Rate 
FROM(
    SELECT id,client_id,status,request_at,banned,
        @counter := if (@curDate=request_at AND status <> 'completed', @counter+1, 0) ,
        @counter := if (@curDate<>request_at AND status <> 'completed', 1, @counter) AS counter,
        @curDate := request_at AS curDate
    FROM (SELECT * FROM Trips LEFT JOIN Users ON Trips.client_id = Users.users_id ORDER BY request_at) as tmp0,
        (SELECT @counter := 0, @curDate := '') as parameters
    WHERE banned <> 'Yes' AND request_at >= '2013-10-01' AND request_at <= '2013-10-03'
    ) AS tmp
GROUP BY request_at


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值