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

質問編集履歴

3

フィードバックを受けての修正

2019/11/20 14:27

投稿

Shinog
Shinog

スコア99

title CHANGED
File without changes
body CHANGED
@@ -1,15 +1,15 @@
1
- 「投稿ID」「投稿したユーザーID」「投稿日時」が入ったPostテーブルにおいて、
1
+ 「投稿ID(Int型)」「投稿したユーザーID(Int型)」「投稿日時(String型)」が入ったPostテーブルにおいて、
2
2
  |id|user_id|created_at|
3
3
  |:--|:--:|--:|
4
4
  |1|10|2019-11-01T22:11:05.000+09:00|
5
5
  |2|10|2019-11-02T22:11:05.000+09:00|
6
6
  |3|20|2019-11-01T22:11:05.000+09:00|
7
7
 
8
- 下記のように、投稿ユーザーごとに11/1~11/3それぞれで投稿したかどうかを判定する出力を出したいです。(投稿した日は「1」、投稿していない日は「0」)
8
+ 下記のように、投稿ユーザーごとに11/1~11/3それぞれで投稿したかどうかを判定する出力を出したいです。(投稿した日は「true」、投稿していない日は「false」)
9
9
  |user_id|11/1|11/2|11/3|
10
10
  |:--|:--:|--:|
11
- |10|1|1|0|
11
+ |10|true|true|false|
12
- |20|1|0|0|
12
+ |20|true|false|false|
13
13
 
14
14
  その際に、下記のようなクエリを作成したのですが、投稿日時もGROUP BYしてしまっているため、1ユーザーに対して3行出力されてしまっているが現状です。
15
15
 
@@ -18,16 +18,16 @@
18
18
  SELECT DISTINCT
19
19
  user_id,
20
20
  CASE
21
- WHEN SUBSTRING(created_at, 1, 10) = '2019-11-01' THEN '1'
21
+ WHEN SUBSTRING(created_at, 1, 10) = '2019-11-01' THEN 'true'
22
- ELSE '0'
22
+ ELSE 'false'
23
23
  END AS one_day,
24
24
  CASE
25
- WHEN SUBSTRING(created_at, 1, 10) = '2019-11-02' THEN '1'
25
+ WHEN SUBSTRING(created_at, 1, 10) = '2019-11-02' THEN 'true'
26
- ELSE '0'
26
+ ELSE 'false'
27
27
  END AS two_day,
28
28
  CASE
29
- WHEN SUBSTRING(created_at, 1, 10) = '2019-11-03' THEN '1'
29
+ WHEN SUBSTRING(created_at, 1, 10) = '2019-11-03' THEN 'true'
30
- ELSE '0'
30
+ ELSE 'false'
31
31
  END AS three_day
32
32
  FROM
33
33
  posts
@@ -38,13 +38,13 @@
38
38
  ```
39
39
  |user_id|11/1|11/2|11/3|
40
40
  |:--|:--:|--:|
41
- |10|1|0|0|
41
+ |10|true|false|false|
42
- |10|0|1|0|
42
+ |10|false|true|false|
43
- |10|0|0|0|
43
+ |10|false|false|false|
44
- |20|1|0|0|
44
+ |20|true|false|false|
45
- |20|0|0|0|
45
+ |20|false|false|false|
46
- |20|0|0|0|
46
+ |20|false|false|false|
47
47
 
48
- GROUP BYを投稿ユーザーのみにしてしまうと、下記のようなエラーメッセージが出てしまい、ここからどのようにクエリを書き換えれば良いか困っています。
48
+ GROUP BYを投稿ユーザーのみにしてしまうと、下記のようなエラーメッセージが出てしまい、ここからどのようにクエリを書き換えれば良いか困っています。実行エンジンはprestoです。
49
49
  ご教示のほど、何卒よろしくお願いいたします!mm
50
50
  > 'created_at' must be an aggregate expression or appear in GROUP BY clause

2

文章の修正

2019/11/20 14:27

投稿

Shinog
Shinog

スコア99

title CHANGED
File without changes
body CHANGED
@@ -45,6 +45,6 @@
45
45
  |20|0|0|0|
46
46
  |20|0|0|0|
47
47
 
48
- GROUP BYを投稿ユーザーのみにしてしまうと、下記のようなエラーメッセージが出てしまい、ここからどのようにクエリを書き換えれば良いでしょう
48
+ GROUP BYを投稿ユーザーのみにしてしまうと、下記のようなエラーメッセージが出てしまい、ここからどのようにクエリを書き換えれば良いか困っています。
49
- ご教示のほど、何卒よろしくお願いいたします!
49
+ ご教示のほど、何卒よろしくお願いいたします!mm
50
50
  > 'created_at' must be an aggregate expression or appear in GROUP BY clause

1

タグの追加

2019/11/20 10:40

投稿

Shinog
Shinog

スコア99

title CHANGED
File without changes
body CHANGED
File without changes