DB2 演習 サンプル解答 ================== ■基本照会 --1. 商品表(product)から標準単価(cost)が20000円以上の商品を照会してください。 SELECT * FROM product WHERE cost >= 20000 ; PROD_ID PROD_NAME MODEL_NO COST DISCOUNT ----------- -------------------- -------------------- ----------- ----------- 101 テレビ A1111 25000.00 0.70 103 MDプレーヤー C3333 23500.00 0.80 104 ステレオ D4444 56000.00 0.70 106 プリンタ F6666 23500.00 0.80 4 レコードが選択されました。 --2. 顧客表(customer)からFAX番号(fax)が空白値(NULL)の顧客の顧客ID(cust_id)、顧客名(cust_name)を照会してください。 SELECT cust_id, cust_name FROM customer WHERE fax IS NULL ; CUST_ID CUST_NAME ----------- -------------------- 6 木田 直美 12 石橋 健太郎 18 島田 良子 20 藤田 幹夫 4 レコードが選択されました。 --3. 顧客表(customer)から住所(address)が'東京都渋谷区'の顧客の顧客ID(cust_id)、顧客名(cust_name)、電話番号(tel)を照会してください。このとき、顧客ID(cust_id)順に表示してください。 SELECT cust_id, cust_name, tel FROM customer WHERE address = '東京都渋谷区' ORDER BY cust_id ; CUST_ID CUST_NAME TEL ----------- -------------------- -------------------- 4 永井 光夫 03-3124-XXXX 18 島田 良子 03-3698-XXXX 2 レコードが選択されました。 --4. 顧客表(customer)から住所(address)が'東京都'の顧客の顧客名(cust_name)、顧客住所(address)、電話番号(tel)を照会してください。 SELECT cust_name, address, tel FROM customer WHERE address LIKE '東京都%' ; CUST_NAME ADDRESS TEL -------------------- ---------------------------------------- -------------------- 松坂 宏 東京都千代田区 03-3158-XXXX 永井 光夫 東京都渋谷区 03-3124-XXXX 木田 直美 東京都中央区 03-3333-XXXX 片桐 昇 東京都新宿区 03-1111-XXXX 田中 正敏 東京都品川区 03-2222-XXXX 西口 和夫 東京都目黒区下目黒 03-3333-XXXX 山口 克巳 東京都大田区 03-4444-XXXX 米田 恵美子 東京都港区虎ノ門 03-3987-XXXX 松田 純一 東京都千代田区大手町 03-3975-XXXX 松下 晴彦 東京都板橋区 03-3123-XXXX 島田 良子 東京都渋谷区 03-3698-XXXX 藤田 幹夫 東京都中央区 03-3578-XXXX 12 レコードが選択されました。 --5. 売上明細表(sales)から売上NO(psales_no)が110番台の売上明細の売上明細NO(sales_no), 売上NO(psales_no), 商品ID(prod_id), 売価(price)を照会してください。このとき、売価(price)の逆順に表示してください。 SELECT sales_no, psales_no, prod_id, price FROM sales WHERE psales_no BETWEEN 100 AND 199 ORDER BY price DESC ; SALES_NO PSALES_NO PROD_ID PRICE ----------- ----------- ----------- ----------- 1 114 104 60000.00 1 111 101 30000.00 2 111 103 30000.00 1 113 103 30000.00 3 113 106 30000.00 1 116 106 30000.00 2 113 105 25000.00 1 115 105 25000.00 1 112 102 20000.00 9 レコードが選択されました。 --6. 商品表(product)から商品ID(prod_id)が 102, 104, 106 のいずれかの商品ID(prod_id)、商品名(prod_name)、限界割引単価(標準単価(cost)*限界割引率(discount))を照会してください。このとき、限界割引単価の逆順に表示してください。 SELECT prod_id, prod_name, cost*discount FROM product WHERE prod_id IN (102, 104, 106) ORDER BY cost*discount DESC ; PROD_ID PROD_NAME 3 ----------- -------------------- -------------------- 104 ステレオ 39200.0000 106 プリンタ 18800.0000 102 ビデオ 9600.0000 3 レコードが選択されました。 --7. 売上表(packedsales)から担当者ID(emp_id)の一覧表を表示してください。 SELECT DISTINCT emp_id FROM packedsales ; EMP_ID ----------- 1 2 3 4 5 5 レコードが選択されました。 --8. 担当者表(employee)から生年月日(birthday)が1970年7月1日以降で, 給与額(sal)が2000以上の担当者ID(emp_id), 担当者名(emp_name), 生年月日(birthday), 給与額(sal)を照会してください。このとき、給与額(sal)の逆順に表示してください。 SELECT emp_id, emp_name, birthday, sal FROM employee WHERE birthday >= '1970-07-01' AND sal >= 2000 ORDER BY sal DESC ; EMP_ID EMP_NAME BIRTHDAY SAL ----------- -------------------- ---------- ----------- 11 毛利光太郎 1970-12-31 8000.00 9 滝本 順三 1978-04-02 5000.00 8 西口 麻衣子 1986-12-14 3000.00 4 松村 秀和 1970-09-13 2975.00 6 岡田 奈緒子 1983-12-24 2850.00 7 井上 尚志 1971-10-17 2450.00 6 レコードが選択されました。 --9. 売上表(packedsales)から届け先住所(cust_address)が'渋谷区'で、届け予定日(delivery_date)が1996年にある顧客ID(cust_id), 届け先住所(cust_address), 届け予定日(delivery_date)の一覧表を表示してください。 SELECT cust_id, cust_address, delivery_date FROM packedsales WHERE cust_address LIKE '%渋谷区%' AND delivery_date BETWEEN '1996-01-01' AND '1996-12-31' ; CUST_ID CUST_ADDRESS DELIVERY_DATE ----------- ---------------------------------------- ------------- 9 東京都渋谷区広尾XX-X 1996-10-26 1 レコードが選択されました。 --10. 売上表(packedsales)から売上NO(psales_no)が200から800の間でなく, 担当者ID(emp_id)が2と4以外で, 顧客ID(cust_id)が2でないものの売上NO(psales_no), 担当者ID(emp_id), 顧客ID(cust_id), 届け先住所(cust_address)の一覧表を表示してください。 SELECT psales_no, emp_id, cust_id, cust_address FROM packedsales WHERE psales_no NOT BETWEEN 200 AND 800 AND emp_id NOT IN (2, 4) AND cust_id <> 2; ; PSALES_NO EMP_ID CUST_ID CUST_ADDRESS ----------- ----------- ----------- ---------------------------------------- 1001 1 1 和歌山県和歌山市 1005 3 5 東京都千代田区大手町 1006 3 6 東京都品川区西五反田XXX-XX 1009 5 9 東京都渋谷区広尾XX-X 1010 5 10 東京都中央区日本橋 1 1 1 和歌山県和歌山市 5 3 5 東京都千代田区大手町 6 3 6 東京都品川区西五反田XXX-XX 9 5 9 東京都渋谷区広尾XX-X 10 5 10 東京都中央区日本橋 111 1 1 和歌山県和歌山市 115 3 5 東京都千代田区大手町 116 3 6 東京都品川区西五反田XXX-XX 885 3 5 東京都千代田区大手町 886 3 6 東京都品川区西五反田XXX-XX 889 5 9 東京都渋谷区広尾XX-X 890 5 10 東京都中央区日本橋 17 レコードが選択されました。 --11. 顧客表(customer)から電話番号(tel)が03か06ではじまるもの以外の顧客の顧客ID(cust_id)、顧客名(cust_name)、電話番号(tel)を照会してください。 SELECT cust_id, cust_name, tel FROM customer WHERE tel NOT LIKE '03%' AND tel NOT LIKE '06%' ; CUST_ID CUST_NAME TEL ----------- -------------------- -------------------- 1 阪上 徹 073-123-XXXX 5 関根 修一 0724-99-XXXX 11 加藤 昭夫 044-505-XXXX 12 石橋 健太郎 011-555-XXXX 16 安井 和義 0560-448-XXXX 19 吉田 正也 044-888-XXXX 6 レコードが選択されました。