我有一个如下表:
Row | Fullvisitorid | Visitid | New_Session_Flag
1 | A | 111 | 1
2 | A | 120 | 0
3 | A | 128 | 0
4 | A | 133 | 0
5 | A | 745 | 1
6 | A | 777 | 0
7 | B | 388 | 1
8 | B | 401 | 0
9 | B | 420 | 0
10 | B | 777 | 1
11 | B | 784 | 0
12 | B | 791 | 0
13 | B | 900 | 1
14 | B | 904 | 0
我想做的是,如果它是fullvisitorid的第一行,然后将该字段标记为1,否则使用上面的行作为值,但是如果new_session_flag = 1则使用上面的行加1,输出示例I正在寻找以下内容:
Row | Fullvisitorid | Visitid | New_Session_Flag | Rank_Session_Order
1 | A | 111 | 1 | 1
2 | A | 120 | 0 | 1
3 | A | 128 | 0 | 1
4 | A | 133 | 0 | 1
5 | A | 745 | 1 | 2
6 | A | 777 | 0 | 2
7 | B | 388 | 1 | 1
8 | B | 401 | 0 | 1
9 | B | 420 | 0 | 1
10 | B | 777 | 1 | 2
11 | B | 784 | 0 | 2
12 | B | 791 | 0 | 2
13 | B | 900 | 1 | 3
14 | B | 904 | 0 | 3
所以第1行是1,因为它是第一次出现fullvisitorid A
行2为1,因为它不是第一次出现fullvisitorid A,并且new_session_flag <> 1因此它使用上面的行(即1)
行5为2,因为这不是第一次出现fullvisitorid A,并且new_session_Flag = 1,因此它使用上面的行(即1)加1]
第7行是1,因为它是第一次出现fullvisitorid B
等
我相信这可以通过SAS中的一个保留语句来完成,但是在大查询中是否有等效项?]
希望以上内容有意义,如果没有,请告诉我。
提前感谢
我有一个如下表:行| Fullvisitorid | Visitid | New_Session_Flag 1 | A | 111 | 1 2 | A | 120 | 0 3 | A | 128 | 0 4 | ...
下面是BigQuery标准SQL的内容>>
#standardSQL
SELECT *,
COUNTIF(New_Session_Flag = 1) OVER(PARTITION BY Fullvisitorid ORDER BY Visitid) Rank_Session_Order
FROM `project.dataset.table`