У меня есть таблица учетных записей и таблица записей, где учетные записи имеют несколько записей. Я хотел бы сломать общие количества учетной записи "количеством записей" диапазон. Т.е. Шоу разбивка
Count of Records | Count
=========================
0-25 | 100
25 - 50 | 122
50 - 100 | 300
И т.д.
Я использую следующий запрос, но я не могу заставить его группироваться "группой", которая является тем, что я хочу, какая-либо справка на лучшем способе изменить запрос?
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
попробуйте следующее:
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(*)
Вам нужно "определить" "ведра", в которые вы хотите объединить исходные строки данных... Вот для чего нужен пункт Group By... Он определяет критерии, по которым каждая строка в базовых таблицах будет анализироваться, чтобы определить, в какое "ведро" будут агрегированы ее данные... Выражение или выражения, определенные в пункте group by, являются "определениями" для этих ведер".
По мере того, как запрос обрабатывает исходные строки данных, любая строка, для которой значение(я) этого выражения(й) совпадает с существующим ведром, объединяется в это ведро... Любой новый ряд со значением, не представленным существующим ведром, приводит к созданию нового ведра...