原文链接: https://www.likecs.com/show-338886.html?sc=1200
下面看下评论用户取数据的表结构
但是获取的用户位置数据是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 字符串链接;
结果:
标签:百分比,CONCAT,str2,pid,分组,user,MySQL,ROUND,SELECT From: https://www.cnblogs.com/fswhq/p/16784843.html