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

質問編集履歴

7

内容を詳細化

2019/10/10 07:09

投稿

tama_yn0815
tama_yn0815

スコア143

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,5 @@
1
+ ** 解決策反映 **
2
+
1
3
  ### 前提・実現したいこと
2
4
 
3
5
  ・使用環境:PstgreSQL v.9.5
@@ -56,10 +58,19 @@
56
58
 
57
59
  ** goal_result **
58
60
  これは書きかけ。。。まだ、想像すら出来ていないっす。
61
+ こんな感じで出来ました
59
62
  ```SQL
60
63
  WITH item_count AS (
64
+ SELECT *, RANK() OVER (PARTITION BY i.use_date, i.user_id, i.item_id ORDER BY i.datetime) AS seq
65
+ FROM (
61
- SELECT *
66
+ SELECT
67
+ item.*,
68
+ TO_CHAR(item.datetime::TIMESTAMP, 'YYYY/MM/DD') AS use_date
69
+ FROM
62
- FROM item_use_history
70
+ item_use_history AS item
71
+ WHERE
72
+ item.datetime BETWEEN ('2019/09/01 00:00:00' AND '2019/09/30 23:59:59')
73
+ ) AS i
63
74
  WHERE TRUE =TRUE
64
75
  --GROUP BY
65
76
  --ORDER BY

6

内容を詳細化

2019/10/10 07:09

投稿

tama_yn0815
tama_yn0815

スコア143

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,9 @@
4
4
  ・もはや、タイトルの通り。。。。SQLでSELECTしたい結果例を示しますので、そちらを参考に
5
5
  ・テーブルにGROUP BY でCOUNT出来る数と同じ感じにseqを付けたい
6
6
 
7
- **SQL内でsequenceを**
7
+ **SQL内でsequenceを付けたい!**
8
+ カラムAとカラムBが一致する、カラムC毎に連番を振る
9
+  ※テーブルでユニークな連番ではなく、特定データグループ内での連番
8
10
 
9
11
  **table:item_use_history(使う対象テーブル:こいつをゴネゴネしたい)**
10
12
  |id|user_id|datetime|item_id|value|

5

内容を詳細化

2019/10/10 06:02

投稿

tama_yn0815
tama_yn0815

スコア143

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  ・使用環境:PstgreSQL v.9.5
4
4
  ・もはや、タイトルの通り。。。。SQLでSELECTしたい結果例を示しますので、そちらを参考に
5
+ ・テーブルにGROUP BY でCOUNT出来る数と同じ感じにseqを付けたい
5
6
 
6
7
  **SQL内でsequenceを**
7
8
 
@@ -21,17 +22,18 @@
21
22
  **select:goal_result(サブクエリで作成したい表)**
22
23
  最終結果...は、ただSELECTとJOINする想定なので、
23
24
  実質は、下の表が作れるサブクエリを教えて欲しいです
25
+ **seq箇所を何とか出したい。。。**
24
- |id|user_id|datetime|item_id|value|seq|
26
+ |id|user_id|datetime|item_id|value|**seq**|
25
27
  |:--|:--|:--|:--|:--|:--|
26
- |1|101|2019/09/01 10:10:10|1|aaa1|1|
28
+ |1|101|2019/09/01 10:10:10|1|aaa1|**1**|
27
- |2|102|2019/09/01 10:10:10|1|aaa2|1|
29
+ |2|102|2019/09/01 10:10:10|1|aaa2|**1**|
28
- |3|103|2019/09/01 10:10:10|1|aaa3|1|
30
+ |3|103|2019/09/01 10:10:10|1|aaa3|**1**|
29
- |4|101|2019/09/01 11:10:10|2|bbb1|1|
31
+ |4|101|2019/09/01 11:10:10|2|bbb1|**1**|
30
- |5|102|2019/09/01 11:10:10|2|bbb1|1|
32
+ |5|102|2019/09/01 11:10:10|2|bbb1|**1**|
31
- |6|103|2019/09/01 11:10:10|2|bbb2|1|
33
+ |6|103|2019/09/01 11:10:10|2|bbb2|**1**|
32
- |7|101|2019/09/01 12:10:10|1|ccc1|2|
34
+ |7|101|2019/09/01 12:10:10|1|ccc1|**2**|
33
- |8|102|2019/09/01 12:10:10|1|ccc2|2|
35
+ |8|102|2019/09/01 12:10:10|1|ccc2|**2**|
34
- |9|103|2019/09/01 12:10:10|1|ccc3|2|
36
+ |9|103|2019/09/01 12:10:10|1|ccc3|**2**|
35
37
 
36
38
  **select:try_result(まず、カウントしてみましたの結果表)**
37
39
  |user_id|use_date|item_id|count(item_id)|

4

内容を詳細化

2019/10/10 06:00

投稿

tama_yn0815
tama_yn0815

スコア143

title CHANGED
File without changes
body CHANGED
@@ -3,6 +3,8 @@
3
3
  ・使用環境:PstgreSQL v.9.5
4
4
  ・もはや、タイトルの通り。。。。SQLでSELECTしたい結果例を示しますので、そちらを参考に
5
5
 
6
+ **SQL内でsequenceを**
7
+
6
8
  **table:item_use_history(使う対象テーブル:こいつをゴネゴネしたい)**
7
9
  |id|user_id|datetime|item_id|value|
8
10
  |:--|:--|:--|:--|:--|

3

内容を修正

2019/10/10 05:57

投稿

tama_yn0815
tama_yn0815

スコア143

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  ・使用環境:PstgreSQL v.9.5
4
4
  ・もはや、タイトルの通り。。。。SQLでSELECTしたい結果例を示しますので、そちらを参考に
5
5
 
6
- **table:item_use_history**
6
+ **table:item_use_history(使う対象テーブル:こいつをゴネゴネしたい)**
7
7
  |id|user_id|datetime|item_id|value|
8
8
  |:--|:--|:--|:--|:--|
9
9
  |1|101|2019/09/01 10:10:10|1|aaa1|
@@ -16,7 +16,9 @@
16
16
  |8|102|2019/09/01 12:10:10|1|ccc2|
17
17
  |9|103|2019/09/01 12:10:10|1|ccc3|
18
18
 
19
- **select:goal_result**
19
+ **select:goal_result(サブクエリで作成したい表)**
20
+ 最終結果...は、ただSELECTとJOINする想定なので、
21
+ 実質は、下の表が作れるサブクエリを教えて欲しいです
20
22
  |id|user_id|datetime|item_id|value|seq|
21
23
  |:--|:--|:--|:--|:--|:--|
22
24
  |1|101|2019/09/01 10:10:10|1|aaa1|1|
@@ -29,7 +31,7 @@
29
31
  |8|102|2019/09/01 12:10:10|1|ccc2|2|
30
32
  |9|103|2019/09/01 12:10:10|1|ccc3|2|
31
33
 
32
- **select:try_result**
34
+ **select:try_result(まず、カウントしてみましたの結果表)**
33
35
  |user_id|use_date|item_id|count(item_id)|
34
36
  |:--|:--|:--|:--|
35
37
  |101|2019/09/01|1|2|
@@ -93,14 +95,14 @@
93
95
  ### 最終的なゴール
94
96
 
95
97
  **こんな表にしたい!!**
96
- |user_id|use_date|item_id|seq_1|seq_1_value|seq_2|seq_2_value|
98
+ |user_id|use_date|item_id|seq_1|seq_1_value|seq_2|seq_2_value|...|
97
- |:--|:--|:--|:--|:--|:--|:--|
99
+ |:--|:--|:--|:--|:--|:--|:--|:--|
98
- |101|2019/09/01|1|1|aaa1|2|ccc1|
100
+ |101|2019/09/01|1|1|aaa1|2|ccc1|...|
99
- |102|2019/09/01|1|1|aaa2|2|ccc1|
101
+ |102|2019/09/01|1|1|aaa2|2|ccc1|...|
100
- |103|2019/09/01|1|1|aaa3|2|ccc1|
102
+ |103|2019/09/01|1|1|aaa3|2|ccc1|...|
101
- |101|2019/09/01|2|1|bbb2|NULL|NULL|
103
+ |101|2019/09/01|2|1|bbb2|NULL|NULL|...|
102
- |102|2019/09/01|2|1|bbb2|NULL|NULL|
104
+ |102|2019/09/01|2|1|bbb2|NULL|NULL|...|
103
- |103|2019/09/01|2|1|bbb2|NULL|NULL|
105
+ |103|2019/09/01|2|1|bbb2|NULL|NULL|...|
104
106
 
105
107
  なので、その前にこんな感じに出せるようにサブクエリを作る!
106
108
  で。。。固まっています。

2

内容を詳細化

2019/10/10 05:31

投稿

tama_yn0815
tama_yn0815

スコア143

title CHANGED
File without changes
body CHANGED
@@ -87,4 +87,20 @@
87
87
  **row_number() over()**
88
88
  これを調べているところ
89
89
 
90
- 過不足あれば、コメントくださいませ
90
+ 過不足あれば、コメントくださいませ
91
+
92
+
93
+ ### 最終的なゴール
94
+
95
+ **こんな表にしたい!!**
96
+ |user_id|use_date|item_id|seq_1|seq_1_value|seq_2|seq_2_value|
97
+ |:--|:--|:--|:--|:--|:--|:--|
98
+ |101|2019/09/01|1|1|aaa1|2|ccc1|
99
+ |102|2019/09/01|1|1|aaa2|2|ccc1|
100
+ |103|2019/09/01|1|1|aaa3|2|ccc1|
101
+ |101|2019/09/01|2|1|bbb2|NULL|NULL|
102
+ |102|2019/09/01|2|1|bbb2|NULL|NULL|
103
+ |103|2019/09/01|2|1|bbb2|NULL|NULL|
104
+
105
+ なので、その前にこんな感じに出せるようにサブクエリを作る!
106
+ で。。。固まっています。

1

タイトル文言の変更

2019/10/10 05:26

投稿

tama_yn0815
tama_yn0815

スコア143

title CHANGED
@@ -1,1 +1,1 @@
1
- SQLで特定カラム(複数)をGROUP BYした際に、COUNT関数で取れる数をNO GROUPの時にシーケンス的な扱いで連番を振りたい(重複連番)
1
+ SQLで特定カラム(複数)をGROUP BYした際に、COUNT関数で取れる数をNO GROUPの時にシーケンス的な扱いで連番を振りたい(表内重複許可/組合内重複不可_連番)
body CHANGED
File without changes