BigQuery 中的最小值(日期)
Posted
技术标签:
【中文标题】BigQuery 中的最小值(日期)【英文标题】:Min(date) in BigQuery 【发布时间】:2021-12-08 09:42:28 【问题描述】:我最近从 Workbench 切换到 BigQuery,并且在构建查询时发现了一些语法差异。 BigQuery 难以处理一个非常基本的 SQL 查询:
SELECT createdAt, incrementId, customerEmail
FROM order
WHERE customerEmail = 'email'
这是输出:
当我想返回最早日期的第一行时:
SELECT MIN(createdAt), incrementId, customerEmail
FROM order
WHERE customerEmail = 'email'
GROUP BY incrementId, cutomerEmail
此查询返回完全相同的表。知道这里可能有什么问题吗?列“createdAt”是表架构中的时间戳。
【问题讨论】:
如果我想返回最早日期的第一行,那么您必须在此日期之前订购并仅选择第一行(LIMIT 1)。 此查询返回完全相同的表。 当然,分组表达式的值对没有重复,因此每一行都是单独的组。 【参考方案1】:当您按incrementId, customerEmail
分组并且值没有重复时,将返回所有不同的值。您可以从子查询中获取MIN(createdAt)
。
试试这样的:
SELECT createdAt,
incrementId,
customerEmail
FROM order
WHERE customerEmail = 'email'
AND createdAt= (select MIN(createdAt) FROM order) ;
【讨论】:
【参考方案2】:谢谢,这几乎成功了,原来正确的语法是:
SELECT createdAt,
incrementId,
customerEmail
FROM order
WHERE customerEmail = 'email'
AND createdAt= (select MIN(createdAt) FROM order
WHERE customerEmail = 'email');
【讨论】:
以上是关于BigQuery 中的最小值(日期)的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL (Big Query) 中生成序列/范围/数组,其中最小值和最大值取自另一个表