Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Permintaan MySQL untuk mengelompokkan data ke dalam rentang yang berbeda

Anda perlu membuat tabel sebaris yang berisi semua rentang harga. Kemudian lakukan LEFT JOIN dengan tabel turunan berdasarkan kueri Anda untuk mendapatkan hasil yang diharapkan:

SELECT x.PriceRange, COALESCE(TotalWithinRange, 0) AS TotalWithinRange
FROM (
  SELECT "0 - 10" AS PriceRange 
  UNION SELECT "10 - 20"
  UNION SELECT "20 - 30"
  UNION SELECT "30 - 40"
  UNION SELECT "40 - 50"
  UNION SELECT "over 50" ) x
LEFT JOIN (  
   SELECT
      CASE when price >= 0 and price <= 10 then "0 - 10"
           when price > 10 and price <= 20 then "10 - 20"
           when price > 20 and price <= 30 then "20 - 30"
           when price > 30 and price <= 40 then "30 - 40"
           when price > 40 and price <= 50 then "40 - 50"
           else "over 50"
      END AS PriceRange,
      COUNT(*) as TotalWithinRange
   FROM YourTable
   GROUP BY 1 ) y ON x.PriceRange = y.PriceRange

Demo Fiddle SQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Port mysql sudah digunakan

  2. Hitung jumlah baris dalam golang

  3. Tabel dasar atau tampilan tidak ditemukan:1146 Tabel Laravel 5

  4. Apa cara terbaik untuk mengakses database dari PHP?

  5. Bagaimana cara MEMILIH baris acak dari tabel dengan jumlah baris yang tepat?