Bunu aramak için çok zaman harcadım, lütfen çoğaltıp vermeme izin verin.SQL: Toplam tablo satır sayısının toplam sayısı olarak * (*) grubuna göre
Her kategorinin sayısıyla birlikte kayıt kategorilerini döndüren gruplandırılmış bir sorgu yazmam gerekiyor. Bunun gibi bir şey: Şimdiye kadar çok iyi. Şimdi ihtiyacım olan şey, her kategorinin toplamının yüzde kaçının kapladığıdır.
select categorynum, count(*), count(*)/(select count(*) from tbl) from tbl group by categorynum;
O inşaat, ama gerçekten bu şekilde yapmak için başımın etini oluyor: Ben ile gelip en iyi ben sevmiyorum hangi budur, kirli hissediyor. Kullandığım veritabanı Postgres sözdizimi uyumludur ve tablodaki count(*)
gerçekten hızlıdır, bu yüzden tablo üzerinde count(*)
yapmak için büyük bir hız vuruşu yoktur, ancak eğer mümkün olursa daha iyi SQL yazmak istiyorum.
Bunu yazmanın daha iyi bir yolu var mı? Sıklıkla karşılaştığım bir durum bu yüzden sorgularımı doğru şekilde yazmak istiyorum.
Bu, orijinalden daha karmaşıktır, ancak daha hızlı çalışır mı? Bu sorgu türünde çok sayıda potansiyel uygulama var, işaretçi için teşekkürler! –
Eğer 'tlist' satır sırasına göre 'kategorileme' birkaç değeri varsa, o zaman işin çoğu alt sorguda yapılacaktır. 'Tbl' satır sırasına göre farklı "kategoriler" oranı nispeten yüksekse, o zaman "toplamı" sizi çok yavaşlatabilir. Sorgu planını her iki sorgunun bir 'açıklaması' üzerinden kontrol ederdim. Ve çok hoş geldiniz. :) –