「AP過去問 令和5年度秋期 午前 問29」の版間の差分

提供:yonewiki
(ページの作成:「AP過去問 令和6年度春期 午前 問題に戻る AP過去問 令和6年度春期 午前 問28前の問題へ AP過去問 令和6年度春期 午前 問30次の問題へ   =='''問29(問題文)'''==  "製品"表と"在庫"表に対し、次のSQL文を実行した結果として得られる表の行数は幾つか。 ア 1 イ 2 ウ 3 エ 4   =='''回答・解説'''==   A…」)
 
 
(同じ利用者による、間の8版が非表示)
1行目: 1行目:
[[AP過去問 令和6年度春期 午前#問題|AP過去問 令和6年度春期 午前 問題]]に戻る
<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過去問 令和6年度春期 午前 問28]]前の問題へ
[[AP過去問 令和5年度秋期 午前 問28]]前の問題へ


[[AP過去問 令和6年度春期 午前 問30]]次の問題へ
[[AP過去問 令和5年度秋期 午前 問30]]次の問題へ


 
 
9行目: 14行目:
=='''問29(問題文)'''==
=='''問29(問題文)'''==
 "製品"表と"在庫"表に対し、次のSQL文を実行した結果として得られる表の行数は幾つか。
 "製品"表と"在庫"表に対し、次のSQL文を実行した結果として得られる表の行数は幾つか。
[[ファイル:AP R5 2Fall AMQ29 Fig1.png|400px||none|]]




22行目: 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>


 が答えです。


 
 




[[AP過去問 令和6年度春期 午前 問28]]前の問題へ
[[AP過去問 令和5年度秋期 午前 問28]]前の問題へ


[[AP過去問 令和6年度春期 午前 問30]]次の問題へ
[[AP過去問 令和5年度秋期 午前 問30]]次の問題へ


[[AP過去問 令和6年度春期 午前#問題|AP過去問 令和6年度春期 午前 問題]]に戻る
[[AP過去問 令和5年度秋期 午前#問題|AP過去問 令和5年度秋期 午前 問題]]に戻る

2025年5月22日 (木) 22:40時点における最新版

AP過去問 令和5年度秋期 午前 問題に戻る

AP過去問 令和5年度秋期 午前 問28前の問題へ

AP過去問 令和5年度秋期 午前 問30次の問題へ

 

問29(問題文)

 "製品"表と"在庫"表に対し、次のSQL文を実行した結果として得られる表の行数は幾つか。


AP R5 2Fall AMQ29 Fig1.png


ア 1

イ 2

ウ 3

エ 4

 

回答・解説

このSQL文の意味は、次の通りです。

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次の問題へ

AP過去問 令和5年度秋期 午前 問題に戻る