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

    结果:

  • 相关阅读:
    Git Revert用法
    C语言------数据输入、输出函数
    C语言------运算符和表达式
    jsp九大内置对象
    三层结构下的多表查询,实体类写法
    String类型中"=="和"equals"的区别
    创建对象数组,给数组赋值(两种理解思路)
    Vbs整人代码
    设计模式之单例
    事务
  • 原文地址:https://www.cnblogs.com/mengyu/p/9398838.html
Copyright © 2011-2022 走看看