Mysql查询:计数列

Mysql查询:计数列,mysql,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

大家好,我有一个技术问题,我有一张表,上面有这样的记录:

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
我希望得到这样的结果:

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
我将这样进行查询:

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
但结果统计表上的所有记录,最好是分组使用

对不起,我是诺布:( 谢谢你的时间
马可

在这种情况下,将
分组依据
与有条件的
总和
计数
一起使用会更容易,如下例所示:

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
演示: