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

回答編集履歴

3

ちょうせい

2019/11/21 00:42

投稿

yambejp
yambejp

スコア117885

answer CHANGED
@@ -34,4 +34,28 @@
34
34
  |user_id|one_day|two_day|three_day|
35
35
  |--:|--:|--:|--:|
36
36
  |10|1|1|0|
37
- |20|1|0|0|
37
+ |20|1|0|0|
38
+
39
+ # true/false
40
+ カウントしていた結果を0より大きいかどうかで判断してはどうでしょうか?
41
+ ```SQL
42
+ SELECT
43
+ user_id,
44
+ SUM(CASE SUBSTRING(created_at, 1, 10)
45
+ WHEN '2019-11-01' THEN 1
46
+ ELSE 0
47
+ END)>0 AS one_day,
48
+ SUM(CASE SUBSTRING(created_at, 1, 10)
49
+ WHEN '2019-11-02' THEN 1
50
+ ELSE 0
51
+ END)>0 AS two_day,
52
+ SUM(CASE SUBSTRING(created_at, 1, 10)
53
+ WHEN '2019-11-03' THEN 1
54
+ ELSE 0
55
+ END)>0 AS three_day
56
+ FROM
57
+ posts
58
+ WHERE
59
+ DATE(SUBSTRING(created_at,1,10)) BETWEEN DATE('2019-11-01') AND DATE('2019-11-03')
60
+ GROUP BY user_id
61
+ ```

2

けっか

2019/11/21 00:42

投稿

yambejp
yambejp

スコア117885

answer CHANGED
@@ -28,4 +28,10 @@
28
28
  WHERE
29
29
  DATE(SUBSTRING(created_at,1,10)) BETWEEN DATE('2019-11-01') AND DATE('2019-11-03')
30
30
  GROUP BY user_id
31
- ```
31
+ ```
32
+ - 結果
33
+
34
+ |user_id|one_day|two_day|three_day|
35
+ |--:|--:|--:|--:|
36
+ |10|1|1|0|
37
+ |20|1|0|0|

1

ちょうせい

2019/11/20 10:59

投稿

yambejp
yambejp

スコア117885

answer CHANGED
@@ -1,5 +1,14 @@
1
1
  一応こんな感じでいけるかもしれません
2
+ - 元データ
2
3
  ```SQL
4
+ create table posts(id int,user_id int,created_at varchar(30));
5
+ insert into posts values
6
+ (1,10,'2019-11-01T22:11:05.000+09:00'),
7
+ (2,10,'2019-11-02T22:11:05.000+09:00'),
8
+ (3,20,'2019-11-01T22:11:05.000+09:00');
9
+ ```
10
+ - 検索
11
+ ```SQL
3
12
  SELECT
4
13
  user_id,
5
14
  SUM(CASE SUBSTRING(created_at, 1, 10)