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 字符串链接;

    结果:

  • 相关阅读:
    MySQL的小Tips
    Linux中Eclipse下搭建Web开发环境
    SaaS的那些事儿
    典型的软件过程模型
    浅谈「敏捷」开发
    软件工程的本质
    堆和优先队列
    c 判断文件或文件夹是否存在,多种方法, 为什么从一开始就不直接来个统一的呢?
    大江河流尽
    jpg、png格式的图片转换成webp后颜色失真的问题
  • 原文地址:https://www.cnblogs.com/mengyu/p/9398838.html
Copyright © 2011-2022 走看看