SQL入門
SQL基礎問題1:最大在庫数を持つ製品の在庫金額

SQLの初心者向け入門解説、VBAからデータベースを扱うためのSQLを解説
公開日:2025-10-28 最終更新日:2025-11-03

SQL基礎問題1:最大在庫数を持つ製品の在庫金額


最大在庫数を持つ製品の在庫金額を求めるSQL問題です。


SQLの練習用になるべく単純なSQLで済む問題を出します。
SQLの練習として取り組んで見てください。

問題

SQL問題1:最大在庫数を持つ製品の在庫金額

「製品」テーブルに対して、製品IDが'P002'ではない製品の、最大在庫数を持つ製品の在庫金額(単価 * 在庫数)の合計を求めるSQL文を作成します。

SELECT SUM(単価 * 在庫数)
FROM 製品
WHERE (①)

①に入れるSQLを回答してください。
※結果は「2,250,000」です。


解答SQL

SQLite3
=QUERY3(
"SELECT SUM(単価 * 在庫数)
 FROM 製品
 WHERE 製品ID <> 'P002' AND 在庫数 = (SELECT MAX(在庫数) FROM 製品 WHERE 製品ID <> 'P002')")

SQLの解説
「P002以外」の行のうち、在庫数が最も多い行を選び、その行(複数ある場合は全部)の単価×在庫数 の合計を出すSQLです。

① SELECT SUM(単価 * 在庫数)
各行の「単価 × 在庫数」を計算し、その合計を求める。
② FROM 製品
データを取り出す表(Excelの範囲)を指定。
後で [製品$A1:D7] に置き換えられる。
③ WHERE 製品ID <> 'P002'
製品IDが "P002" ではない 行だけに絞る。
④ AND 在庫数 = (...)
この後ろのサブクエリと同じ在庫数の行だけを対象にする。
つまり「在庫数が最大の行」だけを選ぶ。
⑤ サブクエリ部分
(SELECT MAX(在庫数)
FROM ?tbl
WHERE 製品ID <> 'P002')

「P002以外」の中で在庫数の最大値(MAX) を求める。
これが上の条件に使われる。


Excel
=LET(sql,
"SELECT SUM(単価 * 在庫数)
 FROM ?tbl
 WHERE 製品ID <> 'P002'
 AND 在庫数 = (SELECT MAX(在庫数) FROM ?tbl WHERE 製品ID <> 'P002')",
QUERY(SUBSTITUTE(sql,"?tbl","[製品$A1:D7]")))

処理の流れ
LET でSQL文を変数 sql に入れる。
?tbl を実際の範囲 [製品$A1:D7] に置換。
QUERY 関数でそのSQLを実行(ADO使用)。

SQLの解説
「SQLite3」と同じです。
細部の記述ルールの違いだけです。


※SQLの作成及び解説には生成AIの助けを借りています。特に解説文においてはAI出力を多く使用しています。





同じテーマ「SQL入門」の記事

取得行数を限定するLIMIT句
分析関数(OVER句,WINDOW句)
「ADO + VBA」でSQLを実行するときのVBAサンプル
SQL基礎問題1:最大在庫数を持つ製品の在庫金額
SQL基礎問題2:文字列「-nn-」のnnが偶数のみ抽出
SQL基礎問題3:文字列の一部をキーにして集計
SQL基礎問題4:2つのテーブルの不一致を抽出
SQL基礎問題5:複数のマスタテーブルの結合
SQL基礎問題6:成績表から教科ごとの点数ベスト3を抽出
SQL基礎問題7:成績表から各教科の最高点と最低点を抽出
SQL基礎問題8:バスケット分析・ペア商品の出現回数


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ