mysql统计出每个姓氏的人数_SQL统计实例——mysql实现
网上的经典例题,这里用mysql方言实现。
表格如下:
mysql建表语句:
/*Table structure for table `stuscore`*/
DROP TABLE IF EXISTS`stuscore`;CREATE TABLE`stuscore` (
`id`int(11) NOT NULLAUTO_INCREMENT,
`name`varchar(20) DEFAULT NULL,
`subject`varchar(20) DEFAULT NULL,
`score`varchar(20) DEFAULT NULL,
`stuid`varchar(10) DEFAULT NULL,PRIMARY KEY(`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;/*Data for the table `stuscore`*/
insert into `stuscore`(`id`,`name`,`subject`,`score`,`stuid`) values(1,'张三','数学','89','1'),
(2,'张三','语文','80','1'),
(3,'张三','英语','70','1'),
(4,'李四','数学','90','2'),
(5,'李四','语文','70','2'),
(6,'李四','英语','80','2'),
(7,'王五','数学','55','3'),
(8,'王五','语文','92','3'),
(9,'王五','英语','74','3'),
(10,'赵六','数学','62','4'),
(11,'赵六','语文','81','4'),
(12,'赵六','英语','93','4');
问题:
1. 计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)
2. 计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩)
3. 计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)
4. 计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)
5. 列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)
6. 列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩)
7. 统计如下:
学号
姓名
语文
数学
英语
总分
平均分
8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩)
9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名)
10.列出数学成绩在2-3名的学生(要求显示字段:学号,姓名,科目,成绩)
11.求出李四的数学成绩的排名
12.统计如下:
课程
不及格(0-59)个
良(60-80)个
优(81-100)个
答案:
1. 计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)
SELECT a.name, SUM(score) sum_score FROM stuscore a GROUP BY a.name
2. 计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩)
SELECT a.stuid, a.name, SUM(score) sum_score FROM stuscore a GROUP BY a.name
3. 计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)
SELECT a.stuid, a.name, a.subject, a.score FROMstuscore aJOIN(SELECT stuid, MAX(score) max_score FROM stuscore GROUP BYstuid
)bON a.stuid=b.stuidWHERE a.score=b.max_score
4. 计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)
SELECT DISTINCT a.stuid, a.name, b.avg_score FROMstuscore aJOIN(SELECT stuid, AVG(score) avg_score FROM stuscore GROUP BYstuid
)bON a.stuid=b.stuid
5. 列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)
SELECT DISTINCT a.stuid, a.name, a.subject, a.score FROMstuscore aJOIN(SELECT subject, MAX(score) max_score FROM stuscore GROUP BYsubject
)bON a.subject=b.subjectWHERE a.score=b.max_score
6. 列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩)
SELECT DISTINCT a.stuid, a.name, a.subject, a.score FROMstuscore aWHERE(SELECT COUNT(1) FROMstuscore bWHERE b.subject=a.subject AND b.score>=a.score
)<= 2
ORDER BY a.subject ASC, a.score DESC
7. 统计如下:
学号
姓名
语文
数学
英语
总分
平均分
SELECTa.stuid 学号, a.name 姓名,SUM(CASE WHEN a.subject='语文' THEN score ELSE 0 END)语文,SUM(CASE WHEN a.subject='数学' THEN score ELSE 0 END)数学,SUM(CASE WHEN a.subject='英语' THEN score ELSE 0 END)英语,SUM(score)总分, (SUM(score)/COUNT(1))平均分FROM stuscore a GROUP BY a.stuid
8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩)
SELECT a.subject, AVG(score) avg_score FROM stuscore a GROUP BY a.subject
9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名)
SELECT a.*, @var:=@var+1rankFROM(SELECT stuid, name, score FROMstuscoreWHERE subject='数学' ORDER BY score DESC)a, (SELECT @var:=0)b
10.列出数学成绩在2-3名的学生(要求显示字段:学号,姓名,科目,成绩)
SELECT t.* FROM(SELECT a.*, @var:=@var+1rankFROM(SELECT stuid, NAME, score FROMstuscoreWHERE SUBJECT='数学' ORDER BY score DESC)a, (SELECT @var:=0)b
)tWHERE t.rank IN (2,3)
11.求出李四的数学成绩的排名
SELECT t.* FROM(SELECT a.*, @var:=@var+1rankFROM(SELECT stuid, name, score FROMstuscoreWHERE subject='数学' ORDER BY score DESC)a, (SELECT @var:=0)b
)tWHERE t.name='李四'
12.统计如下:
课程
不及格(0-59)个
良(60-80)个
优(81-100)个
SELECTa.subject 课程,
(SELECT COUNT(1) FROM stuscore WHERE subject=a.subject AND score<60)不及格,
(SELECT COUNT(1) FROM stuscore WHERE subject=a.subject AND score BETWEEN 60 AND 80)良,
(SELECT COUNT(1) FROM stuscore WHERE subject=a.subject AND score>80)优FROM stuscore a GROUP BY a.subject
mysql统计出每个姓氏的人数_SQL统计实例——mysql实现相关推荐
- mysql统计出每个姓氏的人数_你见过什么偏僻的姓氏?明明是老虎的虎姓氏却读māo...
百家姓大家都知道,我国的姓氏数量众多,历史源远流长,可不仅仅只是"百家"而已,还有很多并不常见的,人数稀少的偏僻姓氏.在生活中,你见过什么偏僻的姓氏? "操"这 ...
- mysql统计出每个姓氏的人数_MySQL 50题练习
表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id ...
- mysql统计出每个姓氏的人数_基于SQL中的数据查询语句汇总
where条件表达式 --统计函数 Select count(1) from student; --like模糊查询 --统计班上姓张的人数 select count(*) from student ...
- mysql如何定位耗时较长的sql_Mysql实例mysql优化之定位效率较低的SQL
<Mysql实例mysql优化之定位效率较低的SQL>要点: 本文介绍了Mysql实例mysql优化之定位效率较低的SQL,希望对您有用.如果有疑问,可以联系我们. 导读:一般通过以下两种 ...
- mysql查询各专业人数_SQL统计各专业学生人数
统计"学生"表中学生的总人数的sql语句是: select count(*) from student; 其中select代表查询,count(*)是统计行数量,student是学 ...
- mysql根据学号或是姓名查询_SQL学习之MySQL SQL查询作业答案
#1.查询所有的课程的名称以及对应的任课老师姓名 SELECT course.cname, teacher.tname FROM course INNER JOIN teacher ON course ...
- mysql如何查询前几天_sql语句查询mysql怎么取前几天的数据
满意答案 hong1992416 2015.03.24 采纳率:54% 等级:12 已帮助:12747人 一.当天或当日插入的数据: 1.传统对比判断:SELECT * FROM `t` WHE ...
- mysql 两字段相乘_sql统计2列相乘和语句.doc
sql统计2列相乘和语句 sql统计2列相乘和语句 篇一:sql统计2列相乘和语句 最近有网友提出"两数相除求余数 SQL语句怎么实现两列内容"等问题,小小知识站提取了各大知名网站 ...
- 使用Map集合来做一个不同姓氏人数的统计
有一个String数组保存着10个人的姓名{"张三","李四","王二"...} 通过程序设计,把不同姓氏的姓氏和人数保存到Map集 ...
最新文章
- Laravel Redis操作大全
- Java开发需掌握的常用Linux命令(持续更新)
- 数据库设计(三)概念数据模型
- 华为云网络测量如何“悬丝诊脉”
- “落花有意随流水,流水无情恋落花。”出处
- GitHub 撤销 commit
- 【linux-command not find解决方法 】
- 矩阵的特征值及特征向量理解
- eve-ng 添加dynamips镜像文件
- 计算机组成原理 唐朔飞 知识点,计算机组成原理知识点总结(唐朔飞版)
- android设置wifi蓝牙共享网络,Android无线网络共享设置指南
- Alibaba Arthas快速入门 简单易懂
- 抖音自媒体上热门的诀窍,高效蹭实时热点的4个技巧
- proe安装后 显示服务器未连接,proe许可证服务器主机名
- 金蝶erp系统服务器端,金蝶ERP软件二次开发.doc
- Intel x87 FPU的使用基础
- 原来写在BlogBus(博客大巴)上的文章搬运到这里!~
- 所有业主注意,地库行车一定要谨慎!出了事故比地上难处理
- [BZOJ3609][Heoi2014]人人尽说江南好 结论题
- 2021年美容师(初级)最新解析及美容师(初级)考试资料
热门文章
- 提高与高权重网站交换友情链接成功率
- HyperMesh 使用指南
- Pushmail:这个可以有
- 【踩坑】 a value of type “int“ cannot be assigned to an entity of type “TaskHandle_t“
- zune linux_解决:安装Zune后Windows Media Sharing变慢
- Arduino之Arduino UNO数据手册
- Python实现,求解最小公倍数LCM的方法和效率
- 2016软考程序员试题选择题(含答案解析)
- matlab求传递函数在某一频率的增益
- github视频录制播放相关功能-参考