Home [SQL] 子查詢(一)
Post
Cancel

[SQL] 子查詢(一)

在 Where 中使用子查詢

select 中還有另一個 select,這樣的寫法稱為「子查詢」。

子查詢當中,內側的 select 會先被執行,然後其結果將會傳給母查詢進行處理。

1
2
3
4
--取得販賣單價最高之商品的商品名稱
select [商品名稱]
from [商品清單]
where [販賣單價]=(select max([販賣單價]) from [商品清單])

在這範例中,先從商品清單中取得販賣單價的最大值,然後將擁有與該值相同之販賣單價的商品名稱輸出。

在 Form 中使用子查詢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--請輸出商品別的販賣單價合計與全部商品之販賣單價合計的比率(%)
--這裡的購買單價合計是指:購買單價*數量
select T2.商品名稱, T2.商品別總計, (T2.商品別總計/T1.總計)*100 '%'
from
(
    --總計
	select sum([數量]*B.販賣單價) 總計
	from [販賣資料] A
	join [商品清單] B on B.商品ID = A.商品ID
) T1,
(
	--計算商品別總數量、商品別總計
	select B.商品名稱, sum(A.數量) 商品別總數量, (B.販賣單價 * sum(A.數量)) 商品別總計
	from [販賣資料] A
	right join [商品清單] B on B.商品ID = A.商品ID
	group by B.商品名稱,B.販賣單價
) T2

執行結果

1
2
3
4
5
6
7
8
9
10
11
商品名稱  商品別總計	%
數位相機	NULL	NULL
HUB	       35000   0.756700
網路卡  	40000	0.864800
印表機	    25000	0.540500
掃描器	    30000	0.648600
17吋螢幕	250000	5.405400
19吋螢幕	285000	6.162100
15吋液晶螢幕 720000	15.567500
桌上型電腦	1080000	23.351300
筆記型電腦	2160000	46.702700
This post is licensed under CC BY 4.0 by the author.