查询某学生的各科成绩
1. sql查询某个学生的平均成绩的排名
1
2
3
4
5
6
7
8
9
10
11
select s.dname,s.sname,s.avggrade
from
(select t.dname,t.sname,t.avggrade,row_number() over (partition by t.dname order by t.avggrade desc) rn
from
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) t) s
where s.rn=1
包含并列的情况,如果一个学院有两个第一,两个人都显示,以上为 sqlserver或oracle写法,其他数据库执行不了
-------------补充-----------
给你个通用的
select s2.*
from
(select t.dname,max(t.avggrade) avggrade
from
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) t
group by t.dname) s1,
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) s2
where s1.dname=s2.dname
and s1.avggrade=s2.avggrade
2. access查询中由学生单科成绩求总成绩
在access中建立新查询,选择“在设计视图中创建查询”,选择已建立好的学生单科成内绩查询,弹出的查询页容面中的空白地方单击鼠标右键选择“SQL 视图”,将select后面填写“ 学生姓名,sum(学生成绩)”(双引号里的内容)。在最后分号前填写“ group by 学生姓名”(双引号里的内容)。点击关闭,点击保存。双击查询即可。
3. sql查询各科成绩在80~90分的学生
select * from s_c where 成绩>80 and 成绩<90 order by id desc
4. 按照人名查出学生的各科成绩以及总成绩并按总成绩排名的sql语句
按照人名查出学生的各科成绩以及总成绩并按总成绩排名的sql语句示例如下:
selectA.name ,
(selectB.scorefromtable_scoreBwhereB.type='数学'andA.id=B.id) as数学 ,
(selectB.scorefromtable_scoreBwhereB.type='语文'andA.id=B.id) as语文,
(selectB.scorefromtable_scoreBwhereB.type='英语'andA.id=B.id)as英语,
(selectSUM(B.score)fromtable_scoreBwhereA.id=B.id)assum_score
fromtable_studentAorderbysum_scoreDESC
以上sql语句首先把学生表和成绩表联合查出每个学生的数学、语文、英语成绩,然后通过selectSUM(B.score)fromtable_scoreBwhereA.id=B.id查出每个学生的总成绩。
最后orderbysum_scoreDESC实现按总成绩倒叙排列。
(4)查询某学生的各科成绩扩展阅读
上述sql语句重点是对as关键字的使用- Alias(别名),通过使用 SQL,可以为列名称和表名称指定别名(Alias)。
表的 SQL Alias 语法
SELECT column_name(s) FROM table_name AS alias_name;
列的 SQL Alias 语法
SELECT column_name AS alias_name FROM table_name;
Alias 实例: 使用表名称别名
假设我们有两个表分别是:"Persons" 和 "Proct_Orders"。我们分别为它们指定别名 "p" 和 "po"。
现在,我们希望列出 "John Adams" 的所有定单。
我们可以使用下面的 SELECT 语句:
SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Proct_Orders AS poWHERE p.LastName='Adams' AND p.FirstName='John'
5. SQL数据库,三个表,查询学生某一门课程的成绩
SELECTa.S#AS学号,a.SnameAS姓名,c.scoreAS物理版成绩权
FROMStudenta,Courseb,SCc
WHEREa.S#=c.S#ANDb.C#=c.C#ANDb.Cname='物理'
6. access,如何查询每个学生的各科成绩之和
select sum(成绩表.成绩) from 成绩表 inner join 学生表
on 学生表.学生号 = 成绩表.学生号
where 成绩表.subjectid in (1001,2001)
7. 怎样统计SQL数据库里面每一个学生的各科成绩的总分
。。有哪些表,哪些字段啊
select 学号,课1+课2+课3+课4+课5 as 总成绩 from 成绩表
这种一张表的?
8. oracle查询每个学生每个科目的成绩
select
t.姓名,
sum(decode(科目,'语文内',成绩,0))AS"语文",
sum(decode(科目,'数学',成绩,0))AS"数学",
sum(decode(科目,'英语容',成绩,0))AS"英语"
from表t
groupby姓名;
9. sql动态链接查询列出某个同学某学期的所有成绩
@con nvarchar(50) 你这个长度设置的太短了吧,你看你单引号里那一堆,何止50个字版符,把长度加到2000吧
declare
@权con nvarchar(2000),
@personname nvarchar(50),
@personterm int
select @con='select sc.courseid,ce.name,sc.grade from course ce,score sc,student st
where st.no=sc.no and ce.id=sc.courseid and ce.term=sc.term and st.name =@personname and sc.term =@personterm'
set @personname='张云飞'
set @personterm=1
exec sp_executesql @con,N'@personname nvarchar(50),@personterm int',@personname,@personterm
10. 用sql 查询出各个科目中成绩最好的学生的名字
select
姓名
from
(select
*
from
(
select
a.学生编号,a.姓名
b.
学生编号,b.科目,b.分数
from
table1
a
right
join
table2
b
on
b.学生编号=a.学生编号
)c
group
by
c.科目
having
max(c.分数)
)