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 )