求解一道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')
這裡考的是子查詢,仔細點就可以
第二題 還沒做出來 哈哈 本人也是初學者