2016-04-26 99 views
0

我有一個名爲Users的表。我嘗試抓住它,從一些數據用下面的查詢:如何合併多個sql查詢

select name, lastname, gender, status, count(status = 'Trvl') as TrvlCount, 
     count(status != 'Trvl') as NotTrvlCount, count(id) as TotalCount 
from Users 
group by name, lastname, gender, dob; 

預期的結果將是7列有唯一的名字,姓氏,性別,出生日期(以避免重複)和不同狀態的總和。但我不能糾正爲什麼所有3個計數欄顯示相同的值或相同的總和值?

任何想法的傢伙?提前致謝。

+0

一般的GROUP BY規則是:「如果指定了GROUP BY子句,則SELECT列表中的每個列引用必須標識分組列或作爲set函數的參數。」即我會嘗試'按名稱,姓氏,性別,地位'分組。 – jarlh

+0

但我仍然得到相同的結果jarlh – vellattukudy

+0

COUNT只計算行數,嘗試使用SUM,而不是計算有多少行符合這些條件(它只是因爲TRUE等於1而FALSE等於0才起作用) – golimar

回答

2

您應該使用總和如果建設:

select name, lastname, gender, status, 
     sum(if(status = 'Trvl', 1, 0)) as TrvlCount, 
     sum(if(status != 'Trvl', 1, 0)) as NotTrvlCount, 
     count(id) as TotalCount 
from Users 
group by name, lastname, gender, dob; 
0
select name, lastname, gender, status, 
     (SELECT COUNT() FROM Users WHERE status = 'Trvl') as TrvlCount, 
     (SELECT COUNT() FROM Users WHERE status <> 'Trvl') as NotTrvlCount, 
     count(id) as TotalCount 
from Users 
group by name, lastname, gender, dob; 

您也可以使用子查詢做到這一點。