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
我正在尝试 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