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

MySQL và CASE WHEN với một loạt các giá trị

hãy thử cái này:

SELECT count(*) as ct, 
CASE  
    WHEN COUNT(*) < 25 THEN '1-25' 
    WHEN COUNT(*) >= 25 < 50 THEN '25-50' 
    WHEN COUNT(*) >= 50 < 100 THEN '50-100' 
    WHEN COUNT(*) >= 100 < 250 THEN '100-250' 
    WHEN COUNT(*) >= 250 < 500 THEN '250-500' 
    WHEN COUNT(*) >= 500 < 1000 THEN '500-1000' 
    ELSE '1000+' 
END AS grp 
FROM records r, accounts a 
WHERE r.account_id=a.id 
GROUP BY r.account_id, a.id, 
    CASE  
    WHEN COUNT(*) < 25 THEN '1-25' 
    WHEN COUNT(*) >= 25 < 50 THEN '25-50' 
    WHEN COUNT(*) >= 50 < 100 THEN '50-100' 
    WHEN COUNT(*) >= 100 < 250 THEN '100-250' 
    WHEN COUNT(*) >= 250 < 500 THEN '250-500' 
    WHEN COUNT(*) >= 500 < 1000 THEN '500-1000' 
    ELSE '1000+' END
ORDER BY count(*)

Bạn phải "xác định" "nhóm" mà bạn muốn tổng hợp các hàng dữ liệu ban đầu thành ... Đây là mệnh đề Group By dùng cho ... Nó xác định tiêu chí mà mỗi hàng trong bảng cơ sở sẽ được phân tích thành xác định dữ liệu của nó sẽ được tổng hợp vào "nhóm" nào ... Biểu thức hoặc các biểu thức được xác định trong nhóm theo mệnh đề là "định nghĩa" cho các nhóm đó.

Khi truy vấn xử lý các hàng dữ liệu ban đầu, bất kỳ hàng nào có (các) giá trị của (các) biểu thức này giống với một nhóm hiện có sẽ được tổng hợp vào nhóm đó ... Bất kỳ hàng mới nào có giá trị không được đại diện bởi một nhóm hiện có bucket sẽ tạo ra một bucket mới ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CẬP NHẬT MySQL và CHỌN trong một lần vượt qua

  2. Django Nhiều cơ sở dữ liệu Dự phòng cho Master nếu Slave bị lỗi

  3. MYSQL - ký tự Thổ Nhĩ Kỳ

  4. Tại sao SQLSTATE [HY000]:Lỗi chung?

  5. Truy vấn tham số PHP / MySQL