FROM ordering_xxx O2, ordering_xxx O3, supplier_xxx SS
WHERE O2.s = O3.s
AND O2.s = SS.s_id
AND SS.address = '台北'
AND O2.p = '10'
AND O3.p = '20';
全部共 14則留言
05-27 09:59:
Part 1 以localhost 完成、新增"性別"欄位、變更顏色。
05-27 09:59:
Part 1 以localhost 完成、新增"性別"欄位、變更顏色。
05-27 14:53:
Part 1 以localhost 完成、新增"性別"欄位、變更顏色。
06-03 15:40:
-- 31. 列出 廠商之訂購金額加總大於 80,000者。
-- 訂購金額 為 table ordering_xxx 之訂購量 qty * table product_xxx 的 價格 cost
SELECT OO.s, OO.qty, PP.cost, SUM(OO.qty*PP.cost) AS total
FROM ordering_xxx OO, product_xxx PP
WHERE OO.p= PP.p_id
GROUP BY OO.s
HAVING total > 80000;
-- SQL 的進階用法
-- 根據某欄位值,判斷所要顯示的資訊
Select p_id, Case
When (cost>=200) Then '高價水果' Else '普通水果'
END 價位
From product_xxx;
06-04 12:46:
32. 下列SQL可完成什麼? 請在答案紙上寫下答案。 ]
SELECT ordering_xxx.s, sum(qty*cost) AS total FROM ordering_xxx, product_xxx
WHERE ordering_xxx.p=product_xxx.p_id
GROUP BY ordering_xxx.s
ORDER BY Total DESC;
答案: 用於計算每個供應商所賣出的產品總價格,然後按照總價格由高到低排序。
34. 列出訂購總金額加總為後五名者 (最少的5家) 的S,P,qty,cost,與訂購總金額加總
-- 請在答案紙上寫下前三筆的結果
答案: SELECT
o.s AS S,
o.p AS P,
SUM(o.qty) AS qty,
p.cost AS cost,
SUM(o.qty * p.cost) AS total
FROM
ordering_024 o
JOIN
product_024 p ON o.p = p.p_id
GROUP BY
o.s, o.p
ORDER BY
total ASC
LIMIT
3;
-- 36. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)、品名(name),價格 (cost),和數量(qty),
-- 以及各項商品的訂購金額 (qty*cost)。
-- 請在答案紙上寫下前三筆的結果
答案: SELECT supplier_024.s_id, supplier_024.address, product_024.p_id, product_024.name, product_024.cost, ordering_024.qty, ordering_024.qty * product_024.cost AS total_cost
FROM supplier_024
JOIN ordering_024 ON supplier_024.s_id = ordering_024.s
JOIN product_024 ON ordering_024.p = product_024.p_id
LIMIT 3;
-- 38. 出訂購總金額最多的一項商品
-- >> 寫下它的 商品編號、與品名
答案: SELECT
o.p AS Product_ID,
p.name AS Product_Name,
SUM(o.qty * p.cost) AS Total
FROM
ordering_024 o
JOIN
product_024 p ON o.p = p.p_id
GROUP BY
o.p
ORDER BY
Total DESC
LIMIT
1;
-- 40. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)> '32' 者、品名(name),價格 (cost),和數量(qty),
-- 以及各項商品的訂購金額 (qty*cost)。
-- >> 寫下它的 公司名稱 即可
答案: SELECT
s.s_name AS Company_Name,
s.address AS Company_Address,
o.p AS Product_ID,
p.name AS Product_Name,
p.cost AS Product_Price,
o.qty AS Quantity,
o.qty * p.cost AS Total_Price
FROM
ordering_024 o
JOIN
product_024 p ON o.p = p.p_id
JOIN
supplier_024 s ON o.s = s.s_id
WHERE
o.p > '32'
ORDER BY
s.s_id;
42. 請將您的 資料庫 做備份
-- >> 請在答案紙上寫下 您的 SQL 程式
答案: CREATE DATABASE IF NOT EXISTS `unit 824` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
USE `unit 824`;
52. 子查詢 (Subqueries)
-- include the subquery as an inline "table" in the FROM clause
-- 在 FROM 中,將子查詢 做為 行內的 table
-- 列出 product_024 中最高價格 的 所有欄位
SELECT *
FROM product_024 PP,
(SELECT MAX(PP.cost) MAX_COST FROM product_024 PP) MM
WHERE PP.cost = MM.MAX_COST;
-- 54. 子查詢 (Subqueries)
-- 列出 未訂購商品的 廠商 的 所有欄位
-- 更有效率的做法
SELECT *
FROM supplier_024 SS
WHERE NOT EXISTS
(SELECT NULL
FROM ordering_024 OO
WHERE SS.s_id = OO.s);
-- 56. 自我 結合 (Self-Join)
-- 列出 product 中 廠商 同時訂購 '10' 和 '20' 且廠商地址在 '台北' 的 所有欄位
-- 更有效率的做法
SELECT *, SS.s_name, SS.address
FROM ordering_024 O2, ordering_024 O3, supplier_024 SS
WHERE O2.s = O3.s
AND O2.s = SS.s_id
AND SS.address = '台北'
AND O2.p = '10'
AND O3.p = '20';
32. 下列SQL可完成什麼? 請在答案紙上寫下答案。 ] SELECT ordering_xxx.s, sum(qty*cost) AS total FROM ordering_xxx, product_xxx WHERE ordering_xxx.p=product_xxx.p_id GROUP BY ordering_xxx.s ORDER BY Total DESC; 答案: 用於計算每個供應商所賣出的產品總價格,然後按照總價格由高到低排序。 34. 列出訂購總金額加總為後五名者 (最少的5家) 的S,P,qty,cost,與訂購總金額加總 -- 請在答案紙上寫下前三筆的結果 答案: SELECT o.s AS S, o.p AS P, SUM(o.qty) AS qty, p.cost AS cost, SUM(o.qty * p.cost) AS total FROM ordering_008 o JOIN product_008 p ON o.p = p.p_id GROUP BY o.s, o.p ORDER BY total ASC LIMIT 3; -- 36. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)、品名(name),價格 (cost),和數量(qty), -- 以及各項商品的訂購金額 (qty*cost)。 -- 請在答案紙上寫下前三筆的結果 答案: SELECT supplier_008.s_id, supplier_008.address, product_008.p_id, product_008.name, product_008.cost, ordering_008.qty, ordering_008.qty * product_008.cost AS total_cost FROM supplier_008 JOIN ordering_008 ON supplier_008.s_id = ordering_008.s JOIN product_008 ON ordering_008.p = product_008.p_id LIMIT 3; -- 38. 出訂購總金額最多的一項商品 -- >> 寫下它的 商品編號、與品名 答案: SELECT o.p AS Product_ID, p.name AS Product_Name, SUM(o.qty * p.cost) AS Total FROM ordering_008 o JOIN product_008 p ON o.p = p.p_id GROUP BY o.p ORDER BY Total DESC LIMIT 1; -- 40. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)> '32' 者、品名(name),價格 (cost),和數量(qty), -- 以及各項商品的訂購金額 (qty*cost)。 -- >> 寫下它的 公司名稱 即可 答案: SELECT s.s_name AS Company_Name, s.address AS Company_Address, o.p AS Product_ID, p.name AS Product_Name, p.cost AS Product_Price, o.qty AS Quantity, o.qty * p.cost AS Total_Price FROM ordering_008 o JOIN product_008 p ON o.p = p.p_id JOIN supplier_008 s ON o.s = s.s_id WHERE o.p > '32' ORDER BY s.s_id; 42. 請將您的 資料庫 做備份 -- >> 請在答案紙上寫下 您的 SQL 程式 答案: CREATE DATABASE IF NOT EXISTS `unit 824` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; USE `unit 824`; 52. 子查詢 (Subqueries) -- include the subquery as an inline "table" in the FROM clause -- 在 FROM 中,將子查詢 做為 行內的 table -- 列出 product_008 中最高價格 的 所有欄位 SELECT * FROM product_008 PP, (SELECT MAX(PP.cost) MAX_COST FROM product_008 PP) MM WHERE PP.cost = MM.MAX_COST; -- 54. 子查詢 (Subqueries) -- 列出 未訂購商品的 廠商 的 所有欄位 -- 更有效率的做法 SELECT * FROM supplier_008 SS WHERE NOT EXISTS (SELECT NULL FROM ordering_008 OO WHERE SS.s_id = OO.s); -- 56. 自我 結合 (Self-Join) -- 列出 product 中 廠商 同時訂購 '10' 和 '20' 且廠商地址在 '台北' 的 所有欄位 -- 更有效率的做法 SELECT *, SS.s_name, SS.address FROM ordering_008 O2, ordering_008 O3, supplier_008 SS WHERE O2.s = O3.s AND O2.s = SS.s_id AND SS.address = '台北' AND O2.p = '10' AND O3.p = '20';
06-04 14:46:
32. 下列SQL可完成什麼?
使用上述的 SQL 程式可以完成以下事情:
1. 列出每個廠商的訂購金額加總。
2. 將訂購量(qty)和產品價格(cost)相乘,計算出每筆訂單的金額。
3. 根據廠商(s)分組,計算每個廠商的訂購金額總和。
4. 根據訂購金額加總(total)的降序排序。
5. 結果中包含廠商的編號(s)和訂購金額加總(total)。
這個 SQL 程式,可以快速找出訂購金額加總超過特定門檻的廠商,並按照金額加總進行排序。
34. 列出訂購總金額加總為後五名者 (最少的5家) 的S,P,qty,cost,與訂購總金額加總
SELECT o.s, o.p, o.qty, p.cost, SUM(o.qty * p.cost) AS '訂購總金額加總'
FROM ordering_026 o
JOIN product_026 p ON o.p = p.p_id
GROUP BY o.s, o.p, o.qty, p.cost
ORDER BY SUM(o.qty * p.cost) ASC
LIMIT 5;
36. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)、品名(name),價格 (cost),和數量(qty),
SELECT s.s_id, s.address, o.p, p.name, p.cost, o.qty, (o.qty * p.cost) AS '訂購金額'
FROM supplier_026 s
JOIN ordering_026 o ON s.s_id = o.s
JOIN product_026 p ON o.p = p.p_id;
38. 列出訂購總金額最多的一項商品
SELECT o.p, p.name
FROM ordering_026 o
JOIN product_026 p ON o.p = p.p_id
GROUP BY o.p, p.name
ORDER BY SUM(o.qty * p.cost) DESC
LIMIT 1;
40. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)> '32' 者、品名(name),價格 (cost),和數量(qty),
SELECT s.s_id, s.address, p.name
FROM supplier_026 s
JOIN ordering_026 o ON s.s_id = o.s
JOIN product_026 p ON o.p = p.p_id
WHERE o.p > '32';
42. 請將您的 資料庫 做備份
CREATE TABLE `ordering_026` (
`s` int(11) NOT NULL,
`p` char(10) NOT NULL,
`qty` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
52. 子查詢 (Subqueries)
-- include the subquery as an inline "table" in the FROM clause
-- 在 FROM 中,將子查詢 做為 行內的 table
SELECT *
FROM product_026 PP,
(SELECT MAX(PP.cost) MAX_COST FROM product_026 PP) MM
WHERE PP.cost = MM.MAX_COST;
54. 子查詢 (Subqueries)
-- 列出 未訂購商品的 廠商 的 所有欄位
-- 更有效率的做法
SELECT *
FROM supplier_026 SS
WHERE NOT EXISTS
(SELECT NULL
FROM ordering_026 OO
WHERE SS.s_id = OO.s);
56. 自我 結合 (Self-Join)
-- 列出 product 中 廠商 同時訂購 '10' 和 '20' 且廠商地址在 '台北' 的 所有欄位
-- 更有效率的做法:0.07秒
SELECT *, SS.s_name, SS.address
FROM ordering_026 O2, ordering_026 O3, supplier_026 SS
WHERE O2.s = O3.s
AND O2.s = SS.s_id
AND SS.address = '台北'
AND O2.p = '10'
AND O3.p = '20';
06-04 14:47:
32. 下列SQL可完成什麼?
使用上述的 SQL 程式可以完成以下事情:
1. 列出每個廠商的訂購金額加總。
2. 將訂購量(qty)和產品價格(cost)相乘,計算出每筆訂單的金額。
3. 根據廠商(s)分組,計算每個廠商的訂購金額總和。
4. 根據訂購金額加總(total)的降序排序。
5. 結果中包含廠商的編號(s)和訂購金額加總(total)。
這個 SQL 程式,可以快速找出訂購金額加總超過特定門檻的廠商,並按照金額加總進行排序。
34. 列出訂購總金額加總為後五名者 (最少的5家) 的S,P,qty,cost,與訂購總金額加總
SELECT o.s, o.p, o.qty, p.cost, SUM(o.qty * p.cost) AS '訂購總金額加總'
FROM ordering_026 o
JOIN product_026 p ON o.p = p.p_id
GROUP BY o.s, o.p, o.qty, p.cost
ORDER BY SUM(o.qty * p.cost) ASC
LIMIT 5;
36. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)、品名(name),價格 (cost),和數量(qty),
SELECT s.s_id, s.address, o.p, p.name, p.cost, o.qty, (o.qty * p.cost) AS '訂購金額'
FROM supplier_026 s
JOIN ordering_026 o ON s.s_id = o.s
JOIN product_026 p ON o.p = p.p_id;
38. 列出訂購總金額最多的一項商品
SELECT o.p, p.name
FROM ordering_026 o
JOIN product_026 p ON o.p = p.p_id
GROUP BY o.p, p.name
ORDER BY SUM(o.qty * p.cost) DESC
LIMIT 1;
40. 列出 有訂購產品 的廠商編號 (s_id) 與地址 (address),及其訂購的商品編號(p_id)> '32' 者、品名(name),價格 (cost),和數量(qty),
SELECT s.s_id, s.address, p.name
FROM supplier_026 s
JOIN ordering_026 o ON s.s_id = o.s
JOIN product_026 p ON o.p = p.p_id
WHERE o.p > '32';
42. 請將您的 資料庫 做備份
CREATE TABLE `ordering_026` (
`s` int(11) NOT NULL,
`p` char(10) NOT NULL,
`qty` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
52. 子查詢 (Subqueries)
-- include the subquery as an inline "table" in the FROM clause
-- 在 FROM 中,將子查詢 做為 行內的 table
SELECT *
FROM product_026 PP,
(SELECT MAX(PP.cost) MAX_COST FROM product_026 PP) MM
WHERE PP.cost = MM.MAX_COST;
54. 子查詢 (Subqueries)
-- 列出 未訂購商品的 廠商 的 所有欄位
-- 更有效率的做法
SELECT *
FROM supplier_026 SS
WHERE NOT EXISTS
(SELECT NULL
FROM ordering_026 OO
WHERE SS.s_id = OO.s);
56. 自我 結合 (Self-Join)
-- 列出 product 中 廠商 同時訂購 '10' 和 '20' 且廠商地址在 '台北' 的 所有欄位
-- 更有效率的做法:0.07秒
SELECT *, SS.s_name, SS.address
FROM ordering_026 O2, ordering_026 O3, supplier_026 SS
WHERE O2.s = O3.s
AND O2.s = SS.s_id
AND SS.address = '台北'
AND O2.p = '10'
AND O3.p = '20';