2017-02-22 47 views
1

大家好,大家好我有一個技術問題,我有記錄的表是這樣的:MySQL查詢:數列

DATE  SIP DURATION TYPE 
2017-02-22 670 9  NO ANSWER 
2017-02-22 670 9  ANSWER 
2017-02-22 670 9  ANSWER 
2017-02-22 671 9  NO ANSWER 

我想有結果是這樣的:

SIP DURATION NOANSWER ANSWER 
670  18   1  2 
671  9   1  0 

我「會做這樣的查詢:

select 
DISTINCT(SIP), 
(select count(*) FROM table where TYPE="ANSWERED") 
(select count(*) FROM table where TYPE="NO ANSWERED") 
from table 

但結果統計所有記錄在桌子上,是更好地利用集團的?

,對不起,我的小白:( 感謝時間 馬爾科

回答

1

在這種情況下,它更容易使用GROUP BY有條件SUMCOUNT像下面的例子:

SELECT 
    SIP, 
    SUM(CASE TYPE WHEN 'ANSWER' THEN DURATION ELSE 0 END) AS DURATION, 
    COUNT(CASE WHEN TYPE = 'NO ANSWER' THEN 1 ELSE NULL END) AS NOANSWER, 
    COUNT(CASE WHEN TYPE = 'ANSWER' THEN 1 ELSE NULL END) AS ANSWER 
FROM table_name 
GROUP BY SIP 

演示:http://sqlfiddle.com/#!9/b1142/2/0