SQL习题 含答案

发布 2022-09-02 19:58:28 阅读 9148

一、基本查询。

1.查询所有买家信息。select * from买家表。

2.查询所有商品的商品名称、品牌、型号。select商品名称,品牌,型号from商品表3.

输出销售表中不同的商品编号(剔除重复行)。select distinct商品编号from销售表4.输出销售表中前20%的记录信息。

select top 20 percent * from销售表。

5.输出编号为m04的买家所购商品的记录信息。select*from销售表where买家编号='m04'

6.输出编号为m04的买家在2023年9月所购商品的记录信息。

select*from销售表where买家编号='m04'and销售日期between'2013-09-01'and'2013-09-30'

7.输出商品编号为s01、s04、s05的销售情况。

select*from销售表where商品编号in('s01','s04','s05')

8.查询2023年月以外的商品销售情况。

select*from销售表where销售日期notbetween'2013-07-01'and'2013-08-31'

9.查询**号码第一位为6的买家信息。

select*from买家表where**like'6%'

10.查询**号码第3位为6或9的买家信息。

select*from买家表where**like'__69]%'

11.查询**号码第3位、第5位为5的买家信息。

select*from买家表where**like'__5_5%'

select*from买家表where**like'__5%'or**like'__5%'

12.输出销售表中所有信息,按商品名升序排列,同一商品名按销售数量降序排列。

selecta.*,b.商品名称from销售表a,商品表bwherea.商品编号=b.商品编号orderby商品名称,销售数量desc

输出销售表中所有信息,按商品编号升序排列,同一商品编号按销售数量降序排列。

select*from销售表orderby商品编号,销售数量desc

13.将12题的结果保存到临时表#ttt中,并输出此临时表中的信息。

select*into#tttfrom销售表orderby商品编号,销售数量desc

goselect*from#ttt

二、汇总查询。

1.查询有多少个不同的买家。

selectcount(*)from买家表。

2.查询销售表中商品编号为's01'的实际销售**的最高值、最低值、平均值(不考虑销售数量)、加权平均值。

参考:select max(实际销售**),min(实际销售**),**g(实际销售**),sum(实际销售***销售数量)/sum(销售数量) from销售表where商品编号='s01'

3.查询销售表中各买家的销售笔数。

selectcount(*)买家编号from销售表groupby买家编号。

4.查询销售表中各商品的实际销售**的最高值、最低值。

参考:select max(实际销售**),min(实际销售**) from销售表group by商品编号。

5.查询商品表中,台式机中各品牌的库存总数。

参考:select品牌,sum(库存) from商品表where商品名称='台式机'group by品牌6.查询商品表中,台式机中各品牌库存总数在100台以上的库存信息。

参考:select品牌,sum(库存) from商品表where商品名称='台式机' group by品牌。

h**ing sum(库存)>=100

7.输出商品表中台式机的明细信息及库存总数。

参考:select*from商品表where商品名称='台式机'compute sum(库存)

8.输出商品表中,台式机中各品牌的库存总数,并显示明细信息。参考:select*from商品表where商品名称='台式机'order by品牌。

compute sum(库存) by品牌。

三、连接查询和子查询。

1.查询台式机2023年下半年的销售情况。

select*from销售表where商品编号in

select商品编号from商品表where商品名称='台式机')and销售日期between'2013-06-01'and'2013-12-31'

2.查询电子校所购电脑(含笔记本、台式机)的详细记录情况。

select*from销售表where买家编号=

select买家编号from买家表where买家名称='电子校')

and商品编号in(select商品编号from商品表where商品名称in('笔记本','台式机'))

3.查询商品表中每种商品(根据商品名区别)库存最多的商品情况。

分步走:select商品名称,sum(库存)from商品表groupby商品名称orderbysum(库存)desc

selecttop1商品名称,sum(库存)from商品表groupby商品名称orderbysum(库存)desc最后结果:

select*from商品表where商品名称in

selecttop1商品名称from商品表groupby商品名称orderbysum(库存)desc)

4.查询商品表中商品销售价远高于进价最悬殊的商品情况。

selecttop1a.*,b.实际销售**from商品表a,销售表bwherea.商品编号=b.商品编号orderby实际销售**-进价desc

5.查询商品表中每种商品(根据商品名区别)所占用资金最多的商品情况。

分步:select商品名称,sum(进价*库存)from商品表groupby商品名称--会有错误提示。

select商品名称,sum(convert(money,进价)*库存)from商品表groupby商品名称。

select商品名称,sum(convert(money,进价)*库存)from商品表groupby商品名称orderbysum(convert(money,进价)*库存)desc

最后结果:select*from商品表where商品名称=

selecttop1商品名称from商品表groupby商品名称orderbysum(convert(money,进价)*库存)desc)

6.查询销售表中商品销售单价最贵的商品去向,要求输出买家详细信息。

select*from买家表where买家编号=

selecttop1买家编号from销售表orderby实际销售**desc)

7.查询进价比实际销售价还高的商品销售记录。

selecta.*,b.实际销售**from商品表a,销售表bwherea.商品编号=b.商品编号and实际销售**《进价。

8.输出销售表中每种商品销售金额最多的那些商品的记录信息。

分步:select商品编号,sum(实际销售***销售数量)from销售表groupby商品编号orderbysum(实际销售***销售数量)desc最后结果:

select*from销售表where商品编号=

selecttop1商品编号from销售表groupby商品编号orderbysum(实际销售***销售数量)desc)

9.查询销售表中同一商品被同一买家刚好买过2次的记录信息。参考:

select * from销售表a,select商品编号,买家编号,count(*)as次数from销售表group by商品编号,买家编号h**ing count(*)2) b

where a.商品编号=b.商品编号and a.买家编号=b.买家编号或:select * from销售表where商品编号+买家编号in

select商品编号+买家编号from销售表group by商品编号,买家编号h**ing count(*)2)

10.要求查询电子校所购商品的详细记录,输出内容包括:商品编号,商品名称,型号,进价,实际销售**,销售日期,销售数量,买家名称,**。

SQL习题答案

第一章。选择题 a c d a 二 填空题。1 层次 网状 关系 关系。2 数据结构 数据操作 完整性约束。3 模式 外模式 外模式 模式映象 模式 内模式映象。4 选择 投影 连接。5 水平 垂直。6 实体 域 参照。7 一张二维表 行 列。8 插入 修改 删除。9 客户 浏览器。第二章。选择题 ...

sql查询举例 含答案

查询练习。一 简单查询 无条件查询 1 查询 学生档案 表中所有的记录。select form 学生档案。2 查询 学生档案 表中全体学生的姓名 学号 家庭地址。select 姓名,学号,家庭地址 from 学生档案。二 有条件查询。1 查询 成绩管理 表中语文成绩在80分以下的学生的学号。sele...

SQL习题有答案

一 选择。1 根据关系数据基于的数据模型 关系模型的特征判断下列正确的一项 b a 只存在一对多的实体关系,以图形方式来表示。b 以二维 结构来保存数据,在关系表中不允许有重复行存在。c 能体现一对多 多对多的关系,但不能体现一对一的关系。d 关系模型数据库是数据库发展的最初阶段。2 a 如果要让w...