【问题标题】:Getting Unique ID foe a maximum amount grouped by days in BigQuery在 BigQuery 中获取按天分组的最大数量的唯一 ID
【发布时间】:2016-01-06 10:52:34
【问题描述】:

我在 BigQuery 中有这个查询:

SELECT 
  ID,
  max(amount) as money,
  STRFTIME_UTC_USEC(TIMESTAMP(time), '%j') as day 
FROM  table 
GROUP BY day 

控制台显示错误,因为它希望将 ID 添加到 group by 子句,但如果我在 group by 中添加 ID,它将获得特定日期的多个 ID。
我想打印一个特定日期的最大数量的唯一 ID。

例如:

ID: 1    Money:123     Day:365

【问题讨论】:

    标签: google-bigquery bigdata


    【解决方案1】:

    从问题中不清楚,但看起来您在特定日期每个给定 ID 只有一个条目。假设这一点,下面的查询可以满足您的需求

    SELECT id, amount, day
    FROM (
      SELECT 
        id, amount, day,
        ROW_NUMBER() OVER(PARTITION BY day ORDER BY amount DESC) AS win
      FROM dataset.table
    )
    WHERE win = 1
    

     

    如果上述假设是错误的(因此同一天您有多个相同 id 的条目),请在下面使用

    SELECT id, amount, day
    FROM (
      SELECT id, amount, day,
        ROW_NUMBER() OVER(PARTITION BY day ORDER BY amount DESC) AS win
      FROM (
        SELECT id, SUM(amount) AS amount, day
        FROM dataset.table
        GROUP BY id, day
      )
    )
    WHERE win = 1
    

     

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 2023-02-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 2017-06-11
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多