sql - 获取用户最常使用的乘车服务提供商详细信息
问题描述
我必须获取向用户提供最多乘车服务的乘车服务提供商的详细信息。
user_detail 表中的 user_id 与 RIDE 表中的ride_provider_id 相同。
我试过这个,但在最后一行出现错误“ORA-00920:无效的关系运算符”;
select u.*
from user_details u,
(select ride_provider_id,count(ride_provider_id) as of_ride
from ride
group by ride_provider_id) r2
where u.user_id= r2.ride_provider_id
having max(r2.of_ride);
解决方案
在 Oracle 中,您可以使用order by
和fetch first
子句来表达这一点:
select u.*
from user_details u join
(select ride_provider_id, count(*) as of_ride
from ride
group by ride_provider_id
) r
on u.user_id = r.ride_provider_id
order by of_ride desc
fetch first 1 row only;
然而,这似乎相当低效。如果您使用子查询进行计数,则查询可以在子查询中进行限制:
select u.*
from user_details u join
(select ride_provider_id, count(*) as of_ride
from ride
group by ride_provider_id
order by count(*) desc
fetch first 1 row only
) r
on u.user_id = r.ride_provider_id
推荐阅读
- firebase - 如何从 React Native 中的 firebase 动态链接获取深层链接?
- javascript - 如何开玩笑地改变钩子状态的值?
- python - 如何解决 pydroid3 中的 pyttsx3 错误?
- javascript - 将 MapLibre 翻译成 openlayer 的
- android - 谷歌地图不会重构安卓
- java - 是否可以捕获调用 super() 时引发的异常?
- c# - winui中创建自定义控件库的正确方法
- python - a['Year'] = a['Date'].dt.year 创建一个额外的 .0
- python - 奇怪的python内存限制超出行为
- html - 页脚位置不正确