当前位置:首页 » 编程语言 » sql查询出大于平均分的学号
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql查询出大于平均分的学号

发布时间: 2022-07-18 23:30:49

A. sql语句 查找一个班级最高平均分学生的学号

----试试看看
with class_avg as
(select 班级号,学号,avg(分数)as 平均分 from 学生表 A,成绩表 B where A.学号=B.学号 group by 班级,学号)
max_avg as
(select 班级号,max(平均分)from class_avg group by 班级号)
sel_max_avg as
(select 学号 from class_avg C,max_avg D where C.班级号=D.班级号 and C.平均分=D.平均分)

B. 用sql查询最高平均成绩的学生学号 应该怎么写

就是一下思路,第一条就是最高的,最后一条就是最低的,COUNT(1),就是统计学生的成绩次数
select * from
(select sum(学生成绩)/count(1) as 平均成绩,学生学号 from 学生成绩表
group by 学生学号) order by 平均成绩 DESC

C. SQL语句查询每门课程分数都比该门课程平均分数高的学生 学号,姓名,性别,系编号)(表见问题补充)

那么你需要和每门功课平均分做对比啊!求出每门功课的平均分,再去对比,需要用到逻辑函数。

D. 求解: sql 数据库 检索各科成绩均大于等于该科平均成绩的学生的学号和姓名

CREATE TABLE #学生表(
学生号 INT,
姓名 VARCHAR(10),
性别 VARCHAR(2),
年龄 INT
);

CREATE TABLE #课程表 (
课程号 INT,
课程名 VARCHAR(10)
);

CREATE TABLE #成绩表(
学生号 INT,
课程号 INT,
成绩 INT
);

INSERT INTO #学生表
SELECT 1, '张三', '男', 16 UNION ALL
SELECT 2, '李四', '男', 17 UNION ALL
SELECT 3, '王五', '女', 16 UNION ALL
SELECT 4, '赵六', '女', 17 UNION ALL
SELECT 5, '田七', '女', 18
;

INSERT INTO #课程表
SELECT 1, '语文' UNION ALL
SELECT 2, '数学' UNION ALL
SELECT 3, '外语'
;

-- 张三全部 超过平均。
-- 李四全部 低于平均。
-- 王五 赵六 部分高于,部分低于
-- 田七 少考一门,其它超过平均
INSERT INTO #成绩表
SELECT 1, 1, 85 UNION ALL
SELECT 1, 2, 85 UNION ALL
SELECT 1, 3, 85 UNION ALL
SELECT 2, 1, 75 UNION ALL
SELECT 2, 2, 75 UNION ALL
SELECT 2, 3, 75 UNION ALL
SELECT 3, 1, 85 UNION ALL
SELECT 3, 2, 75 UNION ALL
SELECT 3, 3, 85 UNION ALL
SELECT 4, 1, 75 UNION ALL
SELECT 4, 2, 85 UNION ALL
SELECT 4, 3, 75 UNION ALL
SELECT 5, 1, 83 UNION ALL
SELECT 5, 2, 83
;

SELECT
#学生表.学生号,
#学生表.姓名
FROM
#学生表
WHERE
NOT EXISTS(
SELECT
1
FROM
(
SELECT
课程号,
AVG(成绩) AS 平均成绩
FROM
#成绩表 a
GROUP BY
课程号
) AS 平均成绩表
LEFT JOIN #成绩表
ON (平均成绩表.课程号 = #成绩表.课程号
AND 平均成绩表.平均成绩 < #成绩表.成绩
AND #成绩表.学生号 = #学生表.学生号)
WHERE
学生号 IS NULL
);

学生号 姓名
----------- ----------
1 张三

(1 行受影响)

E. 用SQL语言找出每个学生超过他自己平均成绩的学号和课

SELECT dbo.student.id, dbo.student.name, dbo.student.age, dbo.student.class, dbo.curriculum.id AS Expr1, dbo.curriculum.name AS Expr2, dbo.curriculum.Firstclass,
dbo.Elective.score, Table1.avgscore
FROM dbo.student LEFT OUTER JOIN
dbo.Elective ON dbo.student.id = dbo.Elective.id LEFT OUTER JOIN
dbo.curriculum ON dbo.Elective.curriculumid = dbo.curriculum.id RIGHT OUTER JOIN
(SELECT id, AVG(score) AS avgscore
FROM dbo.Elective AS Elective_1
GROUP BY id) AS Table1 ON Table1.id = dbo.student.id AND dbo.Elective.score >= Table1.avgscore

F. sql查询选修课同学成绩大于该课程平均成绩 的同学的学号姓名 以及该课程成绩

SELECT stuID,Grade
FROM sc
WHERE Grade >ALL(
SELECT AVG(Grade)
FROM sc
)

G. 用SQL查询平均成绩高于90分的同学的学号、姓名及其平均成绩,并按成绩由高到低排序

select 学号,姓名,avg(成绩) as '平均成绩' from 学生成绩表 HAVING avg(成绩) > 90 order by avg(成绩) desc

H. SQL如何查找个人平均分大于班级平均分的学生的学号姓名

select 姓名,avg(分数) from tbgroup by 姓名having avg(分数)>(select avg(分数) from tb )