2011-08-03 38 views
1

我在整數值我的SQL計數問題

性別性別和婚姻狀況列存儲數據:

婚姻狀況:

  1. 單一
  2. 寡婦
  3. 已婚

我想說明的報告很多男性和女性如何在這個表中。也與婚姻狀況相同..我需要一個單一的查詢這個報告。

贊,伯爵(男)= 100和伯爵(女)= 140這個。 Like,Count(已婚)= 120,Count(單)= 100,Count(winddow)= 10這個。

請給我Mysql/PHP解決方案。

列數據詳細信息

|性別|婚姻狀況|

​​3210

感謝,

+0

你需要兩個查詢嗎?或一個用於性別報告,另一個用於婚姻狀況? – Dirk

+0

我嘗試使用這個,但沒有運氣'從個人 SELECT COUNT (性別)的女 WHERE 性別= 1 UNION 從個人 WHERE 性別= 2' – Muhammad

+0

好選擇 COUNT(性別)的男 如果在兩個查詢中完成則沒問題。 – Muhammad

回答

6

一種常見的伎倆是使用SUM,而不是COUNT,並把那行,你是1 SUM內的表達要計數,否則爲0。 1的和等於它們的COUNT。

SELECT 
    SUM(Gender=1) AS Male_Count, 
    SUM(Gender=2) AS Female_Count, 
    SUM(Marital_status=1) AS Single_Count, 
    SUM(Marital_status=2) AS Widowed_Count, 
    SUM(Marital_status=3) AS Married_Count 
FROM mytable; 

在MySQL,一個布爾表達式(如等式比較)返回1或0。這是不能在標準ANSI SQL或在大多數其他RDBMS實現的情況下,所以你必須寫出更長CASE表達式,如果你想支持標準。

+0

問題解決了。謝謝, – Muhammad

1
select 
sum(case when gender = 1 then 1 else 0 end) as male, 
sum(case when gender = 2 then 1 else 0 end) as female, 
sum(case when gender = 1 and status = 1 then 1 else 0 end) as male_singles, 
.... and so on 
from table 
1

你約

SELECT gender,status,count(*) FROM table GROUP BY gender,status