題組內容

一、某公司的關聯式資料庫包含下列表格,有底線者為主鍵:(22 分)
 貨品(貨號,品名,單價,庫存數量,供應商編號,供應商名稱) 
供應商(供應商編號,供應商名稱,供應商地址,供應商電話,聯絡人)
 (一)請用 SQL 列出下列查詢:(14 分)

(3)至少供應 2 種貨品之供應商名稱,及該供應商販售幾種貨品。(7 分)

詳解 (共 10 筆)

Mihaeru
Mihaeru
詳解 #5191390
2021/11/03

SELECT 供應商名稱, COUNT(DISTINCT(貨號)) AS 販售幾種商品

FROM 貨品

GROUP BY 供應商編號

HAVING COUNT(DISTINCT(貨號)) >1 ;

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

COUNT 要不要另外命名無所謂,題目沒特別講明看得懂就好。
這題不用 JOIN 供應商 table 因為要的資料貨品 table 裡都有。
題目要求篩選出至少供應兩項貨品的供應商名稱,所以要先用 GROUP BY 將供應商進行分群,使用供應商編號是因為具有唯一性。
聚合函數如果要設條件則需要使用HAVING,不能用WHERE。
COUNT()的意義為計算符合條件的資料筆數,DISTINCT()的意義為篩選出該欄位不同的值有哪幾個
故COUNT(DISTINCT(貨號))會先將所有的貨號種類列出,在計算總共有幾種貨號,最後使用 >1 篩選出有兩個以上的,你也可以用>=2,意思一樣。

補:後來發現貨號是primary key,所以不用DISTINCT沒關係,本身就具有唯一性,直接COUNT(貨號)就好,或是COUNT(*)也行。
另外我會使用GROUP BY 供應商編號 的原因是為了避免有供應商名稱重複的狀況,畢竟primary key只有供應商編號,假設有兩家供應商的名稱真的一樣,那GROUP BY 供應商名稱 就會把他們算在一起了。

R
R
詳解 #4337644
2020/10/25
SELECT 供應商名稱, COUNT(...
(共 84 字,隱藏中)
前往觀看
111考生
111考生
詳解 #5626663
2022/10/05
SELECT 供應商名稱, COUNT(貨號) AS 賣幾種商品
FROM 貨品
GROUP BY 貨品.供應商編號
HAVING COUNT(貨號)>=2
aabb177
aabb177
詳解 #4169513
2020/07/24
SELECT 供應商名稱 ,COUNT(...
(共 77 字,隱藏中)
前往觀看
Lin Jin
Lin Jin
詳解 #6192957
2024/08/15
SELECT 供應商名稱, COUNT(...
(共 134 字,隱藏中)
前往觀看
目標國營聯招
目標國營聯招
詳解 #5112202
2021/09/25
覺得用貨號比較好 品名有可能一樣
(共 18 字,隱藏中)
前往觀看
MAYTHEFORCEBEWITHYOU
MAYTHEFORCEBEWITHYOU
詳解 #3814050
2020/03/07
SELECT 供應商名稱 ,COUNT(...
(共 79 字,隱藏中)
前往觀看
shang
shang
詳解 #6209817
2024/09/14
SELECT 供應商名稱,COUNT(貨...
(共 75 字,隱藏中)
前往觀看
Jian Ting Liu
Jian Ting Liu
詳解 #5191495
2021/11/03

SELECT 供應商名稱, COUNT(品名) AS “供應商販售幾種貨品

FROM 貨品

GROUP BY 供應商名稱

HAVING COUNT(品名)≥2;

我還有明天
我還有明天
詳解 #5173253
2021/10/24

SELECT 供應商名稱 ,COUNT(DISTINCT品名) AS 兩種以上貨品供應商

FROM 貨品

WHERE 兩種以上貨品供應商>= 2