s_log
私はこのように示されているテーブルを持っています
id | parent_id | log_time | s_value
1 | 1 | 2013-10-09 09:01 | 2.1
2 | 2 | 2013-10-09 09:02 | 9.1 --> hide this
3 | 1 | 2013-10-09 09:04 | 5.2 --> hide this
4 | 2 | 2013-10-09 09:05 | 4.1
5 | 1 | 2013-10-09 09:06 | 2.3
6 | 2 | 2013-10-09 09:07 | 4.2
7 | 1 | 2013-10-09 09:09 | 2.2
8 | 2 | 2013-10-09 09:10 | 4.9
9 | 2 | 2013-10-09 09:11 | 5.7
10 | 2 | 2013-10-09 09:12 | 6.3
11 | 2 | 2013-10-09 09:13 | 2.3 --> hide this
12 | 2 | 2013-10-09 09:14 | 5.8
13 | 2 | 2013-10-09 09:15 | 6.5
14 | 2 | 2013-10-09 09:16 | 9.5 --> hide this
要件は次のとおりです。
- parent_id によって前の行と次の行との差が 1 を超える値を表示しない
- 最初と最後のレコードを除いて、2 つのデータの前後にのみ不良データが表示されます
たとえば、parent_id = 1 の場合
2.1 - 5.2 - 2.3 - 2.2
\ 3.1 \ 2.9 \ 0.1
BAD BAD OK
したがって、5.2 を非表示にする必要があります
parent_id = 2 の場合の別の例
9.1 - 4.1 - 4.2 - 4.9 - 5.7 - 6.3 - 2.3 - 5.8 - 6.5 - 9.6
\ 5.0 \ 0.1 \ 0.7 \ 0.8 \ 0.6 \ 4.0 \ 2.5 \ 0.7 \ 3.0
BAD OK OK OK OK BAD BAD OK BAD
私の上司が尋ねたことは全く不可能でした..
編集: 可能であれば PostgreSQL 9.3 を使用してください