在BigQuery中,我有一个查询,它使用RANK()函数对用户进行跨源总计数的分组。我只关心十大用户。目前,我正在子select中执行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’字段。我可以使用ORDER BY使用user_rank,只是不过滤。
谢谢你的建议!
发布于 2014-04-25 16:14:19
你可能得做些像
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 <= 10https://stackoverflow.com/questions/23296258
复制相似问题