求解一道SQL测试题
商品表:
编号 名称 价格 分类
---- -------- ------ ---------
7 熊猫 9854.0 生产工具
1 香蕉 3.0 食物
2 苹果 2.0 食物
3 火箭炮 900.5 生产工具
6 板砖 1.5 生产工具

顾客表:
编号 姓名 住址
---- ---------- --------
1 辉耀 地球
3 水蓝 水星
6 梦梦 土卫6

交易表:
编号 顾客编号 商品编号 所购数量
----- --------- --------- ---------
1 1 1 12
2 3 1 1
3 7 3 1
4 6 6 7
5 2 6 4
6 2 1 45

1.列出没有购买过苹果的顾客的姓名及家庭住址
2.列出每个人在购买生产工具和食物上各花了多少钱
3.列出卖出总金额最少的前3个商品名称及其卖出金额

看到这题后我就一直处于眩晕状态,望各位帮我!

========================================================================================

第一题就不说了,第二题也让我费了不少心思,第一种查询方式是:/select b.姓名, a.分类, sum(c.数量*a.价格) from 产品表 a
inner join 交易表 c on a.spid=c.spid
inner join 顾客表 b on b.gkid=c.gkid
group by a.分类,b.姓名/ 。这种查询结果集比较乱。第二种方式是:/
select b.姓名,
sum (case 分类 when '生产工具' then c.数量*a.价格 else 0 end) as '生产工具',
sum(case a.分类 when '食物' then c.数量*a.价格 else 0 end ) as '食物'
from 商品表 as a
inner join 交易表 as c on a.spid=c.spid inner join 顾客表 as b on b.gkid=c.gkid
group by b.姓名/ 这个效果好些。嘿嘿。
---------------------
第三题:
select top 3 a.名称, sum(a.价格*b.数量) as 总金额
from 商品表 a inner join 交易表 b on a.spid=b.spid
group by a.名称 order by 总金额
========================================================================================
第一题:
select 姓名,家庭住址 from 顾客表 where 顾客编号 not in
(select 顾客编号 from 交易表 where 商品编号='2')
这里考的是子查询,仔细点就可以
第二题 还没做出来 哈哈 本人也是初学者

posted on 2009-06-03 23:47  钱途无梁  阅读(548)  评论(2编辑  收藏  举报