SQL 查询以获取每页关键字的有限有序结果集
SQL Query to get limited ordered resultset of keywords per pages
我有一个 table 大查询,其中包含以下字段:
- (整数)run_id
- (整数)project_id
- (整数)次点击
- (整数)印象
- (浮动)点击率
- (浮动)位置
- (字符串)查询
- (字符串)国家
- (字符串)页面
每个页面都有很多关键字,展示次数为 x。我想从上一个 运行 中获取此 table 上每个页面的前 5 个关键字。
通过此查询,我获得了特定页面的前 5 个关键字,但是我必须如何编写查询才能获取包含前 5 个关键字的所有页面?
SELECT a.page, a.query, a.impressions
FROM `strategic-kite-11111.test_data.gsc_data` a,
`strategic-kite-11111.test_data.runs` b
WHERE a.run_id = b.id
AND a.page = "https://www.xxxxx.com"
AND b.end_date = "2022-04-24"
AND b.project_id = a.project_id
ORDER BY a.impressions DESC
LIMIT 5
谢谢你的帮助迈克尔
我认为这对你有用:
select t.page, t.query, t.impressions from (
SELECT a.page, a.query, a.impressions,
row_number() over(partition by a.page order by b.end_date desc, a.impressions desc) rn
FROM `strategic-kite-11111.test_data.gsc_data` a,
`strategic-kite-11111.test_data.runs` b
WHERE a.run_id = b.id
AND b.project_id = a.project_id
) t where t.rn<=5
我有一个 table 大查询,其中包含以下字段:
- (整数)run_id
- (整数)project_id
- (整数)次点击
- (整数)印象
- (浮动)点击率
- (浮动)位置
- (字符串)查询
- (字符串)国家
- (字符串)页面
每个页面都有很多关键字,展示次数为 x。我想从上一个 运行 中获取此 table 上每个页面的前 5 个关键字。 通过此查询,我获得了特定页面的前 5 个关键字,但是我必须如何编写查询才能获取包含前 5 个关键字的所有页面?
SELECT a.page, a.query, a.impressions
FROM `strategic-kite-11111.test_data.gsc_data` a,
`strategic-kite-11111.test_data.runs` b
WHERE a.run_id = b.id
AND a.page = "https://www.xxxxx.com"
AND b.end_date = "2022-04-24"
AND b.project_id = a.project_id
ORDER BY a.impressions DESC
LIMIT 5
谢谢你的帮助迈克尔
我认为这对你有用:
select t.page, t.query, t.impressions from (
SELECT a.page, a.query, a.impressions,
row_number() over(partition by a.page order by b.end_date desc, a.impressions desc) rn
FROM `strategic-kite-11111.test_data.gsc_data` a,
`strategic-kite-11111.test_data.runs` b
WHERE a.run_id = b.id
AND b.project_id = a.project_id
) t where t.rn<=5