Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL i CASE WEN z szeregiem wartości

spróbuj tego:

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

Musisz "zdefiniować" "zasobniki", w które chcesz zagregować oryginalne wiersze danych... Do tego służy klauzula Grupuj według... Określa ona kryteria, według których każdy wiersz w tabelach podstawowych będzie analizowany określ, do którego „zasobnika” będą agregowane dane... Wyrażenie lub wyrażenia zdefiniowane w klauzuli group by są „definicjami” tych zasobników.

Gdy zapytanie przetwarza oryginalne wiersze danych, każdy wiersz, dla którego wartości tego wyrażenia są takie same jak w istniejącym zasobniku, jest agregowany do tego zasobnika... Każdy nowy wiersz z wartością niereprezentowaną przez istniejący zasobnik powoduje utworzenie nowego zasobnika...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDOException „nie można znaleźć sterownika” w php

  2. Uzyskiwanie dostępu do bazy danych mysql z zewnętrznego hosta/IP? (np. stół warsztatowy mysql)

  3. Różnice między MySQL i SQLite w SQL

  4. Wordpress aktualizuje tabelę mysql

  5. Tablica w Mysql GDZIE LUBISZ?