MySQL,问题:求出每科的平均成绩、最高成绩、最低成绩及对应的学生信息。

作者&投稿:貂俘 (若有异议请与网页底部的电邮联系)
mysql中一张学生表,查询出单科成绩前十名学生的所有信息 和总分成绩前十名学生的所有信息 在线等~

学生表名为:student, 单科成绩的字段为:subject。学生名字为:name
查询单科成绩前十:mysql语句为:select * from student order by subject desc limit 10;
查询总分成绩前十:mysql语句为:select sum(subject) subject,name from student group by name order by subject desc limit 10;
注:
select sum(subject) subject,name
这句的意思是:sum(subject) subject 把单科成绩加总用subject 来命名(就是总成绩),name就是一个字段,这里只有两个字段。
group by name order by subject : group by name 的意思按照名字这一栏来分组,当然,学生成绩表名字有可能是一样的,按照学号是最准确的,这里只是举个例子。
order by subject 这句的意思是按照总分成绩排序,这里的subject 是前面重命名总分的意思。
select sum(subject) as countsubject,name from student group by name order by countsubject desc limit 10;

扩展资料:学生成绩表常用sql
1. 在表中插入符合主键
[sql]
/*成绩表*/
CREATE TABLE SC
(
Sid INT REFERENCES Student(Sid), /*学生学号*/
Cid INT REFERENCES Course(Cid), /*课程编号*/
Score INT NOT NULL, /*课程分数*/
PRIMARY KEY(Sid,Cid) /*将学生学号和课程编号设为复合主键*/ )2. 查询各科成绩最高分,最低分以及平均分
[sql]
SELECT c.Cname, MAX(s.Score) AS Max, MIN(s.Score) AS Min, AVG(s.Score) AS Average
FROM Course c JOIN SC s ON c.Cid = s.Cid
GROUP BY c.Cname
/*此处应注意,若不按照c.Cname进行分组,SQL语句会报错,c.Cname在SELECT语句中不合法,因为它并未出现在聚合函数中也没有出现在GROUP BY语句中*/
3. 查询平均成绩大于80分的学生姓名以及平均成绩
[sql]
SELECT Sname, AVG(Score) AS Average FROM Student JOIN SC
ON Student.Sid=SC.Sid
GROUP BY Sname
HAVING AVG(Score)>80
/*以聚合函数为条件进行删选只能在HAVING语句中进行,WHERE语句不支持聚合函数*/
4. 按总分为学生排名,总分相同名次相同
[sql]
SELECT RANK() OVER (ORDER BY SUM(ss.Score) DESC) AS Rank, s.Sname,
ISNULL(SUM(ss.Score),0)
FROM Student s LEFT JOIN SC ss
ON s.Sid = ss.Sid
GROUP BY s.Sname
ORDER BY SUM(ss.Score) DESC
/*RANK()是SQL Server的一个built-in函数,语法为
RANK() OVER ( [ partition_by_clause ] order_by_clause ).*/5. 查询总分在100至200之间的学生姓名及总分
[sql]
SELECT s.Sname,SUM(ss.Score) FROM Student s JOIN SC ss ON s.Sid=ss.Sid
GROUP BY s.Sname HAVING SUM(ss.Score) BETWEEN 100 AND 200

代码如下:
select name from stu where name not in(
select name from stu where
fenshu<=80 group by name having
count(*)>=1) group by name
先查到任何一门不足80的学生,再排除这些学生。
select name from stu group by name having min(fs)>=80。
还有这些简单语句。
简单基本的sql语句
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]

这题目考的是关联查询、分组、排序等基础知识

1.每科的平均成绩:
select avg(grade) from stu_grade group by course;
2.每科的最高成绩及对应的学生信息:
select 
B.grade,
A.* 
from stu_grade as B
left join stu_info as A on B.stu_No = A.stu_No
group by B.course 
order by B.grade desc limit 1;
3.每科的最低成绩及对应的学生信息:
select
B.grade,
A.* 
from stu_grade  as B 
left join stu_info as A on B.stu_No = A.stu_No
group by B.course 
order by B.grade asc limit 1;


把你的表导出来给我发一下

用group by


mysql 求和语句
使用聚和函数 sum() 求和 select sum(money) from record t where t.name = ?注意:t 是一个表的别名,比如 t.name 就是取 record 表中的name,使用 record.name 也可以,但就是太长了,所以起一个别名比较方便

求助一个mysql5.7双主同步问题?
由于各种原因,mysql主从架构经常会出现数据不一致的情况出现,大致归结为如下几类 1:备库写数据 2:执行non-deterministic query 3:回滚掺杂事务表和非事务表的事务 4:binlog或者relay log数据损坏 数据不同步给应用带来的危害是致命的,当出现主从数据不一致的情况,常见的应对方法是先把从库下线,然后...

mysql错误日志,请求解决方案,详细见问题补充,要求详细步骤,成功后给 ...
MySQL 8.0 重新定义了错误日志e799bee5baa6e79fa5e98193e4b893e5b19e31333433633436输出和过滤,改善了原来臃肿并且可读性很差的错误日志。比如增加了 JSON 输出,在原来的日志后面以序号以及 JSON 后缀的方式展示。比如我机器上的 MySQL 以 JSON 保存的错误日志 mysqld.log.00.json:[root@centos-ytt80 mysql80]#...

MySQL问题计算点击率 id01 点击量99 展现量880 求点击率
“点击率”来自于英文“Click-through Rate”(点进率) 以及“Clicks Ratio”(点击率),是指网站页面上某一内容被点击的次数与被显示次数之比,即clicks\/views,它是一个百分比。反映了网页上某一内容的受关注程度,经常用来衡量广告的吸引程度。2、点击率的计算 网站的点击率是某一个内容被点击的...

求助mysql问题,取出mysql间隔小于5分钟的数据
--一个语句还真想不出怎么做, --建一个临时表,把下面查出的数据保存在里面,按rank分组,having count(*)>1 ,找出记录数大于1的rank就是你要的记录 select name,dtime,rank,ptime,ptime2 from(select cg_tmp.*, @rownum :=@rownum + 1,if(TIMESTAMPDIFF(MINUTE, @ptime,cg_tmp.dtime...

安装Mysql出现The selected path already exists问题如图,求解答,谢谢...
处理方法为:1.Zip解压后管理员身份运行cmd(系统win10);2.输入命令cd \/d F:\\mysql-5.7.19-win32\\bin(此为解压目录);3.输入安装命令mysqld install,出现问题The service already exists,这是由于之前已经安装过mysql并且没有删除干净;4.重新以管理员身份运行,输入sc query mysql,查看一下...

mysql 查询结果求和
1、创建三张测试表,create table pw_memberinfo(uid int, name varchar(20));create table pw_members(companyid int, uid int);create table pw_memberdata(uid int, deposit int, ddeposit int, money int);2、三张表,分别插入测试数据,insert into pw_members values(1, 1);insert into ...

MySQL的这道题怎么做?老是做错!求解!
2.(1)create table orders(o_num int(11) primary key unique auto_increment,o_date date,c_id varchar(50) foreign key references customers(c_num)) ;(2)alter table orders drop c_id;(3)drop table customers;熟练以后可以直接使用Navicat for mysql,操作MySQL的工具,很方便 ...

Navicat for MySQL 新建数据库出现了这个问题,求大神解决问题,详细点...
转:提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'。前两天也出现过这个问题,网上找了一个比较流行的方法(见方法一),搞定了。今天又用这个试了试,却搞不定,在网上找了半天,终于发现是因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,...

mysql 的相关问题 InnoDB: Starting shutdown... 书接上回,恶心的INNO...
1.不要用中文目录。。。2.有时候360会把mysql进程给杀了,检查一下。。。(先检查这个!)3.cmd --> F:\\MySql\\MySqlServer5.1\\bin\\mysqld --install 加入服务,试试。。。4.关闭你的杀毒软件和防火墙,试试(然后检查这个!)。。。5.给mysql创建多个帐户,每个项目用不同的帐户登录。。。...

义乌市15314837994: sql 怎么求出个人三科平均分? 语文数学英语 学生有10个 用一条语句输出个人3科平均 -
察显乳糖: 具体的SQL查询语句跟数据结构有关,不同的数据结构实现语句会有很大的不同,大致思路是筛选出语文、数学、英语三科的成绩,然后用得分人分组求和.下面举几个例子供参考: 1)单表结构 Scores(SName,CName,Score) SQL实现语句 ...

义乌市15314837994: 求一条SQL语句:能一次计算出各科前10名学生的平均成绩. -
察显乳糖: select '语文' as 科目, avg(语文) as 平均成绩 from (select top 10 语文 from 成绩表 order by 语文 desc) as x union all select '数学' as 科目, avg(数学) as 平均成绩 from (select top 10 数学 from 成绩表 order by 数学 desc) as y union all select '英语' as 科目, avg(英语) as 平均成绩 from (select top 10 英语 from 成绩表 order by 英语 desc) as z 如果还有其它科目,可以用同样的方式往后加.

义乌市15314837994: 英语三门成绩,如何用sql语句求其平均成绩 -
察显乳糖: 比如表结构如下: 学号,科目,成绩———————— 假设要计算平均成绩的科目是英语一、英语二、英语三,表中不止有这三个科目. 示意SQL如下:select 学号,sum(成绩)/count(成绩) as 平均成绩 from 表名 where 科目='英语一' or 科目='英语二' or 科目='英语三' group by 学号

义乌市15314837994: mysql怎么求它的平均成绩,在线等,请高手指教? -
察显乳糖: 写了一下,你试试行不行1 select name,avg(grade) from 表的名称 group by name;打印出来的是每个人对应的平均成绩.

义乌市15314837994: SQL语言:求出所有学生所有课程的平均成绩和学生中年龄最大的记录? -
察显乳糖: 你需要的查询语句如下:select * avg(成绩) ,max(年龄) from 表名 group by 成绩字段,年龄

义乌市15314837994: 在SQL语句中怎么查询一个科目的最高分和最低分还有平均分? -
察显乳糖: select max(科目) as '最高分',min(科目) as 最低分,round(avg(科目),2) as '平均分' from 表round(avg(科目),2) 意思是平均分保留两位小...

义乌市15314837994: sql server问题,定义一个函数,该函数用来查询每个学生的平均分,求解答,谢谢 -
察显乳糖: select AVG(分数字段) from tableName where 条件,可以根据姓名或者ID 来查询 希望能帮到你

义乌市15314837994: 请问 SQL数据库 在一张表中有不同的课程,我想求各个课程的平均成绩怎么求 在一张表中求出学生成绩前10%求 -
察显乳糖: 求各个课程的平均成绩:select kc.课程.avg(kc.成绩) from kc group by kc.课程求出表中前10%的学来生成绩.select top 10 percent * from table order by 成绩 desc 你是想自求各个课程的平均成绩,还是想求 学生的信息和他们的平均成绩?表结构是怎么zhidao样的?可以贴出来看看吗?

义乌市15314837994: SQL server 想算出各个学生平均成绩作为新的一列放入学生表中 -
察显乳糖: 先添加一个列:alter table 学生表 add 平均成绩 float 再更新:update 学生表 set 平均成绩 = ....

义乌市15314837994: SQL求平均值 -
察显乳糖: Avg(学生成绩.成绩A +[成绩B] + [成绩C] + [成绩D] + [成绩E])

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网