
MySQLについて質問です。
以下のような2つのテーブルがあったとして、
2015年に一番勝利したボクサーを表示したい場合、
どのようにしたらよいでしょうか。
(以下詳細)
※Aテーブルのwinner_idとBテーブルのid、
nameは連動しており、winner_idが2と表示
されていれば、那須川天心が勝利したという
意味です。
つまり、2015年にwinner_idが最も重複した
ものをを表示したいです。
Aテーブル:
No winner_id date
1 2 2014-01-05
2 5 2014-03-07
3 4 2014-06-08
4 3 2014-09-09
5 1 2015-03-09
6 5 2015-12-08
7 1 2015-07-04
8 5 2015-02-07
9 2 2015-04-02
10 3 2015-09-01
Bテーブル:
Id name
1 フロイドメイウェザー
2 那須川天心
3 武尊
4 朝倉未来
5 チンパンジー
この場合、count文を使用すると思うのですが
2015年だけを指定して、Bテーブルの結果も
参照して一文で表示したいです。
どうしたらよいでしょうか。
※もう一度いいます。
一文で表示したいです。
ご教授よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ウィンドウ関数を使い、集計数の最大を求めましょう
https://dev.mysql.com/doc/refman/8.0/ja/window-f …
-- 集計した件数から年次毎の最大数を求める
select 年次, 勝者
, count(*) as 勝利数
, max(count(*)) over (partition by 年次) as 年間最大勝利数
from 試合
group by 年次, 勝者
上記をサブクエリにして、他テーブルとの結合や条件絞り込みを付け足せば、問い合わせを一文で組み立てられると思います。
select ...
from (分析サブクエリ)
inner join ...
where 勝利数 = 年間最大勝利数 and 年次 = ...
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のDB(Table)からの複数行の...
-
同じサーバーで、異なるデータ...
-
Unionした最後にGROUP BYを追加...
-
【SQL文】Insert into文で文法...
-
[MySQL] 1対多のリレーションで...
-
DB設計について
-
MySQLにてCOUNTした値を更にCOUNT
-
レコード数が増えすぎた場合の対処
-
カラム名でseqとidではどちらが...
-
同一のユーザー、同一商品のと...
-
エクセルの関数について教えて...
-
エクセルで最後の文字だけ置き...
-
PL/SQLの変数について
-
sqlで、600行あるテーブルを100...
-
Access パラメータクエリをcsv...
-
SQLサーバから、項目の属性(型...
-
[MySQL] UNIQUE制約の値を更新...
-
SQLにて特定の文字を除いた検索...
-
VIEWの元のテーブルのindexって...
-
1テーブル&複数レコードの更新...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報