使用MAX函数 - BigQuery

时间:2017-04-24 08:29:49

标签: sql google-bigquery

我在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

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