回答編集履歴

4

推敲

2021/05/18 05:59

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
  60 / sum(case when from_time <= finished_on and to_time > started_on then 1 end)
50
50
 
51
- ) as par_time
51
+ ) as Profit_time
52
52
 
53
53
  from Reports, time_scale
54
54
 
@@ -100,7 +100,7 @@
100
100
 
101
101
  )
102
102
 
103
- ) as par_time
103
+ ) as Profit_time
104
104
 
105
105
  from Reports, time_scale
106
106
 

3

追記

2021/05/18 05:59

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -57,3 +57,53 @@
57
57
  ```
58
58
 
59
59
  これに対し、各々の作業時間を上記と突合したものを合計します。
60
+
61
+
62
+
63
+ 追記
64
+
65
+ --
66
+
67
+ 時間帯が日付を跨らず固定にできる場合は、以下のようになります。
68
+
69
+ |from_time|to_time|
70
+
71
+ |:--|:--|
72
+
73
+ |09:00:00|10:00:00|
74
+
75
+ |10:00:00|11:00:00|
76
+
77
+ |11:00:00|12:00:00|
78
+
79
+ |12:00:00|13:00:00|
80
+
81
+ |13:00:00|14:00:00|
82
+
83
+ |14:00:00|15:00:00|
84
+
85
+ |15:00:00|16:00:00|
86
+
87
+ |16:00:00|17:00:00|
88
+
89
+ |17:00:00|18:00:00|
90
+
91
+ ```SQL
92
+
93
+ select process_id, from_time, to_time
94
+
95
+ , (60 / sum(
96
+
97
+ case when from_time <= time(finished_on) and to_time > time(started_on)
98
+
99
+ then 1 end
100
+
101
+ )
102
+
103
+ ) as par_time
104
+
105
+ from Reports, time_scale
106
+
107
+ group by process_id, from_time, to_time
108
+
109
+ ```

2

追記

2021/05/18 05:55

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -1,6 +1,10 @@
1
1
  個人ごとに作業時間が違うので、基準となる目盛を作り、その目盛単位で重複を数えるのがシンプルです。
2
2
 
3
- 例えば、以下の様なテーブルを用意します。※値は計算範囲に合わせる
3
+ 例えば、以下の様なテーブルを用意します。
4
+
5
+ ※値は計算範囲に合わせる。
6
+
7
+ 時間帯が9:00~17:00などと決まっているなら、日付は無しにして固定でも良いでしょう。
4
8
 
5
9
  time_scale
6
10
 

1

推敲

2021/05/18 05:24

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  ```SQL
40
40
 
41
- select from_time, to_time
41
+ select process_id, from_time, to_time
42
42
 
43
43
  , (
44
44
 
@@ -48,9 +48,7 @@
48
48
 
49
49
  from Reports, time_scale
50
50
 
51
- group by from_time, to_time
51
+ group by process_id, from_time, to_time
52
-
53
- order by from_time
54
52
 
55
53
  ```
56
54