zoukankan      html  css  js  c++  java
  • MySQL通过分组计算百分比

      公司在做柯米克的分析报告,需要我这边把汽车之家柯米克论坛的评论数据和评论用户所在地的数据获取,通过爬虫的方式很快的解决了数据的问题,但是需要我提取下各省评论人数的比例,所以在数据库里面直接计算了相关的比例,把结果提交了,在这里记录下这个实现的方式。

    下面看下评论用户取数据的表结构

    但是获取的用户位置数据是adcode,这里还需要关联下adcode 码表,adcode码表数据结构(部分数据的截图);

    1.首先我们需要把码表和用户表通过adcode关联起来,这样我们才知道具体的省份;

    2.我们需要通过分组的方式获取到每个省份的通过人数有多少人;

    3.然后再去计算各省人数的比例;

    SELECT
        CONCAT(
            ROUND(
                t1.total / t2.totalCount * 100,
                2
            ),
            '%'
        ) AS 各省人数百分比
    FROM
        (
            SELECT
                count(U.user_pid) AS total,
                D. NAME,
                U.user_pid
            FROM
                auto_home_user AS U
            INNER JOIN dict_city AS D ON D.id = U.user_pid
            GROUP BY
                user_pid
        ) t1,
        (
            SELECT
                count(*) AS totalCount
            FROM
                auto_home_user
        ) t2 

    这里主要用到两个SQL的函数 ROUND和CONCAT,其他的都是比较常用的函数和语法

    ROUND 主要是截取数值的小数位置,这里我保留了2位小时;

    SELECT ROUND(19.8883434,2);

    运行结果

    CONCAT 主要用户字符串的连接,这里与ORACLE 需要做下区别,Oracle 通过 || 关联;

    语法:

    CONCAT(str1,str2,...)  # str1,str2,.... 代表多个字符串

    示例:

    SELECT CONCAT("Hello","World")

    结果:

    这里特殊在多介绍一个方法,通过指定的分隔符连接字符串CONCAT_WS

    语法:

    CONCAT_WS(separator,str1,str2,...)  # separator 指分隔符,str1,str2,.... 代表多个字符串

    示例:

    SELECT CONCAT_WS(",","Hello","World") AS 字符串链接;

    结果:

  • 相关阅读:
    Python一键安装缺失库
    Python画樱花树❀
    Python时间模块time
    Python的画五角星
    力扣225.用队列实现栈
    STL是个啥?
    如何使用递归遍历对象获得value值
    JS操作未跨域iframe里的DOM
    CSS3D效果
    前端轮播小结
  • 原文地址:https://www.cnblogs.com/mengyu/p/9398838.html
Copyright © 2011-2022 走看看