2010-05-07 3 views
2

Я хочу, чтобы сгруппировать мои данные по возрасту и по полу: как этот образец данных:MySQL Группировка данных

Age: 1 
     Male: 2 
     Female: 3 
     Age 1 Total: 5 

Age: 2 
     Male: 6 
     Female: 3 
     Age 2 Total: 9 

Как можно сгруппировать данные по возрасту и сосчитать все мужчины и женщины в этом возрасте из базы данных mysql?

ответ

7
Select age, gender, Count(*) cnt 
From your_table 
Group By age, gender 

получите вы

Age Gender cnt 
    1 Male  2 
    1 Female 3 
    2 Male  6 
    2 Female 9 

Вы должны быть в состоянии суммировать отсчеты в возрасте в PHP впоследствии.

11
SELECT 
    age, 
    SUM(CASE WHEN gender = 'male' THEN 1 ELSE 0 END) males, 
    SUM(CASE WHEN gender ='female' THEN 1 ELSE 0 END) females, 
    COUNT(*) total 
FROM yourtable 
GROUP BY age 
+3

+1 Это правильный ответ. Хотя из-за того, что OP использует MySQL, я сокращу это, выбрав «Выбрать возраст», «sum» («gender =« male »), sum (gender =« female »), число (*) всего из вашей таблицы в группе по возрасту» –

+0

Большое спасибо, новая техника mysql добавлена ​​в мой стек. – text

+0

Спасибо, Майкл, это действительно изящное изменение! – ceteras

Смежные вопросы