我正在尝试编写一个查询,它将返回与给定关键字对应的url相关联的最大搜索量。示例数据集如下所示:到目前为止,我掌握的语法是:理想情况下,查询将返回搜索量最大的关键字及其url对。我不确定我是否需要使用解析函数,或者我是否可以创建一个自连接?我试过各种方法,但到目前为止运气不好。任何帮助都将不胜感激。
kadbb4591#
理想情况下,查询将返回搜索量最大的关键字及其url对。看起来你只是想 order by 以及 limit :
order by
limit
select t.*from mytable torder by search_vol desc limit 1
select t.*
from mytable t
order by search_vol desc limit 1
这会给你带来最大的麻烦 search_vol 在整张table里。另一方面,如果您希望每个url搜索最多的关键字,那么这是一个最大的问题。以下是一个符合您最初尝试精神的解决方案,使用解析函数:
search_vol
select t.* except (rn)from ( select t.*, rank() over(partition by url order by search_vol desc) rn from mytable t) twhere rn = 1``` `rank()` 允许顶部系带(如果有)。如果你想避免这种情况,使用 `row_number()` .
select t.* except (rn)
from (
select t.*, rank() over(partition by url order by search_vol desc) rn
) t
where rn = 1
``` `rank()` 允许顶部系带(如果有)。如果你想避免这种情况,使用 `row_number()` .
huus2vyu2#
下面是bigquery标准sql
# standardSQLSELECT AS VALUE ARRAY_AGG(t ORDER BY search_vol DESC LIMIT 1)[OFFSET(0)] FROM `project.dataset.table` tGROUP BY url
# standardSQL
SELECT AS VALUE ARRAY_AGG(t ORDER BY search_vol DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY url
2条答案
按热度按时间kadbb4591#
理想情况下,查询将返回搜索量最大的关键字及其url对。
看起来你只是想
order by
以及limit
:这会给你带来最大的麻烦
search_vol
在整张table里。另一方面,如果您希望每个url搜索最多的关键字,那么这是一个最大的问题。以下是一个符合您最初尝试精神的解决方案,使用解析函数:
huus2vyu2#
下面是bigquery标准sql