一 创建测试表
DROP TABLE IF EXISTS `persion`;
CREATE TABLE `persion` (
`id` int(0) NOT NULL AUTO_INCREMENT COMMENT '唯一标识',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称',
`age` int(0) NULL DEFAULT NULL COMMENT '年龄',
`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of persion
-- ----------------------------
INSERT INTO `persion` VALUES (1, '张三', 18, '男');
INSERT INTO `persion` VALUES (2, '李四', 28, '男');
INSERT INTO `persion` VALUES (3, '王五', 38, '男');
INSERT INTO `persion` VALUES (4, '小红', 20, '女');
INSERT INTO `persion` VALUES (5, '小美', 21, '女');
二 查询男女生人数
2.1 SQL语句
SELECT
sum( CASE WHEN sex = '男' THEN 1 ELSE 0 END ) AS 男生人数,
sum( CASE WHEN sex = '女' THEN 1 ELSE 0 END ) AS 女生人数,
count( sex ) AS 总人数
FROM
persion
2,2 结果展示
三 查询男女生比例
3.1 SQL语句
SELECT
CONCAT( round( sum( CASE WHEN sex = '男' THEN 1 ELSE 0 END )* 100 / count( sex ), 2 ), '%' ) AS 男比例,
CONCAT( round( sum( CASE WHEN sex = '女' THEN 1 ELSE 0 END )* 100 / count( sex ), 2 ), '%' ) AS 女比例,
count( sex ) AS 总人数
FROM
persion
3.2 结果展示
文章来源:https://www.toymoban.com/news/detail-552731.html
四 语句所用到的MySQL函数说明
-- concat('str','str',...)字符串拼接
select concat('ab','cd') -- abcd
-- round(num,n) 保留几位小数
select round(1.234,2) -- 1.23
-- sum(字段) 可用来统计字段内数字型函数的值之和
select sum(age) from persion -- 125 统计年龄之和
-- count (字段) 可用统计记录个数
select count(sex) from persion -- 5 一共5条记录
-- CASE WHEN sex = '男' THEN 1 ELSE 0 END 解释:如果 sex='男',记为 数字1 否则为 0
文章来源地址https://www.toymoban.com/news/detail-552731.html
到了这里,关于MySQL8.0.31统计男女生人数及比例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!