2
在BigQuery中,我有一個查詢使用RANK()
函數按用戶的總數對用戶進行分組。我只關心前10名用戶。目前,我在子選擇中執行RANK()
函數,WHERE
子句生活在父查詢中以限制結果。有人可以向我解釋如何在沒有父查詢的情況下完成此操作嗎?我想運行查詢看起來是這樣的:BigQuery中的RANK()具有或Where Where子句
SELECT source, user, count(tweet_id) as total, max(friends) as friends,
RANK() OVER (PARTITION BY source ORDER BY total DESC, friends DESC) as user_rank
FROM tweets
GROUP BY source, user
HAVING user_rank <= 10
但我得到的錯誤:字段「user_rank」在表中找不到「鳴叫」。我可以使用user_rank ORDER BY
,只是不過濾。
感謝您的任何建議!
感謝您的代碼,這實際上我在做什麼目前。缺點是子查詢返回〜500k行,我想看看是否有更好的方法來做到這一點。試圖通過警告來阻止每個組。 –
爲什麼500k行是一個問題?你能否將組移動到外部查詢並將其更改爲某個位置,以便首先進行過濾? –
嘿約旦,我只是想避免「GROUP EACH BY」聲明。目前一切正在運轉,但我的印象是「每一個人」並不是最好的? –