Генерация сводок данных, подсчет строк для нескольких столбцов в MySQL - PullRequest
1 голос
/ 22 августа 2011

У меня есть система регистрации.В общем, у меня есть поля типа age, gender и т. Д.

Это упрощенная схема моей базы данных MySQL:

---------------------------------------
| id | name | age | gender | category |
---------------------------------------

В основном я хочу создавать общие отчеты, напримеробщее количество зарегистрированных в категории, общее количество мужчин, общее количество женщин и т. д.

Базовые знания SQL.Я знаю, что могу использовать COUNT и GROUP BY, чтобы увидеть «сводки» для одного столбца.В общем, мне пришлось бы сделать несколько запросов, чтобы получить «резюме» для всех столбцов.Могу ли я сделать это одним запросом вместо этого?

Я также собираюсь предоставить подробные резюме.Под этим я подразумеваю, что мне нужно подсчитать, сколько мужчин в category, сколько несовершеннолетних в категории и т. Д. Это похоже на резюме category X age, category X gender.Опять же, я знаю, как это сделать, используя несколько запросов, но мне хотелось бы получить мнение о более элегантном решении.

1 Ответ

2 голосов
/ 22 августа 2011

Я думаю, что вы можете достичь того, что вы ищете, используя WITH ROLLUP:

SELECT id, name, age, gender, category, count(*) cnt
from my_table
GROUP BY id. name, age, gender, category
WITH ROLLUP;
...