广告位联系
返回顶部
分享到

mysql分组统计并求出百分比的方法

Mysql 来源:互联网 作者:佚名 发布时间:2022-10-14 23:38:35 人浏览
摘要

mysql分组统计并求出百分比 1、mysql 分组统计并列出百分比 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 SELECT point_id, pname_cn, play_num, round( play_num / total * 100, 2 ) as `ratio` FROM ( S

mysql分组统计并求出百分比

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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;

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

1

2

3

4

5

6

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

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

1

2

3

4

5

(SELECT 

    sum( `play` ) AS total 

FROM 

    `dt_collect_antique` WHERE`add_time` BETWEEN '2020-07-02' AND '2020-07-05'

) t2

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/qq_38776443/article/details/107167702
相关文章
  • 深入了解MySQL中的慢查询
    一、什么是慢查询 什么是MySQL慢查询呢?其实就是查询的SQL语句耗费较长的时间。 具体耗费多久算慢查询呢?这其实因人而异,有些公司慢
  • MySQL中with rollup的用法及说明

    MySQL中with rollup的用法及说明
    MySQL with rollup的用法 当需要对数据库数据进行分类统计的时候,往往会用上groupby进行分组。 而在groupby后面还可以加入withcube和withrollup等关
  • mysql分组统计并求出百分比的方法

    mysql分组统计并求出百分比的方法
    mysql分组统计并求出百分比 1、mysql 分组统计并列出百分比 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 SELECT point_id, pname_cn, play_
  • 30种SQL语句优化的方法总结
    1)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2)应尽量避免在 where 子句中使用!=或操作符
  • 达梦数据库获取SQL实际执行计划的方法

    达梦数据库获取SQL实际执行计划的方法
    环境说明: 操作系统:银河麒麟V10 数据库:DM8 相关关键字:DM数据库、SQL实际执行计划 一、set autotrace trace disql下执行set autotrace trace开启
  • MySQL数据库约束的介绍

    MySQL数据库约束的介绍
    基本介绍 约束用于确保数据库的数据满足特定的商业规则 在mysql中,约束包括:not null,unique,primary key,foreign key 和check5种 1.primary key(主键
  • MySQL索引的介绍

    MySQL索引的介绍
    1. MySQL 索引的最左前缀原则 左前缀原则是联合索引在使用时要遵循的原则,查询索引可以使用联合索引的一部分,但是必须从最左侧开始。
  • windows下Mysql多实例部署的操作方法
    当存在多个项目的时候,需要同时部署时,且只有一台服务器时,哪么就需要部署Mysql多个实例,原理很简单,多个mysql服务运行使用不同的
  • MySQL客户端/服务器运行架构介绍

    MySQL客户端/服务器运行架构介绍
    之前对MySQL的认知只限于会写些SQL,本篇开始进行对MySQL进行深入的学习,记录和整理下自己对MySQL不熟悉的地方。如果有需要可以关注我的
  • mysql8.0主从复制搭建与配置方案

    mysql8.0主从复制搭建与配置方案
    mysql主从搭建 环境:ubuntu20.04.1,mysql:8.0.22。 主:192.168.87.3 备:192.168.87.6 安装数据库 1 2 3 sudo apt-get install mysql-server sudo apt-get install mysql
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计