質問編集履歴

1

誤りの修正

2020/05/10 07:24

投稿

aruto
aruto

スコア175

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- [SQL] 特定のカラムごとにまとめて最大値を持つ行を抜き出したい
3
+ 特定のカラムごとにまとめて最大値を持つ行を抜き出したい
4
4
 
5
5
  こういうときの良いSQLの書き方を教えてほしいです。
6
6
 
@@ -10,7 +10,9 @@
10
10
 
11
11
  以下のようなデータで、クラスごとに最大点をとった人の
12
12
 
13
- クラス、点数、名前を抜き出したいです
13
+ クラス、点数、名前を抜き出したいです
14
+
15
+ 同率一位がいた場合は全員抜き出したいです。
14
16
 
15
17
 
16
18
 
@@ -24,9 +26,11 @@
24
26
 
25
27
  |A|30|佐藤|
26
28
 
29
+ |A|60|安田|
30
+
27
31
  |A|60|鈴木|
28
32
 
29
- |B|20|田中|
33
+ |B|60|田中|
30
34
 
31
35
  |B|80|高橋|
32
36
 
@@ -44,6 +48,8 @@
44
48
 
45
49
  |:--|:--:|--:|
46
50
 
51
+ |A|60|安田|
52
+
47
53
  |A |60| 鈴木
48
54
 
49
55
  |B |80| 高橋
@@ -54,7 +60,9 @@
54
60
 
55
61
 
56
62
 
57
- 以下のような副問合せで取り出せていま
63
+ 以下のような副問合せで取り出せそうだと思いましたが、これだとあるクラスの最高点と同じ他の人も抜き出ししまっていました。
64
+
65
+ (この例だとAの最高点(60)と同じBの田中も抜き出してしまっていました)
58
66
 
59
67
  ```SQL
60
68
 
@@ -90,7 +98,9 @@
90
98
 
91
99
  ### 質問したいこと
92
100
 
101
+ 上記の取り出し方ができるSQLを知りたいです。
102
+
93
- 取り出したいデータに対してSQLが複雑な気がするのですが、もっと簡潔な書き方はありますでしょうか。
103
+ また取り出したいデータに対してSQLが複雑な気がするのですが、もっと簡潔な書き方はありますでしょうか。
94
104
 
95
105
  window関数とかを使えばもっと簡潔にかけそうな気がするのですがよくわかっておりません。
96
106