Mysql每日一题(行程与用户,困难※)

今天给大家分享一个截止到目前位置,我遇到最难的一道mysql题目,非常建议大家亲手做一遍

完整代码如下,这道题的主要难点是它有两个外键,以前没遇到过,我也没当回事,分享一下错误经验哈

当时我写的where判断条件是

where Users.banned="No" and(Trips.client_id=Users.users_id or Trips.driver_id=Users.users_id)

当时我就认为和下面代码写的

from Trips as T

inner join Users as U1 on T.client_id=U1.users_id

inner join Users as U2 on T.driver_id=U2.users_id

where U1.banned="No" and U2.banned="No"一样

我觉得系统应该会在我的系统应该像循环一样再判断完Trips.client_id=Users.users_id or 后,帮我分别判断一下

Trips.client_id=Users.users_id的时候Users.banned="No"?

Trips.driver_id=Users.users_id的时候Users.banned="No"?

结果并不会,给大家看一些官方题解,其中就介绍了这个问题

反正我是狠狠的跳进了这个设计好的坑里,一直爬不出来,知道看了题解,这个题目我觉得很好,以后我希望我会经常拿出来看看。

复制代码
select T2.request_at as "Day",ifnull(round(T1.c/T2.c,2),0) as "Cancellation Rate"
from (select T.request_at,ifnull(count(*),0) as c
from Trips as T 
inner join Users as U1 on T.client_id=U1.users_id
inner join Users as U2 on T.driver_id=U2.users_id
where U1.banned="No" and U2.banned="No"
group by T.request_at) as T2 left join 
(select T.request_at,ifnull(count(*),0) as c
from Trips as T 
inner join Users as U1 on T.client_id=U1.users_id
inner join Users as U2 on T.driver_id=U2.users_id
where U1.banned="No" and U2.banned="No" and T.status Like "ca%"
group by T.request_at) as T1 on T1.request_at=T2.request_at;
相关推荐
微学AI9 分钟前
时序大模型 TimechoAI 赋能工业时序数据底层技术优势与实操
数据库·大模型·时序大模型
北顾笙98019 分钟前
MYSQL-day03
数据库·sql·mysql
MXsoft61820 分钟前
**混合云统一监控实践:私有云+公有云的一体化运维方案**
运维·网络·数据库
瀚高PG实验室42 分钟前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库
ULIi096kr44 分钟前
MySQL大表优化终极方案:单表数据量上限、卡顿解决、分表分库实战教程
数据库·mysql
霖霖总总1 小时前
[MongoDB小技巧07]MongoDB 深度解析:find中投影与排序的底层机制与性能调优实战
数据库·mongodb
TechWayfarer1 小时前
云服务器地域怎么选:用离线IP数据库识别用户来源并优化部署
服务器·数据库·python·tcp/ip·数据分析
deviant-ART1 小时前
MySQL里的三个concat函数
数据库·mysql
Jinkxs1 小时前
Python基础 - 初识内置函数 Python自带的便捷工具
android·java·python
H_老邪1 小时前
1044 - Access denied for user ‘root‘@‘%‘ to database ‘nacos‘
数据库·mysql