mysql如何分组统计并求出百分比

 更新时间:2022年10月11日 16:59:11   作者:木木-木  
这篇文章主要介绍了mysql如何分组统计并求出百分比,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mysql分组统计并求出百分比

1、mysql 分组统计并列出百分比

SELECT
    point_id,
    pname_cn,
    play_num,
    round( play_num / total * 100, 2 ) as `ratio`
FROM
    (
    SELECT
        * 
    FROM
        ( SELECT 
                ANY_VALUE ( `point_id` ) AS point_id, 
                ANY_VALUE ( `pname_cn` ) AS pname_cn,  
                sum( `play` ) AS play_num  
            FROM 
                `dt_collect_antique` WHERE`add_time` BETWEEN '2020-07-02' AND '2020-07-05'  GROUP BY `point_id`  ) t1
            INNER JOIN 
            ( SELECT 
                    sum( `play` ) AS total 
                FROM 
                    `dt_collect_antique` WHERE`add_time` BETWEEN '2020-07-02' AND '2020-07-05'
            ) t2 ON 1 = 1 
    ) t
     
ORDER BY
    `play_num` DESC 
    LIMIT 0, 10;

--查出符合条件并且分组, 统计出每组数量

SELECT 
    ANY_VALUE ( `point_id` ) AS point_id, 
    ANY_VALUE ( `pname_cn` ) AS pname_cn,  
    sum(`like`) as like_num
FROM 
    `dt_collect_antique` WHERE`add_time` BETWEEN '2020-07-02' AND '2020-07-05'  GROUP BY `point_id`  ) t1

--查出符合条件,总数量

(SELECT 
    sum( `play` ) AS total 
FROM 
    `dt_collect_antique` WHERE`add_time` BETWEEN '2020-07-02' AND '2020-07-05'
) t2

2、按年龄段分组,并求个年龄段占比

SELECT
    age_group,
    age_total,
    round( age_total / total * 100, 2 ) as `ratio`
FROM
    (
       SELECT
        * 
    FROM
        ( SELECT 
               SUM(total) AS age_total,
                   CASE
                    WHEN age >= 0 AND age < 18 THEN '18岁以下'
                    WHEN age >= 18 AND age <= 25 THEN '18岁到25岁'
                    WHEN age >= 26 AND age <= 35 THEN '26岁到35岁'
                    WHEN age >= 36 AND age <= 45 THEN '36岁到45岁'
                    WHEN age >= 46 AND age <= 60 THEN '46岁到60岁'
                   ELSE '60岁以上' END
                AS age_group FROM dt_collect_age WHERE `add_time` BETWEEN ".$time[0]." AND ".$time[1]." GROUP BY age_group
        ) t1
        INNER JOIN 
            ( SELECT 
                   SUM( `total` ) AS total 
               FROM 
                `dt_collect_age` WHERE `add_time` BETWEEN ".$time[0]." AND ".$time[1]."
            ) t2 ON 1 = 1 
           ) t
    LIMIT 0, 6;

mysql求百分比的几种方法

函数介绍

1、ROUND(X,D)和ROUND(X)

round函数用于数据的四舍五入,x指要处理的数,d是指保留几位小数

round(x)  ,其实就是 round(x,0)

d可以是负数,代表指定小数点左边的d位整数位为0,同时小数位均为0

2、FORMAT(X,D)

提供数据内容格式化功能,可以格式化数据为整数或者浮点数,能四舍五入

D为负数时,按0处理

3、LEFT(str,len)

left函数是一个字符串函数,它返回具有指定长度的字符串的左边部分,str为要处理的字符串,len为长度

left函数为字符串截取,不能四舍五入

4、CONCAT(str1,str2,...)

concat函数用于将多个字符串连接成一个字符串

利用round,format,left与concat求百分比

注意:使用left按位截取百分比时,位数要根据需要合理设置,否则容易出现意外BUG

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于C++实现Mysql数据库连接池实例

    基于C++实现Mysql数据库连接池实例

    数据库连接池负责分配、管理、和释放数据库连接,允许使用应用程序重复使用一个现有的数据库连接。数据库连接是关键有限且昂贵的资源,一个数据库连接对象均对应一个物理数据库的连接,每次操作都打开一个物理连接,使用完都关闭连接
    2022-12-12
  • MySQL5.6安装步骤图文详解

    MySQL5.6安装步骤图文详解

    这篇文章主要为大家详细介绍了MySQL安装步骤配置方法图文,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 关于 MySQL 嵌套子查询中无法关联主表字段问题的解决方法

    关于 MySQL 嵌套子查询中无法关联主表字段问题的解决方法

    这篇文章主要介绍了关于 MySQL 嵌套子查询中,无法关联主表字段问题的折中解决方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • MySQL学习第二天 安装和配置mysql winx64

    MySQL学习第二天 安装和配置mysql winx64

    MySQL学习第二天,主要为大家详细介绍了在Windows 64位操作系统下安装和配置MySQL的具体步骤,整理一份mysql winx64安装配置方法教程,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 详解监听MySQL的binlog日志工具分析:Canal

    详解监听MySQL的binlog日志工具分析:Canal

    Canal主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费,目前主要支持MySQL。接下来通过本文给大家介绍监听MySQL的binlog日志工具分析:Canal的相关知识,感兴趣的朋友一起看看吧
    2020-10-10
  • MySQL如何从5.5升级到8.0(使用命令行升级)

    MySQL如何从5.5升级到8.0(使用命令行升级)

    最近为了解决mysql低版本的漏洞,这篇文章主要给大家介绍了关于MySQL如何从5.5升级到8.0的相关资料,主要使用的命令行升级,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • memcached的学习过程

    memcached的学习过程

    本篇文章是对笔者学习memcached的经历进行了介绍,需要的朋友参考下
    2013-06-06
  • 解决MySQL Varchar 类型尾部空格的问题

    解决MySQL Varchar 类型尾部空格的问题

    这篇文章主要介绍了MySQL Varchar 类型尾部空格,在这里需要注意的是 binary 排序规则的 pad 属性为 NO PAD,这里其实不是个例外,因为 char、varchar 和 text 类型都归类为 nonbinary,感兴趣的朋友跟随小编一起学习下吧
    2022-04-04
  • 详解MySQL中的数据类型和schema优化

    详解MySQL中的数据类型和schema优化

    这篇文章主要介绍了MySQL中的数据类型和schema优化的相关资料,帮助大家更好的理解和学习MySQL的知识,感兴趣的朋友可以了解下
    2020-10-10
  • MySQL的23个需要注意的地方

    MySQL的23个需要注意的地方

    本文将为大家介绍的是MySQL数据库的23个特别注意事项,希望各位DBA能从中得到一些启发。
    2010-08-08

最新评论