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 中的最小值(日期)的主要内容,如果未能解决你的问题,请参考以下文章

在 bigquery 中编写最小值的优雅而有效的方法

在 SQL (Big Query) 中生成序列/范围/数组,其中最小值和最大值取自另一个表

使用 C# DateTime 将 SQL 日期时间设置为最小值

Pandas 中日期列的最大值/最小值,列包含 nan 值

Oracle根据连续性日期的重复数据取最大或最小值日期

选择最小日期值并计算日期值?