我正在使用Open Flash Chart创建统计数据,我需要做的一件事就是生成堆积条形图。
逻辑上,我需要能够对所有不同的月/年组合,2009年12月,2010年1月,2010年2月等进行分组,然后从该组中分组所有不同的行,即访客所做的不同类型的查询(通过网站,通过电子邮件,通过电话)
目前表属性如下所示:
id(int,auto increment) date_time(日期时间格式) 类型(枚举,访问,网站,电话,电子邮件)
有什么建议吗?我尝试了一些事情并没有太多运气。
答案 0 :(得分:1)
这样的事情应该有效:
select count(*), type, YEAR(date_time), MONTH(date_time) from `table`
group by type, YEAR(date_time), MONTH(date_time)
答案 1 :(得分:1)
SELECT EXTRACT(YEAR_MONTH FROM date_time) AS ym, type, COUNT(*)
FROM mytable
GROUP BY
ym, type
答案 2 :(得分:1)
要按年份和月份分组,sql可能如下所示:
SELECT DATE_FORMAT(date_time, '%Y-%m') AS yearmonth,
COUNT(*) AS count_month
FROM table_name
GROUP BY yearmonth
答案 3 :(得分:0)
您可以创建一个包含月份字段的表格,并将其填入您感兴趣的月份,例如:
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