当前位置:首页 » 编程语言 » sql查询各科成绩
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql查询各科成绩

发布时间: 2022-06-27 12:08:51

① 如何用sql语句查询各门课程的平均成绩

创建表:

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[stuscore]

( [name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

[subject] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

[score] [int] NULL,

[stuid] [int] NULL)

ON [PRIMARY]

GO

SET ANSI_PADDING OFF

插入数据:

insert into dbo.stuscore values ('张三','数学',89,1);

insert into dbo.stuscore values ('张三','语文',80,1);

insert into dbo.stuscore values ('张三','英语',70,1);

insert into dbo.stuscore values ('李四','数学',90,2);

insert into dbo.stuscore values ('李四','语文',70,2);

insert into dbo.stuscore values ('李四','英语',80,2);

查询结果如下:

列出各门课程的平均成绩:

select subject,AVG(score)平均成绩 from stuscore
group by subject;

② 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;

(3)sql查询各科成绩扩展阅读:

学生成绩表常用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

④ 如何使用sql编写查询语句 用于查询学生的 各科成绩

declare
@sql
varchar(8000)
select
@sql='select
a.mname
as
学生姓名'
select
@sql=@sql+',sum(case
c.fname
when
'''+fname+'''
then
b.score
else
null
end
)as
'+fname
from
f
select
@sql=@sql+'
from
member
a
left
join
score
b
on
a.mid=b.mid
left
join
f
c
on
b.fid=c.fid
group
by
a.mname'
print
@sql
exec
(@sql)
费了好劲,真麻烦,头一次搞这个东西

⑤ 简单SQL语句,查询成绩

select * from xs
inner join
(
select km,max(fs) as fs from xs group by km
)w
on xs.km = w.km and xs.fs = w.fs

这样行不?凭想象写的,请参考

⑥ SQL查询单科成绩最高的同学

SELECT child.abc,child.cource,a.name

FROM (select max(b.point) as abc,c.cource from `student` as a join `achievement` as b join `course` as c on a.sex = 1 and b.sid=a.id and b.cid=c.id group by c.cource) as child

join `student` as a join `achievement` as b join `course` as c on a.sex = 1 and b.sid=a.id and b.cid=c.id where child.abc=b.point and child.cource=c.cource

很繁琐,子查询和查询的都是同一个表同一个条件,答案包对

不要姓名要学号的话就把名字换一下

原理

子查询出最高分和科目,再用父查询把(同条件下)把最高分和科目配对

⑦ 按照人名查出学生的各科成绩以及总成绩并按总成绩排名的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实现按总成绩倒叙排列。


(7)sql查询各科成绩扩展阅读

上述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'

⑧ sql各科名次


各科成绩的表达有两种:

科目 成绩排名 科目成绩排名

  1. 数学 90 1 数学 90 1

  2. 语文 90 1 语文 90 1

  3. 政治 85 3 政治 85 2

#这是第一种的显示
seclet科目,成绩,(
selectcount(成绩)+1
fromtable_namewhere成绩>t.成绩)
fromtable_nameast
orderby成绩desc
#第二中的显示类似可以是加distinct或者是不加distinct而用分组groupby一个意思
seclet科目,成绩,(
selectcount(distinct成绩)
fromtable_namewhere成绩>=t.成绩)
fromtable_nameast
orderby成绩desc