2011-08-22 39 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')' –