0

大規模なデータベースを扱っており、データの外れ値を削除しようとしています。以前の質問からこのコードを見つけ、データベースで動作するように変更しました。

DELETE FROM sv_condition_sw 
WHERE snow_mountain > (select * from (SELECT AVG(snow_mountain)+1.5*STDDEV(snow_mountain) 
                                  FROM sv_condition_sw 
                                  WHERE lud='2012-11-28' ) x)
AND lud='2012-11-28' 

1つの例外を除いて、うまく機能します。

私の場合、何千もの「lud」または製品があります。1 つのクエリで各 lud (または製品) を削除するにはどうすればよいですか?

4

1 に答える 1

0

次のようなものを試していただけますか

DELETE sv_condition_sw 
FROM sv_condition_sw, 
   (SELECT AVG(snow_mountain)+1.5*STDDEV(snow_mountain) as threshold, lud
   FROM sv_condition_sw GROUP BY lud) as t
WHERE sv_condition_sw.snow_mountain > t.threshold
AND sv_condition_sw.lud=t.lud

これは MySQL でも機能するはずです。

于 2013-08-05T19:22:54.777 に答える