![](/img/trans.png)
[英]How to combine multiple SELECTs into a single SELECT by a common column in (BigQuery) SQL?
[英]Vanilla SQL that selects multiple values in single column
如果我有一張表,其中一列中有客戶 ID,另一列有時區,是否有一個普通的 SQL 語句可以 select 所有具有不同時區值的客戶 ID? 換句話說,我想找到那些在紐約、芝加哥和舊金山設有辦事處的客戶,而不是那些只在一個或其他時區設有辦事處的客戶。
SELECT Customer
FROM MyTable
GROUP BY Customer
HAVING COUNT(DISTINCT TimeZone) > 1
DISTINCT 的使用很重要。
COUNT(TimeZone) 計算所有非空值,而不僅僅是不同的值。 所以它等價於 COUNT(*),除了 TimeZone 是 null。
換句話說,如果給定客戶有三個辦事處,但都在東部時區,則 COUNT(TimeZone) 將為 3,而 COUNT(DISTINCT TimeZone) 將為 1。
SELECT Customer
FROM MyTable
GROUP BY Customer
HAVING COUNT(DISTINCT TimeZone) > 1
丑陋但有效:
select CustomerID
where CustomerID in
(
select customerID from
(select distinct CustomerID
from table
where TimeZone in ('NY','CHI','SF')) t
having count(*) = 3
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.