回答編集履歴
6
追記
answer
CHANGED
@@ -9,4 +9,18 @@
|
|
9
9
|
```
|
10
10
|
~~因みに、参考にしているSQLですが、NOW()を正時に変更していますが、Date型だとそれは不要です。
|
11
11
|
記述を簡潔にすると以下の様になります。~~
|
12
|
-
実行時の時間を軸にしているようなので、取り下げ
|
12
|
+
~~実行時の時間を軸にしているようなので、取り下げ~~
|
13
|
+
ついでに、元のSQLを簡潔にすると
|
14
|
+
```SQL
|
15
|
+
select dt.datetime
|
16
|
+
, count(his.id)
|
17
|
+
from generate_series(
|
18
|
+
TO_CHAR(NOW(), 'YYYY/MM/DD HH24:00:00'):: timestamp + INTERVAL '-3 day',
|
19
|
+
TO_CHAR(NOW(), 'YYYY/MM/DD HH24:00:00'):: timestamp,
|
20
|
+
'1 hour'
|
21
|
+
) as dt(datetime)
|
22
|
+
left join t_history as his
|
23
|
+
on his.end_timestamp>= dt.datetime and his.end_timestamp< (dt.datetime + INTERVAL '1 hour')
|
24
|
+
group by dt.datetime
|
25
|
+
|
26
|
+
```
|
5
修正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
指定した日付の5分間隔のタイムテーブルを基準に、`t_history`の`regist_timestamp`と結合してカウントします。
|
2
2
|
```SQL
|
3
3
|
select dt.datetime
|
4
|
-
, count(his.
|
4
|
+
, count(his.id)
|
5
5
|
from generate_series('2018/12/12'::timestamp, '2018/12/12'::timestamp + INTERVAL '1 day', '5 minute') as dt(datetime)
|
6
6
|
left join t_history as his
|
7
7
|
on his.regist_timestamp >= dt.datetime and his.regist_timestamp < (datetime + INTERVAL '5 minute')
|
4
修正
answer
CHANGED
@@ -2,12 +2,9 @@
|
|
2
2
|
```SQL
|
3
3
|
select dt.datetime
|
4
4
|
, count(his.regist_timestamp)
|
5
|
-
from (
|
6
|
-
select datetime, datetime + interval '5 minute' as dtend
|
7
|
-
|
5
|
+
from generate_series('2018/12/12'::timestamp, '2018/12/12'::timestamp + INTERVAL '1 day', '5 minute') as dt(datetime)
|
8
|
-
) dt
|
9
6
|
left join t_history as his
|
10
|
-
on his.regist_timestamp >= dt.datetime and his.regist_timestamp <
|
7
|
+
on his.regist_timestamp >= dt.datetime and his.regist_timestamp < (datetime + INTERVAL '5 minute')
|
11
8
|
group by dt.datetime
|
12
9
|
```
|
13
10
|
~~因みに、参考にしているSQLですが、NOW()を正時に変更していますが、Date型だとそれは不要です。
|
3
修正
answer
CHANGED
@@ -2,9 +2,12 @@
|
|
2
2
|
```SQL
|
3
3
|
select dt.datetime
|
4
4
|
, count(his.regist_timestamp)
|
5
|
+
from (
|
6
|
+
select datetime, datetime + interval '5 minute' as dtend
|
5
|
-
from generate_series('2018/12/12'::timestamp, '2018/12/12'::timestamp + INTERVAL '1 day', '5 minute') as dt(datetime)
|
7
|
+
from generate_series('2018/12/12'::timestamp, '2018/12/12'::timestamp + INTERVAL '1 day', '5 minute') as dt(datetime)
|
8
|
+
) dt
|
6
9
|
left join t_history as his
|
7
|
-
on his.regist_timestamp >= dt.datetime and his.regist_timestamp <
|
10
|
+
on his.regist_timestamp >= dt.datetime and his.regist_timestamp < dtend
|
8
11
|
group by dt.datetime
|
9
12
|
```
|
10
13
|
~~因みに、参考にしているSQLですが、NOW()を正時に変更していますが、Date型だとそれは不要です。
|
2
修正
answer
CHANGED
@@ -4,16 +4,9 @@
|
|
4
4
|
, count(his.regist_timestamp)
|
5
5
|
from generate_series('2018/12/12'::timestamp, '2018/12/12'::timestamp + INTERVAL '1 day', '5 minute') as dt(datetime)
|
6
6
|
left join t_history as his
|
7
|
-
|
7
|
+
on his.regist_timestamp >= dt.datetime and his.regist_timestamp < (dt.datetime + INTERVAL '6 minute')
|
8
8
|
group by dt.datetime
|
9
9
|
```
|
10
|
-
因みに、参考にしているSQLですが、NOW()を正時に変更していますが、Date型だとそれは不要です。
|
10
|
+
~~因みに、参考にしているSQLですが、NOW()を正時に変更していますが、Date型だとそれは不要です。
|
11
|
-
記述を簡潔にすると以下の様になります。
|
11
|
+
記述を簡潔にすると以下の様になります。~~
|
12
|
-
```SQL
|
13
|
-
select dt.datetime
|
14
|
-
|
12
|
+
実行時の時間を軸にしているようなので、取り下げ
|
15
|
-
from generate_series(current_date + INTERVAL '-3 day', current_date, '1 hour') as dt(datetime)
|
16
|
-
left join t_history as his
|
17
|
-
on his.end_timestamp between (dt.datetime + INTERVAL '-3 day') and dt.datetime
|
18
|
-
group by dt.datetime
|
19
|
-
```
|
1
修正
answer
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
指定した日付の5分間隔のタイムテーブルを基準に、`t_history`の`
|
1
|
+
指定した日付の5分間隔のタイムテーブルを基準に、`t_history`の`regist_timestamp`と結合してカウントします。
|
2
2
|
```SQL
|
3
3
|
select dt.datetime
|
4
|
-
, count(his.
|
4
|
+
, count(his.regist_timestamp)
|
5
5
|
from generate_series('2018/12/12'::timestamp, '2018/12/12'::timestamp + INTERVAL '1 day', '5 minute') as dt(datetime)
|
6
6
|
left join t_history as his
|
7
|
-
on his.
|
7
|
+
on his.regist_timestamp between dt.datetime and (dt.datetime + INTERVAL '5 minute')
|
8
8
|
group by dt.datetime
|
9
9
|
```
|
10
10
|
因みに、参考にしているSQLですが、NOW()を正時に変更していますが、Date型だとそれは不要です。
|