2017-04-24 65 views
0

我在BiqQuery中有以下查詢,我只需要返回visitNumber的最大值。使用MAX函數 - BigQuery

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 

然而,要我想是這樣的,即只有最大visitnumber,爲fullvisitorid。

Row  fullvisitorid  f0_ ntile 
    1 5525864130868838188 8371 1 
    2 1450600973472850688 7461 1 
    3 6249134003569839962 6914 1 
    4 3072340487595905048 6828 1 

回答

1

我會處理這個問題的方法是使用ROW_NUMBER()秩分配給每個fullvisitorid分區的訪問數量。然後,只保留每個分區的第一條記錄。請注意,在綁定的情況下,在這種情況下,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