![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちは。
[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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access でレコードセレクタが押...
-
ACCESSで大量の更新を行うと「...
-
ADO VBA 実行時エラー3021
-
アクセスでレポートの1印刷内...
-
レコードが存在しなかった場合
-
カレントレコードが無い事を判...
-
ファイル書込みで一行もしくは...
-
Access を×ボタンで閉じ...
-
AccessVBAのMoveメソッドにつき...
-
JSPのNULLレコード表示について...
-
ワードの差込印刷で教えて下さ...
-
ACCESSで「16389予約済みエラー...
-
Access のフォームで新しい行...
-
固有レコード識別子の選択とは
-
レコードセット(ADO.Recordset)...
-
グリッドにデータベースの更新...
-
DataGridViewの内容をDBに反映...
-
Excel VBA読み込みで文字化けが
-
【ExcelVBA】Powerクエリーでい...
-
どのようなレコード構成でもfil...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
JSPのNULLレコード表示について...
-
レコードが存在しなかった場合
-
DataGridViewの、選択されてい...
-
カレントレコードが無い事を判...
-
DataGridViewの内容をDBに反映...
-
Access を×ボタンで閉じ...
-
アクセスでレポートの1印刷内...
-
ヘッダレコードとトレーラレコ...
-
Access でレコードセレクタが押...
-
レコードセット(ADO.Recordset)...
-
ACCESSで大量の更新を行うと「...
-
差し込み印刷のレコード数について
-
DataGridViewにてセル以外をク...
-
サブレンジ分割されたNDB(富士...
-
Line Inputで文字化け(助けて...
-
固有レコード識別子の選択とは
-
[VBA] ADOの Clone と AddNew
-
ワードの差込印刷で教えて下さ...
おすすめ情報