編輯:由於您使用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等)。
如果一個人參與乘坐,那麼計算減去? – Laurence
ride中的personID是提供者/驅動程序,而參與的personID是acceptpter/passenger? – wildplasser
哪個RDBMS是這個? – Bridge