十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
第一种方法用left join, 把月份显示出来,没有相应月份的时候,也会显示月份对应的列,但是值为空
创新互联建站于2013年成立,先为鸡泽等服务建站,鸡泽等地企业,进行企业商务咨询服务。为鸡泽企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
第二种方法用临时表,建立2个字段,一个字段用来标注月份,另外一个字段标注统计值,先把12个月全部写进去,然后用指针对12个月进行统计,把结果填入到对应月份的统计结果中,如果为空就填0
select DATE_FORMAT(来电时间,'%Y-%m') as 月, 问题类别 , count(1) as 数量 from
( select 来电时间, 问题类别 from mytable where 问题类别 = '农村用水投诉' ) tmptable
group by DATE_FORMAT(来电时间,'%Y-%m') ,问题类别 ORDER BY 月 ASC;
下面以比较流行的mysql图形化管理工具Navicat为例,其他工具或者在命令行中以及编程语言中操作时的执行的sql语句是一样的。
1、假设在数据库中有一个名为testtest的表格,表格内容如下图所示,表中有三条记录是9月份的
2、打开一个查询窗口,输入查询语句select * from testtest where month(date)='9';,该语句表示查询testtest表格中9月份的记录
3、点击“运行”执行该sql语句,在下方可以看到已经查询到了9月份的三条记录
4、如需按年查询可输入select * from testtest where year(date)='2017';,2017代表需要查询的年份。如下图所示只查询到了一条记录是2017年的
1、UNION
2、若是innodb分表,则可以用merge处理。
直接搞一张专门针对统计数据用的汇总表
如果可能的话,不要采用分表的设计,采用表分区,这样就对于查询就不需要特殊处理了。规划好索引,性能应该不会有问题。