Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn MySQL để nhóm dữ liệu thành các phạm vi khác nhau

Bạn cần tạo một bảng nội tuyến chứa tất cả các phạm vi giá. Sau đó thực hiện LEFT JOIN với một bảng dẫn xuất dựa trên truy vấn của bạn để nhận được kết quả mong đợi:

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

SQL Fiddle Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql:Tối ưu hóa việc tìm kiếm siêu nút trong cây tập hợp lồng nhau

  2. Truy vấn MySQL - nối 3 bảng với nhau, nhóm theo một cột và đếm cho 2 bảng còn lại

  3. Truy vấn MySQL để tìm hàng số tương tự nhất

  4. Joda Time - Hibernate chèn ngày hôm qua vào cơ sở dữ liệu

  5. Giá phòng khách sạn cho các mùa khác nhau