sql 语句练习与答案

 更新时间:2013年06月02日 12:44:30   作者:  
一些对初学者非常有用的练习,及练习的答案。希望可以给初学者一些帮助
1学生表student

S#学号,sname姓名,difdate日期,班级grade

2课程表 course

c#课程号 ,名字cname

3成绩单score

s#学号 c#课程号 成绩score


--1统计每个班级有多少人
select grade,count(sname) from ze_student group by grade;

--2、2007级的各学生的平均成绩 没有成绩的为0;
select a.sname,(select avg(nvl(b.score,0)) from ze_score b where b.s#=a.s#) from ze_student a where grade=2007;

--3 每科 平均成绩和最高成绩 最低成绩 2007级 保留2位小数点 四舍五入
select b.c#,avg(b.score),max(b.score),min(nvl(b.score,0)) from ze_student a,ze_score b where b.s# = a.s# and a.grade =2007 group by b.c#;

--4 给2007级 数学加5分
update ze_score
set score=nvl(score,0)+5
where s# in (select s# from ze_student where grade=2007) and c# =(select c# from ze_course where cname='数学');

--5 90分以上的为优秀 90到85为良好,60分 不及格 各人平均成绩
select s#, c,
case
when c>=90 then '优秀'
when c<90 and c>=60 then '及格'
else '不及格' end as jige
from (select s#,avg(nvl(score,0)) as c from ze_score group by s# ) order by jige desc;


--6 求同月出生的 人数
select to_char(difdate,'mm') as 月份,count(s#) as 出生人数 from ze_student group by to_char(difdate,'mm');

--7 各科的及格率和平均成绩 截取 保留2位
--及格率
select c#,avg(nvl(score,0))as 平均成绩,sum(nvl(score,0))as 总成绩, count(s#) as 各科人数,
trunc(sum(
case when nvl(score,0)>60 then '1'
else '0' end)/count(s#),2) as 及格率
from ze_score group by c#;

--每人的及格率
select s#, avg(nvl(score,0))as 平均成绩,sum(nvl(score,0))as 总成绩, count(c#) as 总科目,
sum(
case when nvl(score,0)>60 then 1
else 0 end
)/count(c#) as 及格率
from ze_score group by s#;


--8删除 姓名是张三 的大学语文 成绩
select * from ze_score where s# in (select s# from ze_student where sname in '张三') and c#=(select c# from ze_course where cname ='大学语文');

--9 将数学替换成高等数学
update ze_course set cname='高等数学'where cname like '%数学%';

--10 格式化 ,显示 将学号修改成S开头 不足12位补0;
--查询
select concat('S',lpad(s#,11,0)) as s# from ze_score ;
select concat('S',lpad(s#,11,0)) as s# from ze_student ;

--格式化
update ze_score set s#= concat('S',lpad(s#,9,0));
update ze_student set s#= concat('S',lpad(s#,9,0));

四个足球队

select a.name,b.name from qiu a,qiu b where a.name<b.name;

commit
rollback
服务器类型
服务器协议
全局数据库名称
服务器IP地址
服务器端口号
用户名和密码

相关文章

  • 将Reporting services的RDL文件拷贝到另外一台机器时报Data at the root level is invalid的解决方法

    将Reporting services的RDL文件拷贝到另外一台机器时报Data at the root level i

    在本机开发了一个Reporting后拷贝到服务器,然后在Sql Server Business Intelligence Development Studio中添加再打开后会报Data at the root level is invalid.错误
    2012-06-06
  • SQL Server存储过程入门学习

    SQL Server存储过程入门学习

    存储过程(Stored Procedure),是一组为了完成特定功能的SQL 语句,集经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数,如果该存储过程带有参数来执行
    2013-08-08
  • sqlserver中的事务和锁详细解析

    sqlserver中的事务和锁详细解析

    下面小编就为大家介绍一下事务和锁,这大概是数据库中比较难理解的东西了
    2013-10-10
  • select * from sp_who的解决方案

    select * from sp_who的解决方案

    sql server中提供很多有用的系统存储过程,但是我们都知道,存储过程的结果集是不能用select来过滤的,也就是说select * from sp_who where [dbname] = 'xxx';这样的语句是执行不过。下面介绍两种方法来解决这个问题
    2009-04-04
  • SQL Server使用T-SQL进阶之公用表表达式(CTE)

    SQL Server使用T-SQL进阶之公用表表达式(CTE)

    这篇文章介绍了SQL Server中T-SQL的公用表表达式(CTE),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • SQLServer数据库的各种管理方法

    SQLServer数据库的各种管理方法

    这篇文章主要介绍了SQLServer数据库的各种管理方法,需要的朋友可以参考下
    2015-10-10
  • SQL判断语句用法和多表查询

    SQL判断语句用法和多表查询

    这篇文章主要介绍了SQL判断语句用法和多表查询的相关资料,需要的朋友可以参考下
    2016-12-12
  • SQL Server 交叉表查询 case

    SQL Server 交叉表查询 case

    今天下午忙于将access数据库中的交叉表转到SQL server数据库中,在SQL server中,不支持transfrom方法,查找相关资料,找到使用case方法进行转换
    2011-12-12
  • SQLServer2019安装教程图文详解

    SQLServer2019安装教程图文详解

    这篇文章主要介绍了SQLServer2019安装教程图文详解,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Row_number()函数用法小结

    Row_number()函数用法小结

    Row_number()函数是SQL SERVER系统函数中的一种,本文主要介绍了Row_number()函数用法小结,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-05-05

最新评论