编辑:由于您使用的是 PostgreSQL,因此 ROWNUM 的等价物将是 row_number() 这将像这样使用:
Select pid From
(Select pid, count(*) as ranking, row_number() OVER (Order By ranking Desc) as Rownum
From Ride
Group By pid
Order By ranking desc)
Where Rownum < K
初步答复
如果你只需要他们的 pid 那么你可以试试这个。
Select pid From
(Select pid, count(*) as ranking
From Ride
Group By pid
Order By ranking desc)
Where Rownum < K
这样你就可以根据他们的排名获得 K 个第一个 pid。现在,如果你有少于 K 你仍然会得到它们。但是根据您正在开发的环境,您可以使用简单的计数来检查。
就像是
Select Count(*)
From (Select Distinct pid
From Ride)
您可以从哪里获得有多少不同的 pid 提供了乘车服务。您检查此数字是否 >= K 并且您已设置。
重要提示:RowNum 函数不适用于每种类型的 RDBMS(适用于 Oracle),但当然到处都有替代品(例如 LIMIT 等)。