首页 > 数据库 >MySQL分组查询以及having筛选

MySQL分组查询以及having筛选

时间:2024-04-11 10:33:27浏览次数:27  
标签:insert 10 DEFAULT into values result MySQL 分组 having

DDL

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `createDate` datetime DEFAULT NULL,
  `userName` varchar(20) DEFAULT NULL,
  `pwd` varchar(36) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL,
  `age` tinyint(3) unsigned DEFAULT NULL,
  `sex` char(2) DEFAULT '男',
  `introduce` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
 
CREATE TABLE `result` (
  `rid` int(11) NOT NULL AUTO_INCREMENT COMMENT '成绩编号',
  `testName` varchar(255) DEFAULT NULL COMMENT '测试名称',
  `score` double(4,2) DEFAULT NULL COMMENT '成绩',
  `studentId` int(11) DEFAULT NULL COMMENT '学生id',
  PRIMARY KEY (`rid`),
  KEY `studentId` (`studentId`),
  CONSTRAINT `result_ibfk_1` FOREIGN KEY (`studentId`) REFERENCES `student` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

DML

insert into student values(0,'2024-02-25 10:10:10','赵灵儿','123',
'15612345678',16,'女','逍遥哥哥,你终于找到我了。');
insert into student values(0,'2024-02-25 10:10:10','王语嫣','123',
'15612345678',17,'女','慕容复,我和你不共戴天。');
insert into student values(0,'2024-02-25 10:10:10','龙姑娘','123',
'15612345678',22,'女','我想过过过儿过过的日子。');
insert into student values(0,'2024-02-25 10:10:10','杨过','123',
'15612345678',18,'男','一遇杨过误终身。');
insert into student values(0,'2024-02-25 10:10:10','杨逍','123',
'15612345678',27,'男','杨过跟程英的大儿子。');
insert into student (userName,age,introduce)values('黄衣女子',26,'杨过与龙姑娘的大女儿。');
 
insert into result values(0,'政治',96,1);
insert into result values(0,'地理',86,5);
insert into result values(0,'政治',77,3);
insert into result values(0,'英语',99,3);
insert into result values(0,'历史',22,6);
insert into result values(0,'化学',69,2);
insert into result values(0,'Java',79,5);
insert into result values(0,'Java',67,6);
insert into result values(0,'政治',97,2);
insert into result values(0,'物理',76,6);
insert into result values(0,'物理',82,2);
insert into result values(0,'化学',56,4);

 DQL

# 使用那一列分组就只有那一列有效,其余无效
select testName '测试名称',
sum(score) '科目总分',
count(score) '科目考试人数',
avg(score) '科目平均分'
from result 
where studentId<4  # 基础筛选
group by testName  # 分组操作
HAVING avg(score)>60 # 分组后筛选
ORDER BY avg(score) desc; # 根据平均分倒序排列

select studentId '学号',userName '学生姓名',introduce '学生简介',
sum(score) '学生各科目总成绩',
count(score) '学生参加考试科目数量',
avg(score) '学生所有科目平均成绩',
max(score) '学生所有科目中最高分',
min(score) '学生所有科目中最低分'
from result INNER JOIN student on result.studentId=student.id
where sex='男'
GROUP BY studentId,userName,introduce
HAVING avg(score)<60
ORDER BY avg(score) desc;
SELECT * FROM result INNER JOIN student on result.studentId=student.id;

结果

标签:insert,10,DEFAULT,into,values,result,MySQL,分组,having
From: https://blog.csdn.net/2301_80888400/article/details/137503104

相关文章

  • MySQL 06 mysql 如何实现类似 oracle 的 merge into
    拓展阅读MySQLViewMySQLtruncatetable与delete清空表的区别和坑MySQLRulermysql日常开发规范MySQLdatetimetimestamp以及如何自动更新,如何实现范围查询MySQL06mysql如何实现类似oracle的mergeintoMySQL05MySQL入门教程(MySQLtutorialbook)MySQL04-E......
  • mysql查询某条记录所在的行号
    有时候我们想知道某条记录在表中的多少行,这样我们就可以开始继续上一次的任务了。下面是SQL,可以直接执行,把表名改成自己真实的表名就好了,还得注意下子查询的排序,也得按自己真实需求来即可:SET@row_number=0;SELECTindex_positionFROM(SELECTauthor_id,@row_number:=@r......
  • mysql查询锁表和是否表锁
    #查询是否有锁表SHOWOPENTABLESFROM数据库WHEREin_use>0#查询被锁的表SELECT*FROMINFORMATION_SCHEMA.INNODB_LOCKS;#查询进程showprocesslist;#杀死进程killxx;#查看正在锁的事务select*frominformation_schema.INNODB_LOCKS;#杀死进程id(就是[se......
  • (mysql)根据时间段获取连续日期,通过左连接便于每日统计
    代码:SELECTDATE_ADD(start_date,INTERVAL(a.a+(10*b.a)+(100*c.a))DAY)AS`date`FROM(SELECT'2024-02-24'ASstart_date,'2024-03-11'ASend_date)ASinputCROSSJOIN(SELECT0ASaUNIONALLSELECT1UNIONALLSELECT2UNIO......
  • 如何彻底卸载清理MySQL
    步骤1:关闭MySQL服务步骤2:卸载mysql软件步骤3:删除MySQL在电脑硬盘上物理位置上的所有文件步骤4:MySQL的注册表信息步骤5:重启下电脑总结步骤1:关闭MySQL服务右击【计算机】,选择【管理】,打开“计算机管理”界面选择【服务和应用程序】中的【服务】,在右侧找到【mysql】,右......
  • CentOS 8.x 安装 MySQL 8.x
    官网找MySQL最新版本https://dev.mysql.com/downloads/mysql/ 目前最新版本是8.0.28,执行curl下载最小化安装的6个rpm包MYSQL_VERSION=8.0.28curl-Ohttps://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-community-common-${MYSQL_VERSION}-1......
  • Windows安装MySQL
    目录一、下载MySQL安装包1、选择版本以及Windows系统点击下载2、选择Nothanks,juststartmydownload.3、下载到指定目录解压即可二、添加环境变量三、添加配置文件四、初始化MySQL数据库服务器五、安装启动服务六、修改连接登录密码七、停止MySQL服务一、下载MySQL安装包官......
  • Java List集合去重、过滤、分组、获取数据、求最值、合并、排序、跳数据和遍历
    前言请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、准备工作:现有一个User类、Student类和Ticket类,加入相关依赖@DatapublicclassUser{/***id*/privateIntegerid;/***姓名*/privateStringname;/**......
  • Mysql基础
    MysqlMysql的介绍SQL(Structurequerylanguage)结构化查询语言SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)1、DDL语句数据库定义语言:数据库、表、视图、索引、存储过程,例如CREATEDROPALTER2、DCL语句数据库控制语言:例如控制用户的访问权限GRANT、REVO......
  • MySql基础
    文章目录数据库相关概念数据库数据的存储方式优点数据库管理系统常见的关系型数据库管理系统MySQL数据库安装目录结构数据模型关系型数据库描述图E-R图SQL简介通用语法分类DDL--操作数据库--操作表DML--操作表DQL--查询表基础查询条件查询排序查询分组查询分页查询......