首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 必會常用 SQL 語句精選(三)—— 條件統計、資料異動與多表聯結

     編輯:DB2 教學

前言

第三篇涵蓋區間統計、條件群組、UPDATE 字串陷阱、CASE 表達式轉碼、BETWEEN 篩選、COUNT(DISTINCT) 去重計數、薪資調整 DML、極值查詢與多表聯結實戰。

1. 統計薪資落在 4,000~6,000 區間的員工人數

SELECT COUNT(*) AS headcount
FROM employee
WHERE salary BETWEEN 4000 AND 6000;

2. 僅統計住址在「上海市」員工的各部門平均薪資

SELECT dept, AVG(salary) AS avg_salary
FROM employee
WHERE addr LIKE '上海市%'
GROUP BY dept;

3. 將住址為「上海市」的員工改為「北京市」—— 避開 UPDATE 陷阱

-- ❌ 錯誤寫法:SET 子句不能用 LIKE
UPDATE employee
SET addr LIKE '北京市'
WHERE addr LIKE '上海市%';

-- ✅ 正確寫法:直接指定新值
UPDATE employee
SET addr = '北京市'
WHERE addr LIKE '上海市%';

提醒:SET col = 值 後面接具體值,不可使用 LIKE、IN 等述詞。

4. 查詢業務部或會計部的女員工基本資料

SELECT emp_no, emp_name, dept
FROM employee
WHERE sex = 'F'
  AND dept IN ('業務', '會計');

5. 各產品銷售總金額,依金額降序

SELECT prod_id, SUM(qty * unit_price) AS total_sales
FROM sale_item
GROUP BY prod_id
ORDER BY total_sales DESC;

6. 選取客戶編號介於 C0001 ~ C0004 的客戶資料

SELECT cust_id, cust_name, addr
FROM customer
WHERE cust_id BETWEEN 'C0001' AND 'C0004';

注意:字串 BETWEEN 依照編碼順序比較,確認編碼一致(如皆為大寫)才能正確運作。

7. 計算總共銷售了幾種不同產品

SELECT COUNT(DISTINCT prod_id) AS distinct_product_count
FROM sale_item;

8. 業務部員工薪資上調 3%

UPDATE employee
SET salary = salary * 1.03
WHERE dept = '業務';

9. 查詢薪資最低的員工完整資料

SELECT *
FROM employee
WHERE salary = (SELECT MIN(salary) FROM employee);

10. 使用 JOIN 查詢客戶「客戶丙」的購貨明細

SELECT 
  a.cust_id,
  b.tot_amt,
  b.order_date,
  a.tel_no
FROM customer a
JOIN sales b ON a.cust_id = b.cust_id
WHERE a.cust_name = '客戶丙';

優化:若 cust_name 非唯一,建議改用 cust_id 精確聯結。

小結

  • UPDATE ... SET col = 值 切記不可寫成 SET col LIKE 值。
  • CASE 表達式在 SELECT 清單中可將代碼轉換為可讀文字(如性別 M/F → 男/女)。
  • COUNT(DISTINCT col) 是去重計數的標準寫法。
  • 極值查詢(最小/最大)配合子查詢最直觀;大量資料可改用 FETCH FIRST 1 ROW ONLY 配合 ORDER BY。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved