1. 程式人生 > 實用技巧 >MySQL 編寫出某列資料所佔總和百分比 SQL例項

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', '深圳', '[email protected]'); INSERT INTO `person_base_info` VALUES ('we33212', '2', '深圳', '[email protected]
'); INSERT INTO `person_base_info` VALUES ('we33rf', '1', '深圳', '[email protected]'); INSERT INTO `person_base_info` VALUES ('we5663rf', '4', '北京', '[email protected]'); INSERT INTO `person_base_info` VALUES ('wewq33rf', '3', '深圳', '[email protected]'); 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