回答編集履歴

4

先ほどwindow関数を使ったSQLにて誤って回答してしまいましたので訂正します

2022/12/01 16:17

投稿

sooni
sooni

スコア51

test CHANGED
@@ -1 +1,35 @@
1
+ 先ほどwindow関数を使ったSQLにて誤って回答してしまいました。
1
- 誤っ投稿してしまいました削除依頼します
2
+ 以下あらため、再度訂正して回答しま
3
+
4
+ select m.name,b.comic_name from magazines m
5
+ inner join
6
+ (
7
+ select distinct a.comic_name,a.magazine_id from (
8
+ select w.comic_name,w.magazine_id,w.id,w.user_name,count(*) from
9
+ (
10
+ select
11
+ c.name as comic_name
12
+ ,c.magazine_id
13
+ ,v.user_id as kind
14
+ ,u.id
15
+ ,u.name as user_name
16
+ ,u.admin as admin
17
+ from comics c
18
+ inner join votes v on c.id = v.comic_id
19
+ inner join users u on v.user_id = u.id
20
+ ) w where w.admin = 1
21
+ group by w.comic_name,w.magazine_id,w.id,w.user_name
22
+ ) a
23
+ ) b
24
+ on m.id = b.magazine_id
25
+ ;
26
+
27
+ +---------+---------------+
28
+ | name | comic_name |
29
+ +---------+---------------+
30
+ | 雑誌A | コミックA |
31
+ | 雑誌B | コミックC |
32
+ +---------+---------------+
33
+ 2 rows in set (0.00 sec)
34
+
35
+ mysql>

3

誤植ありました

2022/12/01 15:24

投稿

sooni
sooni

スコア51

test CHANGED
@@ -1 +1 @@
1
- 誤って投稿してしまいました
1
+ 誤って投稿してしまいました。削除依頼します

2

勘違いして異なる回答してました

2022/12/01 15:23

投稿

sooni
sooni

スコア51

test CHANGED
@@ -1,29 +1 @@
1
- 先ほど、PostgreSQL版で投稿してしまいました。ごめんなさい。
2
- 訂正して以下回答です。
1
+ 誤って投稿してしまいました
3
-
4
- select w.magazin_name,w.comic_name
5
- from (
6
- select t.magazin_name,t.comic_name,t.kind,t.user_name
7
- from
8
- (
9
- select m.name as magazin_name
10
- ,c.name as comic_name
11
- ,v.user_id as kind
12
- ,v.id as user_name
13
- from magazines m
14
- inner join comics c on m.id = c.magazine_id
15
- inner join votes v on c.id = v.comic_id
16
- ) t
17
- where t.kind = 2 -- 管理者
18
- ) w
19
- group by w.magazin_name,w.comic_name
20
- order by 1,2
21
- ;
22
-
23
- +--------------+---------------+
24
- | magazin_name | comic_name |
25
- +--------------+---------------+
26
- | 雑誌A | コミックA |
27
- | 雑誌B | コミックC |
28
- +--------------+---------------+
29
- 2 rows in set (0.00 sec)

1

PostgreSQL版を誤って投稿したので訂正しました

2022/12/01 15:06

投稿

sooni
sooni

スコア51

test CHANGED
@@ -1,27 +1,29 @@
1
+ 先ほど、PostgreSQL版で投稿してしまいました。ごめんなさい。
1
- こんなんどうでしょうか
2
+ 訂正して以下回答
2
3
 
3
- select w.magazin_name,w.comic_name,max(w.mken) as "投票数"
4
+ select w.magazin_name,w.comic_name
4
5
  from (
5
- select t.magazin_name,t.comic_name,t.kind,t.user_name
6
+ select t.magazin_name,t.comic_name,t.kind,t.user_name
6
- ,count(*) over (partition by t.magazin_name,t.comic_name,t.kind) mken
7
- from
7
+ from
8
- (
8
+ (
9
- select m.name as magazin_name
9
+ select m.name as magazin_name
10
- ,c.name as comic_name
10
+ ,c.name as comic_name
11
- ,v.user_id as kind
11
+ ,v.user_id as kind
12
- ,v.id as user_name
12
+ ,v.id as user_name
13
- from magazines m
13
+ from magazines m
14
- inner join comics c on m.id = c.magazine_id
14
+ inner join comics c on m.id = c.magazine_id
15
- inner join votes v on c.id = v.comic_id
15
+ inner join votes v on c.id = v.comic_id
16
- ) t
16
+ ) t
17
- where t.kind = 2 -- 管理者
17
+ where t.kind = 2 -- 管理者
18
18
  ) w
19
19
  group by w.magazin_name,w.comic_name
20
20
  order by 1,2
21
21
  ;
22
22
 
23
+ +--------------+---------------+
23
- magazin_name | comic_name | 投票数
24
+ | magazin_name | comic_name |
24
- --------------+------------+--------
25
+ +--------------+---------------+
25
- 雑誌A | コミックA | 2
26
+ | 雑誌A | コミックA |
26
- 雑誌B | コミックC | 1
27
+ | 雑誌B | コミックC |
28
+ +--------------+---------------+
27
- (2 rows)
29
+ 2 rows in set (0.00 sec)