2017-05-12 160 views
0

在标准SQL方言中,我运行以下查询返回到max,但结果返回错误(请参见下面的截图)。说明?Google BigQuery max()返回错误结果

SELECT 
    oi.customer_ead_to, 
    MAX(oi.customer_ead_to) OVER (PARTITION BY oi.order_id) max_customer_ead_to 
FROM `rawData.order` o, 
UNNEST (items) oi 
WHERE oi.order_id = 3689393 

Screenshot: The query returns a wrong Max of 5

+0

我不能瑞普这一点 - 你可以共享作业ID和项目ID此查询 –

+0

专案编号:lesara-DWH。 JobId:lesara-dwh:bquijob_50ed7990_15bfd3aab22 –

回答

0

这是最有可能发生的情况。 customer_ead_to未定义为数字类型(FLOATINTEGER),而是定义为STRING。字符串有按字母顺序排列的比较规则,并且这是为什么“5”最大。你可以改变你的查询转换为整数类型

SELECT 
    oi.customer_ead_to, 
    MAX(CAST(oi.customer_ead_to AS INT64)) 
    OVER (PARTITION BY oi.order_id) max_customer_ead_to 
FROM `rawData.order` o, 
UNNEST (items) oi 
WHERE oi.order_id = 3689393