2017-02-22 49 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