数据库实战完全笔记综合练习(1)授课信息查询
2015-04-21 13:35
495 查看
此实例在Oracle10g运行通过:
一、题目要求
教师的授课信息存放在SCHEDULE表中 :
--------------------------------
TEACHERID WEEKDAY HASCOURSE
---------- ---------- ----------
1 2 1
1 3 1
2 1 1
3 2 1
1 2 1
--------------------------------
-----------------------------------------------------------------
设计查询,输出如下信息(星期下数表示:对应教师星期几排的课数):
TEACHERID MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY
---------- ---------- ---------- ---------- ---------- ----------
1 0 2 1 0 0
2 1 0 0 0 0
3 0 1 0 0 0
-----------------------------------------------------------------
二、分析解答
1.建表语句
2.查询语句
第一步,得到如下结果:
TEACHERID MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY
--------- ---------- ---------- ---------- ---------- ----------
1 0 1 0 0 0
1 0 0 1 0 0
2 1 0 0 0 0
3 0 1 0 0 0
1 0 1 0 0 0
查询语句为:
查询结果如下图:
一、题目要求
教师的授课信息存放在SCHEDULE表中 :
--------------------------------
TEACHERID WEEKDAY HASCOURSE
---------- ---------- ----------
1 2 1
1 3 1
2 1 1
3 2 1
1 2 1
--------------------------------
-----------------------------------------------------------------
设计查询,输出如下信息(星期下数表示:对应教师星期几排的课数):
TEACHERID MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY
---------- ---------- ---------- ---------- ---------- ----------
1 0 2 1 0 0
2 1 0 0 0 0
3 0 1 0 0 0
-----------------------------------------------------------------
二、分析解答
1.建表语句
create table schedule ( teacherid number(1), weekday number(1), hascourse number(1) ); --插入数据语句 insert into schedule values(1,2,1); insert into schedule values(1,3,1); insert into schedule values(2,1,2); insert into schedule values(3,2,1); insert into schedule values(1,2,1); --提交语句 commit;
2.查询语句
第一步,得到如下结果:
TEACHERID MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY
--------- ---------- ---------- ---------- ---------- ----------
1 0 1 0 0 0
1 0 0 1 0 0
2 1 0 0 0 0
3 0 1 0 0 0
1 0 1 0 0 0
查询语句为:
select teacherid, case when weekday=1 then 1 else 0 end MONDAY, case when weekday=2 then 1 else 0 end TUESDAY, case when weekday=3 then 1 else 0 end WEDNESDAY, case when weekday=4 then 1 else 0 end THURSDAY, case when weekday=5 then 1 else 0 end FRIDAY from SCHEDULE;第二步,将第一步的结果分组求和,得到最终结果:
select teacherid, sum(case when weekday=1 then 1 else 0 end) MONDAY, sum(case when weekday=2 then 1 else 0 end) TUESDAY, sum(case when weekday=3 then 1 else 0 end) WEDNESDAY, sum(case when weekday=4 then 1 else 0 end) THURSDAY, sum(case when weekday=5 then 1 else 0 end) FRIDAY from SCHEDULE group by teacherID;如果数据中含有 null,可以用下面的语句,调用nvl函数,语句如下:
select teacherid, nvl ((SUM(decode(weekday, '1', 1))),0) as MONDAY, nvl ((SUM(decode(weekday, '2', 1))),0) as TUESDAY, nvl ((SUM(decode(weekday, '3', 1))),0) as WEDNESDAY, nvl ((SUM(decode(weekday, '4', 1))),0) as THURSDAY, nvl ((SUM(decode(weekday, '5', 1))),0) as FRIDAY from SCHEDULE group by teacherid;
查询结果如下图:
相关文章推荐
- Oracle笔记(十一) 建表、更新、查询综合练习
- Oracle基础知识笔记(11) 建表、更新、查询综合练习
- Oracle笔记十一: 建表、更新、查询综合练习
- Oracle笔记(十一) 建表、更新、查询综合练习
- android 学习笔记 数据库的创建, 查询 和删除表内的信息
- 【极客学院】-python学习笔记-4-单线程爬虫 (提交表单抓取信息,实战练习)
- 经典SQL学习笔记 (九)-比赛信息数据库练习
- SpringMVC+Spring+MyBatis 的综合练习 9 (增加查询员工信息时带有部门信息)
- 牛客:数据库SQL实战(一)查询入职最晚的员工的所有信息
- 经典SQL学习笔记 (十)-学生信息数据库练习
- 数据库学习笔记和小练习(6)sql查询和更新练习
- Oracle笔记(十一) 建表、更新、查询综合练习
- Oracle笔记(十一) 建表、更新、查询综合练习
- 一条SQL语句查询数据库中所有的信息
- Scala深入浅出实战经典《第87讲:Scala中使用For表达式做查询》笔记
- MSSQL 查询数据库表信息及表字段的详细信息
- MySQL 自学笔记之:数据库查询 DQL(Data Query Lanuage)汇总函数
- 数据库学习笔记和小练习(10)触发器
- SQL Server 学习笔记④ 查询某个数据所在数据库表中的哪个字段上出现过的存储过程
- 百度地图显示标注,标注信息为数据库查询的数据