Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择不同的月份和年份,然后细分_Php_Sql_Mysql_Database_Datatable - Fatal编程技术网

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

Php 选择不同的月份和年份,然后细分,php,sql,mysql,database,datatable,Php,Sql,Mysql,Database,Datatable,我正在使用OpenFlashChart创建统计数据,我需要能够做的一件事就是生成一个堆叠条形图 从逻辑上讲,我需要能够对所有不同的月/年组合(2009年12月、2010年1月、2010年2月等)进行分组,然后从该组中分组所有不同的行,即访客提出的不同类型的查询(通过网站、电子邮件、电话) 此时,表属性如下所示: SELECT DATE_FORMAT(date_time, '%Y-%m') AS yearmonth, COUNT(*) AS count_month FROM tab

我正在使用OpenFlashChart创建统计数据,我需要能够做的一件事就是生成一个堆叠条形图

从逻辑上讲,我需要能够对所有不同的月/年组合(2009年12月、2010年1月、2010年2月等)进行分组,然后从该组中分组所有不同的行,即访客提出的不同类型的查询(通过网站、电子邮件、电话)

此时,表属性如下所示:

SELECT DATE_FORMAT(date_time, '%Y-%m') AS yearmonth, 
       COUNT(*) AS count_month
FROM table_name 
GROUP BY yearmonth
id(整数,自动递增) 日期时间(日期时间格式) 类型(枚举、访问、网站、电话、电子邮件)


有什么建议吗?我试过一些方法,但运气不太好。

像这样的方法应该行得通:

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

像这样的方法应该会奏效:

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

您可以创建一个带有月份字段的表,并根据您感兴趣的月份填充该表,例如:

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
选择
年(月)
,月(mt.StartOfMonth)
,e.类型
,count(*)
从蒙塔布尔山
左联查询

在mt.StartOfMonth上,您可以创建一个带有月份字段的表,并为您感兴趣的月份填充该表,例如:

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
选择
年(月)
,月(mt.StartOfMonth)
,e.类型
,count(*)
从蒙塔布尔山
左联查询

在mt.StartOfMonth上,按年份和月份分组,sql可以如下所示:

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

要按年份和月份分组,sql可以如下所示:

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

酷,不知道提取(年\月…)
!酷,不知道提取(年\月…)