日期:2014-05-17  浏览次数:20613 次

简单查询,送分的,来人指教小弟
CARD借书卡:(CNO 卡号、NAME  姓名、CLASS 班级)
BOOKS图书:(BNO 书号、BNAME 书名、AUTHOR 作者、PRICE 单价、QUANTITY 库存册数)
BORROW借书记录:(CNO 借书卡号、BNO 书号、RDATE 还书日期)

查询借书最多同学班上所有同学的借书总量

------解决方案--------------------
select sum(bno)
from (
select  top 1 count(bno)bno
from BORROW a left join card b on a.cno=b.cno
group by class
order by bno desc
)a

------解决方案--------------------
引用:
CARD借书卡:(CNO 卡号、NAME  姓名、CLASS 班级)
BOOKS图书:(BNO 书号、BNAME 书名、AUTHOR 作者、PRICE 单价、QUANTITY 库存册数)
BORROW借书记录:(CNO 借书卡号、BNO 书号、RDATE 还书日期)

查询借书最多同学班上所有同学的借书总量


是借书最多的那个同学,他所在的班上的总的借书量吗
------解决方案--------------------
本来想过来接分呢,还是来晚了。那我就写个借书人最多的班级的借书数量。
select count(*) from books b,borrow c,card d,
(select top 1 class,count(distinct name) as num from card a,borrow b where a.cno=b.cno group by class order by num desc ) a 
where a.class=d.class and d.cno=c.cno and c.bno=b.bno
------解决方案--------------------
借书最多的同学,所在班级的总的借书量:



select top 1 class,
             class_borrow_num
from
(
select c.class,
       c.cno,
       b.bno,
       sum(bno) over(partition by class) as class_borrow_num,
       count(bno) over(partition by cno) as borrow_num
from borrow b
inner join card c
        on t.cno = c.cno
)t
order by borrow_num desc

------解决方案--------------------
select sum(bno)
 from (
 select  top 1 count(bno)bno
 from BORROW a left join card b on a.cno=b.cno
 group by class
 order by bno desc
 )a

------解决方案--------------------
不是吧,bno是书号,怎么能对它用 sum() 呢,是count() 吧。
我也来一个,有点复杂:
select count(*)
from card a inner join borrow b on a.cno = b.cno
where a.class = (select top 1 c.class 
                 from card c inner join borrow d on c.cno = d.cno
                 group by c.class
 &n