SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

直近開催のイベントはこちら!

HRzine×SmartHR 人材・組織活性化フォーラム

2024年12月6日(金)13:00~15:30

主要製品スペック一覧

人事業務の効率・確度・精度を高めるために欠かせないHRテクノロジー。その主な製品の機能を分野ごとに比較できる資料群です。製品検討の参考資料としてご活用ください。

eラーニング・LMS<br>主要製品スペック一覧 2024

eラーニング・LMS
主要製品スペック一覧 2024

その他のスペック一覧

人事労務管理システム<br>主要製品スペック一覧 2023

人事労務管理システム
主要製品スペック一覧 2023

タレントマネジメントシステム<br>主要製品スペック一覧 2023

タレントマネジメントシステム
主要製品スペック一覧 2023

落とし穴はこれで回避! Oracle DB 12c SQL基礎 弱点克服スクール | 第6回

SQL関数振り返り ~ 文字列関数・日付関数・数値関数・変換関数・条件式・グループ関数


  • Facebook
  • X
  • Pocket
  • note
  • hatena

 何度も言いますが、出題頻度が多い関数。せっかく難しいといわれる結合や副問合せを理解しても、関数が含まれていたがために失点したという残念な結果にならぬよう、前回宣言したとおり、今回は関数に関する総合問題に挑戦してみます!

  • Facebook
  • X
  • Pocket
  • note
  • hatena

変換関数の書式

早速ですが、1問目です。

問1

各年度ごとの入社人数を求めるためのSQLを作成しました。 正しい説明を選択しなさい。

SELECT TO_CHAR(hire_date,'yyyy'),COUNT(*)
FROM employees
GROUP BY TO_CHAR(hire_date,'rr');
  • a. 正常に実行され、正しく出力される
  • b. GROUP BY句でTO_CHAR関数は使用できないので、エラーが発生する
  • c. 正常に実行されるが、正しくない出力が行われる
  • d. SELECT句とGROUP BY句でTO_CHAR関数の戻す値が異なるので、エラーが発生する

実行例を見てみましょう。

SQL> SELECT TO_CHAR(hire_date,'yyyy'),COUNT(*)
  2  FROM employees
  3  GROUP BY TO_CHAR(hire_date,'rr');
SELECT TO_CHAR(hire_date,'yyyy'),COUNT(*)
               *
行1でエラーが発生しました。:
ORA-00979: GROUP BYの式ではありません。

実行例から分かるようにエラーになるので、選択肢aとcは不正解であることが分かります。 では、エラーになる理由ですが、次のことを思い出してください。

復習ポイント1

グループ処理を行う(SQL文内でグループ関数を使う)場合、SELECT句、HAVING句、ORDER BY句では、グループ関数またはGROUP BY句で指定した列を記述する。

SELECT句とGROUP BY句のどちらも、TO_CHAR関数の引数としてhire_date列を使用していますから、上記の復習ポイント1の内容を満たしているのでは?と思ったかもしれません。しかし、TO_CHAR関数の第2引数はrryyyyで一致していませんね。

rryyyyと同様に西暦を表す書式です。 yyと同様、西暦の下2桁を表しますが、表1に示す特徴があります。

表1:rr書式
  指定された西暦の下2桁
0~49 50~99
現在の
西暦の
下2桁
0~49 戻される西暦の上2桁は
今の100年
戻される西暦の上2桁は
1つ前の100年
50~99 戻される西暦の上2桁は
1つ先の100年
戻される西暦の上2桁は
今の100年

現在は西暦2016年、つまり西暦の下2桁は「0~49」なので、rr書式での「20」は今の100年である現世紀(2000年代)の「2020年」を表します。 また、rr書式での「99」は1つ前の100年である前世紀(1900年代)の「1999年」を表します。

変換関数の書式は全般に出題頻度が高いのですが、rr書式もやはり出題されやすいので、表1の内容をしっかり頭に入れておきましょう。

復習ポイント2

rr書式では、値の範囲によって西暦上2桁が決まる!

さて、問1の解説に戻りますが、GROUP BY句にTO_CHAR関数を含めた単一行関数が使用できないわけではありません(選択肢bは不正解)。本設問で大事なのは、SELECT句に使用されている列は、GROUP BY句に指定された列であるかどうかです。

引数が違えば関数が戻す値も異なりますから、GROUP BY句に単一行関数が含まれる場合、引数も同じでなければいけません。したがって、問1の正解は選択肢dです。類似問題が出題された場合は、引数も確認した上で解答しましょう。

次のページ
関数の入れ子(ネスト)

この記事は参考になりましたか?

  • Facebook
  • X
  • Pocket
  • note
  • hatena
めざせオラクルマスターホルダー! Oracle DB 12c SQL基礎 弱点克服スクール連載記事一覧

もっと読む

この記事の著者

林 優子(ハヤシ ユウコ)

日本オラクル株式会社の教育ビジネスのスタートアップを全面的に支援し、バージョン5の頃からOracleに携わるベテラン講師として知る人も多い。Oracle認定講師を表彰するExcellent Instructorを連続受賞。1ランク上のITスペシャリスト育成を目標に、データベース分野にとどまらず「プレゼンテーション」、「ロジカルシンキング」などのトレーニングも手がけている。著書に『オラクルマスター教科書』シリーズ(翔泳社)、『プロとしてのデータモデリング入門』(SBクリエイティブ)など。その他、雑誌執筆、著書・メディア出演も多数。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事をシェア

  • Facebook
  • X
  • Pocket
  • note
  • hatena
HRzine
https://hrzine.jp/article/detail/176 2016/09/12 19:10

Special Contents

AD

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

2024年12月6日(金)13:00~15:30

イベントカレンダーを見る

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング