首页 > 解决方案 > 获取用户最常使用的乘车服务提供商详细信息

问题描述

拼车模式

我必须获取向用户提供最多乘车服务的乘车服务提供商的详细信息。

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);

标签: sqldatabaseoraclerdbms

解决方案


在 Oracle 中,您可以使用order byfetch 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

推荐阅读