选择不同的月份和年份,然后细分数值

问题描述:

我使用Open Flash Chart创建统计信息,我需要做的事情之一是生成堆叠条形图。选择不同的月份和年份,然后细分数值

从逻辑上说,我需要能够将所有不同的月份/年份组合,2009年12月,2010年1月,2010年2月等等,然后从该组中所有不同的行,即访问者进行的不同类型的查询通过网站,通过电子邮件,通过phonecall)

此刻的表格属性是这样的:

ID(INT,自动增量) DATE_TIME(日期时间格式) 类型(枚举,访问,网站,电话,电子邮件)

有什么建议吗?我已经尝试了一些东西,但没有多少运气。

像这样的东西应该工作:

select count(*), type, YEAR(date_time), MONTH(date_time) from `table` 
group by type, YEAR(date_time), MONTH(date_time) 

SELECT EXTRACT(YEAR_MONTH FROM date_time) AS ym, type, COUNT(*) 
FROM mytable 
GROUP BY 
     ym, type 
+0

酷,不知道'提取物(YEAR_MONTH ...)'! – Andomar 2010-02-09 14:52:14

你可以创建一个月份字段的表,并填充它为你感兴趣的几个月里,例如:

StartOfMonth 
2010-01-01 
2010-02-01 
2010-03-01 
... 

然后你可以使用left join到组上所有月份:

select  
    year(mt.StartOfMonth) 
, month(mt.StartOfMonth) 
, e.type 
, count(*) 
from  MonthTable mt 
left join Enquiries e 
on   mt.StartOfMonth <= e.EnquiryDate 
      and e.EnquiryDate < mt.StartOfMonth + interval 1 month 
where  mt.StartOfMonth <= NOW() 
group by year(mt.StartOfMonth), month(mt.StartOfMonth), e.type 

要组按年份和月份的sql可以是这样的:

SELECT DATE_FORMAT(date_time, '%Y-%m') AS yearmonth, 
     COUNT(*) AS count_month 
FROM table_name 
GROUP BY yearmonth