工做中用到统计12月份通话记录,统计号码拨打次数,可是问题出在一个号码能够拨打屡次,每次可能接通也可能不接通,若是用主叫号码caller字段group by分组后count(*)统计数目,这样会致使不能看到统计数目中几条是接通,几条是未接通的,因而想到用union分是否接通各自统计,而后将统计结果按照号码排序放到一块儿,具体实现以下mysql
billid(通话记录id),caller(主叫号码),callerstarttime(拨打时间),callerResult(拨打结果0未接通 1接通)sql
sql实现语句以下:spa
SELECT bill_id,Caller,from_unixtime(CallerStartTime,'%Y-%c-%d %h:%i:%s') as date,CallResult,count(*) as num FROM `sup_tel_record` where CallerStartTime > 1417363200 and CallerStartTime < 1420041600 and CallResult = 0 group by Caller union SELECT bill_id,Caller,from_unixtime(CallerStartTime,'%Y-%c-%d %h:%i:%s') as date,CallResult,count(*) as num FROM `sup_tel_record` where CallerStartTime > 1417363200 and CallerStartTime < 1420041600 and CallResult = 1 group by Caller order by date asc
输出结果以下:unix
注意使用union进行sql语句链接时,第一条sql语句不能使用order by排序,不然会出现code
mysql错误 1221 Incorrect usage of union and order byblog