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

sql - kelompokkan dalam rentang untuk memasukkan rentang tanpa nilai

Coba kueri ini (juga di SQL Fiddle ):

WITH ranges AS (
    SELECT (ten*10)::text||'-'||(ten*10+9)::text AS range,
           ten*10 AS r_min, ten*10+9 AS r_max
      FROM generate_series(0,9) AS t(ten))
SELECT r.range, count(s.*)
  FROM ranges r
  LEFT JOIN scores s ON s.score BETWEEN r.r_min AND r.r_max
 GROUP BY r.range
 ORDER BY r.range;

EDIT:

Anda dapat dengan mudah menyesuaikan rentang dengan mengubah parameter ke generate_series() . Dimungkinkan untuk menggunakan konstruksi berikut untuk memastikan ranges akan selalu menutupi skor Anda:

SELECT (ten*10)::text||'-'||(ten*10+9)::text AS range,
       ten*10 AS r_min, ten*10+9 AS r_max
  FROM generate_series(0,(SELECT max(score)/10 FROM scores)) AS t(ten))

untuk ranges CTE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan atau mengambil kolom array menggunakan Hibernate

  2. Tidak dapat mendeklarasikan variabel di dalam fungsi di PostgreSQL

  3. Bagaimana cara mengubah database_url di heroku?

  4. pilih nilai maks dan min setiap x jumlah baris-postgresql

  5. Optimasi Pencarian Teks Lengkap Django - Postgres