Le but d'une fonction d'agrégation (et du GROUP BY qu'elle requiert) est de transformer plusieurs lignes en une seule ligne. Donc, si vous ne voulez vraiment que les 5 meilleurs comptes d'épargne et les 5 meilleurs comptes de chèques et les 5 meilleurs comptes en USD, etc., ce dont vous avez besoin ressemble plus à ceci :
critères :top 5 d'un type de compte particulier par 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;
Ce n'est pas joli, mais si vous construisez le SQL avec un script, il est simple de substituer les types de compte et de concaténer une requête.