2013-02-13 2 views
2

У меня есть стол со столбцом, в котором указаны возрасты пользователей. Я хочу, чтобы возраст веков был в произвольных группах (13-17,18-25 и т. Д.), А затем можно группировать эти ячейки и подсчитывать пользователей в каждой группе. Как я могу выполнить это в запросе?Как бин произвольно в MySQL?

+0

я запуталась, когда вы использовали термин 'бен'. Наиболее часто используемое мною слово - это «группа», как в «группировке записей вместе». Таким образом, ваше утверждение «Я хочу, чтобы в возрасте веков в произвольных группировках» можно было сформулировать более четко, как «Я хочу группировать по возрасту». –

+0

Я думаю, что это тонкая разница, но я бы предпочел использовать «группу», как в «group by» для последней операции в SQL-заявлении. «Binning» - это просто изменение метки значения, но необязательно, чтобы группа выполняла операцию. Различные удары ... –

ответ

4
SELECT CASE WHEN age BETWEEN 13 AND 17 THEN '13-17' 
      WHEN age BETWEEN 18 AND 25 THEN '18-25' 
      ELSE '26+' END AS AgeGroup, 
    COUNT(*) AS total 
FROM MyTable 
GROUP BY AgeGroup 
+0

Спасибо, что сделал! Раньше я пробовал дело, но у меня, должно быть, была ошибка. Теперь это работает. –

+0

Да, может быть сложно получить синтаксис. Мне часто приходится искать это, чтобы убедиться: http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#operator_case –

0
SELECT 
    COUNT(CASE WHEN `age` BETWEEN 13 AND 17 THEN 1 END) `13-17`, 
    COUNT(CASE WHEN `age` BETWEEN 18 AND 25 THEN 2 END) `18-25`, 
    COUNT(CASE WHEN `age` > 25 THEN 3 END) `> 25` 
FROM tableListOfAges; 
Смежные вопросы