У меня есть таблица учетных записей и таблица записей, в которой учетные записи имеют несколько записей. Я хотел бы разбить итоговые суммы счетов по диапазону «количество записей». То есть Показать разбивкуMySQL и CASE WHEN с диапазоном значений
Count of Records | Count
=========================
0-25 | 100
25 - 50 | 122
50 - 100 | 300
И т.д.
Я использую следующий запрос, но я не могу получить его в группу «GRP», которая является то, что я хочу, любой помощь на лучшем пути к изменить запрос?
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
ORDER BY ct
Я получаю ERROR 1111 (HY000): Недопустимое использование функции группы Я использую MySQL 5.1 Спасибо! – kickdaddy
Извините, поскольку вы используете столбцы 'r.Account_id' и' a.id' в основной части SQL-запроса, вам нужно включить их в предложение group By ... Каждый столбец или выражение ссылаются на t9o в основной (предагрегационной) части запроса, которая не является функцией агрегации (Sum, Avg, Min, Max и т. д.), должна упоминаться в предложении group By. –
Я не вижу, как вы можете использовать COUNT (*) внутри предложения GROUP BY. Возможно ли это? –