一个数据表中有以下字段:学生 班级 分数写一个sql查出每个班级中70到80,80到90,90到100分的学生人数

博主使用 MySQL 8.0 数据库进行 SQL 操作演示,介绍了涉及的 student 表,给出建表语句、插入参数,重点讲解关键函数 count(if(字段判断,true,null)) 的用法,还展示了 SQL 及执行结果,欢迎不同数据库使用者参考。

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

     这里博主用的数据库是mysql8.0版本的,有用不同数据库的同志们也可以看看,毕竟sql语句的写法都差异不大,废话不多说直接上sql:

涉及的数据表:student (学生表)

建表语句

CREATE TABLE `student` (
  `SID` int(11) NOT NULL AUTO_INCREMENT,
  `SNAME` varchar(10) DEFAULT NULL,
  `CLASSID` varchar(45) DEFAULT NULL,
  `CLASSNAME` varchar(10) DEFAULT NULL,
  `CHENGJI` double DEFAULT NULL,
  PRIMARY KEY (`SID`)
) 

插入参数

insert into student VALUES(1,"张三",1,"一班",90.3),
(2,"李明",4,"四班",79.8),
(3,"李四",2,"二班",60),
(4,"赵六",3,"三班",98),
(5,"赵涛",1,"一班",88.5);

关键函数:count(if(字段判断,true,null)):

               该函数中if的字段判断就是你对指定字段的判断内容(可以用大于小于号,between等等,,,),判断成立时为true则加一,反之不成立时为null,count(null)为不计数,当全都不成立时默认值为0

SQL: 

select CLASSNAME,count(if(CHENGJI between 70 and 80,true,null))as "70~80",count(if(CHENGJI between 80 and 90,true,null))as "80~90",count(if(CHENGJI between 90 and 100,true,null))as "90~100" from student  group by CLASSNAME order by CLASSID;

执行结果

这个表比较简单,可以复制上面的过程(写的不是很好如有更好的见解,望各位大大们提出来)

转载请注明出处:https://blog.youkuaiyun.com/weixin_44379435/article/details/95342950

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值