Bro*_*man 4 sql t-sql sql-server google-bigquery
我在数据库中有一个表,其中主键有相应的值。我想计算两列中的不同值。
我已经知道一种使用 union all 然后在结果表上应用 groupby 的方法。
Select Id,Brand1
into #Temp
from data
union all
Select Id,Brand2
from data
Select ID,Count(Distinct Brand1)
from #Temp
group by ID
Run Code Online (Sandbox Code Playgroud)
我们也可以仅使用临时表在大查询中执行相同的操作。
样本表
ID Brand1 Brand2
1 A B
1 B C
2 D A
2 A D
Run Code Online (Sandbox Code Playgroud)
结果表
ID Distinct_Count_Brand
1 3
2 2
Run Code Online (Sandbox Code Playgroud)
正如您在此列中看到的那样,Distinct_count_Brand 它正在计算 Brand1 和 Brand2 两列中 Brand 的唯一计数。
我已经知道一种方法(基本上是反透视),但想知道是否还有其他方法可以计算两列中的唯一值。
我不知道 BigQuery 的怪癖,但也许您可以内联联合查询:
SELECT ID, COUNT(DISTINCT Brand)
FROM
(
SELECT ID, Brand1 AS Brand FROM data
UNION ALL
SELECT ID, Brand2 FROM data
) t
GROUP BY ID;
Run Code Online (Sandbox Code Playgroud)