こんにちは。
[TBL] キーは A B DD Cです。
A B DD C E
1 2 21 7 .....
1 2 21 8 .....
1 2 22 3 .....
1 2 22 8 .....
1 2 22 9 .....
3 1 2 1 .....
3 3 4 2 .....
から、A=1 B=2の数の最大レコード数をカウントしたいです。
但し、DDは同じ数なことが条件です。
上でいうと、D=22のものが3つあり、D=21のものが2つあるので、最大は3ということで、3を取得したいです。
select count(*) FROM TBL where A=1 AND B=2 GROUP BY C
に近い感じだとはおもうのですが。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
サブクエリのところだけ単独で実行してみましたか?
SELECT 1 AS KEY,COUNT(*) AS CNT FROM TBL
WHERE A=1 AND B=2 GROUP BY DD
KEY CNT
-----------
1 2 ← DD=21のレコード数
1 3 ← DD=22のレコード数
こうなるはずです。ここからKEYをグループ化項目に
指定し、MAX(CNT)を得るとどうなりますか?
3ですね。つまり、グループ化項目を同じにするため、
定数1を出力し、KEYというフィールド名を与えて
いるのです。
応用なので、HPをいくら検索しても出てこないでしょうし、
こんなことが書いてある本も世の中に無いと思いますよ。
サブクエリという技法をご存知でしたか?知っていたなら、
その部分を抜き出して実行してみる事です。今回、初めて
というなら、データを加工する順に入れ子にするという技
ですので、是非覚えてください。
バタバタしてて、回答が遅くなってしまいすみません。
サブクエリ勉強になりました!ありがとうございます。
最後にもしよかったらでよいのですが、さらに応用もできたら嬉しいのですが、
上記で、DD=22で、3というマックスレコード値を取得できたのですが、
これを、WHERE A=1 AND B=2というくくりに加え、
DDを昇順に並び替えたもので、上位から4レコードずつに対して、それぞれ同じくMAXレコードを取得できるものでしょうか?
ここまでくるとなかなか作成が難しいです。
A B DD C E
1 2 1 7 .....
1 2 2 1 .....
1 2 3 3 .....
1 2 21 7 .....
1 2 21 8 .....
1 2 22 3 .....
1 2 22 8 .....
1 2 22 9 .....
上記でいうと、最初に 2という値を取得でき、次に3という値を取得するかたちです。
難しければ、別途に致します。
色々とありがとうございました。
No.1
- 回答日時:
先にSQLを考えるのは止めましょう。
理論の組み立てが大事です。
先ず、A=1 B=2 は抽出条件です。
次に、DD毎にレコード数をを求め、これの最大を
求めたいということですね。
英語なんで、求めたい方から記述します。日本語と
反対なところがシャクですが・・・
SELECT MAX(A.CNT) AS 取得したい値
FROM (SELECT 1 AS KEY,COUNT(*) AS CNT
FROM TBL WHERE A=1 AND B=2 GROUP BY DD) AS A
GROUP BY A.KEY
ありがとうございます。無事出来ました!
ただ、SQLがまだ理解できていません。
SELECT 1 AS KEY,COUNT(*) AS CNT FROM TBL WHERE A=1 AND B=2 GROUP BY DD ⇒(1)
ここまで、最大のカウントしたい条件をだして、
(1)をグループ化し、それの最大のレコード数をゲットする感じでしょうか。
定数の使い方がよくわかっていないようです。(SELECT 1)
調べましたが、わかりやすいページがみつかりませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
DataGridViewの、選択されてい...
-
JSPのNULLレコード表示について...
-
COBOLでのランダムアクセス
-
VB6.0のIsNull関数に相当するもの
-
レコード長を数えてくれる関数
-
ファイル書込みで一行もしくは...
-
DataGridViewの内容をDBに反映...
-
[VBA] ADOの Clone と AddNew
-
レコードセット(ADO.Recordset)...
-
ReDimを使用した二次元配列
-
HTA上データをExcelへ転記する...
-
[VB6]プログレスバーコントロー...
-
カレントレコードが無い事を判...
-
VBでコピー時間を表示したい。
-
Excel VBA読み込みで文字化けが
-
アクセスでレポートの1印刷内...
-
固有レコード識別子の選択とは
-
差し込み印刷のレコード数について
-
Oracleでの文字列連結サイズの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
レコードが存在しなかった場合
-
カレントレコードが無い事を判...
-
ファイル書込みで一行もしくは...
-
アクセスでレポートの1印刷内...
-
差し込み印刷のレコード数について
-
DataGridViewの、選択されてい...
-
レコードセット(ADO.Recordset)...
-
DataGridViewの内容をDBに反映...
-
Access でレコードセレクタが押...
-
固有レコード識別子の選択とは
-
Access を×ボタンで閉じ...
-
[VBA] ADOの Clone と AddNew
-
ACCESSで大量の更新を行うと「...
-
データセットのレコード更新が...
-
ワードの差込印刷で教えて下さ...
-
ヘッダレコードとトレーラレコ...
-
JSPのNULLレコード表示について...
-
サブフォームに新規レコードを...
-
VB6.0のIsNull関数に相当するもの
おすすめ情報