0


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

一 创建测试表

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 
标签: mysql 数据库 java

本文转载自: https://blog.csdn.net/weixin_48788281/article/details/129027310
版权归原作者 黄泽锋820 所有, 如有侵权,请联系我们删除。

“MySQL8.0.31统计男女生人数及比例”的评论:

还没有评论