學生平均成績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