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

MySQL dan CASE WHEN dengan rentang nilai

coba ini:

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(*)

Anda harus "mendefinisikan" "bucket" yang ingin Anda gabungkan ke dalam baris data asli... Inilah gunanya klausa Group By... Ini mendefinisikan kriteria yang digunakan untuk menganalisis setiap baris dalam tabel dasar tentukan "bucket" mana yang datanya akan diagregasikan... Ekspresi atau ekspresi yang didefinisikan dalam klausa grup menurut adalah "definisi" untuk bucket tersebut.

Saat kueri memproses baris data asli, setiap baris yang nilainya sama dengan keranjang yang ada akan digabungkan ke dalam keranjang itu... Setiap baris baru dengan nilai yang tidak diwakili oleh keranjang yang sudah ada ember menyebabkan ember baru dibuat...



  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:DATE_ADD

  2. Optimalkan kinerja MySQL/MariaDB dengan alat MySQLTunner

  3. Performa MySQL pada 6 juta tabel baris

  4. Cara Menggunakan Kata Sandi Asli Dengan MySQL 5.7

  5. Menyortir Di MySQL Menggunakan Order By Clause