2012-07-10 44 views
2

夥計我有一個表,其中我有性別和日期列所述。 現在我想統計在特定月份登記的男性和女性,所以我怎麼能讓我的查詢。mysql query building從單列中獲取2個不同的數據

mysql> select id,gender,entrydate from patient_master; 

+----+--------+------------+ 
| id | gender | entrydate | 
+----+--------+------------+ 
| 1 | Male | 2012-07-02 | 
| 2 | Female | 2012-05-10 | 
| 3 | Male | 2012-05-25 | 
| 4 | Female | 2012-07-09 | 
| 5 | Male | 2012-07-10 | 
| 6 | Female | 2012-07-10 | 
| 7 | Male | 2012-07-10 | 
+----+--------+------------+ 
+0

傢伙就像從上面的例子,我想沒有在may..so結果月登記的性別將顯示,男性和女性在同樣的方式,它會顯示計數1 7月份的男性和女性的計數爲2 – 2012-07-10 20:29:57

+0

傢伙我需要它爲multiseries線graph..so我想我需要的數據以這樣的方式,以便我可以繪製一年的所有月份。 – 2012-07-10 20:34:52

+0

結果集應該是什麼形狀?多少行? 12? 24?多少列? 3? – 2012-07-10 20:36:50

回答

0

要得到所有月份的結果:

SELECT YEAR(entrydate) AS yr, MONTH(entrydate) AS mnth, gender, COUNT(*) AS cnt 
FROM patient_master 
GROUP BY YEAR(entrydate), MONTH(entrydate), gender 

如果你想爲一個單一的所有月份年份:

SELECT MONTH(entrydate) AS mnth, gender, COUNT(*) AS cnt 
FROM patient_master 
WHERE YEAR(entrydate) = 2012 
GROUP BY MONTH(entrydate), gender 
+0

這件事情也爲我工作..thnx夥計 – 2012-07-10 20:43:24

2
select gender, count(id) as`count` 
from patient_master 
where month(entrydate) = 1 and year(entrydate) = 2012 
group by gender 

1 =一月,2 =二月...

+1

因此,爲可能,只是改變'month(entrydate)= 1'到'month(entrydate)= 5' – Applehat 2012-07-10 20:32:56

0
SELECT 
    date_format(entrydate,'%Y-%m-%b') YearMonth, 
    gender,COUNT(1) GenderCount 
FROM 
    patient_master 
GROUP BY 
    date_format(entrydate,'%Y-%m-%b'),gender 
; 

這是你的樣本數據

mysql> CREATE TABLE patient_master 
    -> (
    ->  id int not null auto_increment, 
    ->  gender varchar(10), 
    ->  entrydate date, 
    ->  primary key (id) 
    ->); 
Query OK, 0 rows affected (0.06 sec) 

mysql> INSERT INTO patient_master (gender,entrydate) VALUES 
    -> ('Male' ,'2012-07-02'), 
    -> ('Female','2012-05-10'), 
    -> ('Male' ,'2012-05-25'), 
    -> ('Female','2012-07-09'), 
    -> ('Male' ,'2012-07-10'), 
    -> ('Female','2012-07-10'), 
    -> ('Male' ,'2012-07-10'); 
Query OK, 7 rows affected (0.06 sec) 
Records: 7 Duplicates: 0 Warnings: 0 

這裏是輸出

mysql>  SELECT 
    ->   date_format(entrydate,'%Y-%m-%b') YearMonth, 
    ->   gender,COUNT(1) GenderCount 
    ->  FROM 
    ->   patient_master 
    ->  GROUP BY 
    ->   date_format(entrydate,'%Y-%m-%b'),gender 
    ->  ; 
+-------------+--------+-------------+ 
| YearMonth | gender | GenderCount | 
+-------------+--------+-------------+ 
| 2012-05-May | Female |   1 | 
| 2012-05-May | Male |   1 | 
| 2012-07-Jul | Female |   2 | 
| 2012-07-Jul | Male |   3 | 
+-------------+--------+-------------+ 
4 rows in set (0.02 sec) 

mysql> 
+0

yaa thnx夥計它爲我工作... – 2012-07-10 20:42:42

0

@juergen_d是正確的。

他的查詢將返回此:

+--------+--------+ 
| gender | count | 
+--------+--------+ 
| Male | 1  | 
| Female | 1  | 
+--------+--------+ 
相關問題