SQL 查询以获取每页关键字的有限有序结果集

SQL Query to get limited ordered resultset of keywords per pages

我有一个 table 大查询,其中包含以下字段:

  1. (整数)run_id
  2. (整数)project_id
  3. (整数)次点击
  4. (整数)印象
  5. (浮动)点击率
  6. (浮动)位置
  7. (字符串)查询
  8. (字符串)国家
  9. (字符串)页面

每个页面都有很多关键字,展示次数为 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