网上的经典例题,这里用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实现相关推荐

  1. mysql统计出每个姓氏的人数_你见过什么偏僻的姓氏?明明是老虎的虎姓氏却读māo...

    百家姓大家都知道,我国的姓氏数量众多,历史源远流长,可不仅仅只是"百家"而已,还有很多并不常见的,人数稀少的偏僻姓氏.在生活中,你见过什么偏僻的姓氏? "操"这 ...

  2. mysql统计出每个姓氏的人数_MySQL 50题练习

    表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id ...

  3. mysql统计出每个姓氏的人数_基于SQL中的数据查询语句汇总

    where条件表达式 --统计函数 Select count(1) from student; --like模糊查询 --统计班上姓张的人数 select count(*) from student ...

  4. mysql如何定位耗时较长的sql_Mysql实例mysql优化之定位效率较低的SQL

    <Mysql实例mysql优化之定位效率较低的SQL>要点: 本文介绍了Mysql实例mysql优化之定位效率较低的SQL,希望对您有用.如果有疑问,可以联系我们. 导读:一般通过以下两种 ...

  5. mysql查询各专业人数_SQL统计各专业学生人数

    统计"学生"表中学生的总人数的sql语句是: select count(*) from student; 其中select代表查询,count(*)是统计行数量,student是学 ...

  6. mysql根据学号或是姓名查询_SQL学习之MySQL SQL查询作业答案

    #1.查询所有的课程的名称以及对应的任课老师姓名 SELECT course.cname, teacher.tname FROM course INNER JOIN teacher ON course ...

  7. mysql如何查询前几天_sql语句查询mysql怎么取前几天的数据

    满意答案 hong1992416 2015.03.24 采纳率:54%    等级:12 已帮助:12747人 一.当天或当日插入的数据: 1.传统对比判断:SELECT * FROM `t` WHE ...

  8. mysql 两字段相乘_sql统计2列相乘和语句.doc

    sql统计2列相乘和语句 sql统计2列相乘和语句 篇一:sql统计2列相乘和语句 最近有网友提出"两数相除求余数 SQL语句怎么实现两列内容"等问题,小小知识站提取了各大知名网站 ...

  9. 使用Map集合来做一个不同姓氏人数的统计

    有一个String数组保存着10个人的姓名{"张三","李四","王二"...}     通过程序设计,把不同姓氏的姓氏和人数保存到Map集 ...

最新文章

  1. Laravel Redis操作大全
  2. Java开发需掌握的常用Linux命令(持续更新)
  3. 数据库设计(三)概念数据模型
  4. 华为云网络测量如何“悬丝诊脉”
  5. “落花有意随流水,流水无情恋落花。”出处
  6. GitHub 撤销 commit
  7. 【linux-command not find解决方法 】
  8. 矩阵的特征值及特征向量理解
  9. eve-ng 添加dynamips镜像文件
  10. 计算机组成原理 唐朔飞 知识点,计算机组成原理知识点总结(唐朔飞版)
  11. android设置wifi蓝牙共享网络,Android无线网络共享设置指南
  12. Alibaba Arthas快速入门 简单易懂
  13. 抖音自媒体上热门的诀窍,高效蹭实时热点的4个技巧
  14. proe安装后 显示服务器未连接,proe许可证服务器主机名
  15. 金蝶erp系统服务器端,金蝶ERP软件二次开发.doc
  16. Intel x87 FPU的使用基础
  17. 原来写在BlogBus(博客大巴)上的文章搬运到这里!~
  18. 所有业主注意,地库行车一定要谨慎!出了事故比地上难处理
  19. [BZOJ3609][Heoi2014]人人尽说江南好 结论题
  20. 2021年美容师(初级)最新解析及美容师(初级)考试资料

热门文章

  1. 提高与高权重网站交换友情链接成功率
  2. HyperMesh 使用指南
  3. Pushmail:这个可以有
  4. 【踩坑】 a value of type “int“ cannot be assigned to an entity of type “TaskHandle_t“
  5. zune linux_解决:安装Zune后Windows Media Sharing变慢
  6. Arduino之Arduino UNO数据手册
  7. Python实现,求解最小公倍数LCM的方法和效率
  8. 2016软考程序员试题选择题(含答案解析)
  9. matlab求传递函数在某一频率的增益
  10. github视频录制播放相关功能-参考