PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgresql :Bagaimana cara memilih entri n persen (%) teratas dari setiap grup/kategori?

Untuk mengambil baris berdasarkan persentase jumlah baris di setiap grup, Anda dapat menggunakan dua fungsi jendela:satu untuk menghitung baris dan satu untuk memberi mereka nomor unik.

select gp,
       val
from (
  select gp, 
         val,
         count(*) over (partition by gp) as cnt,
         row_number() over (partition by gp order by val desc) as rn
  from temp
) t
where rn / cnt <= 0.75;

Contoh SQLFiddle:http://sqlfiddle.com/#!15/94fdd/1

Btw:menggunakan char hampir selalu merupakan ide yang buruk karena ini adalah tipe data dengan panjang tetap yang diisi dengan panjang yang ditentukan. Saya harap Anda hanya melakukannya untuk menyiapkan contoh dan tidak menggunakannya di tabel asli Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memahami ukuran baris Postgres

  2. Hitung Usia dalam Tahun di PostgreSQL

  3. PostgreSQL:Kueri tidak memiliki tujuan untuk data hasil

  4. Pilih stempel waktu hari ini saja (sejak tengah malam)

  5. Kombinasi kueri dengan array catatan bersarang dalam tipe data JSON