回答編集履歴

4

追記

2018/11/16 00:52

投稿

sazi
sazi

スコア25197

test CHANGED
@@ -36,8 +36,48 @@
36
36
 
37
37
  ```
38
38
 
39
- 上記はdense_rank()(同率があった場合順位は同じになり、その次は順位を飛ばさないと同じ。
39
+ 上記はdense_rank()同率があった場合順位は同じになり、その次は順位を飛ばさないと同じ。
40
40
 
41
- 質問がrank()(同率があった場合順位は同じになり、その次は順位を飛ばす)に変更されているので、以下などを参考にして下さい。
41
+ 質問がrank()同率があった場合順位は同じになり、その次は順位を飛ばすに変更されているので、以下
42
+
43
+ ※DISTINCTを付けない
44
+
45
+ ```SQL
46
+
47
+ select user_id, max_points
48
+
49
+ ,(select count(max_points) +1
50
+
51
+ from (
52
+
53
+ select user_id, max(points) as max_points
54
+
55
+ from ranking
56
+
57
+ where exam_id=5
58
+
59
+ group by user_id
60
+
61
+ ) v2
62
+
63
+ where max_points < v1.max_points
64
+
65
+ ) rank
66
+
67
+ from (
68
+
69
+ select user_id, max(points) as max_points
70
+
71
+ from ranking
72
+
73
+ where exam_id=5
74
+
75
+ group by user_id
76
+
77
+ ) v1
78
+
79
+ ```
80
+
81
+ 下記なども参考にして下さい。
42
82
 
43
83
  [SQLのCOUNTカラムに順位をつけるには](https://teratail.com/questions/90490)

3

追記

2018/11/16 00:52

投稿

sazi
sazi

スコア25197

test CHANGED
@@ -35,3 +35,9 @@
35
35
  ) v1
36
36
 
37
37
  ```
38
+
39
+ 上記はdense_rank()(同率があった場合順位は同じになり、その次は順位を飛ばさない)と同じ。
40
+
41
+ 質問がrank()(同率があった場合順位は同じになり、その次は順位を飛ばす)に変更されているので、以下などを参考にして下さい。
42
+
43
+ [SQLのCOUNTカラムに順位をつけるには](https://teratail.com/questions/90490)

2

修正

2018/11/16 00:45

投稿

sazi
sazi

スコア25197

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ```SQL
4
4
 
5
- select user_id
5
+ select user_id, max_points
6
6
 
7
7
  ,(select count(distinct max_points) +1
8
8
 

1

修正

2018/11/16 00:25

投稿

sazi
sazi

スコア25197

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  from ranking
14
14
 
15
- whre exam_id=5
15
+ where exam_id=5
16
16
 
17
17
  group by user_id
18
18
 
@@ -28,7 +28,7 @@
28
28
 
29
29
  from ranking
30
30
 
31
- whre exam_id=5
31
+ where exam_id=5
32
32
 
33
33
  group by user_id
34
34