MySQL 某列數據所占總和百分比 SQL實例


SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for person_base_info
-- ----------------------------
DROP TABLE IF EXISTS `person_base_info`;
CREATE TABLE `person_base_info`  (
  `uuid` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`uuid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of person_base_info
-- ----------------------------
INSERT INTO `person_base_info` VALUES ('w1e2233rf', '5', '深圳', '222@qq.om');
INSERT INTO `person_base_info` VALUES ('we33212', '2', '深圳', '225452@qq.om');
INSERT INTO `person_base_info` VALUES ('we33rf', '1', '深圳', '224232@qq.om');
INSERT INTO `person_base_info` VALUES ('we5663rf', '4', '北京', '28822@qq.om');
INSERT INTO `person_base_info` VALUES ('wewq33rf', '3', '深圳', '222@qq.om');

SET FOREIGN_KEY_CHECKS = 1;

查詢出所有數據:

SELECT  *   FROM person_base_info

 

 查詢地址所占比:

SELECT
a.address,
a.cont AS countAddress,
b.sum AS sumAddress,
CONCAT( ROUND( a.cont / b.sum * 100, 2 ), '', '%' ) AS percent 
FROM
( SELECT address, COUNT( address ) AS cont FROM person_base_info GROUP BY address ) a,(
SELECT
COUNT(*) AS sum 
FROM
person_base_info 
) b

 

SQL函數解釋:

MySQL ROUND(x) 函數返回最接近於參數 x 的整數;ROUND(x,y) 函數對參數x進行四舍五入的操作,返回值保留小數點后面指定的y位。

MySQL CONCAT()函數用於將多個字符串連接成一個字符串。


免責聲明!

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



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