繰り返しの 1 つで最小要件 (x<15) が満たされている場合に、データセットからブロック全体を削除しようとしています (以下のサンプル データを参照)。
+------+-------+------------+----+
| id | block | repitition | x |
+------+-------+------------+----+
| 5223 | 1 | 1 | 15 |
| 5223 | 1 | 2 | 17 |
| 5223 | 1 | 3 | 16 |
| 5223 | 2 | 1 | 14 |
| 5223 | 2 | 2 | 15 |
| 6238 | 2 | 1 | 18 |
| 6238 | 2 | 2 | 20 |
| 6238 | 2 | 3 | 12 |
| 6238 | 2 | 4 | 21 |
| 7575 | 1 | 3 | 13 |
| 7575 | 1 | 4 | 21 |
| 7575 | 1 | 5 | 21 |
+------+-------+------------+----+
この点で、私はすでに次のことで助けられました。
delete t1
from your_table t1
inner join
(
select id, block
from your_table
group by id, block
having sum(x < 15) > 0
) t2 on t1.id = t2.id and t1.block = t2.block
そして、これは完全に機能します。私が知りたいのは、まったく同じことができるかどうかですが、繰り返し数に関係なく、ブロック内の最初の繰り返しが x < 15 の場合のみです。
したがって、テーブルにクエリを実行して、行 4、5、10、11、12 のみを削除させたいと思います。現在の式では、行 6、7、8、および 9 も削除されます。