[英]Aggregate query across two tables in SQL?
我在BigQuery工作。 我有兩個桌子:
TABLE: orgs
code: STRING
group: STRING
TABLE: org_employees
code: STRING
employee_count: INTEGER
每個表中的code
實際上是外鍵。 我想得到所有唯一的group
,其中包括一個組織的數量,(這很棘手)是一個這樣的組織,其中有多少組織只有一個員工。 數據如下所示:
group,orgs,single_handed_orgs
00Q,23,12
00K,15,7
我知道如何做第一件事,從orgs
表中獲取唯一的group
和關聯的org的數量:
SELECT
count(code), group
FROM
[orgs]
GROUP BY group
而且,我知道如何從練習表中獲取單手組織的數量:
SELECT
code,
(employee_count==1) AS is_single_handed
FROM
[org_employees]
但是我不確定如何將它們粘合在一起。 有人可以幫忙嗎?
適用於BigQuery:舊版SQL
SELECT
[group],
COUNT(o.code) as orgs,
SUM(employee_count = 1) as single_handed_orgs
FROM [orgs] AS o
LEFT JOIN [org_employees] AS e
ON e.code = o.code
GROUP BY [group]
如果在org_employees表中缺少某些代碼,請使用LEFT JOIN
適用於BigQuery:標准SQL
SELECT
grp,
COUNT(o.code) AS orgs ,
SUM(CASE employee_count WHEN 1 THEN 1 ELSE 0 END) AS single_handed_orgs
FROM orgs AS o
LEFT JOIN org_employees AS e
ON e.code = o.code
GROUP BY grp
注意使用grp
VS group
-看起來像標准的SQL不喜歡使用的保留關鍵字 ,即使我把周圍的反引號
已確認:
您可以將關鍵字與反引號一起使用
您可以將兩個表合並以得到只有一名員工的組。 然后,將其包裝在子查詢中,然后對擁有的組進行計數。
我使用的是COUNT DISTINCT和GROUP BY,因為我不知道您的數據的結構。 每個組只有一行還是多個行?
SELECT
COUNT(DISTINCT group)
FROM (
SELECT
group
FROM
orgs AS o INNER JOIN org_employees AS e ON o.code = e.code
WHERE
employee_count = 1
GROUP BY
group
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.