過去問解説見直し依頼(R3春午後問6)

GinSanaさん  
AP プラチナマイスター
(No.1)
管理人さんへ
平素よりお世話になっております。

https://www.ap-siken.com/kakomon/03_haru/pm06.html
応用情報技術者過去問題 令和3年春期 午後問6
設問3(1)g
の解説の
SELECT句に集約関数COUNTがあることから、GROUP BY句が必要であると判断できます。GROUP BY句を記述した場合、SELECT句に記述できる列はGROUP BY句で指定した列(とその列から一意に値を特定できる列)のみです。したがって、空欄にはSELECT句に記述されている(集計関数以外の)列でグループ化する「GROUP BY R.貸出予定年月日, R.駐車場ID, R.車種ID, R.会員ID」が当てはまります。
の部分について、いくつか見直しをお願いします。

SELECT句に集約関数COUNTがあることから、
→SELECT句に集合関数COUNTがあることから、

GROUP BY句を記述した場合、SELECT句に記述できる列はGROUP BY句で指定した列(とその列から一意に値を特定できる列)のみです。
→GROUP BY句を記述した場合、SELECT句に記述できる列はGROUP BY句で指定した列(あるいは式)と集合関数を記述した内容のみです。
(とその列から一意に値を特定できる列)の部分で先日GROUP BYの理解で誤認した例を掲示板で確認したため、すみませんが見直しをお願いします。
2025.04.06 15:09
管理人 
(No.2)
ご提案ありがとうございます。具体的な改善案まで提示していただき大変助かります。

空欄gの解説ですが、ご意見を踏まえて次のように見直しました。
SELECT句に集計関数のCOUNTがあることから、GROUP BY句が必要だと判断できます。GROUP BY句があるときSELECT句の列として指定できるのは、GROUP BY句で指定した列(式を含む)と集計関数に限定されます。逆から言えば、少なくともSELECT句に記述されている集計キー以外の列は、GROUP BY句でも指定されている必要があります。

図4のSELECT句には取得対象の列として、R.貸出予定年月日、R.駐車場ID、R.車種ID、R.会員ID、COUNT(*)の5つが指定されていますから、前4つの列はGROUP BY句でグループ化の対象としなければなりません。したがって、空欄には「GROUP BY R.貸出予定年月日, R.駐車場ID, R.車種ID, R.会員ID」が当てはまります。
ご提案では集合関数とされていましたが、その後の文章で集計関数と記述していたこと、Web上を調べたところ集計関数・集合関数・集約関数のうち集計関数が多く使われているように感じたので、集計関数としました。

※ジョー・セルコ著『プログラマのためのSQL』第4版では、Aggregate Functionsで集約関数となっていました。

お手数をおかけしますが、間違いがありましたらご指摘願えると幸いです。
2025.04.07 13:04
GinSanaさん  
AP プラチナマイスター
(No.3)
管理人さんへ
ご返信ありがとうございます。特段問題ないかと存じます。
私は集合関数以外の表記を知らなかったのもあり、一番多い表記が集計関数というのは初めて知りました。
2025.04.07 13:12
GinSanaさん  
AP プラチナマイスター
(No.4)
この投稿は投稿者により削除されました。(2025.04.07 19:18)
2025.04.07 19:18

返信投稿用フォーム

スパム防止のためにスレッド作成日から40日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop