2011-08-22 74 views
1

我有一个注册系统。所以基本上,我有领域,如agegender生成数据汇总,MySQL中多列的行数

这是我的MySQL数据库的简单模式:

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

基本上我想产生这样的登记在一个类别总数总体报告,男性总数,女性总数等。

我的基础知识为SQL。我知道我可以使用COUNTGROUP BY来查看单个列的“摘要”。所以基本上,我不得不做多个查询来获得所有列的“摘要”。我可以在一个查询中做到这一点吗?

我也打算提供详细的总结。通过这个我的意思是,我必须理解一个category中有多少男性,一个类别中有多少个未成年人,等等。它有点像category X age,category X gender总结。再次,我知道如何使用多个查询来做到这一点,但我希望得到一些更优雅的解决方案。

回答

2

我认为你可以做到笏你正在寻找使用WITH ROLLUP

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

,像变魔术一样!我注意到,这给了我一个新的行年龄值(这是预期的行为)。如果我想将年龄分成未成年人和成年人,我将如何做到这一点? –

+0

将该字段添加到字段列表和分组列表中,该列表的内容如下所示:'IF(age <18,'minor','adult')' –