rink_rewさんの投稿一覧
一応空白は入ってるように見えますが、解説に載っている出力結果のキャプチャの通り、本来はもっと空白が長い(月の単語の中で一番長いSeptemberに合わせているらしい)はずではありますね。
ただ、FMをつけた場合は、空白が全くなくなり、月の単語とカンマが隣接するので、正当の選択肢にFMがないこと自体は正しいと言える思います。
SQL> SELECT TO_CHAR(SYSDATE, 'Ddspth "of" Month, YYYY') FROM dual;
TO_CHAR(SYSDATE,'DDSPTH"OF"MONTH,YYYY')
------------------------------------------------------------
Twenty-Third of March , 2025
SQL> SELECT TO_CHAR(SYSDATE, 'Ddspth "of" FMMonth, YYYY') FROM dual;
TO_CHAR(SYSDATE,'DDSPTH"OF"FMMONTH,YYYY')
------------------------------------------------------------
Twenty-Third of March, 2025
SQL>
「現在、コミットしていないトランザクションがない」は、その後に示されているDELETE文が、トランザクションの途中で実行される訳ではないという前提を示しているだけです。SQL Plusなどで新規に接続した直後をイメージすると良いと思います。
その上で、解説にもある通りDELETE文はDMLであり、DELETE文の実行で新しいトランザクションが開始され、コミットされるまではROLLBACKが可能です。
横から失礼します。
ChatGPTの回答云々は一旦おいておいて、単純に本設問を確認してみました。
- 結合しようとしている2つの表がある。
- それぞれの表に、同名の列が2つある。
- 同名の列2つのうち、1つは型も一致、もう1つは型が異なる。
このような状況だと仮定して、回答の選択肢と解説をみると、
- 結合する2つの表の一部の列を結合列として使用する場合
USING句で結合列を指定することで、同名の列が複数ある場合に一部の列だけを結合列として使用できる。
USING句を使用するケースとして適切。
- 結合する2つの表に同じ列名でデータ型の異なる列がある場合
USING句で「同名だが型が異なる列ではない、もう一方の同名の列」を結合列として指定することで、エラーなく結合できる。
※ 前述の#1のケースと意図は同じようなもので、同名の列が複数ある場合にそのうちいずれか1つを指定して、他の同名の列は結合に使用しないというもの。
ちなみに、ChatGPTの回答で正答とされている「結合列の値が一方の表にしか存在しない場合」ですが、これは解説にもある通り「USING句」云々というより「外部結合」の特徴・用途と考える方が妥当かなと思いました。(もちろん外部結合の中でUSING句を使うことはできますが、「結合列の値が一方の表にしか存在しない場合」と「USING句」は試験問題として出題されてきたら、私個人的には話として直接繋がらない印象です)
私の理解がずれているかもしれません。的外れなコメントとなっていたらすみません。
EMPLOYEES表のレコードはEMPLOYEES_IDをキーに、その従業員の名前や上司の情報が格納されているものだと思いますが、MANAGER_ID列自体は「その従業員の上司のEMPLOYEE_ID」を表していて、その従業員に上司がいなければ空です。
本設問の問題文では、
EMPLOYEE_IDが「1008」の従業員と上司が同じである従業員の名前と、上司のEMPLOYEE_IDを出力します。
となっていますが、ここで「上司のEMPLOYEE_ID」の代わりに「上司のMANAGER_ID」と言ってしまうと、「上司の上司のEMPLOYEE_ID」を出力したいということになります。
解説にある正解の実行結果を見ると、列名は MANAGER_ID になりますが、実際に表示されているのは「上司のEMPLOYEE_ID」です。
実務でこういう出力を求めるシチュエーションなら、列別名とかつけると見やすいかなとは思いますけど、ちょっと趣旨から外れますね。