选择不同的月份和年份,然后细分数值
问题描述:
我使用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
答
你可以创建一个月份字段的表,并填充它为你感兴趣的几个月里,例如:
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
酷,不知道'提取物(YEAR_MONTH ...)'! – Andomar 2010-02-09 14:52:14