Birkaç sütunun z-skorunu (x - μ/σ) belirlemek için bir SQL sorgusu kullanıyorum. ÖzellikleBirden çok sütunun ilgili z-skorunun hesaplanması
, bir tabloda aşağıdaki gibi vardır: ortalama ve standart sapma göre
my_table
id col_a col_b col_c
1 3 6 5
2 5 3 3
3 2 2 9
4 9 8 2
... ve her satır, her sayının z-skoru seçmek istediğiniz onun sütunu.
Yani sonuç şu şekilde görünecektir:
id col_d col_e col_f
1 -0.4343 1.0203 ...
2 0.1434 -0.8729
3 -0.8234 -1.2323
4 1.889 1.5343
anda benim kod iki sütun için bir puan hesaplar ve şöyle görünür:
select id,
(my_table.col_a - avg(mya.col_a))/stddev(mya.col_a) as col_d,
(my_table.col_b - avg(myb.col_b))/stddev(myb.col_b) as col_e,
from my_table,
select col_a from my_table)mya,
select col_b from my_table)myb
group by id;
Ancak bu son derece yavaştır. Üç sütun sorgu için dakika bekliyorum.
Bunu gerçekleştirmenin daha iyi bir yolu var mı? Ben postgres kullanıyorum ama herhangi bir genel dil bana yardımcı olacaktır. Teşekkürler!
bazı sorular: 1) Neden kimliğine göre el yordamıyla var? Birincil Anahtar ise o zaman herhangi bir şeyi gruplandırmayacaksınız 2) Oradaki 'col_a'yı seç' nedir? 3) Bu aslında bir yorum. Eğer bir şey gruplandırmıyorsanız, o zaman “avg (value)”, 'value' –
'a eşit olacaktır. 1) ID ile gruplamaya ihtiyacım yok, ancak Postgres," column 'my_table.id "' in GROUP BY cümlesinde görünmesi gerektiğini söylüyordu. ", bu yüzden bir hatadan kaçınmak için şu anda yapıyordu 2) Bu seçimlerin sorguda olması gerekmez, doğru. – dmc7z