java - Having 或 Where 子句中的 BigQuery RANK()

标签 java sql google-app-engine google-bigquery

在 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/

相关文章:

java - 仅针对全文搜索中需要的英语单词修改 StringTokenizer 输出的最佳方法是什么?

google-app-engine - 如何删除 GAE Search API 中的搜索索引

java - 使用 gradle 运行时 Jackson 子类型反序列化失败

java - 使用jsp访问列表中的数据

sql - 优化的 sql 查询以计算不同表中具有来自同一用户的评论的产品

sql - XML 到 SQL 2008r2 问题

google-app-engine - 如何使 vendor 与 Google App Engine 一起工作?

java - 如何获取JFrame的extendState宽度

Java += 编译器/jre 错误?

mysql - 如何使用列中的逗号分隔字符串作为 MySQL IN 语句的值