[英]BigQuery RANK() in Having or Where Clause
在BigQuery中,我有一個查詢,該查詢使用RANK()
函數按跨源的總數對用戶進行分組。 我只關心前10位用戶。 當前,我正在子選擇中使用父查詢中的WHERE
子句執行RANK()
函數,以限制結果。 有人可以向我解釋如何在沒有父查詢的情況下完成此工作嗎? 我要運行的查詢如下所示:
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
但是我得到了錯誤:在表“ tweets”中找不到字段“ user_rank”。 我可以ORDER BY
使用user_rank,只是不能過濾。
感謝您的任何建議!
您可能需要做類似的事情
SELECT source, user, total, friends, user_rank
FROM (
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.