[英]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
想必id
是tablea
的主鍵,所以我們只用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.