• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:どなたか、SQLについて教えてください。 条件 以下の中で最大値)

SQLの基礎を学ぶ:個数350以下で最大値を求める方法

このQ&Aのポイント
  • SQLについて教えてください。条件として、個数350以下で最大の値を求めたいです。
  • AccessのSQLについても教えてください。下記のデータから、個数350以下で最大の値を求めたいです。
  • 急に仕事でAccessSQLを使用して処理を行わなくてはならなくなりましたが、個数350以下で最大の値を求める方法がわかりません。お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.5

Accessなら、たぶんこっちのほうが簡単なSQLだと思います。 SELECT TOP 1 * FROM テーブル1 WHERE 個数 <= 350 AND 名前 = "あああ" ORDER BY 個数 DESC; 個数が350個以下で名前が"あああ"に該当するデータを個数の降順(大きい順)に並べ替え、その中から最初の1件を取得する。 という方法のSQLです。この"TOP n"の記述はAccessのほか、SQL Serverでも可能です。(たぶんMSの方言)

SAKAI123
質問者

お礼

reset_catさん お礼が遅れてすいません。 ありがとうございました。

その他の回答 (5)

  • lesskey
  • ベストアンサー率33% (66/200)
回答No.6

もう答えでちゃってるけど、一応貼りますよ~。 …前回のはテーブル名抜けてましたね。(-_-;) select * from [table_name] where 個数 = ( select max(個数) from [table_name] where (個数 <= 350) AND (名前='あああ') )

SAKAI123
質問者

お礼

lesskeyさん お教えいただきありがとうございました。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

補足を良く見たらMAXだけじゃダメでしたね。 先ず、条件として「個数が350以下、名前が'あああ'」 この条件を満たすレコードの中で個数が最大のもの と、同じレコードを見つける わけですね。 SELECT A.* FROM テーブル AS A INNER JOIN (SELECT MAX(個数) AS 最大 FROM テーブル WHERE 個数<=350 AND 名前='あああ') AS B ON A.個数=B.最大 WHERE A.名前='あああ' ()内はサブクエリと言い、ここで条件を満たす個数が 最大のものを求めます。→B このサブクエリの最大個数と個数が一致し、かつ、 名前が「あああ」のものをテーブル(→A)から求め ます。

SAKAI123
質問者

お礼

nda23 さん ありがとうございました。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

単に条件を追加するだけの話です。 SELECT MAX(個数) FROM テーブル WHERE 個数<=350 AND 名前='あああ' アポストロフィが付いたり、付かなかったりの 区別は分かりますよね。 また、条件結合はANDです。日本語で言うところの 「条件1で、条件2」は普通、「両方を満たす」と 解釈されます。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

単純に「個数が350以下で、最大の個数」を求めます。 SELECT MAX(個数) FROM テーブル WHERE 個数<=350

SAKAI123
質問者

補足

lesskeyさん、nda23さん 教えていただきありがとうございました。 試してみましたら、うまくいきました。 しかし、私の質問内容に不足がございました。 もう少し教えていただけないでしょうか。 下記のデータから、 ID 名前 個数 ----+------- AAA あああ 100 AAA qqq 150 BBB あああ 200 CCC qqq 330 CCC あああ 300 CCC qqq 330 DDD あああ 400 DDD qqq 400 EEE あああ 500 ----+--------- 名前が”あああ”で、個数350以下で、更に個数が最大の値の値を求めたいです。 希望結果 ID、名前、個数を表示 --------------- CCC あああ 300 ----------------- よろしくお願いいたします。

  • lesskey
  • ベストアンサー率33% (66/200)
回答No.1

こんな感じでは…動作確認する環境がなくて試せてないけども。 select * from 個数 = ( select max(個数) from table where 個数 <= 350 )

SAKAI123
質問者

お礼

lesskeyさん、nda23さん 教えていただきありがとうございました。 試してみましたら、うまくいきました。 しかし、私の質問内容に不足がございました。 もう少し教えていただけないでしょうか。 下記のデータから、 ID 名前 個数 ----+------- AAA あああ 100 AAA qqq 150 BBB あああ 200 CCC qqq 330 CCC あああ 300 CCC qqq 330 DDD あああ 400 DDD qqq 400 EEE あああ 500 ----+--------- 名前が”あああ”で、個数350以下で、更に個数が最大の値の値を求めたいです。 希望結果 ID、名前、個数を表示 --------------- CCC あああ 300 ----------------- よろしくお願いいたします。

関連するQ&A