0

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 を使用してください

4

1 に答える 1