題組內容
參考書(書籍編號、書籍名稱、出版商編號、單價、會員折扣數)
出版商(出版商編號、出版商名稱、聯絡人)
銷售(銷售編號、會員編號、銷售日期、書籍編號、數量、售價、購買總額)
會員(會員編號、名字、入會日期、 聯絡電話)
若非會員,銷售資料表之欄位(會員編號)紀錄為N99,書籍之售價採參考書資料表的欄位(單價)販售; 反之,若為會員, 則採參考書資料表的欄位(單價)乘以欄位(會員折扣數)販售。
針對下列問題,請分別寫出SQL指令來進行查詢。(3題,每題5分,共15分)
(三)書籍編號B6188為新出版上架之參考書,店員第一天將會員折扣數由92折誤輸入為 82折,直到當天盤點結帳才發現,請問當天書局少收了多少錢 ?
詳解 (共 7 筆)
SELECT SUM(銷售.數量*參考書.單價*0.1)
FROM 銷售,參考書
WHERE NOT 銷售.會員編號=N99 AND 銷售.書籍編號=B6188 AND 參考書.書籍編號=銷售.書籍編號;
不確定SUM內可不可以直接+-*/
原本92打成82也就是少收10%的錢
假如原本100元 也就是92元變82元
那直接把原本的數量*單價*0.1應該就是少收的了
已經指定銷售.書籍編號=B6188的情況下 還有需要指定參考書.書籍編號=銷售.書籍編號?
Select (a.單價*b.總購買數量*0.92)-(b.銷售總額)
From
(Select *
From 參考書
Where 書籍編號=‘b6188’)a,
(Select sum(購買總額) as 銷售總額,
sum(數量) as 總購買數量,
書籍編號
From 銷售
Where 書籍編號=‘b6188’)b
Where a.書籍編號=b.書籍編號
首先針對會員跟非會員判斷
1. 非會員買的書籍是原價, 所以沒有折扣問題
2. 會員購買時短收了10%的金額(原本是92%->82%), 所以取出B6188賣給會員的總銷售金額, 取出其中的10/82份即為短收金額
所以僅針對第二條狀況來計算短收的部分撰寫SQL:
select sum(購買總額)/82*10 from 銷售
where 會員編號 != 'N99'and 書籍編號 = 'B6188'
FROM 參考書 AS B, 銷售 AS S
WHERE S.書籍編號=B.書籍編號 AND S.銷售日期='那一天' AND 書籍編號='B6188' AND 會員編號<>'N99'
SELECT sum(購買總額)/0.82*0.92-sum(購買總額)
或是
SELECT sum(購買總額)/0.82*0.1
FROM 銷售
WHERE 會員編號 != 'N99' and 書籍編號 = 'B6188'
購買總額/0.82=原價的總額再*0.92=打92折的總額
或是原價總額*0.1(價差) 來自B7的想法
不知道select那行可不可以這樣打
知道的人再給我回饋
拜託了
select sum(數量) * 參考書.單價 * 0.1
from 銷售
join 參考書 on 銷售.書籍編號 = 參考書.書籍編號
where 書籍編號 = 'B6188'
SELECT SUM (購買總額*0.1) AS 少收這麼多錢
FROM 銷售
WHERE 書籍編號=B6188 AND (NOT 會員編號=N99)