MySQL场景分析--按照班级查询,并统计各班级男、女的人数和总人数

这篇具有很好参考价值的文章主要介绍了MySQL场景分析--按照班级查询,并统计各班级男、女的人数和总人数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL面试–按照班级查询,并统计各班级男、女的人数和总人数

场景

现在有一张学生表,字段如下。请按照班级查询,并统计各班级男、女的人数和总人数。

MySQL场景分析--按照班级查询,并统计各班级男、女的人数和总人数

CREATE TABLE `Student` (
  `ID` int NOT NULL,
  `NAME` varchar(255) DEFAULT NULL COMMENT '姓名',
  `SEX` varchar(255) DEFAULT NULL COMMENT '性别',
  `CLASS` varchar(255) DEFAULT NULL COMMENT '班级',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
INSERT INTO `test`.`Student` (`ID`, `NAME`, `SEX`, `CLASS`) VALUES (1, 'Jack', '男', '1');
INSERT INTO `test`.`Student` (`ID`, `NAME`, `SEX`, `CLASS`) VALUES (2, 'Tom', '男', '2');
INSERT INTO `test`.`Student` (`ID`, `NAME`, `SEX`, `CLASS`) VALUES (3, 'Lily', '女', '1');
INSERT INTO `test`.`Student` (`ID`, `NAME`, `SEX`, `CLASS`) VALUES (4, 'Rose', '女', '2');

解决

-- 按照班级统计男、女的人数
SELECT
	t1.CLASS,
	COUNT( ID ) AS 班级人数,
	SUM( CASE WHEN t1.sex = '男' THEN 1 ELSE 0 END ) AS male,
	SUM( CASE WHEN t1.SEX = '女' THEN 1 ELSE 0 END ) AS female 
FROM
	Student t1 
GROUP BY t1.CLASS;

MySQL场景分析--按照班级查询,并统计各班级男、女的人数和总人数

重点分析

Group by

SQL GROUP BY 子句用来根据指定的字段对结果集(选取的数据)进行分组,如果某些记录的指定字段具有相同的值,那么它们将被合并为一条数据。

通俗地理解,GROUP BY 子句将根据指定的字段合并数据行。

借助 SQL 聚合函数,您可以对分组的数据进行再次加工,例如:

  • SUM( ) 函数可以对指定字段的值进行求和
  • COUNT( ) 函数可以计算某个分组内数据的条数
  • AVG( ) 函数可以对指定字段的值求平均数

流程控制语句

完整的流程控制语句的讲解:MySQL流程控制语句详解 (biancheng.net)。下面之会涉及到CASE

SUM(CASE WHEN 
							t1.sex = '男' 
						THEN 
							1 
						ELSE 
						0 END )
AS male

CASE 语句也是用来进行条件判断的,它提供了多个条件进行选择,可以实现比 IF 语句更复杂的条件判断。

CASE 语句的基本形式如下:

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list]...
    [ELSE statement_list]
END CASE其中:
  • case_value 参数表示条件判断的变量,决定了哪一个 WHEN 子句会被执行;
  • when_value 参数表示变量的取值,如果某个 when_value 表达式与 case_value 变量的值相同,则执行对应的 THEN 关键字后的 statement_list 中的语句;
  • statement_list 参数表示 when_value 值没有与 case_value 相同值时的执行语句。
  • CASE 语句都要使用 END CASE 结束。

CASE 语句还有另一种形式。该形式的语法如下:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

其中,search_condition 参数表示条件判断语句;statement_list 参数表示不同条件的执行语句。

与上述语句不同的是,该语句中的 WHEN 语句将被逐个执行,直到某个 search_condition 表达式为真,则执行对应 THEN 关键字后面的 statement_list 语句。如果没有条件匹配,ELSE 子句里的语句被执行。

注意⚠️:这里介绍的 CASE 语句与“控制流程函数”里描述的 SQL CASE 表达式的 CASE 语句有轻微的不同。这里的 CASE 语句不能有 ELSE NULL 语句,并且用 END CASE 替代 END 来终止。文章来源地址https://www.toymoban.com/news/detail-446864.html

到了这里,关于MySQL场景分析--按照班级查询,并统计各班级男、女的人数和总人数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区域入侵/区域人数统计AI边缘计算智能分析网关V4如何修改IP地址?

    智能分析网关V4是TSINGSEE青犀推出的一款AI边缘计算智能硬件,硬件采用BM1684芯片,集成高性能8核ARM A53,主频高达2.3GHz,INT8峰值算力高达17.6Tops,FB32高精度算力达到2.2T,硬件内置了近40种AI算法模型,支持对接入的视频图像进行人、车、物、行为等实时检测分析,上报识别结

    2024年01月18日
    浏览(43)
  • MYSQL按照小时、按天、按月分组统计,无数据补0

    在开发过程中,写统计接口时,总会遇到按时、按天、按月统计,无数据进行补零的业务需求 现在市面既有补0的做法;也有不补0的做法: 不补0对于数据统计来说简洁明了,一个单表分组查询完事。(也就是在前端展示时,某个时间没有数据则不展示该时间,对于用户来说,

    2024年02月03日
    浏览(32)
  • 【实用】Mysql 按照时间(年月周日)维度统计,不存在时间数据 自动补充 0 数值

    ps: 网上看了一大堆文章, 介绍的东西真的是很够呛, 就没一个能真正用起来的, 各个都是自动补,然后很多都是不好用的。 我自己整理一篇,这是真能用。 本篇内容 : ① 按照 日 、周、月 、年  的维度 去对数据 做分组统计  ② 不存在的数据自动补充 0  (实用) 不

    2024年02月03日
    浏览(41)
  • Day19_学点儿JavaEE_学生表和班级表连接查询并显示、带查询班级表的学生信息添加、带查询班级并回显的学生信息修改

    重新封装要展示的信息为一个类,并编写相应的Servlet、Service、Dao 学点儿数据库_Day11_多表、等值连接、内连接、模糊查找 StudentDaoImply : 写一套班级的servlet、service、dao,然后在 StudentServlet 里边的 toUpdate 调用一下班级的查询service,一起发送到 student_add.jsp 即可 这就是三层架

    2024年04月14日
    浏览(22)
  • ChatGPT统计“一到点就下班”的人数

    1、到点下班 Chatgpt统计各部门F-D级员工到点下班人数占比,是在批评公司内部存在到点下班现象。 根据图片,该占比的计算方法是:最后一次下班卡在17:30-17:40之间,且1-5月合计有40天以上的人员人数/5月末在职人数。售后、国际合作、工程院到点下班人数占比位列前三。 打

    2024年02月16日
    浏览(30)
  • Python123:统计学生成绩、统计学生平均成绩与及格人数、成绩转换(C语言)

    1、统计学生成绩 题目 :本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则: 大于等于90分为A; 小于90且大于等于80为B; 小于80且大于等于70为C; 小于70且大于等于60为D; 小于60为E。 输入格式: 输入在第一行中给出

    2024年02月06日
    浏览(43)
  • 「SQL面试题库」 No_25 统计各专业学生人数

    「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。 1.1 活动流程 整理题目 :西红柿每天无论刮风下雨

    2023年04月08日
    浏览(27)
  • 【UI自动化】微信群聊未添加人数统计

     🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝 🥰 博客首页: knighthood2001 😗 欢迎点赞👍评论🗨️ ❤️ 热爱python,期待与大家一同进步成长!!❤️ 目的:本来想写个小学、初中、高中、大学中班群中未添加好友的统计,目前就先把最近写的分享出来,方便一起学

    2023年04月08日
    浏览(35)
  • MYSQL之查询按日期分组统计

    1.1、dayofyear、dayofmonth、dayofweek dayofyear(date) 函数返回日期位于所在年份的第几天,范围是1 ~ 366 dayofmonth(date) 函数返回日期位于所在月份的第几天,范围是1 ~ 31 dayofweek(date) 函数返回日期位于所在周的第几天,范围是1 ~ 7 查询语句 查询结果    需要注意的是,如果是 dayofmon

    2024年02月02日
    浏览(33)
  • Mysql的分组查询和统计计算

    1.聚合函数 聚合函数实现数据的统计计算,用于计算表中的数据,返回单个计算结果。聚合函数包括COUNT、SUM、AVG、MAX、MIN等函数,下面分别介绍。 (1)COUNT函数 COUNT函数用于计算组中满足条件的行数或总行数。 语法格式: COUNT ( { [ ALL | DISTINCT ] 表达式 } | * ) 其中,ALL表示

    2024年02月16日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包