sql中sql查询列名所在表学生张三所在班级的所有学生的姓名和年龄 语句怎么写?

sql 语句拼接问题:比如班级表中有多个学生,如何查询班级表信息,而把学生名字显示在一个列里面。_百度知道
sql 语句拼接问题:比如班级表中有多个学生,如何查询班级表信息,而把学生名字显示在一个列里面。
CalssName,stuName from Class a join Stu b on a.ClassId=b.ClassId
问: 如何把所有的stuName都列在这里
我有更好的答案
SELECT CalssName, listagg(stuName ,',') within group(order by CalssName)
stuName from Class a join Stu b on a.ClassId=b.ClassId
group by ClassId,CalssName具体自己再调下
SELECT&*&FROM&STUNAME&A&LEFT&JOIN&CLASSNAME&B&ON&A.CLASSID&=&B.CLASSID
将所有stuName显示在一行。这样显然不对
你是想XX班 &人员这样?SELECT&classid,(SELECT&GROUP_CONCAT(stuName)&as&AllStuN&FROM&stu&WHERE&ClassId&=&class.ClassId)&FROM&
SELECT&CalssName,STUFF((SELECT&','+stuName&FROM&Stu&WHERE&ClassId=Class.ClassId&FOR&XML&PATH('')),1,1,'')&&&FROM&Class
表示没看懂, xml这是什么
以xml格式显示结果,路径分隔符为','
在sql里显示,就是有一个学生名的显示列,这里面显示班里的所有学生.eg:
如果要以空格分隔,语句可以这样改:SELECT&CalssName,STUFF((SELECT&'&'+stuName&FROM&Stu&WHERE&ClassId=Class.ClassId&FOR&XML&PATH('')),1,1,'')&&&FROM&Class
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请教:如何用一条SQL语句查询出每个班前10名学生数据?
[问题点数:40分,结帖人newqm]
请教:如何用一条SQL语句查询出每个班前10名学生数据?
[问题点数:40分,结帖人newqm]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年1月 其他数据库开发大版内专家分月排行榜第二2014年12月 其他数据库开发大版内专家分月排行榜第二2014年11月 其他数据库开发大版内专家分月排行榜第二2014年5月 其他数据库开发大版内专家分月排行榜第二
2014年3月 其他数据库开发大版内专家分月排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|查询基础练习
&学生信息表&:students(学号,姓名,性别,出生年,省份,入学年份,班级)
&学生选修信息表&:stucourses(学号,课程号,课程名称,分数)
一、单表查询
1、查询&学生信息表&,查询学生张三的全部基本信息
2、查询&学生信息表&,查询学生张三和李四的基本信息
3、查询&学生信息表&,查询姓张学生的基本信息
4、查询&学生信息表&,查询姓名中含有四字的学生的基本信息
5、查询&学生信息表&,查询姓名长度为三个字,姓李,且最后一个字是强的全部学生信息
6、查询&学生信息表&,查询姓张或者姓李的学生的基本信息
7、查询&学生信息表&,查询姓张并且所属省份是北京的学生信息
8、查询&学生信息表&,查询所属省份是北京、新疆、山东或者上海的学生的信息
9、查询&学生信息表&,查询姓张,但是所属省份不是北京的学生信息
10、查询&学生信息表&,查询全部学生信息,并按照性别排序,性别相同的情况下按照所属省份排序,所属省份相同的情况下再按照班级排序(多列排序)
11、查询&学生信息表&,查询现有学生都来自于哪些不同的省份
12、查询&学生选修信息表&,查询没有填写成绩的学生的学号、课程号和成绩
13、查询&学生选修信息表&,查询全部填写了成绩的学生的选修信息,并按照成绩从高到低进行排序
二、聚合函数
1、统计&学生信息表&,统计共有多少个学生
2、统计&学生信息表&,统计年龄大于20岁的学生有多少个
3、统计&学生信息表&,统计入学时间在1980年至1982年的学生人数
4、统计&学生选修信息表&,统计学号为s001的学生的平均成绩
5、统计&学生选修信息表&,统计学号为s001的学生的总成绩
6、统计&学生选修信息表&,查询课程号为C001的课程的最高成绩
7、统计&学生信息表&,查询所有学生中的最大年龄是多少
三、分组查询
1、统计&学生选修信息表&,统计每个课程的选修人数
2、统计&学生选修信息表&,统计每个同学的总成绩
3、统计&学生信息表&,统计每个班级中每种性别的学生人数,并按照班级排序
4、统计&学生选修信息表&,统计每门课程的平均成绩,并按照成绩降序排序
5、统计&学生选修信息表&,显示有两门以上课程不及格的学生的学号
6、统计&学生信息表&,统计每个班级中的最大年龄是多少
四、嵌套查询
1、用子查询实现,查询选修高等数学课的全部学生的总成绩
2、用子查询实现,统计&学生选修信息表&,显示学号为s001的学生在其各科成绩中,最高分成绩所对应的课程号和成绩(思考:如果该学号学生有两个课程分数都为最高的100分,查询会有什么结果)
3、用子查询实现,查询2班选修数据库技术课的所有学生的成绩之和
4、用子查询实现,查询3班张三同学的测试管理成绩
五、联接查询
1、查询张三的各科考试成绩,要求显示姓名、课程号和成绩
2、查询张三的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩
3、查询3班张三的测试管理成绩,要求显示姓名、成绩
4、查询所有2000年以前入学的,各班男生的各科考试平均成绩
一、单表查询
-----1、查询&学生信息表&,查询学生张三的全部基本信息
select * from students where 姓名 = '张三';
-----2、查询&学生信息表&,查询学生张三和李四的基本信息
select * from students where 姓名 = '张三' or 姓名 = '李四';
-----3、查询&学生信息表&,查询姓张学生的基本信息
select * from students where 姓名 like '张%';
-----4、查询&学生信息表&,查询姓名中含有四字的学生的基本信息
select * from students where 姓名 like '%四%';
-----5、查询&学生信息表&,查询姓名长度为三个字,姓李,且最后一个字是强的全部学生信息
select * from students where 姓名 like '李_强%';
-----6、查询&学生信息表&,查询姓张或者姓李的学生的基本信息
select * from students where 姓名 like '张%' or 姓名 like '李%';
-----7、查询&学生信息表&,查询姓张并且所属省份是北京的学生信息
select * from students where 姓名 like '张%'and 省份 = '北京';
-----8、查询&学生信息表&,查询所属省份是北京、新疆、山东或者上海的学生的信息
select * from students where 省份 in ('北京','新疆','山东','上海');
-----9、查询&学生信息表&,查询姓张,但是所属省份不是北京的学生信息
select * from students where 姓名 like'张%' and 省份 != '北京';
--表示不等于也可以使用&&
-----10、查询&学生信息表&,查询全部学生信息,并按照性别排序,性别相同的情况下按照所属省份排序,所属省份相同的情况下再按照班级排序(多列排序)
select * from students order by 性别,省份,班级;
-----11、查询&学生信息表&,查询现有学生都来自于哪些不同的省份
select distinct 省份 from
-----12、查询&学生选修信息表&,查询没有填写成绩的学生的学号、课程号和成绩
select * from stucourses where 成绩 is null;
-----13、查询&学生选修信息表&,查询全部填写了成绩的学生的选修信息,并按照成绩从高到低进行排序
select * from stucourses where 成绩 is not null order by 成绩 desc;
二、聚合函数
-----1、统计&学生信息表&,统计共有多少个学生
select count(*) as 学生数 from
-----2、统计&学生信息表&,统计年龄大于20岁的学生有多少个
select count(*) as 个数 from students where 出生年 & '1900';
-----3、统计&学生信息表&,统计入学时间在1980年至1982年的学生人数
select count(*) as 人数 from students where 入学年份 between '1980' and '1982';
-----4、统计&学生选修信息表&,统计学号为s001的学生的平均成绩
select avg(成绩) as s001的平均成绩 from stucourses where 学号 = 's001';
-----5、统计&学生选修信息表&,统计学号为s001的学生的总成绩
select sun(成绩) as s001的总成绩 from stucourses where 学号 = 's001';
-----6、统计&学生选修信息表&,查询课程号为C001的课程的最高成绩
select max(成绩) as C001的最高成绩 from
stucourses where 课程号 = 'C001';
-----7、统计&学生信息表&,查询所有学生中的最大年龄是多少
select min(出生年) as 最大年龄的出生年 from
三、分组查询
-----1、统计&学生选修信息表&,统计每个课程的选修人数
select 课程号,count(学号) from stucourses group by 课程号;
-----2、统计&学生选修信息表&,统计每个同学的总成绩
select 学号,sum(分数) from stucourses group by 学号;
-----3、统计&学生信息表&,统计每个班级中每种性别的学生人数,并按照班级排序
select 班级,性别,count(学号) from students group by 班级,性别 order by 班级;
-----4、统计&学生选修信息表&,统计每门课程的平均成绩,并按照成绩降序排序
select 课程号,avg(分数) from stucourses group by 课程号 order by 分数 desc;
-----5、统计&学生选修信息表&,显示有两门以上课程不及格的学生的学号
select 学号 from stucourses group by 学号
-----6、统计&学生信息表&,统计每个班级中的最大年龄是多少
select 班级,max(年龄) from students group by 班级;
四、嵌套查询
-----1、用子查询实现,查询选修高等数学课的全部学生的总成绩
select sum(分数) from stucourses where 课程名称 = '高等数学';
-----2、用子查询实现,统计&学生选修信息表&,显示学号为s001的学生在其各科成绩中,最高分成绩所对应的课程号和成绩(思考:如果该学号学生有两个课程分数都为最高的100分,查询会有什么结果)
select 课程号,max(分数) from stucourses where 学号 = 's001';
-----3、用子查询实现,查询2班选修数据库技术课的所有学生的成绩之和
[=some/in]
select sum(分数) from stucourses where 课程名称 = '数据库技术'and 学号 = any(select 学号 from students where 班级 = '2班' );
-----4、用子查询实现,查询3班张三同学的测试管理成绩
select 分数 from stucourses where 课程名称 = '测试管理' and 学号 =
(select 学号 from students where 班级 = '3班'and
姓名 = '张三');
五、联接查询
-----1、查询张三的各科考试成绩,要求显示姓名、课程号和成绩
select st.姓名,sc.课程号,sc.分数
from students st,stucourses sc
where st.学号 = sc.学号 and st.姓名 = '张三';
-----2、查询张三的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩
select st.姓名,sc.课程号,sc.分数
from students st,stucourses sc
where st.学号 = sc.学号 and st.姓名 = '张三' and sc.分数 is null;
-----3、查询3班张三的测试管理成绩,要求显示姓名、成绩
select st.姓名,sc.分数
from student st,stucourses sc
where st.学号 = sc.学号 and sc.课程名称 = '测试管理'
and st.姓名 = '张三' and st.班级 = '3班';
-----4、查询所有2000年以前入学的,各班男生的各科考试平均成绩
select st.班级,sc.课程名称,avg(分数)
from students st,stucourses sc
where st.学号 = sc.学号 and st.性别 = '男' and st.入学年份 &'2000'
group by st.班级,sc.课程名称;
&职工表&:employee(id,name,department,job,email,password)
&培训表&:train(courseid,id,course,grade)
1、统计出各部门的人数和各部门姓李的人数,用一条SQL语句完成
2、列出所有员工参加培训的情况,要求显示ID、Name、Department、Course,用一条SQL语句完成
3、筛选出未参加培训的人员名单,按职工表的格式显示,用一条SQL语句完成
4、列出所有各课成绩最高的员工信息,要求显示ID、Name、Department、Course、Grade,用一条SQL语句完成
5、统计列印各门课程成绩各分数段人数:课程ID,课程名称,[100-85],[84-70],[69-60],[&60]
6、按各科不及格率的百分数从低到高和平均成绩从高到低顺序,统计并列印各科平均成绩和不及格率的百分数: (用于分析哪门课程难) 课程ID,课程名称,平均成绩,不及格百分数
-----1、统计出各部门的人数和各部门姓李的人数,用一条SQL语句完成
select count(name),
sum(case when substrb(e.name,1,2) = '李'
then 1 else 0 end)
from employee e
select v1.d1,v1.c1,v2.c2
(select department d1,count(id) c1
from employee
group by department) v1
left outer join
(select department d2,count(id) c2
from employee
where name like '李%'
group by department) v2
on v1.d1 = v2.d2;
-----2、列出所有员工参加培训的情况,要求显示ID、Name、Department、Course,用一条SQL语句完成
select e.id,e.name,e.department,t.course
from employee e,train t
where e.id = t.id(+);
select e.id,e.name,e.department,t.course
from employee e left outer join train t
on e.id = t.
-----3、筛选出未参加培训的人员名单,按职工表的格式显示,用一条SQL语句完成
select * from employee
not in(select id from train);
-----4、列出所有各课成绩最高的员工信息,要求显示ID、Name、Department、Course、Grade,用一条SQL语句完成
select e.id,e.name,e.department,t.course,max(grade)
from employee e,train t
where e.id = t.id
and t.grade in (select max(grade) from train group by course);
group by t.
t.course, e.id, e.name, e.department, t.grade
from employee e, (select course,max(grade) m from train group by course) h,train t
where e.id =t.id and (t.course = h.course and t.grade = h.m);
-----5、统计列印各门课程成绩各分数段人数:课程ID,课程名称,[100-85],[84-70],[69-60],[&60]
-----方法一:
select distinct t0.courseid 课程ID,t0.course 课程,nvl(t1.c,0) 100-85的人数,nvl(t2.c,0) 84-70的人数,nvl(t3.c,0) 69-60的人数,nvl(t4.c,0) &60的人数
(select courseid,course,count(id) c from train where grade between 85 and 100 group by course,courseid) t1,
(select courseid,course,count(id) c from train where grade between 70 and 84 group by course,courseid) t2,
(select courseid,course,count(id) c from train where grade between 60 and 69 group by course,courseid) t3,
(select courseid,course,count(id) c from train where grade & 60 group by course,courseid) t4
where t0.courseid = t1.courseid(+)
and t0.courseid = t2.courseid(+)
and t0.courseid = t3.courseid(+)
and t0.courseid = t4.courseid(+);
-----方法二:
select courseid 课程ID,course 课程名称,
sum(case when grade&=85 and grade &= 100 then 1 else 0 end) 100-85,
sum(case when grade&=70 and grade &= 84 then 1 else 0 end) 84-70,
sum(case when grade&=60 and grade &= 69 then 1 else 0 end) 69-60,
sum(case when grade&=60 then 1 else 0 end) &60
from train
group by courseid,
-----方法三:
select courseid 课程ID,course 课程名称,
count(case when grade&=85 and grade &= 100 then 1 else null end) 100-85,
count(case when grade&=70 and grade &= 84 then 1 else null end) 84-70,
count(case when grade&=60 and grade &= 69 then 1 else null end) 69-60,
count(case when grade&=60 then 1 else null end) &60
from train
group by courseid,
-----方法四:
select distinct courseid,course,
(select count(courseid) from train where grade &= 85 and grade &= 100 and courseid = t.courseid) as 100-85,
(select count(courseid) from train where grade &= 70 and grade &= 84 and courseid = t.courseid) as 84-70,
(select count(courseid) from train where grade &= 60 and grade &= 69 and courseid = t.courseid) as 69-60,
(select count(courseid) from train where
grade & 60 and courseid = t.courseid) as &60
from train t
group by courseid,course order by
-----6、按各科不及格率的百分数从低到高和平均成绩从高到低顺序,统计并列印各科平均成绩和不及格率的百分数: (用于分析哪门课程难) 课程ID,课程名称,平均成绩,不及格百分数
select t1.courseid 课程ID,t1.course 课程名称,t1.a 平均成绩,t2.b/t3.c 不及格率
(select courseid,course,avg(grade) a
from train
group by courseid,course) t1,
(select courseid,course,count(grade) b
from train
where grade & 60
group by courseid,course) t2,
(select courseid,course,count(courseid) c
from train
group by courseid,course) t3
where t1.courseid = t2.courseid and t2.courseid = t3.courseid
order by t2.b/t3.c,t1.a desc;
阅读(...) 评论() 上传我的文档
 下载
 收藏
粉丝量:33
该文档贡献者很忙,什么也没留下。
 下载此文档
[计算机]数据库阶段测试
下载积分:500
内容提示:[计算机]数据库阶段测试
文档格式:PDF|
浏览次数:1|
上传日期: 07:43:50|
文档星级:
全文阅读已结束,如果下载本文需要使用
 500 积分
下载此文档
该用户还上传了这些文档
[计算机]数据库阶段测试
关注微信公众号关注51Testing
软件测试面试时遇到的数据库问题
发表于: 09:25 &作者:鲁德 & 来源:陌上
推荐标签:
  1.数据库中有如下两个表:  表1:employee  员工编号:employee_id (NOT allows null)  员工姓名:employee_name (NOT allows null)  年 龄 :age,  雇用日期:hire_date,  部门:department& &  表2:salary  员工编号:employee_id  员工工资:salary& &  (1)计算2015年以后雇佣的员工个数& &  关于日期函数:  year(date)返回日期中的年份;  month(date)返回日期中的月份;  day(date)返回日期中的天;  (2)工资大于9000的员工编号、姓名和工资& &&  (3)计算各个部门的员工个数,表头显示为:部门、员工个数& &&  (4)按工资的高低列出工资表  正序:& &  倒序:& &  (5)个人操作中用到的一些sql语句  删除表中的一个字段:& &  新增字段salary:& &  2.数据库查询 对下面两张表进行查询操作:  学生信息表student:& &  班级信息表class:& &  (1)目前要查询班主任LiFang的班级下全体学生的信息情况。 要求:用两种不同的sql查询语句(连接查询和嵌套查询),并说明两种sql语句的执行效率哪个更高以及原因。  a.连接查询& &  b.嵌套查询& &  (2)用一句sql语句统计上题中student表中高一,1 高一,2各自班级中总分最高的分数&&  (3)操作中遇到的一些问题  插入数据的时候报了下面的错误:&&  该错误是由于输入了中文,Class_ID 的属性为char(255),不能接收中文,修改字段的属性为下面即可:&&  修改某个字段的内容(把Li XiaoTing的Student_ID号改为2)&&上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-7),我们将立即处理。
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道

我要回帖

更多关于 sql 最大值所在行 的文章

 

随机推荐