助け合いフォーラム

Oracle DB

Oracle Master Silver SQL 2019(1Z0-071)
問題ID : 26666
問題を開く
算術式を指定できる句として正しいものはどれですか(該当するものを全て選択してください)。

正解

SELECT句

WHERE句

GROUP BY句

HAVING句

ORDER BY句

解説

算術式はSELECT句だけではなく、FROM句を除く任意の句で使用できます。

以上より、
・SELECT句
・WHERE句
・GROUP BY句
・HAVING句
・ORDER BY句
が正解となります。

それぞれの句の機能は次の通りです。

 ・SELECT句 : データベースから取り出すデータを選択します
 ・FROM句 : データベースのどの表からデータを取り出すかを決定します
 ・WHERE句 : 条件に従って取り出すデータを制限します
 ・GROUP BY句 : 取り出すデータをグループ化します
 ・HAVING句 : 条件に従って取り出すグループを制限します
 ・ORDER BY句 : 取り出したデータをソートします

WHERE句からORDER BY句は、以降の分野で詳しく扱います。

参考

SELECT文でデータの検索を行う際、SELECT句には表の列名だけではなく、算術式を指定できます。算術式には列名,定数値(リテラル),算術演算子を記述します。
SQL文で使用できる算術演算子は次の通りです。


算術式で複数の演算子を用いた計算を行う場合は、演算子の優先順位に従って計算が行われます。
演算子の優先順位は次の通りです。


同じ優先順位の演算子が複数使われている場合は、左側の計算から順番に行われます。

例) 10 * 5 + 10 / 2 - 1

 1) 10 * 5 を計算 -> 結果は 50
 2) 10 / 2 を計算 -> 結果は 5
 3) 50 + 5 を計算 -> 結果は 55
 4) 55 - 1 を計算 -> 結果は 54

算術式の優先順位を変更したい場合は()括弧を使用します。()括弧を用いることで優先順位が高くなります。


 
SQLを表示
SELECT 10 * 5 + 5
FROM dual;


 
SQLを表示
SELECT 10 * (5 + 5)
FROM dual;


1つ目の例では 10 * 5 + 5 の計算を演算子の優先順位に従って計算しますので、 10 * 5 の計算結果に 5 を加算しますが、2つ目の例では ( 5 + 5 ) を先に計算し、その結果と 左の10 を乗算します。

なお、算術式はSELECT句だけではなく、FROM句を除く任意の句で使用できます。

※ dual表はDUMMYというVARCHAR2型の列に「X」というデータを持つ表です。データベースに接続できるユーザ(CREATE SESSION権限を持つ)なら誰でも使用できます。上記のように計算や関数の値を確認する場合などに使用します。
上に戻る

GROUP BY句への算術式の使用

投稿日 2023/03/10

GROUP BY句に「算術式」を指定するイメージが理解できません。
列名だけでも「算術式」と呼ぶ、ということでしょうか?

2023/03/12 10:33

「算術式」っていうと難しいですけど、結局は「式(expression)」のことですね。
https://docs.oracle.com/cd/F35743_01/sqlreferencefornosql/group-clause.html

具体例はここの記事を参照いただくと良いかと思います。
https://taityo-diary.hatenablog.jp/entry/2018/06/25/230207


コメント

c cent700

2023/03/12 15:17

ありがとうございます。 2番目の記事が大変参考になりました。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?