![](/img/trans.png)
[英]Why same query results are different on BigQuery editor and sqlalchemy?
[英]Bigquery - UNION ALL same query with different parameters
我有一個非常大的查詢,我想 UNION ALL 相同的查詢但更改兩個不同的參數。 因此,為了使查詢更具可讀性,我想避免使用 UNION ALL。 這是我所擁有的一個簡短示例(無意義,但它給出了一個想法):
SELECT DISTINCT Name,'7 days' FROM T WHERE DATE(event_time) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND CURRENT_DATE())
UNION ALL
SELECT DISTINCT Name, '14 DAYS' FROM T WHERE DATE(event_time) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 14 DAY) AND CURRENT_DATE())
所以關鍵是要避免這個聯合並使其可擴展為更多聯合,只需更改間隔而不創建數百行代碼。
你可以這樣寫:
SELECT DISTINCT Name, CONCAT(d, ' days')
FROM T JOIN
(UNNEST(ARRAY[7, 14]) d
ON DATE(event_time) BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL d DAY) AND CURRENT_DATE())
這個查詢基本上是無意義的,因為它只是在每個時間段重復最近的名字。
但關鍵思想是UNNEST()
一個包含你想要的值的數組,然后使用JOIN
而不是WHERE
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.