2017-05-27 198 views
0

我在我的bigquery表中使用int值在距離和時間參數中的事件「add_road」。我想查找參數「距離」和「時間」的最大值和最小值。我試過這個查詢,但它不能按我的要求工作。在bigquery中查找多個值的最小值和最大值

SELECT 
    (SELECT MAX(param.value.double_value) 
    FROM UNNEST (event.params) AS param 
    WHERE param.key = "distance") AS distance, 
    (SELECT MAX(param.value.int_value) 
    FROM UNNEST (event.params) AS param 
    WHERE param.key = "time") AS time 
FROM 
    `ukrbikeapp.info_androidhive_firebase_ANDROID.app_events_*`, 
    UNNEST(event_dim) as event 
WHERE event.name = "add_road" 
    AND (_TABLE_SUFFIX LIKE '201_05__') 

我不知道如何使這個查詢。請給我一些建議。

+1

樣本數據和預期的結果將有助於解釋你正在嘗試做的。 –

回答

1

下面是BigQuery的標準SQL

#standardSQL 
SELECT 
    MAX(IF(param.key = "distance", param.value.double_value, NULL)) AS distance, 
    MAX(IF(param.key = "time", param.value.int_value, NULL)) AS time 
FROM data, UNNEST(event_dim) AS event, UNNEST(event.params) AS param 
WHERE event.name = "add_road" 
AND (_TABLE_SUFFIX LIKE '201_05__') 
2

看起來您希望將MAX的計算移至外部選擇列表,以便您可以在所有行中找到最大值,而不僅僅是在數組內。例如,

SELECT 
    MAX((SELECT param.value.double_value 
    FROM UNNEST (event.params) AS param 
    WHERE param.key = "distance")) AS distance, 
    MAX((SELECT param.value.int_value 
    FROM UNNEST (event.params) AS param 
    WHERE param.key = "time")) AS time 
FROM 
    `ukrbikeapp.info_androidhive_firebase_ANDROID.app_events_*`, 
    UNNEST(event_dim) as event 
WHERE event.name = "add_road" 
    AND (_TABLE_SUFFIX LIKE '201_05__') 
相關問題