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

結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM