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 GROUP BY result”是查出短信发送结果分组统计,“SELECT count( 1 ) s FROM sendsms_log”查出所有记录数,round( n / s * 100, 5 )计算百分比,保留5位小数。效果:

result         n           rat      
至尊 100 10%
总代 100 10%
市代 300 30%
分销 500 50%

原文地址:https://www.cnblogs.com/panxiangfu/p/12432437.html

时间: 2024-10-09 00:59:58

MySQL 分组统计并列出百分比的相关文章

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

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

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

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按日、周、月进行分组统计

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

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

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

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; 实例演示 本章节实例使用到了以下表结构及数据,使用前我们可以先将以下数据导入数据库中.

分组统计查询(学习笔记)

查询出公司每个月支出的工资总和 --查询出公司每个月支出的工资总和 SELECT SUM(sal) FROM emp; 查询出公司的最高工资,最低工资和平均工资 --查询出公司的最高工资,最低工资和平均工资 SELECT MAX(sal),MIN(sal),ROUND(AVG(sal),2) FROM emp; 统计出公司最早雇佣和最晚雇佣的雇佣日期 --统计出公司最早雇佣和最晚雇佣的雇佣日期 SELECT MIN(hiredate) 最早雇佣日期 , MAX(hiredate) 最晚雇佣日期

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

统计函数对比 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

Oracle按不同时间分组统计

Oracle按不同时间分组统计 Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- 14-2月 -08 20 10-3月 -08 2 14-4月 -08 6 14-6月 -08 75 24-10月-09 23 14-11月-09 45 04-8月 -10 5 04-9月 -10 44 04-10月-10 88 注意:为了显示更直观,如下查询已皆按相应分组排序 1.按年份分组 sel