回答編集履歴

1

コメントの内容を反映

2021/03/11 01:12

投稿

neko_the_shadow
neko_the_shadow

スコア2230

test CHANGED
@@ -1,6 +1,8 @@
1
- -「start_timeと同じ日、かつ、start_timeより前、かつ、最後にvalueが5以上になった時間」以上
1
+ - 「start_timeと同じ日、かつ、start_timeより前、かつ、最後にvalueが5以上になった時間」以上
2
2
 
3
- -「start_time」未満
3
+ - 「start_time」未満
4
+
5
+
4
6
 
5
7
  上の条件を満たすtable2の行数を数えたいということであっていますか?
6
8
 
@@ -34,7 +36,7 @@
34
36
 
35
37
  AND a.date = DATEVALUE(c.time)
36
38
 
37
- AND c.time <= a.start_time
39
+ AND c.time < a.start_time
38
40
 
39
41
  AND c.value >= 5) <= b.time
40
42
 
@@ -43,3 +45,53 @@
43
45
  FROM table1 AS a
44
46
 
45
47
  ```
48
+
49
+
50
+
51
+ ---
52
+
53
+
54
+
55
+ **2021-03-11 10:00 追記**
56
+
57
+
58
+
59
+ - 「start_timeより前、かつ、最後にvalueが5以上になった時間(Table1.Dateと同じ日とは限らない)」以上
60
+
61
+ - 「start_time」未満
62
+
63
+
64
+
65
+ ↑が実際の仕様であるならば、SQLは以下のようになるかと思います。
66
+
67
+
68
+
69
+ ```SQL
70
+
71
+ SELECT
72
+
73
+ a.id,
74
+
75
+ a.date,
76
+
77
+ (SELECT COUNT(*)
78
+
79
+ FROM table2 AS b
80
+
81
+ WHERE a.id = b.id
82
+
83
+ AND (SELECT MAX(c.time)
84
+
85
+ FROM table2 AS c
86
+
87
+ WHERE a.id = c.id
88
+
89
+ AND c.time < a.start_time
90
+
91
+ AND c.value >= 5) <= b.time
92
+
93
+ AND b.time < a.start_time) AS value_time
94
+
95
+ FROM table1 AS a
96
+
97
+ ```