在 BigQuery 中获取按天分组的最大数量的唯一 ID
Posted
技术标签:
【中文标题】在 BigQuery 中获取按天分组的最大数量的唯一 ID【英文标题】:Getting Unique ID foe a maximum amount grouped by days in BigQuery 【发布时间】: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
【问题讨论】:
【参考方案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
【讨论】:
以上是关于在 BigQuery 中获取按天分组的最大数量的唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章
iPhone CoreData:如何按天对获取的结果进行分组?