課題一覧

  1. 製品表の行数を表示させなさい(どの列にNULL があるか知らないものとする)。
  2. 異なる製品名の総数を表示させなさい。
  3. 工場番号F4 で生産される製品たちで生産量が一番少ないものの生産量を表示させなさい。
  4. 工場番号F2 で生産される製品たちで生産量が一番多いものの製品名と生産量を表示させなさい。
  5. 全ての製品について製品番号と全国での総生産量を表示させなさい(S7 の生産量はNULL が返ってもよい)。
  6. 東京の工場で生産量が10 よりも大きい製品について、製品番号と全国での総生産量を表示させなさい。
  7. 製品名、型、およびそれら毎の総生産量を表示させなさい。ただし、製品名は全て文字を大文字にして表示させること(S7 の情報も含める)。
  8. 工場番号F4 の生産量の総数を1000 個単位ではなく1 個単位で表示させなさい。
  9. 各製品について総生産量が50 以上のものに対し、その製品番号と総生産量を求めなさい。
  10. 神戸以外の工場の生産状況を考える。最大生産量が30 未満の製品に対し、その製品番号と最大生産量を表示させなさい。

解答一覧

1.製品表の行数を表示させなさい(どの列にNULL があるか知らないものとする)。

構文例:USE nagano_DB

SELECT COUNT (*)AS"製品表行数"
FROM seihin

2.異なる製品名の総数を表示させなさい。

構文例:USE nagano_DB

SELECT COUNT(DISTINCT name)AS"name"
FROM seihin

3.工場番号F4 で生産される製品たちで生産量が一番少ないものの生産量を表示させなさい。

構文例:USE nagano_DB

SELECT MIN(prod_qty)AS"prod_qty"
FROM seisan
WHERE seisan.fact_id='F4'

4.工場番号F2 で生産される製品たちで生産量が一番多いものの製品名と生産量を表示させなさい。

構文例:USE nagano_DB

SELECT name,prod_qty
FROM seisan,seihin
WHERE seihin.prod_id = seisan.prod_id
AND fact_id = 'F2'AND prod_qty = (SELECT MAX(prod_qty) FROM seisan WHERE fact_id = 'F2')

5.全ての製品について製品番号と全国での総生産量を表示させなさい(S7 の生産量はNULL が返ってもよい)。

構文例:USE nagano_DB

SELECT seihin.prod_id,SUM(prod_qty)
FROM seihin LEFT OUTER JOIN seisan ON seihin.prod_id=seisan.prod_id GROUP BY seihin.prod_id

6.東京の工場で生産量が10 よりも大きい製品について、製品番号と全国での総生産量を表示させなさい。

構文例:USE takaoka_DB

----生産表から製造番号と全国の製品毎の総生産量を表示----
SELECT prod_id,SUM(prod_qty) AS "総生産量(全国)" FROM seisan

----東京工場の生産量が10よりも大きい製品の番号を生産表から抽出----
WHERE prod_id = ANY(SELECT prod_id FROM seisan WHERE fact_address = 'Tokyo'
AND prod_qty > 10) GROUP BY prod_id

7.製品名、型、およびそれら毎の総生産量を表示させなさい。ただし、製品名は全て文字を大文字にして表示させること(S7 の情報も含める)。

構文例:USE nagano_DB

----製品表と生産表から製品名(大文字),型,それらの総生産量を表示(S7も含め
る)----
SELECT UPPER(name) AS "製品名",type,SUM(prod_qty) AS "総生産量" FROM seihin LEFT OUTER JOIN seisan ON seihin.prod_id = seisan.prod_id GROUP BY name,type


----製品名で整列(見やすくするため)---
ORDER BY name DESC

8.工場番号F4 の生産量の総数を1000 個単位ではなく1 個単位で表示させなさい。

構文例:USE nagano_DB

SELECT fact_id ,SUM(prod_qty) * 1000
FROM seisan
WHERE seisan.fact_id='F4'
GROUP BY fact_id

9.各製品について総生産量が50 以上のものに対し、その製品番号と総生産量を求めなさい。

構文例:USE nagano_DB

SELECT prod_id,SUM(prod_qty) AS "総生産量" FROM seisan GROUP BY prod_id HAVING SUM(prod_qty) >= 50

10.神戸以外の工場の生産状況を考える。最大生産量が30 未満の製品に対し、その製品番号と最大生産量を表示させなさい。

構文例:USE nagano_DB

----生産表から製造番号、最大生産量を表示----
SELECT prod_id,MAX(prod_qty) AS "総生産量" FROM seisan

----神戸以外の工場で生産量が30未満の列のみ抽出し、製品番号毎にまとめる
WHERE fact_address != 'Kobe' GROUP BY prod_id HAVING MAX(prod_qty) < 30