BigQuery/SQL: Select 每组第一行

BigQuery/SQL: Select first row of each group

我正在尝试 select 每组的第一行。例如:在 table 以下,我想保留 www/edf/ 的产品并为 www/abc/ 提供美食。

我尝试了多种方法,例如:ROW_NUMBER() OVER(PARTITION BY [...]) 但不知何故没有得到预期的输出。这里对我的挑战是类别没有数字作为值,否则我可以使用 max 或 min 过滤它。

SELECT landing_page,   ROW_NUMBER  OVER ( PARTITION BY landing_page ORDER BY Page_Type DESC) AS ROW_NUM
from `xxxx.TEST.draft`

但是我得到了这个错误:OVER 关键字必须跟在函数调用之后

感谢任何帮助!

Landing_page Page_type
www/edf/ product
www/edf/ home
www/abc/ cate
www/abc/ home

我相信您正在寻找函数 [FIRST_VALUE][1]?

SELECT 
    landing_page,   
    FIRST_VALUE(URL)  
        OVER ( PARTITION BY landing_page ORDER BY Page_Type DESC) AS first_url
FROM `xxxx.TEST.draft`

我回答了我自己的问题,分享代码以备不时之需:

SELECT session_id,landing_page, Page_Type, ROW_NUMBER ()  OVER (PARTITION BY session_id,landing_page ORDER BY Page_Type DESC) AS ROW_NUM
from `xxx._TEST.draft`
order by session_id desc