2012-02-05 53 views
1
name | sub1 | sub2 | sub3 
__________________________ 
prad | poor| good | poor 
vas | good | poor | poor 

我想算「差」每個人得到如何計算行明智的特定字符串中的MySQL表

我試着查詢"SELECT name, COUNT(name) FROM tbl_name where (sub1,sub2,sub3)='poor' group by name;" 它不工作..please幫助的數量 我如何計算明智的行?

+0

目前尚不清楚表結構是什麼。它是'name | sub1 | sub2 | sub'嗎?如果是這樣,它只有4列,你提供的數據'prad | poor | etc'超過它。你能否給出一個更好的例子,以更友好的方式提供表格結構和表格數據?謝謝。 – 2012-02-06 00:56:59

+0

其實第二行從單詞「vas」開始 – 2012-02-06 15:07:35

+0

我可以計算出sub3有兩個「差」。但我怎麼能計算「貧窮」沒有輸血或普拉特 – 2012-02-06 15:24:49

回答

0

試試這個,如果你能在你的表有許多相同的名字(你沒有指定什麼是主鍵) :

select name, sum(
    if (sub1='poor', 1, 0) + 
    if (sub2='poor', 1, 0) + 
    if (sub3='poor', 1, 0) 
) as total from Data 
group by name; 

這裏是一個example

或者這樣,如果你沒有重複的表名:

select name, 
    if (sub1='poor', 1, 0) + 
    if (sub2='poor', 1, 0) + 
    if (sub3='poor', 1, 0) 
as total from Data 

這裏是一個example

讓我知道這是否正常工作。

+0

謝謝..它的作品,然後我會做這個與輥沒有主鍵 – 2012-02-07 13:25:26

+0

偉大的。如果它有效,那麼你應該將問題標記爲已回答:) – 2012-02-07 16:38:43

-1

如果你將其限制在剛剛poor,該集團是沒有意義的:

SELECT COUNT(name) FROM tbl_name WHERE name='poor' 
+0

我可以計算出sub3有兩個「窮人」。但我怎麼能計算出「可憐」沒有輸精管或prad有 – 2012-02-06 15:33:46

0

SELECT姓名,(IF(SUB1 = '差',1,0)+ IF(SUB2 = '差',1,0)+ IF(SUB3 = '差',1,0)) AS Total_Poor FROM demo1 GROUP BY name;