しばらくの間苦労してきた次のクエリを生成するのを手伝ってください。月番号と、この特定の月に失敗したイベントがあったかどうかの情報を含む単純なテーブルがあるとします。
サンプルデータを生成するスクリプトの下:
WITH DATA(Month, Success) AS
(
SELECT 1, 0 UNION ALL
SELECT 2, 0 UNION ALL
SELECT 3, 0 UNION ALL
SELECT 4, 1 UNION ALL
SELECT 5, 1 UNION ALL
SELECT 6, 0 UNION ALL
SELECT 7, 0 UNION ALL
SELECT 8, 1 UNION ALL
SELECT 9, 0 UNION ALL
SELECT 10, 1 UNION ALL
SELECT 11, 0 UNION ALL
SELECT 12, 1 UNION ALL
SELECT 13, 0 UNION ALL
SELECT 14, 1 UNION ALL
SELECT 15, 0 UNION ALL
SELECT 16, 1 UNION ALL
SELECT 17, 0 UNION ALL
SELECT 18, 0
)
「繰り返される失敗」の定義を考えると:
任意の 6 か月間で少なくとも 4 か月間にイベント障害が発生した場合、そのような障害が発生した最後の月は「繰り返しの障害」であり、クエリは次の出力を返す必要があります。
Month Success RepeatedFailure
1 0
2 0
3 0
4 1
5 1
6 0 R1
7 0 R2
8 1
9 0
10 1
11 0 R3
12 1
13 0
14 1
15 0
16 1
17 0
18 0 R1
どこ:
- R1 - 6 か月目に 1 回目の繰り返し故障 (過去 6 か月で 4 回の故障)。
- R2 - 7 番目の月に 2 回目の故障が繰り返されました (過去 6 か月で 4 回の故障)。
- R3 - 11 番目の月に 3 回目の故障が発生しました (過去 6 か月で 4 回の故障)。
R1 - 再び 18 番目の月に 1 回目の繰り返し失敗
繰り返される失敗は、その数に基づいて適切な乗数を適用する必要があるため、連続して数えられます。
- 1 回目の失敗 - X2
- 2 回目の失敗 - X4
- 3 回目以降の繰り返しの失敗 -X5。