Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Limit innerhalb der Gruppe?

Der Sinn einer Aggregatfunktion (und des dafür erforderlichen GROUP BY) besteht darin, viele Zeilen in eine Zeile umzuwandeln. Wenn Sie also wirklich nur die Top-5-Sparkonten und die Top-5-Girokonten und die Top-5-USD-Konten usw. wollen, brauchen Sie eher Folgendes:

Kriterien:Top 5 eines bestimmten Kontotyps nach account_balance

SELECT account_type, account_balance FROM accounts WHERE account_type='savings' 
   ORDER BY account_balance DESC LIMIT 5
UNION
SELECT account_type, account_balance FROM accounts WHERE account_type='chequing' 
   ORDER BY account_balance DESC LIMIT 5
UNION
SELECT account_type, account_balance FROM accounts WHERE account_type='USD' 
   ORDER BY account_balance DESC LIMIT 5;

Es ist nicht schön, aber wenn Sie die SQL mit einem Skript erstellen, ist es einfach, die account_types einzufügen und eine Abfrage zu verketten.