sql遇难,求大神

三个表:图书信息表、读者信息表、借阅表图书信息(书号、书名、作者、出版日期、出版社、图书存放位置、总数量)BOOK(BNO, BN, BAU, BNO, BN,, BPU, BPL, BNU)读者信息表(图书证号、姓名、所在系、借书上限数)READER(RNO, RN, RDE, RUP)借阅表(图书证号、书号、借出日期、应还日期)BORROW(RNO, BNO, BDA, RDA)
1.如果还书过期罚款按0.1元/天计算,统计共要罚款多少元。2.列出图书的书号、书名、出版日期(只要年月日)。3.如果还书过期罚款按16.699元/天计算,统计共要罚款多少元,留2位小数,考虑四舍五入,每三位用逗号相隔。4.列出每月借书情况,显示年月(比如显示“2012-10”)、数量,按年月升序排列。
5.统计每个系借书情况,显示系名、数量,并按数量降序排列。 6.统计借书最多的系情况,显示系名、数量。7.如果还书过期罚款按0.1元/天计算,请列出有过期未还图书的读者的书号、姓名、所在系、应还日期、过期天数、罚款金额,按过期天数降序排序。
8.检索有过期未还图书的读者的图书证号、姓名、书号、书名、所在系
9.检索有过期未还图书的读者的书号、姓名、所在系、应还日期、过期天数,按过期天数降序排序。
10.检索至少有两名借阅的图书信息。

1.
select SUM(还书日期 - 应还日期) * 0.1)
FROM 借阅表
WHERE 还书日期 > 应还日期

2.
SELECT 书号,书名,TRUNC(出版日期)
FROM 图书信息表
3.
select ROUND(SUM(还书日期 - 应还日期) * 16.699),2)
FROM 借阅表
WHERE 还书日期 > 应还日期
4
select to_char(借出日期,'yyyy-mm'),count(*)
from 借阅表
group by to_char(借出日期,'yyyy-mm')
order by to_char(借出日期,'yyyy-mm')
5
select 读.所在系 系名,count(*) 数量
from 读者信息表 读
inner join 借阅表 借
on 读.图书证号 = 借.图书证号
oder by count(*) desc
6
select 读.所在系 系名,max(count(*)) 数量
from 读者信息表 读
inner join 借阅表 借
on 读.图书证号 = 借.图书证号

7.如果还书过期罚款按0.1元/天计算,请列出有过期未还图书的读者的书号、姓名、所在系、应还日期、过期天数、罚款金额,按过期天数降序排序。

select 借.书号,读.姓名,读.所在系,借.应还日期,trunc(sysdate)-借.应还日期 过期天数,(trunc(sysdate)-借.应还日期) * 0.1 罚款金额
from 借阅表 借
inner join 读者信息表 读
on 读.图书证号 = 借.图书证号
where 借.还书日期 is null
order by trunc(sysdate)-借.应还日期 desc追问

大神,还有4个,还有就是能亿用我给的字段吗??看着舒服点

追答

第七个不对重写了

7.如果还书过期罚款按0.1元/天计算,请列出有过期未还图书的读者的书号、姓名、所在系、应还日期、过期天数、罚款金额,按过期天数降序排序。

select 借.书号,读.姓名,读.所在系,借.应还日期,trunc(sysdate)-借.应还日期 过期天数,(trunc(sysdate)-借.应还日期) * 0.1 罚款金额
from 借阅表 借
inner join 读者信息表 读on 读.图书证号 = 借.图书证号
where 借.还书日期 is null
and trunc(sysdate)-借.应还日期 > 0
order by trunc(sysdate)-借.应还日期 desc

8
检索有过期未还图书的读者的图书证号、姓名、书号、书名、所在系
select 读.图书证号,读.姓名,借.书号,图.书名,读.所在系
from 借阅表 借
inner join 读者信息表 读
on 读.图书证号 = 借.图书证号
inner join 图书信息表 图
on 图.书号= 借.书号
where 借.还书日期 is null
and trunc(sysdate)-借.应还日期 > 0
order by trunc(sysdate)-借.应还日期 desc

9.检索有过期未还图书的读者的书号、姓名、所在系、应还日期、过期天数,按过期天数降序排序。
select 借.书号,读.姓名,读.所在系,借.应还日期,trunc(sysdate)-借.应还日期 过期天数from 借阅表 借inner join 读者信息表 读on 读.图书证号 = 借.图书证号where 借.还书日期 is null
and trunc(sysdate)-借.应还日期 > 0
order by trunc(sysdate)-借.应还日期 desc

10.检索至少有两名借阅的图书信息。
select 图.*
from 图书信息表 图
inner join 借阅表 借
on 图.书号= 借.书号
group by 图.书号
having count(*) > 1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-03
分值太少了追问

要多少??

第2个回答  2014-01-03

我这里有个十分详细的答案,虽然已经采纳,但是还是希望能够帮到你。

相似回答