获取用户最常使用的乘车服务提供商的详细信息

问题描述

carpooling schema

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

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