【问题标题】:How to take the first value in a GROUP BY statement as an aggregation? [SQL BigQuery]如何将 GROUP BY 语句中的第一个值作为聚合? [SQL 大查询]
【发布时间】:2023-02-23 01:49:36
【问题描述】:

我有一个包含 user_id、day_event 和 day_joined 的数据集。我想 GROUP BY user_id 和 day_event,然后取由最早的 day_joined 确定的每个组中的第一个。但是,我无法使用 FIRST_VALUE 执行此操作,因为它不是聚合函数。如果我使用 ANY_VALUE,此语句有效,但我特别需要第一个值。

这就是我现在所拥有的:

SELECT user_id,
day_event,
FIRST_VALUE(day_joined) OVER(PARTITION BY day_joined ORDER BY day_joined) AS day_joined
FROM event_data
GROUP BY user_id, day_event
ORDER BY user_id, day_event

但是,这会返回以下错误: SELECT list expression references day_joined which is neither grouped nor aggregated at [15:13]

【问题讨论】:

    标签: sql group-by google-bigquery aggregation


    【解决方案1】:

    您可以使用 min() 聚合运算符简单地执行此操作。 请参阅以下代码作为示例:

    SELECT user_id,
    day_event,
    MIN(day_joined) AS day_joined
    FROM event_data
    GROUP BY user_id, day_event
    ORDER BY user_id, day_event
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2014-11-28
      • 2012-12-07
      • 2014-12-27
      • 2016-07-17
      相关资源
      最近更新 更多