編輯:道歉,戈登·利諾夫已經更直接地回答了這個問題。這就是我在回答時被分心的一半所得到的。 :)
你可以使用子查詢抓住有問題的電子郵件中ReferralCount,然後得到的計數許多用戶怎麼行有較高的推薦計數。
你的子查詢將得到用戶的引用計數(例如,對於[email protected]爲「5」): select ReferralCount from users where [email protected]
。
然後如果你在where子句中使用它作爲子查詢,你可以計算有多少用戶具有更高的ReferralCount(記得給rank添加1,如果返回「1」更高的用戶,那麼你應該輸出「 2「作爲當前用戶的等級):
select
(count(*) + 1) as Rank
from
users
where
ReferralCount > (select ReferralCount from users where [email protected])
這將輸出」2「,因爲只有[email protected]比[email protected]有更多的引薦。
您可能希望跳過具有相同ReferralCount的用戶。例如,如果三個用戶都有「10」推介,並且您查詢的用戶有「9」,那麼上述查詢會輸出一個「4」的排名,即使9個推介僅次於10排在第二位。如果您寧願它返回的「2」(第二位)的等級,那麼你就可以得到ReferralCount的重複計數:
select
(count(distinct ReferralCount) + 1) as Rank
from
users
where
ReferralCount > (select ReferralCount from users where [email protected])
寫SELECT查詢和按降序排列的ReferralCount做訂單。 – manian
您應該根據引用計數創建視圖,並在該視圖創建緩存中的存儲並從該處啓動查詢後,將該視圖置於那裏,如果用戶中有任何更新,則會再次創建新視圖。 – JiteshNK
你想如何處理關係?說[email protected]也是5次參加......他們都是2人還是2人其中3人?他們都是3? – xQbert