学生平均成绩sql
『壹』 怎样编写SQL语句求平均成绩
1、打复开数据库软件,制附加数据库,右键选择新建查询。
『贰』 sql语言 寻找平均成绩处于最高的学生姓名
Select Top 1 A.Sno, A.Sname, C.Ceredit
From Student as A
Left Join SC as B On S.SNo = C.SNo
Left Join COurse as C On C.CNo = B.CNo
Order By C.Ceredit DESC
不知道Ceredit是不是成绩啊? Top 1 是只列出最专前面的1条记录,属Order By ** DESC 是倒序排列
『叁』 查询每位同学的课程门数、总成绩、平均成绩”的SQL语句是什么
SQL语句如下:
SELECT 学号, Count(课程编号) AS 课程总数, Sum(成绩) AS 总分数, Avg(成绩) AS 平均分
FROM 成绩表
GROUP BY 学号;
SQL常用操作语句如下:
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和: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
『肆』 使用SQL SELECT语句查询每个学生的平均成绩,在线等。
你没有告诉学生表和成绩表的关联字段,假设是id。 select 学生.姓名,avg(成绩回.成绩) as 平均成绩 into pinjun.dbf
from 学生答 inner join 成绩 on 学生.id=成绩.id
order by 学生.姓名
『伍』 SQL语句,如何求每个学生的成绩与平均成绩的差
不知道抄你具体什么数据库,,,可以用with as语句
;withcteas(select*
from表)
select*,
成绩-(selectavg(成绩)fromtest)as平均成绩
fromctet
『陆』 SQL语句求一个学生表的学生成绩的平均成绩
问题:假设有张学生成绩表(tb)如下:
姓名
课程
分数
张三
语文
74
张三
数学
83
张三
物理
93
李四
语文
74
李四
数学
84
李四
物理
94
想变成(得到如下结果):
姓名
语文
数学
物理
----
----
----
----
李四
74
84
94
张三
74
83
93
-------------------
*/
create
table
tb(姓名
varchar(10)
,
课程
varchar(10)
,
分数
int)
insert
into
tb
values('张三'
,
'语文'
,
74)
insert
into
tb
values('张三'
,
'数学'
,
83)
insert
into
tb
values('张三'
,
'物理'
,
93)
insert
into
tb
values('李四'
,
'语文'
,
74)
insert
into
tb
values('李四'
,
'数学'
,
84)
insert
into
tb
values('李四'
,
'物理'
,
94)
go
--sql
server
2000
静态sql,指课程只有语文、数学、物理这三门课程。(以下同)
select
姓名
as
姓名
,
max(case
课程
when
'语文'
then
分数
else
0
end)
语文,
max(case
课程
when
'数学'
then
分数
else
0
end)
数学,
max(case
课程
when
'物理'
then
分数
else
0
end)
物理
from
tb
group
by
姓名
--sql
server
2000
动态sql,指课程不止语文、数学、物理这三门课程。(以下同)
declare
@sql
varchar(8000)
set
@sql
=
'select
姓名
'
select
@sql
=
@sql
+
'
,
max(case
课程
when
'''
+
课程
+
'''
then
分数
else
0
end)
['
+
课程
+
']'
from
(select
distinct
课程
from
tb)
as
a
set
@sql
=
@sql
+
'
from
tb
group
by
姓名'
exec(@sql)
--sql
server
2005
静态sql。
select
*
from
(select
*
from
tb)
a
pivot
(max(分数)
for
课程
in
(语文,数学,物理))
b
--sql
server
2005
动态sql。
declare
@sql
varchar(8000)
select
@sql
=
isnull(@sql
+
'],['
,
'')
+
课程
from
tb
group
by
课程
set
@sql
=
'['
+
@sql
+
']'
exec
('select
*
from
(select
*
from
tb)
a
pivot
(max(分数)
for
课程
in
('
+
@sql
+
'))
b')
---------------------------------
/*
问题:在上述结果的基础上加平均分,总分,得到如下结果:
姓名
语文
数学
物理
平均分
总分
----
----
----
----
------
----
李四
74
84
94
84.00
252
张三
74
83
93
83.33
250
*/
--sql
server
2000
静态sql。
select
姓名
姓名,
max(case
课程
when
'语文'
then
分数
else
0
end)
语文,
max(case
课程
when
'数学'
then
分数
else
0
end)
数学,
max(case
课程
when
'物理'
then
分数
else
0
end)
物理,
cast(avg(分数*1.0)
as
decimal(18,2))
平均分,
sum(分数)
总分
from
tb
group
by
姓名
--sql
server
2000
动态sql。
declare
@sql
varchar(8000)
set
@sql
=
'select
姓名
'
select
@sql
=
@sql
+
'
,
max(case
课程
when
'''
+
课程
+
'''
then
分数
else
0
end)
['
+
课程
+
']'
from
(select
distinct
课程
from
tb)
as
a
set
@sql
=
@sql
+
'
,
cast(avg(分数*1.0)
as
decimal(18,2))
平均分
,
sum(分数)
总分
from
tb
group
by
姓名'
exec(@sql)
--sql
server
2005
静态sql。
select
m.*
,
n.平均分
,
n.总分
from
(select
*
from
(select
*
from
tb)
a
pivot
(max(分数)
for
课程
in
(语文,数学,物理))
b)
m,
(select
姓名
,
cast(avg(分数*1.0)
as
decimal(18,2))
平均分
,
sum(分数)
总分
from
tb
group
by
姓名)
n
where
m.姓名
=
n.姓名
--sql
server
2005
动态sql。
declare
@sql
varchar(8000)
select
@sql
=
isnull(@sql
+
','
,
'')
+
课程
from
tb
group
by
课程
exec
('select
m.*
,
n.平均分
,
n.总分
from
(select
*
from
(select
*
from
tb)
a
pivot
(max(分数)
for
课程
in
('
+
@sql
+
'))
b)
m
,
(select
姓名
,
cast(avg(分数*1.0)
as
decimal(18,2))
平均分
,
sum(分数)
总分
from
tb
group
by
姓名)
n
where
m.姓名
=
n.姓名')
drop
table
tb
『柒』 Sql语句求学生平均成绩
那就把in语句放在最外面一层。
添加最外面一层
select sno,sname, avg1 from (select scwrj.sno,sname, avg(gra) avg1 from ......) where avg1 in (...)
你的逻辑好像有点。。。
直接专用
select sno,sname, avg(gra) from 表属1,表2 where 表1.sno=表2.sno group by sno,sname
不就可以了。
『捌』 5.用SQL命令查询所有学生的学号、姓名、总成绩、平均成绩。
用SQL命令查询所有学生的学号、姓名、总成绩、平均成绩。
select 学号,姓名,总成绩,(总成绩/总科数) from 表
『玖』 有一个成绩表,用SQL语句,如何计算一个学生的平均成绩啊
你好,可先按学号分组,然后用分组函数avg求,如下:
select 学号 , avg(分数) from 成绩表
group by 学号
『拾』 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