- ベストアンサー
SQLの基礎を学ぶ:個数350以下で最大値を求める方法
- SQLについて教えてください。条件として、個数350以下で最大の値を求めたいです。
- AccessのSQLについても教えてください。下記のデータから、個数350以下で最大の値を求めたいです。
- 急に仕事でAccessSQLを使用して処理を行わなくてはならなくなりましたが、個数350以下で最大の値を求める方法がわかりません。お願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Accessなら、たぶんこっちのほうが簡単なSQLだと思います。 SELECT TOP 1 * FROM テーブル1 WHERE 個数 <= 350 AND 名前 = "あああ" ORDER BY 個数 DESC; 個数が350個以下で名前が"あああ"に該当するデータを個数の降順(大きい順)に並べ替え、その中から最初の1件を取得する。 という方法のSQLです。この"TOP n"の記述はAccessのほか、SQL Serverでも可能です。(たぶんMSの方言)
その他の回答 (5)
- lesskey
- ベストアンサー率33% (66/200)
もう答えでちゃってるけど、一応貼りますよ~。 …前回のはテーブル名抜けてましたね。(-_-;) select * from [table_name] where 個数 = ( select max(個数) from [table_name] where (個数 <= 350) AND (名前='あああ') )
お礼
lesskeyさん お教えいただきありがとうございました。
- nda23
- ベストアンサー率54% (777/1415)
補足を良く見たら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)から求め ます。
お礼
nda23 さん ありがとうございました。
- nda23
- ベストアンサー率54% (777/1415)
単に条件を追加するだけの話です。 SELECT MAX(個数) FROM テーブル WHERE 個数<=350 AND 名前='あああ' アポストロフィが付いたり、付かなかったりの 区別は分かりますよね。 また、条件結合はANDです。日本語で言うところの 「条件1で、条件2」は普通、「両方を満たす」と 解釈されます。
- nda23
- ベストアンサー率54% (777/1415)
単純に「個数が350以下で、最大の個数」を求めます。 SELECT MAX(個数) FROM テーブル WHERE 個数<=350
補足
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)
こんな感じでは…動作確認する環境がなくて試せてないけども。 select * from 個数 = ( select max(個数) from table where 個数 <= 350 )
お礼
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 ----------------- よろしくお願いいたします。
お礼
reset_catさん お礼が遅れてすいません。 ありがとうございました。