【问题标题】:Adding a row number - with max() - BigQuery添加行号 - 使用 max() - BigQuery
【发布时间】:2017-09-06 16:54:15
【问题描述】:

我发现这个解决方案 here 非常好用,但我需要在结果中添加一个 max() 函数,以便只报告最大访问数,同时仍按 fullvisitorID 和降序行号分组

这是我的查询当前的样子,

SELECT 
row_number () over() row_number,
fullvisitorID,
visitnumber,
FROM (
SELECT fullvisitorID, visitnumber, 
FROM [data]
GROUP BY fullvisitorID,visitnumber
ORDER BY visitnumber DESC
)

感谢任何有关如何引入 max() 函数的帮助。

Current result:
Row row_number  fullvisitorID   visitnumber  
1   1   7798230386693640077 15187    
2   2   7798230386693640077 15186    
3   3   7798230386693640077 15185    
4   4   6990057712104307809 15133    
5   5   1693270353484553172 12519    
6   6   1693270353484553172 12518

Desired result:
Row row_number  fullvisitorID   visitnumber  
1   1   7798230386693640077 15187    
2   2   6990057712104307809 15133
3   3   1693270353484553172 12519 
4   4   2117072763989389740 11607
5   5   2336272987018271381 10487    
6   6   1563891584913132229  9927

【问题讨论】:

  • 你能显示结果和期望结果吗?

标签: google-bigquery


【解决方案1】:

下面试试

SELECT
  ROW_NUMBER() OVER(ORDER BY visitnumber DESC) rownumber,
  fullvisitorID,
  visitnumber
FROM (
  SELECT 
    ROW_NUMBER() OVER(PARTITION BY fullvisitorID ORDER BY visitnumber DESC) pos,
    fullvisitorID,
    visitnumber,
  FROM (
    SELECT fullvisitorID, visitnumber, 
    FROM [data]
    GROUP BY fullvisitorID,visitnumber
  )
)
WHERE pos = 1
-- ORDER BY visitnumber DESC

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT 
       row_number () over() row_number,
       fullvisitorID,
       maxVisitNumber       
    FROM (
            SELECT fullvisitorID, max(visitnumber) as maxVisitnumber,
            FROM [data]
            GROUP BY fullvisitorID
            ORDER BY maxVisitnumber DESC
    )
    

    即在获取行号之前,使用子查询计算每个 fullVisitorId 的最大 visitNumber。

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 2020-06-25
      • 2012-06-18
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2017-09-13
      • 2021-11-17
      相关资源
      最近更新 更多