在 BigQuery 中,我有一个查询使用 RANK()
函数按跨源的总计数对用户进行分组。我只关心前 10 个用户。目前,我在子选择中执行 RANK()
函数,并在父查询中使用 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
但我收到错误:在表“tweets”中找不到字段“user_rank”。我可以使用 user_rank ORDER BY
,只是不过滤。
感谢您的任何建议!
最佳答案
你可能需要做类似的事情
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
关于java - Having 或 Where 子句中的 BigQuery RANK(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296258/