MySQL8.0.31统计男女生人数及比例

本文展示了如何在MySQL中创建一个名为`persion`的测试表,包含`id`、`name`、`age`和`sex`字段。接着,通过SQL查询计算了表中男女生的人数和总人数,并进一步求得男女生的比例。文章还解释了使用到的MySQL函数,如`CONCAT`、`ROUND`、`SUM`和`COUNT`等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一  创建测试表

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 结果展示

 四 语句所用到的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 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值