回答編集履歴

2

修正

2019/01/11 09:27

投稿

yambejp
yambejp

スコア114839

test CHANGED
@@ -81,3 +81,27 @@
81
81
  - uid=2は2件しかないので3件表示されない
82
82
 
83
83
  - uid=3の3位が2件あるので4件表示されている
84
+
85
+
86
+
87
+
88
+
89
+ # 同順位を認めない
90
+
91
+ - 2次ソートにidを指定
92
+
93
+ ```SQL
94
+
95
+ select id,uid,pid,regist,
96
+
97
+ (select count(*)+1 from tbl
98
+
99
+ where uid=t1.uid and (regist>t1.regist or regist=t1.regist and id>t1.id )) rank
100
+
101
+ from tbl as t1
102
+
103
+ having rank<=3
104
+
105
+ order by uid,rank
106
+
107
+ ```

1

sample

2019/01/11 09:27

投稿

yambejp
yambejp

スコア114839

test CHANGED
@@ -19,3 +19,65 @@
19
19
  buyHistoryの具体的なサンプルデータと期待する結果を例示されると
20
20
 
21
21
  それに合わせた回答が付きやすいでしょう
22
+
23
+
24
+
25
+ # sample
26
+
27
+
28
+
29
+ 一応サンプルだけ
30
+
31
+ ```SQL
32
+
33
+ create table tbl(id int primary key auto_increment,uid int not null,pid int not null,regist datetime);
34
+
35
+ insert into tbl(uid,pid,regist) values
36
+
37
+ (1,101,'2018-01-01 00:10:00'),
38
+
39
+ (1,102,'2018-01-01 00:20:00'),
40
+
41
+ (2,101,'2018-01-01 00:10:00'),
42
+
43
+ (1,103,'2018-01-01 00:40:00'),
44
+
45
+ (1,101,'2018-01-01 00:50:00'),
46
+
47
+ (1,104,'2018-01-01 00:30:00'),
48
+
49
+ (2,102,'2018-01-01 00:20:00'),
50
+
51
+ (3,101,'2018-01-01 00:10:00'),
52
+
53
+ (3,103,'2018-01-01 00:20:00'),
54
+
55
+ (3,105,'2018-01-01 00:20:00'),
56
+
57
+ (3,107,'2018-01-01 00:30:00'),
58
+
59
+ (3,109,'2018-01-01 00:40:00');
60
+
61
+ ```
62
+
63
+
64
+
65
+ - ユーザーごと最新3件を表示
66
+
67
+ ```SQL
68
+
69
+ select id,uid,pid,regist,
70
+
71
+ (select count(*)+1 from tbl where uid=t1.uid and regist>t1.regist) rank
72
+
73
+ from tbl as t1
74
+
75
+ having rank<=3
76
+
77
+ order by uid,rank
78
+
79
+ ```
80
+
81
+ - uid=2は2件しかないので3件表示されない
82
+
83
+ - uid=3の3位が2件あるので4件表示されている