公司在做柯米克的分析報告,需要我這邊把汽車之家柯米克論壇的評論數據和評論用戶所在地的數據獲取,通過爬蟲的方式很快的解決了數據的問題,但是需要我提取下各省評論人數的比例,所以在數據庫里面直接計算了相關的比例,把結果提交了,在這里記錄下這個實現的方式。
下面看下評論用戶取數據的表結構

但是獲取的用戶位置數據是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 字符串鏈接;
結果:

