金山城市沙滩游泳时间:求助关于sql 编程的问题 请高手帮忙

来源:百度文库 编辑:高校问答 时间:2024/04/29 15:00:40
1、使用Transact-SQL语句编写一段程序:找出住在“ca”州的作家人数,
当人数多于5人时:写一条语句查询这些作家所写的书、书的价格、书的销售数
量,然后用print语句输出“这些书的总价钱是:(具体价钱)” ,“这些书的
平均价钱是:(具体价钱)”, “这些书一共有(具体数量)本”。当人数小
于5人时:修改作家居住的州使住在“ca”州的作家人数超过5个,如果成功则
输出住在“ca”州的作家人数是(具体人数);如果不成功判断原因:如果是
语句出错则输出“对不起!”;如果是记录条数不够则增加记录数使这样的记
录数正好为5条。

2、使用Transact-SQL语句编写一段程序:找出不住在“ca”州的作家姓名、
所写书名、出版这些书的出版商姓名,将查询结果放入一个虚拟表中;
如果不出错:
使用游标取出虚拟表中所有记录;;如果出错:用print输出“对不起!”
然后查询住在“ca”州的作家所写书的总数量、总价钱、平均价钱、
每类书的种类数、总价钱、平均价钱,最后用print语句输出它们。
sql自带
的pubs库

第一题
假设表为 作家(tid,州,书名,价格,销售数)

declare @cnt int
declare @sum int
declare @avg int
select @cnt=count(*) from 作家 where 州='ca'
if @cnt>5
begin
select 书名 as 所写的书,价格 as 书的价格,销售数 as 书的销售数量 from 作家 where 州='ca'
select @sum=sum(价格),@avg=avg(价格) from 作家 where 州='ca'
print '这些书的总价钱是:'+convert(varchar(10),@sum)
print '这些书的平均价钱是:'+convert(varchar(10),@avg)
end
else
begin
update 作家 set 州='ca' where 州<>'ca'
if @@error<>0
begin
print '“对不起!”'
end
select @cnt=count(*) from 作家 where 州='ca'
if @cnt<5
begin
while @cnt<5
begin
insert into 作家(州) values('ca')
set @cnt=@cnt+1
end
end
select @cnt=count(*) from 作家 where 州='ca'
print '住在“ca”州的作家人数是:'+convert(varchar(10),@cnt)
end
go

第二题
假设表为 作家(tid,州,书名,价格,销售数,出版商,种类,姓名)

set nocount on
select * into #tmp from 作家 where 州<>'ca'
if @@error=0
begin
declare cs1 cursor for
select * from #tmp
open cs1
fetch next from cs1
while @@FETCH_STATUS = 0
begin
fetch next from cs1
end
close cs1
deallocate cs1
end
else
begin
print '对不起!'
end
drop table #tmp
declare @cnt int
declare @cntex int
declare @sum int
declare @sumex int
declare @avg int
declare @avgex int
select @cnt=count(书名),@sum=sum(价格),@avg=avg(价格) from 作家 where 州='ca'
select @cntex=count(书名),@sumex=sum(价格),@avgex=avg(价格) from 作家 where 州='ca' group by 种类
print '所写书的总数量'+convert(varchar(10),@cnt)
print '总价钱'+convert(varchar(10),@sum)
print '平均价钱'+convert(varchar(10),@avg)
print '每类书的种类数'+convert(varchar(10),@cntex)
print '总价钱'+convert(varchar(10),@sumex)
print '平均价钱'+convert(varchar(10),@avgex)
set nocount off
go

有人抢先了...

100分...

我也想要

请提供表结构,不然没法写。