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

作者&投稿:暨查 (若有异议请与网页底部的电邮联系)
用sql如何查出各科成绩低于各科平均分的学生,并显示低于平均分的科目和成绩,学生姓名?~

select 学号,姓名,英语,'' AS 'JSP','' AS 'CPP','' AS 'Java','' AS 'Access'from 表名where 英语<(select avg(英语) from 表名)union select 学号,姓名,'' as '英语',JSP,'' AS 'CPP','' AS 'Java','' AS 'Access'from 表名where JSP<(select avg(JSP) from 表名)union select 学号,姓名,'' as '英语','' as 'JSP',CPP,'' AS 'Java','' AS 'Access'from 表名where CPP<(select avg(CPP) from 表名)union select 学号,姓名,'' as '英语','' as 'JSP','' as 'CPP',Java,'' AS 'Access'from 表名where Java<(select avg(Java) from 表名)union select 学号,姓名,'' as '英语','' as 'JSP','' as 'CPP','' AS 'Java',Accessfrom 表名where Access<(select avg(Access) from 表名) 这表设计的。。。还不如在Excel里面做呢。。。

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

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 行受影响)

select 学生号,姓名 from (
select a.学生号,a.课程号,b.姓名,a.成绩 from 成绩表 a,学生表 b,课程表 c
where a.学生号=b.学生号 and a.课程号=c.课程号
and EXISTS
(select * from 成绩表
where 学生号=a.学生号
and 课程号=a.课程号
and 成绩>(select avg(成绩) from 成绩表 where 课程号=a.课程号
)
)
) t
group by 学生号,姓名
having count(*)=(select count(*) from 成绩表 where 学生号=t.学生号)

select 学生号,姓名 from 学生表 as a,课程表 as b,成绩表 as c
where a.学生号= c.学生号 and b.课程号=c.课程号 and c。成绩>= (select avg(成绩) from 成绩表)

不知道看的懂不? 没试,不过应该可以。


新市区18260336729: SQLServer里面求各科成绩的中分数 -
于侮显克: select * from 成绩表 where (语文成绩+外语成绩+数学成绩)>=500 and (语文成绩+外语成绩+数学成绩)<=550

新市区18260336729: 试写一个SQL语句,查询出各科成绩最高分的同学(包括学生号,科目与成绩) -
于侮显克: select top 10 学生号列,成绩列,科目列 from 表where 科目列=科目 order by id desc,成绩 desc某个科目的前面最高分的10位同学以此类推.....

新市区18260336729: 创建SQL查询,用SELECT语句为"成绩"表各科成绩做一个A,B,C的等级评分 -
于侮显克: SELECT 学号,成绩,CASE WHEN 成绩>=90 THEN 'A' WHEN 成绩>=60 THEN 'B' ELSE 'C' END FROM 成绩表

新市区18260336729: sqlserver用什么语句可以在一张表中显示各科成绩和总分 -
于侮显克: select 总分 = 各科成绩之和 from table group by 姓名 试试吧 不行的话 说一声哈

新市区18260336729: 数据库检索SQL语句题目求 解答 -
于侮显克: 1 select 图书编号,书名,定价 from 图书 where 出版社编号='cs' 2 select a.书名,a.定价,b.出版社名称 from 图书 a,出版社 b where a.图书分类='教材' and a.出版社编号=b. 出版社编号 3 select 出版社编号,count(书名),avg(定价) from 图书 group by 出版社编号 4 select a.书名,a.图书编号 from 图书 a,出版社 b where a.图书分类='教材' and a.出版社编号=b. 出版社编号 and b.出版社名称='高等教育出版社'

新市区18260336729: sql简单查询语句 -
于侮显克: ......为点分真不容易 1 select * from StuInfo 2 select 考号,姓名,语文,数学,英语 from StuMarks 3 select s1.考号,s1.姓名,s1.性别,s2.计算机基础,s2.SQL数据库from StuInfo s1left join StuMarks s2 on s1.学号=s2.学号where 专业名!='...

新市区18260336729: sql数据库中检索数据 -
于侮显克: 这个可能复杂点,我有一个方案,首先做一个自定义方法,然后进行查询-----自定义方法------ CREATE FUNCTION SplitStr (@splitString varchar(8000), @separate varchar(10))RETURNS @returnTable table(col_Value varchar(20))ASBEGIN...

新市区18260336729: 数据库 - --------SQL语言 查找 -
于侮显克: --选课总人数大于3的课程 select c.cno,c.cname,count(*) 选课总人数 from sc left join course c on sc.cno=c.cno group by c.cno,cname having count(*)>3 order by 选课总人数 --所有课程选课总人数 select c.cno,c.cname,count(*) 选课总人数 ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网