'daki her bir gruptaki verilerin en üst% 1'ini ve daha düşük% 1'ini nasıl filtreleyebilirim PRICE, SUBTYPE ve diğerlerini içeren bir veri kümem var. Veri kümesini kullanmadan önce ayırı kaldırmayı yapmak istiyorum. Her SUBTYPE'de fiyatın gülünç derecede yüksek veya düşük olduğu şeyler için satırları kaldırmak istiyorum.SQL
Her SUBTYPE için FIYATLAR aralığına bakın ve satırları kaldırın veya filtreleyin. Aradaki boşlukları koru: PRICErange * .01 | KEEP | PRICErange * .99
Bu, bana bir Martin Smith tarafından stackoverflow üzerinde sağlandı, ben bu soruyu düzenledim, bu yüzden buradan başlayalım.
;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
Yapmam gerekenin bu olduğundan emin değilim. Sonunda kaç satırın kaldırılacağını bilmiyorum.
"Kaldır" derken filtreyi mi yoksa silmek mi? – KingCronus
ALso 'Sıralı PRICE' in% 1'i belirsizdir - kayıt sayısını% 1 oranında azaltmak ister misiniz? –
Filtre. Veri kümesinde kalmasını isterim, ancak bu sorguda görünmez. Ben bazı aykırı kontrol yapmaya çalışıyorum, ama aynı zamanda geri gider ve aykırı ile tekrar işlem yapabilirsiniz. Öte yandan, çıktı yeni bir masaya konulduysa, yeni tabloda tamamen silinebilir. –