mysql分组统计后将结果顺序排列(union实现)

  工作中用到统计12月份通话记录,统计号码拨打次数,但是问题出在一个号码可以拨打多次,每次可能接通也可能不接通,如果用主叫号码caller字段group by分组后count(*)统计数目,这样会导致不能看到统计数目中几条是接通,几条是未接通的,于是想到用union分是否接通各自统计,然后将统计结果按照号码排序放到一起,具体实现如下

billid(通话记录id),caller(主叫号码),callerstarttime(拨打时间),callerResult(拨打结果0未接通 1接通)

  sql实现语句如下:

  

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

输出结果如下:

注意使用union进行sql语句连接时,第一条sql语句不能使用order by排序,否则会出现

mysql错误 1221 Incorrect usage of union and order by

时间: 2024-10-11 10:58:33

mysql分组统计后将结果顺序排列(union实现)的相关文章

MySQL 分组统计并列出百分比

SELECT result, n, round( n / s * 100, 5 ) rat FROM ( SELECT * FROM ( SELECT result, count( 1 ) n FROM sendsms_log GROUP BY result ) t1 INNER JOIN ( SELECT count( 1 ) s FROM sendsms_log ) t2 ON 1 = 1 ) t 其中“SELECT result, count( 1 ) n FROM sendsms_log

mysql分组统计按照字段排序方法(分组之后保留最新时间、最大id...)

sql示例如下: select success_time,query_time,order_no from pro_return_plan t where t.success_time in ( SELECT max(success_time) FROM pro_return_plan WHERE 1=1 AND bill_status='2' AND success_time IS TRUE AND order_no IN('20190416105437690','20190510193141

把分组统计后的结果集放到全部结果集里面查

select *  from dba_objects d where exists (select 1          from (                                select d.owner, count(*)                  from dba_objects d                 where d.owner in ('TRADE_HNGJS', 'TRADE_HXGJS')                 group by d

MySql按周/月/日分组统计数据的方法

知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATE_FORMAT(create_time,'%Y%m') month

MySQL实现按天分组统计,提供完整日期列表,无数据自动补0

业务需求最近要在系统中加个统计功能,要求是按指定日期范围里按天分组统计数据量,并且要能够查看该时间段内每天的数据量. 解决思路直接按数据表日期字段group by统计,发现如果某天没数据,该日期是不出现的,这不太符合业务需求.百度一番发现方案大致有两种:一是新建日期列表,把未来10年的日期放进去,然后再跟统计表作连接查询:二是用程序代码在SQL逻辑中union多个连续日期查询.都比较繁琐.参考Oracle的“select level from dual connect by level < 31

Mysql按日、周、月进行分组统计

我们在用Mysql抽取数据时候,经常需要按照天.周.月等不同的粒度对数据进行分组统计.而我们的时间可能是“2017/12/5 0:0:0”这种准确的时间.所以在进行分组之前我们需要对时间进行一下处理. DATE_FORMAT是MySQL内置的一个函数,作用是以不同的格式显示日期/时间数据.具体的语法如下: DATE_FORMAT(date,format),其中 date:合法的日期.format:规定日期/时间的输出格式,其中format可使用的格式见文末链接. 下面我们通过具体例子来看如何通过

MySQL 分组

MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name; 实例演示 本章节实例使用到了以下表结构及数据,使用前我们可以先将以下数据导入数据库中.

010.简单查询、分组统计查询、多表连接查询(sql实例)

-------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SELECT UNION --SELECT 'HAHA',1,32--UNION ALL --全部显示/显示重复数据 即使集合相同--UNION---------将查询的两个结果集合并.结构必须一致 -->常见面试题 --SELECT 'HEHE',2,33------将查询结果添加到列表中(子查询)IN

《卸甲笔记》-分组统计查询

统计函数对比 1查询出公司每个月支出的月工资总和 Oracle SQL> select SUM(sal) from emp; SUM(SAL) ---------- 29025 PPAS scott=# select SUM(sal) from emp; sum ---------- 29025.00 (1 row) 2查询出公司的最高工资,最低工资,平均工资 Oracle SQL> select AVG(sal),ROUND(AVG(sal),2),MAX(sal),MIN(sal) fro