teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2017/10/18 05:39

投稿

yambejp
yambejp

スコア117923

answer CHANGED
@@ -27,4 +27,24 @@
27
27
  from tbl_a as t1 where id=1;
28
28
  /* id=1は結果:3位 */
29
29
  ```
30
- これにtbl_bがどうからんでくるのかいまいちわかりません
30
+ これにtbl_bがどうからんでくるのかいまいちわかりません
31
+
32
+ # 追記2
33
+ tbl_aのcate_idがユニークではないので、1つだけランク抜き出すことは無理
34
+ ランクの羅列がほしいのでしょうか?
35
+
36
+ ```SQL
37
+ create table tbl_a(id int unique key,val int,cate_id int);
38
+ insert into tbl_a values(1,100,1),(2,200,1),(3,300,2),(4,50,2);
39
+
40
+ create table tbl_b(id int unique key,name varchar(10), type varchar(10));
41
+ insert into tbl_b values(1,"janken","win_rate"),(2,"quiz", "win_count");
42
+ ```
43
+ これに対して、name = 'janken' and type = 'win_rate'を元にランク計算
44
+ ```SQL
45
+ select (select count(*)+1 from tbl_a as t2 where t2.val>t1.val) as rank
46
+ from tbl_a as t1
47
+ where cate_id in (select id from tbl_b where name = 'janken' and type = 'win_rate')
48
+ ```
49
+ ※select id,(・・・) as rank
50
+ として、id毎のランクをとってもいい

1

sample

2017/10/18 05:39

投稿

yambejp
yambejp

スコア117923

answer CHANGED
@@ -14,4 +14,17 @@
14
14
 
15
15
  繰り返しになりますが、この手の質問は概念的なことを書かれても意味がわかりませんので
16
16
  具体的なサンプルをつけて、「このサンプルからこういった結果を抽出したい」という
17
- 書き方をしないといつまでたっても結論はでないと思いますよ
17
+ 書き方をしないといつまでたっても結論はでないと思いますよ
18
+
19
+ # 追記
20
+ tbl_aのsampleです。
21
+
22
+ ```sql
23
+ create table tbl_a(id int unique key,val int);
24
+ insert into tbl_a values(1,100),(2,200),(3,300),(4,50);
25
+
26
+ select (select count(*)+1 from tbl_a as t2 where t2.val>t1.val) as rank
27
+ from tbl_a as t1 where id=1;
28
+ /* id=1は結果:3位 */
29
+ ```
30
+ これにtbl_bがどうからんでくるのかいまいちわかりません