我在BiqQuery中有以下查询,我只需要返回visitNumber的最大值。
SELECT
fullvisitorid,
max(VisitNumber),
NTILE(10) OVER (order by visitnumber DESC) ntile,
FROM
[data]
GROUP BY fullvisitorid,visitnumber
目前,我得到了这个:
Row fullvisitorid f0_ ntile
1 5525864130868838188 8371 1
2 5525864130868838188 8370 1
3 5525864130868838188 8369 1
4 5525864130868838188 8368 1
5 5525864130868838188 8367 1
6 5525864130868838188 8366 1
7 5525864130868838188 8365 1
然而,我想要的是这只是最大的访问数量,对于fullvisitorid。
Row fullvisitorid f0_ ntile
1 5525864130868838188 8371 1
2 1450600973472850688 7461 1
3 6249134003569839962 6914 1
4 3072340487595905048 6828 1
答案 0 :(得分:1)
我接近这个的方法是使用ROW_NUMBER()
为每个fullvisitorid
分区的访问次数分配一个等级。然后,仅保留每个分区的第一条记录。请注意,对于tie,DENSE_RANK()
将匹配此情况下的多个记录。
SELECT
t.fullvisitorid,
t.VisitNumber,
t.ntile
FROM
(
SELECT
fullvisitorid,
VisitNumber,
DENSE_RANK() OVER (PARTITION BY fullvisitorid ORDER BY VisitNumber DESC) dr,
NTILE(10) OVER (ORDER BY visitnumber DESC) ntile
FROM [data]
) t
WHERE t.dr = 1