回答編集履歴
1
追記
answer
CHANGED
@@ -43,4 +43,52 @@
|
|
43
43
|
t5.GameName, t6.GameName
|
44
44
|
```
|
45
45
|
|
46
|
-
MySQL でやっています。日付の条件 `month(利用日) = 6` は、もう少しマシな方法に読み替えてもらえればと思います。
|
46
|
+
MySQL でやっています。日付の条件 `month(利用日) = 6` は、もう少しマシな方法に読み替えてもらえればと思います。
|
47
|
+
|
48
|
+
---
|
49
|
+
|
50
|
+
無理やり縦横の表形式にするならこんなかんじでしょうか。
|
51
|
+
|
52
|
+
```sql
|
53
|
+
select
|
54
|
+
GameName as "5月/6月",
|
55
|
+
sum(case when GameName6 = 'Game1' then num else 0 end) as Game1,
|
56
|
+
sum(case when GameName6 = 'Game2' then num else 0 end) as Game2,
|
57
|
+
sum(case when GameName6 = 'Game3' then num else 0 end) as Game3
|
58
|
+
from
|
59
|
+
(
|
60
|
+
select GameName from t group by GameName
|
61
|
+
) a
|
62
|
+
left join
|
63
|
+
(
|
64
|
+
select
|
65
|
+
t5.GameName as GameName5, t6.GameName as GameName6, count(*) as num
|
66
|
+
from
|
67
|
+
(
|
68
|
+
select UserID, GameName from t where month(利用日) = 5 group by UserID, GameName
|
69
|
+
) t5
|
70
|
+
inner join
|
71
|
+
(
|
72
|
+
select UserID, GameName from t where month(利用日) = 6 group by UserID, GameName
|
73
|
+
) t6
|
74
|
+
on
|
75
|
+
t5.UserID = t6.UserID
|
76
|
+
group by
|
77
|
+
t5.GameName, t6.GameName
|
78
|
+
) x
|
79
|
+
on
|
80
|
+
a.GameName = x.GameName5
|
81
|
+
group by
|
82
|
+
GameName5
|
83
|
+
order by GameName
|
84
|
+
```
|
85
|
+
|
86
|
+
```
|
87
|
+
+-----------+-------+-------+-------+
|
88
|
+
| 5月/6月 | Game1 | Game2 | Game3 |
|
89
|
+
+-----------+-------+-------+-------+
|
90
|
+
| Game1 | 1 | 1 | 1 |
|
91
|
+
| Game2 | 1 | 1 | 1 |
|
92
|
+
| Game3 | 0 | 0 | 0 |
|
93
|
+
+-----------+-------+-------+-------+
|
94
|
+
```
|