mysql查询学生成绩
① mysql查询 数学成绩比语文成绩高的所有同学的信息
SELECT学生id,t1.成绩语文,t2.成绩数学FROM(SELECT成绩,学生idFROM成绩表WHERE课程名专属='语文')t1
LEFTJOIN(SELECT成绩,学生idFROM成绩表WHERE课程名='数学')t2ONt1.学生id=t2.学生id
WHEREt2.成绩>t1.成绩
② SQL查询数据库中最高分学生的信息, 怎么写
t1 学生信息表
编号 姓名
t2 学生成绩表
编号 课程编号 学生编号 成绩版
t3 课程信权息表
编号 课程
select t1.* , t3.课程, t.成绩
from t1 left join (select min(编号) 编号, 课程编号, max(成绩) 成绩
from t2 group by 课程编号) t on t1.编号 = t.学生编号
left join t3 on t2.课程编号 = t3.编号
③ 数据库有2张表,一张学生表,一张成绩表,查询某学生的成绩,sql语言怎么写
连接查询。根据2张表关联的字段查询,比如学生表有学生ID字段,成绩表如果也有这个ID,则
select * from [学生表] inner join [成绩表] on [学生表].ID=[成绩表].学生ID
mysql和sql server 数据库中 sql 语言应该都是一样的,但是函数。。。特有的肯定不一样的,
sql(结构化查询语言)语言都是一样的,你可以网络下sql看看到底什么意思
④ 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;
(4)mysql查询学生成绩扩展阅读:
学生成绩表常用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
⑤ MYSQL查询三门科目90分以上的学生的所有成绩
select
t.name,
(select sum(t2.grade) from 该表 t2 where t2.name = t1.name) as 总分
from 该表 t where t.grade>90 group by t.name having count(*)=3;
语句解释:查询出任意3门科目中出现90分以上的(不含90)的学生的内姓名和总分。
有问题容,请追问。
⑥ MySQL查询成绩最高的学生及分数(两张表)
参考sql如下:
⑦ mysql 查询某学生的成绩所在名次前后各10条的成绩数据 该怎么写
select * from table order by 成绩 limit 10
union
select * from table order by 成绩 desc limit 10
⑧ MySQL里面 1.如何查询莫一年莫个月份的学生学号和分数
1.
SELECT studentNo 学号,studentResult 分数
FROM result
WHERE examDate='2016-02-17'
ORDER BY studentResult DESC
LIMIT 5;
2.
SELECT studentName 姓名来,YEAR(NOW())-YEAR(bornDate) 年龄源,bornDate 出生日期,phone 手机号码
From student
WHERE sex='女'
ORDER BY bornDate ASC
LIMIT 1,6;
3.
SELECT YEAR(bornDate) 年份,COUNT(YEAR(bornDate)) 人数
FROM student
GROUP BY YEAR(bornDate)
HAVING COUNT(YEAR(bornDate))>=2
4.
SELECT MAX(studentResult) 最大值,MIN(studentResult) 最小值,AVG(studentResult) 平均值
FROM result
WHERE examDate='2016-02-17'
⑨ 怎么在MYSQL查询学生平均成绩及其名次
工具/材料:Management Studio。抄
1、首先在桌面上,点击“Management Studio”图标。
⑩ 5.用SQL命令查询所有学生的学号、姓名、总成绩、平均成绩。
用SQL命令查询所有学生的学号、姓名、总成绩、平均成绩。
select 学号,姓名,总成绩,(总成绩/总科数) from 表