どなたか、SQLについて教えてください。 条件 以下の中で最大値
どなたか、AccessのSQLについて教えてください。
Accessではなく一般的なSQLでもかまいません。
お願いいたします。
急に仕事でAccessSQLを使用して処理を行わなくてはならなくなりました。
まったくの素人のため、下記の条件で苦戦しております。
どなたか、よろしくお願いいたします。
下記のデータから、
ID 名前 個数
----+-------
AAA あああ 100
BBB いいい 200
CCC ううう 300
DDD えええ 400
EEE おおお 500
----+---------
個数350以下で、更に最大の値の値を求めたいです。
希望結果
---------------
BBB いいい 300
-----------------
個数350以下までは、わかるのですが、更に最大を求める部分がわかりません。
以上、よろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
Accessなら、たぶんこっちのほうが簡単なSQLだと思います。
SELECT TOP 1 * FROM テーブル1
WHERE 個数 <= 350
AND 名前 = "あああ"
ORDER BY 個数 DESC;
個数が350個以下で名前が"あああ"に該当するデータを個数の降順(大きい順)に並べ替え、その中から最初の1件を取得する。
という方法のSQLです。この"TOP n"の記述はAccessのほか、SQL Serverでも可能です。(たぶんMSの方言)
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)から求め
ます。
No.3
- 回答日時:
単に条件を追加するだけの話です。
SELECT MAX(個数) FROM テーブル
WHERE 個数<=350
AND 名前='あああ'
アポストロフィが付いたり、付かなかったりの
区別は分かりますよね。
また、条件結合はANDです。日本語で言うところの
「条件1で、条件2」は普通、「両方を満たす」と
解釈されます。
No.2
- 回答日時:
単純に「個数が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
-----------------
よろしくお願いいたします。
No.1
- 回答日時:
こんな感じでは…動作確認する環境がなくて試せてないけども。
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
-----------------
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MERGE文を単体テーブルに対して...
-
unionの結果は集計はできないで...
-
SET句内で複数の条件を指定して...
-
OracleのSQLについて質問があり...
-
INNER JOINの有用性
-
外部結合とor条件混在の記述方法
-
テーブル結合について
-
沿線コード
-
ACCESSで大量の更新を行うと「...
-
【SQL】existsでの商演算
-
実績累計の求め方と意味を教え...
-
Accessで別テーブルの値をフォ...
-
[VBA] ADOの Clone と AddNew
-
サブレンジ分割されたNDB(富士...
-
sqlplusの処理が途中でとまる
-
【至急】Accessでの大量データ...
-
アクセスでレポートの1印刷内...
-
ちなみになぜv=(v・e1)e1+(v・e...
-
"カレントレコードがありません...
-
ACCESSでテーブルのMAX値(文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
select句副問い合わせ 値の個...
-
SELECTの結果で同一行を複数回...
-
固定値を含む結合と複数テーブ...
-
MERGE文を単体テーブルに対して...
-
外部結合とor条件混在の記述方法
-
他のテーブルを参照した値はupd...
-
SET句内で複数の条件を指定して...
-
複数テーブルのMAX値の行データ...
-
SQLの書き方(チェックボックス)
-
SQL GROUPで件数の一番多いレコ...
-
unionの結果は集計はできないで...
-
oracleの分割delete
-
unionでマージした副問合せを結合
-
集計後の数値が倍になる
-
COUNTの取得方法(?)について...
-
updateの一括実行
-
サブクエリ同士をLEFT JOIN
-
DELETE 文とEXISTSの使い方につ...
おすすめ情報