簡體   English   中英

在一個查詢中組合多列

[英]combining multiple columns in one query

表A

+------------+--------------+--------------+
+  ID        +  Name        +   Company ID +
+------------+--------------+--------------+
+   1        +  Steve       +      1       +
+   2        +  Mile        +      2       +
+   3        +  Steve       +      2       +
+   4        +  Del Piero   +      2       +
+   5        +  Jack        +              +
============================+==============+

表B

+------------+--------------+
+  ID        +  Company     +
+------------+--------------+
+   1        +  A           +
+   2        +  B           +
============================+

我想要的是

+----------+------------+----------------+
+ # of id  +  # OF Name +  # of B Company+
+----------+------------+----------------+
+ 5        +  4         +  3             +
+========================================+

我試過 Union//Union All

SELECT count(id), count(name) FROM table A
UNION 
SELECT count(company) FROM table B where company = 'B'

我應該保留這些列,但 Union 不允許使用不同數量的列。

任何想法,將不勝感激

您可以加入這些表以恢復與tablea每條記錄關聯的公司名稱,然后聚合:

select
    count(*) no_ids,
    count(distinct a.name) no_names,
    sum(b.comany = 'B') no_b_company
from tablea a
inner join tableb b on b.id = a.company_id

想必idtablea的主鍵,所以我們只用count(*)來總結這一列。 no_names計算在對應列中可以看到多少個不同的名稱,每次看到公司 B 時sum(b.company = 'B')增加1

如果tableb可能缺少公司,您可以將inner join更改為left join

試試這個

SELECT count(id),
count(name),
(SELECT count(company) FROM table B where company)
FROM table A

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM