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
--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
相关文章推荐
- 实验三(2) SQL查询(排序、集函数和分组子句的应用)
- 最常用的SQL排序、分组与统计的使用方法
- 数据库概论(实验四2) SQL查询(排序、集函数和分组子句的应用)
- sql分组汇总时的排序
- 使用变量分组的sql : 排序后再分组,取分组的第一个
- [Oracle SQL] 使用rollup分组统计按统计结果分组排序显示的问题
- SQL如何使用集合、分组、排序
- SQL-- 检索、排序、过滤、通配符、函数、汇总、分组
- SQL(Oracle)日常使用与不常使用函数的汇总
- 为表添加排序字段 (动态SQL、游标的使用)
- SQL你必须知道的-查询聚合分组排序
- linq to sql 连接分组 使用join和into
- Laravel使用构建器来生成原生sql语句来对总和排序
- sqlserver中分组查询,条件过滤,排序,写这个sql,我为自己感到骄傲
- SQL 分组统计之------汇总乘积
- SQL进行排序、分组、统计的10个新技巧
- 一个根据列的范围分组汇总的Sql存储过程
- Hibernate中的sql语句中使用分组查询
- sql分组后二次汇总(处理表重复记录查询和删除)的实现方法