2017-05-08 41 views
0

我有一個表,看起來像:計算具體的值。 Mysql的

field1 | field2 
    1 | ready 
    2 | ready 
    1 | in_progress 
    1 | ready 
    2 | in_progress 

我怎麼能指望每個字段1「準備就緒」的字段的數量? 對於這個例子答案一定是:

field1 | field2 
    1 | 2 
    2 | 1 

回答

1

簡單過濾和聚集會做:

SELECT field1, 
    COUNT(*) AS field2 
FROM your_table 
WHERE field2 = 'ready' 
GROUP BY field1; 

如果你想獲得這些字段1值,其中計數可以爲0:

SELECT field1, 
    SUM(field2 = 'ready') as field2 
FROM your_table 
GROUP BY field1; 

SUM(field2 = 'ready')使用的事實是MySQL將true視爲1,將false視爲0.

+2

請向OP解釋爲什麼這會起作用。 –

+1

這是非常基本的SQL。沒有多少解釋我害怕:) – GurV

+0

好吧,我已經嘗試將您的代碼添加到我的查詢中。它不工作,因爲我有一個更復雜的模式。我應該問一個新問題還是編輯這個問題? –

0

這可以通過使用count()功能簡單聚合來實現:

select field1, count(field2) as field2 
from yourtable 
where field2 = 'ready' 
group by field1 

通過使用WHERE = 'ready'你再算上排在field1每個價值數過濾數據。