2017-05-12 18 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

として整数型にキャストして、あなたのクエリを変更することができます - あなたはこのクエリ –

+0

PROJECTIDのためのジョブIDとプロジェクトIDを共有することができます。lesara-DWH。求人ID:lesara-dwh:bquijob_50ed7990_15bfd3aab22 –

答えて

0

これが最も可能性が高い何が起こるかです。 customer_ead_toは数値タイプ(FLOATまたはINTEGER)ではなく、STRINGと定義されています。文字列にはアルファベットの比較規則があり、"15" < "5"です。これが「5」が最大となる理由です。あなたは、私はこれをREPROすることはできません

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 
関連する問題