回答編集履歴
4
追記
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
追記
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
修正
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
修正
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
|
|