MIN() MAX() BigQuery - 意外行为

Posted

技术标签:

【中文标题】MIN() MAX() BigQuery - 意外行为【英文标题】:MIN() MAX() BigQuery - Unexpected behaviour 【发布时间】:2021-09-30 00:18:12 【问题描述】:

查询结果

SELECT 
Type
, val
, MIN(val) over (partition by Type) as min_val
, MAX(val) over (partition by Type) as max_val
FROM tabA

给出意外的输出

Type val min_val max_val    
1 A -52.50 -50.00 -64.00
2 A -50.00 -50.00 -64.00
3 A -64.00 -50.00 -64.00
4 A -58.50 -50.00 -64.00
5 B -66.00 -35.33 -75.33
6 B -73.00 -35.33 -75.33
7 B -35.33 -35.33 -75.33
8 B -56.33 -35.33 -75.33
9 B -44.33 -35.33 -75.33
10 B -75.33 -35.33 -75.33
11 B -57.00 -35.33 -75.33
12 B -69.00 -35.33 -75.33

其中 min&max 是相反的。对此有什么可能的解释吗?

【问题讨论】:

Bigquery 适用于 MAX 和 MIN,我认为这只是您感到困惑,因为所有内容都是负数,因此最大值看起来“较低”,但请记住,在负数中,数字越小,数字越大. 已排序,问题是 'val' 列存储为字符串而不是 FLOAT64,因为它应该是...... 【参考方案1】:

该值未以数字类型存储。大查询也可以排序字符串,这就是这里所做的。

【讨论】:

以上是关于MIN() MAX() BigQuery - 意外行为的主要内容,如果未能解决你的问题,请参考以下文章

如何从跨两个 DATE 列的 INNER JOIN 创建 MIN 和 MAX 日期列,其中每个 DATE 列来自单独的表 BigQuery

BigQuery:写入查询结果时使用 bigquery 作业的意外行为

BigQuery:无法创建视图。意外。请再试一次

提取操作中的 BigQuery 错误:错误处理作业意外。请再试一次

BigQuery 上出现意外的“除以零:0 / 0”错误

BigQuery MERGE 意外的行重复