sql语句查询老师学生记录大于1的条数

这是teacher表结构,查询每个老师student这个字段存在数据库的记录数,过滤出大于2的记录


1.

这个就过滤出了,存在student记录数大于1的老师名与记录条数

SELECT `name`,COUNT(student) FROM teacher   GROUP BY `name` HAVING COUNT(student)>1

结果



修改成2

SELECT `name`,COUNT(student) FROM teacher   GROUP BY `name` HAVING COUNT(student)>2

结果



2.

select temp.nm,temp.st FROM (SELECT `name` as nm ,COUNT(`student`) as st FROM teacher GROUP BY `name`) as temp where temp.st>1;

结果


3.这种是,查询出每个老师存在几条记录,最后结果有几条记录,相当于把学生记录数大于2的老师总数查询出来了。

select count(1) from (select count(`name`) from teacher group by `name` having count(*)>=2) as t ;



4.查询出每个老师对应的,所有学生总和

SELECT `name` ,sum(student) FROM teacher GROUP BY `name`




表结构

DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
  `name` varchar(255) DEFAULT NULL,
  `class` int(10) DEFAULT NULL,
  `student` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('zhangsan', '1', '2');
INSERT INTO `teacher` VALUES ('lisi', '1', '5');
INSERT INTO `teacher` VALUES ('lisi', '2', '3');
INSERT INTO `teacher` VALUES ('zhangsan', '8', '6');
INSERT INTO `teacher` VALUES ('zhangsab', '5', '1');
INSERT INTO `teacher` VALUES ('lisi', '6', '1');


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设学生成绩管理系统的学生表的结构如下: ```sql CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), gender VARCHAR(10), class_id INT, age INT, phone VARCHAR(20), email VARCHAR(50) ); ``` 插入一些示例数据: ```sql INSERT INTO student (name, gender, class_id, age, phone, email) VALUES ('张三', '男', 1, 18, '12345678901', 'zhangsan@qq.com'), ('李四', '女', 1, 19, '12345678902', 'lisi@qq.com'), ('王五', '男', 2, 20, '12345678903', 'wangwu@qq.com'), ('赵六', '女', 2, 18, '12345678904', 'zhaoliu@qq.com'), ('钱七', '男', 2, 19, '12345678905', 'qianqi@qq.com'), ('孙八', '女', 1, 20, '12345678906', 'sunba@qq.com'); ``` 以下是一些常用的 SQL 查询语句: 1. 查询所有学生记录 ```sql SELECT * FROM student; ``` 2. 查询班级编号为 1 的学生记录 ```sql SELECT * FROM student WHERE class_id = 1; ``` 3. 查询年龄大于等于 19 岁的学生记录 ```sql SELECT * FROM student WHERE age >= 19; ``` 4. 查询姓名为 "张三" 的学生记录 ```sql SELECT * FROM student WHERE name = '张三'; ``` 5. 查询女性学生记录并按年龄逆序排序 ```sql SELECT * FROM student WHERE gender = '女' ORDER BY age DESC; ``` 6. 查询每个班级的学生数 ```sql SELECT class_id, COUNT(*) AS num_of_students FROM student GROUP BY class_id; ``` 7. 查询年龄最大的学生记录 ```sql SELECT * FROM student WHERE age = (SELECT MAX(age) FROM student); ``` 8. 查询每个班级年龄最大的学生记录 ```sql SELECT * FROM student WHERE (class_id, age) IN (SELECT class_id, MAX(age) FROM student GROUP BY class_id); ``` 以上仅是一些示例 SQL 查询语句,实际应用中可能需要根据具体需求进行修改。同时,如果学生成绩信息需要与学生表进行关联,可以通过学生表的 id 与成绩表进行关联。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值