您的位置:首页 > 数据库

sql实验二:使用分组,排序,汇总

2011-05-03 15:20 525 查看
Code:

--1.显示以‘S’开头,并且玩具名称不少于7个字符的玩具名称vToyName。

select *

from dbo.Toys

where len(vToyName)>=7 and left(vToyName,1)='S'



--2.显示名称里包含字母‘u’或‘x’的玩具ID和名称以及价格。

select cToyId,vToyName,mToyRate

from dbo.Toys

where CHARINDEX('x',vToyName)<>0

and CHARINDEX('u',vToyName)<>0



--3.查询信用卡号(cCreditCardNo)中包含4个8的订购者(Shopper)的详细信息。

select *

from shopper

where cCreditCardNo like '%8%8%8%8%'



--4.统计订单号为‘000001’的订单订购的玩具的数量和玩具的总花费(mToyCost)。

select cOrderNo,'数量'=sum(siQty),'花费'=sum(mToyCost)

from dbo.OrderDetail

where cOrderNo='000001'

group by cOrderNo





--5.统计每份订单订购的玩具数量和玩具花费。

select cOrderNo,'数量'=sum(siQty),'花费'=sum(mToyCost)

from dbo.OrderDetail

group by cOrderNo



--6.对于GlobalToyz数据库的Country表,统计国家名称只由六个字母构成的国家的数目。

select count(*)

from Country

where len(cCountry)=6



--7.显示价格最高的五种玩具的名称和价格(vToyName,mToyRate)。

select top 5 vToyName,mToyRate

from Toys

order by mToyRate desc



--8.输出Shopper表的‘Texas’州的前10%的订购者的详细信息。

select top 10 percent *

from Shopper

where cState='Texas'



--9.统计被人订购过的玩具的数量,相同的玩具只统计一次。(OrderDetail表)

select cToyID,'数量'=sum(siQty)

from OrderDetail

group by cToyID

order by cToyID



--10.toys表中,按照玩具的类别(cCategoryId)统计每类玩具的数量和平均价格

-- (mToyrate),只输出平均价格大于20$的玩具的信息。思考:能输出的列可以

-- 有哪些?请写出相应的查询。

select cCategoryID,'数量'=sum(siToyQoh),'平均价格'=avg(mToyRate)

from Toys

group by cCategoryID

having avg(mToyRate)>20





--11.对于PickofMonth表,打印出该表的详细信息,并在底部汇总出‘2000’年销售数量

-- 的总和。

select *

from PickofMonth

where iYear=2000



select convert(char,iYear)+'年的销售数量总和'+

convert(char,sum(iTotalSold))

from PickofMonth

where iYear=2000

group by iYear



--12.对于OrderDetail表,请输出订单号,cWrapperId,vMessage和mToyCost,并

-- 根据cWrapperId小计玩具花销的平均值和总值,在底部总计玩具花销的平均值

-- 和总值。

select cOrderNo,cWrapperId,vMessage,mToyCost

from OrderDetail

order by cWrapperId

compute avg(mToyCost),sum(mToyCost) by cWrapperId

compute avg(mToyCost),sum(mToyCost)



--13.打印出玩具花费最高的三份订单的详情。

select *

from orderDetail

where cOrderNo in (select top 3 cOrderNo

from orders

order by mTotalCost desc)



--14.以下这段代码将会输出什么:请写出正确的语句。

-- A:输出订单分组中再按玩具ID分组的消费情况

SELECT cOrderNo,cToyId,'消费量'=SUM(mToyCost)

FROM OrderDetail

GROUP BY cOrderNo,cToyId



--15.下面包含COMPUTE BY子句的代码都会产生错误,请写出产生错误的原因,

-- 并将其改为正确的带COMPUTE BY子句的SQL语句。

SELECT cToyId,mToyCost

FROM OrderDetail

order by cToyID--小计前必须添加order by

COMPUTE SUM(mToyCost) BY cToyId



SELECT cCartId ,mTotalCost--添加mTotalCost要小计就要先引入此列

FROM Orders

ORDER BY cCartId

COMPUTE count(mTotalCost),***G(mTotalCost) BY cCartId
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: