求助关于sql 编程的问题 请高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/04/28 23:29:43
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

第二题