2005年02月18日

[ テクニカルエンジニア(データベース)/H15 ]

H15午後I 問2 SQL俯瞰

H15午後I 問2(ITEC 2005予想問題集 午後I 問2-1)

設問1(1):外結合

SELECT 部門.部門コード, 部門.部門名, COUNT(社員.社員番号),
  COUNT(受講集計.社員番号),
  SUM(年間受講ポイント数 + 繰越ポイント数),
  SUM(使用ポイント数)
FROM 部門, 社員 LEFT JOIN
  (SELECT 社員番号, SUM(受講ポイント数) AS 使用ポイント数
  FROM 受講, コース
  WHERE 受講.コースコード = コース.コースコード
  AND 受講開始年月日 BETWEEN '2002-04-01' AND '2002-09-30'
  GROUP BY 社員番号 ) 受講集計
  ON 社員.社員番号 = 受講集計.社員番号
WHERE 部門.部門コード = 社員.部門コード
GROUP BY 部門.部門コード, 部門.部門名
ORDER BY 部門.部門コード



設問1(2):IN演算子

SELECT コース.コースコード, コース.コース名
FROM コース, 必修コース, 社員
WHERE 社員番号 = 123456
AND 必修コース.コースコード = コース.コースコード
AND (必修コード.担当職務コード = 社員.担当職務コード1 OR
  必修コード.担当職務コード = 社員.担当職務コード2
)
AND コース.コースコード NOT IN
  (SELECT コースコード
  FROM 受講
  WHERE 社員番号 = 123456
)



設問2(2):外結合

SELECT 部門.部門コード, 部門.部門名, COUNT(社員.社員番号),
  COUNT(受講集計.社員番号),
  SUM((年間受講ポイント数 + 繰越ポイント数) * 兼務比率) AS 利用可能ポイント数合計,
  SUM(使用ポイント数 * 兼務比率) AS 利用ポイント数合計
FROM 部門, 所属, 社員 LEFT JOIN
  (SELECT 社員番号, SUM(受講ポイント数) AS 使用ポイント数
  FROM 受講, コース
  WHERE 受講.コースコード = コース.コースコード
  AND 受講開始年月日 BETWEEN '2002-04-01' AND '2002-09-30'
  GROUP BY 社員番号 ) 受講集計
  ON 社員.社員番号 = 受講集計.社員番号
WHERE 部門.部門コード = 所属.部門コード AND 所属.社員番号 = 社員.社員番号
GROUP BY 部門.部門コード, 部門.部門名
ORDER BY 部門.部門コード

Posted by g@kko at 2005/02/18 12:28 | 個別記事表示 | コメントを見る (0) |
この記事をLicWikiに埋め込む:
コメント