我有一个包含 PRICE、SUBTYPE 等的数据集。我想在使用数据集之前做一些异常值删除。我想在每个 SUBTYPE 中删除价格高得离谱或低得离谱的东西的行。
对于每个 SUBTYPE,查看 PRICE 的范围并删除或过滤掉行。保留介于以下之间的行:PRICErange * .01 |KEEP| 价格范围 * .99
这是由 stackoverflow 上的 Martin Smith 提供给我的,我编辑了这个问题,所以让我们从这里开始。
;WITH CTE
AS (SELECT *,
ROW_NUMBER() OVER (PARTITION BY SUBTYPE ORDER BY PRICE) AS RN,
COUNT(*) OVER(PARTITION BY SUBTYPE) AS Cnt
FROM all_resale)
SELECT *
FROM CTE
WHERE (CASE WHEN Cnt > 1 THEN 100.0 * (RN -1)/(Cnt -1) END) BETWEEN 1 AND 99
我不确定这是我需要做的。我不知道会从末端删除多少行。