データベースの基礎

社員表の部署の列に、上の行から順に 営業、開発、営業、総務、開発、営業 の値が入っている(全6行)。SELECT DISTINCT 部署 FROM 社員 の結果は何行になるか。

  1. A2行
  2. B3行
  3. C6行
答えと解説を見る

正解:B. 3行

DISTINCTは、結果から重複した行を取り除き、同じ値を1行にまとめます。部署の値の種類は営業、開発、総務の3つなので、結果は3行です。DISTINCTを付けずに SELECT 部署 FROM 社員 とすると、重複を含めて6行がそのまま返ります。2行は、2回以上現れる部署(営業と開発)だけを数えた場合の数で、これは SELECT 部署 FROM 社員 GROUP BY 部署 HAVING COUNT(*) >= 2 のような問い合わせの結果に当たります。

  • A. 2回以上現れる営業と開発だけを数えた数です。1回だけの総務も1行として残ります。
  • B. 正しい。重複を取り除くと、営業、開発、総務の3行になります。
  • C. DISTINCTを付けないときの行数です。
この分野を解く 分野ページへ

関連する計算ツール

データベースの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データベースの基礎のほかの問題

  1. SQLで DELETE FROM 社員 を、WHERE句を付けずに実行したときの結果として正しいものはどれか。
  2. 試験表の点数の列に、80、NULL、70、90 の4つの値がある(NULLは未受験を表す)。SELECT AVG(点数) FROM 試験 の結果はどれか。
  3. 成績表の点数の列に、50、NULL、70、NULL、90、30 の6つの値がある。SELECT COUNT(*), COUNT(点数), AVG(点数) FROM 成績 の結果を順に並べたものはどれか。
  4. 社員表(社員番号, 部署, 給与)から、部署ごとの平均給与が300以上の部署と、その平均給与を求めたい。正しいSQL文はどれか。
  5. 売上表(店舗, 金額)に、(A, 500)、(A, 700)、(B, 300)、(B, 400)、(C, 1200)、(D, 200)、(D, 900) の7行がある。SELECT 店舗, SUM(金額) FROM 売上 GROUP BY 店舗 HAVING SUM(金額) >= 1000 の結果は何行になるか。