「AP過去問 令和5年度秋期 午前 問29」の版間の差分
編集の要約なし |
(→回答・解説) |
||
(同じ利用者による、間の6版が非表示) | |||
1行目: | 1行目: | ||
<yjavascript></script><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/vs2015.css"> | |||
<link rel="stylesheet" href="https://wiki.yo-net.jp/custom.css"> | |||
<script src="https://wiki.yo-net.jp/highlight/highlight.js"></script> | |||
<script src="https://wiki.yo-net.jp/custom.js"></script> | |||
<script></yjavascript> | |||
[[AP過去問 令和5年度秋期 午前#問題|AP過去問 令和5年度秋期 午前 問題]]に戻る | [[AP過去問 令和5年度秋期 午前#問題|AP過去問 令和5年度秋期 午前 問題]]に戻る | ||
25行目: | 30行目: | ||
=='''回答・解説'''== | =='''回答・解説'''== | ||
このSQL文の意味は、次の通りです。 | |||
<freescript></script><div class="hljs-wrap"><pre data-label="sql" class="pre-wrap" data-line-num-start="1" data-max-lines="5"><code class="sql">SELECT DISTINCT 製品番号 FROM 製品 | |||
WHERE NOT EXISTS ( | |||
SELECT 製品番号 FROM 在庫 | |||
WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号 | |||
)</code></pre></div><script></freescript> | |||
このクエリは、'''在庫数が31以上の在庫が一つも存在しない製品番号'''を製品表から抽出しています。つまり、'''どの倉庫にも在庫数が31以上あるレコードが存在しない製品だけ'''を抽出します。 | |||
EXIST句の中の副問合せの結果で以下のようなテーブルが得られます。 | |||
<yjavascript></script> | |||
<style> | |||
table.Sample th { | |||
background-color: #d0e0ff; /* ヘッダーの背景色(例:薄い青) */ | |||
} | |||
table.Sample td { | |||
background-color: #f9f9f9; /* データセルの背景色(例:薄いグレー) */ | |||
} | |||
</style> | |||
<script></yjavascript> | |||
<div align="left"><div align="left" style="display: inline-block;"><div style="width: 100%; text-align: center;">在庫テーブル</div> | |||
<table class="Sample" style="border-collapse: collapse; width: 100%;"> | |||
<tr style="border: 2px solid black;"> | |||
<th style="border: 2px solid black; text-align: left;">倉庫コード</th> | |||
<th style="border: 2px solid black; text-align: left;">製品番号</th> | |||
<th style="border: 2px solid black; text-align: left;">在庫数</th> | |||
</tr> | |||
<tr style="border: 2px solid black;"> | |||
<td style="border: 2px solid black;">WH100</td> | |||
<td style="border: 2px solid black;">CC5001</td> | |||
<td style="border: 2px solid black;">200</td> | |||
</tr> | |||
<tr style="border: 2px solid black;"> | |||
<td style="border: 2px solid black;">WH100</td> | |||
<td style="border: 2px solid black;">ZZ9900</td> | |||
<td style="border: 2px solid black;">130</td> | |||
</tr> | |||
<tr style="border: 2px solid black;"> | |||
<td style="border: 2px solid black;">WH101</td> | |||
<td style="border: 2px solid black;">AB1805</td> | |||
<td style="border: 2px solid black;">150</td> | |||
</tr> | |||
<tr style="border: 2px solid black;"> | |||
<td style="border: 2px solid black;">WH103</td> | |||
<td style="border: 2px solid black;">CC5001</td> | |||
<td style="border: 2px solid black;">40</td> | |||
</tr> | |||
</table> | |||
</div> | |||
</div> | |||
各製品について在庫表を確認していきます。 | |||
1. AB1805(CD-ROMドライブ) | |||
WH100: 20 | |||
WH101: 150 → 在庫数 > 30 あり → 対象外 | |||
2. CC5001(デジタルカメラ) | |||
WH100: 200 | |||
WH103: 40 → 両方とも > 30 → 対象外 | |||
3. MZ1000(プリンタA) | |||
在庫表に存在しない → 在庫数 > 30 のレコードが存在しない → 対象 | |||
4. XZ3000(プリンタB) | |||
WH101: 30 | |||
WH102: 20 → どちらも在庫数 <= 30 → 対象 | |||
5. ZZ9900(イメージスキャナ) | |||
WH100: 130 → 在庫数 > 30 → 対象外 | |||
WH102: 10 | |||
よって、該当する製品は以下の'''2件'''です。以下のようなテーブルが得られます。 | |||
<div align="left"><div align="left" style="display: inline-block;"><div style="width: 100%; text-align: center;">製品テーブル</div> | |||
<table class="Sample" style="border-collapse: collapse; width: 100%;"> | |||
<tr style="border: 2px solid black;"> | |||
<th style="border: 2px solid black; text-align: left;">製品番号</th> | |||
<th style="border: 2px solid black; text-align: left;">製品名</th> | |||
<th style="border: 2px solid black; text-align: left;">単価</th> | |||
</tr> | |||
<tr style="border: 2px solid black;"> | |||
<td style="border: 2px solid black;">MZ1000</td> | |||
<td style="border: 2px solid black;">プリンタA</td> | |||
<td style="border: 2px solid black;">54,000</td> | |||
</tr> | |||
<tr style="border: 2px solid black;"> | |||
<td style="border: 2px solid black;">XZ3000</td> | |||
<td style="border: 2px solid black;">プリンタB</td> | |||
<td style="border: 2px solid black;">78,000</td> | |||
</tr> | |||
</table> | |||
</div> | |||
</div> | |||
*MZ1000 | |||
*XZ3000 | |||
のレコードの2件です。 | |||
したがって | |||
<span style = "background:linear-gradient(transparent 75%, #7fbfff 75%); font-weight:bold; "> | |||
イ</span> | |||
が答えです。 | |||
2025年5月22日 (木) 22:40時点における最新版
AP過去問 令和5年度秋期 午前 問28前の問題へ
AP過去問 令和5年度秋期 午前 問30次の問題へ
問29(問題文)
"製品"表と"在庫"表に対し、次のSQL文を実行した結果として得られる表の行数は幾つか。
ア 1
イ 2
ウ 3
エ 4
回答・解説
このSQL文の意味は、次の通りです。
SELECT DISTINCT 製品番号 FROM 製品
WHERE NOT EXISTS (
SELECT 製品番号 FROM 在庫
WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号
)
sql
このクエリは、在庫数が31以上の在庫が一つも存在しない製品番号を製品表から抽出しています。つまり、どの倉庫にも在庫数が31以上あるレコードが存在しない製品だけを抽出します。
EXIST句の中の副問合せの結果で以下のようなテーブルが得られます。
在庫テーブル
倉庫コード | 製品番号 | 在庫数 |
---|---|---|
WH100 | CC5001 | 200 |
WH100 | ZZ9900 | 130 |
WH101 | AB1805 | 150 |
WH103 | CC5001 | 40 |
各製品について在庫表を確認していきます。
1. AB1805(CD-ROMドライブ) WH100: 20
WH101: 150 → 在庫数 > 30 あり → 対象外
2. CC5001(デジタルカメラ) WH100: 200
WH103: 40 → 両方とも > 30 → 対象外
3. MZ1000(プリンタA) 在庫表に存在しない → 在庫数 > 30 のレコードが存在しない → 対象
4. XZ3000(プリンタB) WH101: 30
WH102: 20 → どちらも在庫数 <= 30 → 対象
5. ZZ9900(イメージスキャナ) WH100: 130 → 在庫数 > 30 → 対象外
WH102: 10
よって、該当する製品は以下の2件です。以下のようなテーブルが得られます。
製品テーブル
製品番号 | 製品名 | 単価 |
---|---|---|
MZ1000 | プリンタA | 54,000 |
XZ3000 | プリンタB | 78,000 |
- MZ1000
- XZ3000
のレコードの2件です。
したがって
イ
が答えです。
AP過去問 令和5年度秋期 午前 問28前の問題へ
AP過去問 令和5年度秋期 午前 問30次の問題へ