Mysql统计每年每个月的数据(前端页面统计图实现)

最终想实现的效果图,在这里就不多废话了,直接上效果图,由于测试数据有几个月是为0的,所以数据图看着会有点怪怪。

接下来是数据库的两个表,这里直接给你们代码了,你们根据自己的需求更改即可

1 --会员充值表

2 CREATE TABLErechargeinfo(3 r_num INT PRIMARY KEY COMMENT '充值编号',4 v_card VARCHAR(12) COMMENT '会员卡号',5 r_recharge DOUBLE COMMENT '充值金额',6 r_payway VARCHAR(20) COMMENT '支付方式',7 o_id INT COMMENT '操作员工编号',8 r_time DATETIME COMMENT '交易时间',9 r_remark VARCHAR(50) COMMENT '交易备注',10 FOREIGN KEY (o_id) REFERENCESoperatorinfo(o_id)11 )ENGINE = InnoDB COMMENT '会员充值信息表';12 alter table rechargeinfo change r_time r_time timestamp not null defaultNOW();13

14 --停车登记表

15

16 CREATE TABLEparkinginfo(17 p_num INT PRIMARY KEY COMMENT '停车编号',18 c_carplate VARCHAR(20) NOT NULL COMMENT '车牌号',19 p_card VARCHAR(20) COMMENT '停车牌号',20 p_picture VARCHAR(50) COMMENT '进场拍摄图',21 p_entrytime Date COMMENT '进场时间',22 p_leavetime Date COMMENT '出场时间',23 p_type VARCHAR(10) COMMENT '客户类型',24 p_cost Double COMMENT '停车费用',25 p_payway VARCHAR(20) COMMENT '支付方式',26 v_card VARCHAR(12) COMMENT '会员卡号',27 v_phone VARCHAR(12) COMMENT '临时客户手机号码',28 p_condition VARCHAR(20) DEFAULT '正在停车中' COMMENT '状态',29 p_remark VARCHAR(50) COMMENT '备注'

30

31 )ENGINE = InnoDB COMMENT '停车信息表';32 alter table parkinginfo change p_entrytime p_entrytime timestamp not null default NOW();

接下来就是重点了:

SQL语句,只需要传入一个参数(年份)即可, 这个是统计会员充值表的,另一张表同理

1 select

2 sum(case month(r_time) when '1' then r_recharge else 0 end) asJan,3 sum(case month(r_time) when '2' then r_recharge else 0 end) asFeb,4 sum(case month(r_time) when '3' then r_recharge else 0 end) asMar,5 sum(case month(r_time) when '4' then r_recharge else 0 end) asApr,6 sum(case month(r_time) when '5' then r_recharge else 0 end) asMay,7 sum(case month(r_time) when '6' then r_recharge else 0 end) asJune,8 sum(case month(r_time) when '7' then r_recharge else 0 end) asJuly,9 sum(case month(r_time) when '8' then r_recharge else 0 end) asAug,10 sum(case month(r_time) when '9' then r_recharge else 0 end) asSept,11 sum(case month(r_time) when '10' then r_recharge else 0 end) asOct,12 sum(case month(r_time) when '11' then r_recharge else 0 end) asNov,13 sum(case month(r_time) when '12' then r_recharge else 0 end) asDece14 fromrechargeinfo15 where year(r_time)='2019';

效果图:可以看到,每个月的数据已经查出来了

接下来给出的是Dao层代码,service层就不写了,是个程序员,dao层知道,service都会写

importjava.util.Map;public interfaceTotalDao {

MapgetRechargeTotal(String toyear);

MapgetParkingTotal(String toyear);

}

以及Mapper文件代码:注意,这里的结果类型一定要是java.util.LinkedHashMap, 如果是HashMap,是不会报错,但是顺序会乱,So,,你懂得。

select

sum(case month(r_time) when '1' then r_recharge else 0 end) as Jan,

sum(case month(r_time) when '2' then r_recharge else 0 end) as Feb,

sum(case month(r_time) when '3' then r_recharge else 0 end) as Mar,

sum(case month(r_time) when '4' then r_recharge else 0 end) as Apr,

sum(case month(r_time) when '5' then r_recharge else 0 end) as May,

sum(case month(r_time) when '6' then r_recharge else 0 end) as June,

sum(case month(r_time) when '7' then r_recharge else 0 end) as July,

sum(case month(r_time) when '8' then r_recharge else 0 end) as Aug,

sum(case month(r_time) when '9' then r_recharge else 0 end) as Sept,

sum(case month(r_time) when '10' then r_recharge else 0 end) as Oct,

sum(case month(r_time) when '11' then r_recharge else 0 end) as Nov,

sum(case month(r_time) when '12' then r_recharge else 0 end) as Dece

from rechargeinfo

where year(r_time)=#{toyear};

select

sum(case month(p_leavetime) when '1' then p_cost else 0 end) as Jan,

sum(case month(p_leavetime) when '2' then p_cost else 0 end) as Feb,

sum(case month(p_leavetime) when '3' then p_cost else 0 end) as Mar,

sum(case month(p_leavetime) when '4' then p_cost else 0 end) as Apr,

sum(case month(p_leavetime) when '5' then p_cost else 0 end) as May,

sum(case month(p_leavetime) when '6' then p_cost else 0 end) as June,

sum(case month(p_leavetime) when '7' then p_cost else 0 end) as July,

sum(case month(p_leavetime) when '8' then p_cost else 0 end) as Aug,

sum(case month(p_leavetime) when '9' then p_cost else 0 end) as Sept,

sum(case month(p_leavetime) when '10' then p_cost else 0 end) as Oct,

sum(case month(p_leavetime) when '11' then p_cost else 0 end) as Nov,

sum(case month(p_leavetime) when '12' then p_cost else 0 end) as Dece

from parkinginfo

where year(p_leavetime)=#{toyear} and p_condition='交易完成' ;

Control层:

1 //统计页面

2 @RequestMapping("/totalui")3 public ModelAndView test(@RequestParam(value ="toyear",required = false,defaultValue = "2019")String toyear){4 ModelAndView mv = newModelAndView();5 //get all data

6 Map rechargeTotal =service.getRechargeTotal(toyear);7 Map pachargeTotal =service.getParkingTotal(toyear);8 //test

9 System.out.println("测试所有数据: "+rechargeTotal.values()+" ");10 System.out.println("测试所有数据 : "+ pachargeTotal.values()+" ");11

12 //统计

13 Map datatotal = new LinkedHashMap<>();14 for(String key:rechargeTotal.keySet()){15 if(pachargeTotal.containsKey(key)){16 datatotal.put(key, rechargeTotal.get(key)+pachargeTotal.get(key));17 }18 }19 System.out.println("合并后的数据!!!"+datatotal.values());20

21 //set atrr

22 mv.addObject("redata",rechargeTotal.values());23 mv.addObject("padata",pachargeTotal.values());24 mv.addObject("totaldata",datatotal.values());25 mv.setViewName("Income");26 returnmv;27

28 }

前端页面显示图代码:

1

2 varchart=Highcharts.chart('container', {3 chart: {4 type:'column'

5 },6 title: {7 text:'洱海湾停车场营业额统计'

8 },9

10 legend: {11 align:'right',12 verticalAlign:'middle',13 layout:'vertical'

14 },15 xAxis: {16 categories: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],17 labels: {18 x:-10

19 }20 },21 yAxis: {22 allowDecimals:false,23 title: {24 text:'金额'

25 }26 },27 series: [{28 name:'会员充值收入',29 data: ${redata}30 }, {31 name:'停车收入',32 data: ${padata}33 }, {34 name:'合计收入',35 data: ${totaldata}36 }],37 responsive: {38 rules: [{39 condition: {40 maxWidth:1500

41 },42 chartOptions: {43 legend: {44 align:'center',45 verticalAlign:'bottom',46 layout:'horizontal'

47 },48 yAxis: {49 labels: {50 align:'left',51 x:0,52 y:-5

53 },54 title: {55 text:'¥金额以元为单位'

56 }57 },58 subtitle: {59 text:null

60 },61 credits: {62 enabled:false

63 }64 }65 }]66 }67 });68

69

大功告成,不懂得可以直接评论咨询!!!!!

php mysql统计每个月数据,Mysql统计每年每个月的数据——详细教程相关推荐

  1. python数据可视化读取excell文件绘制图像详细教程

    python数据可视化读取excell文件绘制图像详细教程 python数据可视化 python库中的基本用法 import pandas as pd # 调用pandas库 来读取excell的文件 ...

  2. mysql安装 linux 5.6,Linux安装MySql5.6版详细教程

    Linux安装MySql5.6版详细教程 Szx • 2019 年 02 月 26 日 首先下载mysql,然后上传到 /usr/local/tmp/下(如果没有这个目录创建一个即可或者存放其他目录) ...

  3. 数据库mysql怎么清空缓存_MySQL数据库如何清空缓存?详细教程在这里

    众所周知,数据库是用来存储数据的.当然数据库根据数据的需求不同分为很多类型.在众多数据库中,MySQL数据库是我们比较常见的,也是应用比较多的.但是很多新手MySQL数据库使用者,对于MySQL数据库 ...

  4. mysql官网安装步骤_MySQL的安装与配置——详细教程

    免安装版的Mysql MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用的 标准化语言,其特点为体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,在 Web 应 ...

  5. 忘记mysql密码后如何修改密码(2022最新版详细教程保姆级)

    忘记mysql密码后如何修改密码 注意事项 步骤 注意事项 一共用到两个cmd窗口,每一个都要以管理员身份打开,且在修改密码后,要先关闭第一个跳过验证密码的mysql服务的cmd窗口,再启动mysql ...

  6. kettle同步数据到hive 巨慢_超详细教程,kettle ETL mysql到hadoop hive数据抽取,值得收藏...

    那么如何将mysql数据导入到hive里呢,kettle里有自带方法,可以通过表输入和表输出来实现,不过自带的方法载入数据极其缓慢,不推荐使用这种方法. 1.hive建表 注意hive表使用" ...

  7. mysql密码忘了_MySQL忘记密码怎么办 密码重置详细教程

    登录MySQL,密码输入错误/* 密码错误,报如下错误 */[root@TESTDB ~]# mysql -uroot -p   -P3306 Enter password: ERROR 1045 ( ...

  8. 英文数据集txt_如何用自己的数据制作 Pascal VOC 格式的数据集 详细教程(文中有所有代码)...

    目前object detection这块主流的数据集主要就是COCO和Pascal VOC格式的.github上现成的检测算法基本都是自带VOC格式数据集的输入接口的,所以想要跑起来一个算法,我们需要 ...

  9. mysql 5.7.18源码包下载_MYSQL数据库CentOS6.9+Mysql5.7.18源码安装详细教程

    <MYSQL数据库CentOS6.9+Mysql5.7.18源码安装详细教程>要点: 本文介绍了MYSQL数据库CentOS6.9+Mysql5.7.18源码安装详细教程,希望对您有用.如 ...

  10. 怎么从安卓设备转移数据到苹果_如何将数据从安卓手机转移到苹果手机

    手机人手一部,更新也特别快,换系统的同时也想保留之前的数据怎么办?如何将数据从安卓手机转移到苹果手机?android手机数据转移到iPhone手机的方法教程在这里为你准备,第一次使用苹果的用户怎样才能 ...

最新文章

  1. 验证插件——jquery.validate.js
  2. java 文件 字符串_java将字符串写入到txt文件中
  3. 42 - 算法 - 198-打家劫舍-动态规划
  4. C#读写XML的演示程序(1)
  5. mac 搭建mysql环境_Mac下MySQL环境搭建的步骤详解
  6. 软考 信息安全工程师怎么样
  7. 垂直滤波和水平滤波的区别_无锡有源滤波器的功能是_灿勤科技
  8. L298N——简介及用法
  9. [Algorithm]Bubble_冒泡算法代码实现
  10. 标准模板库(STL)介绍
  11. mac MySql 重启
  12. R语言图像处理EBImage包详解
  13. 清明祭扫html5,精选清明节扫墓随笔作文500字5篇
  14. 不可不知!4种常见的黑客攻击手段
  15. 如何将QRcode二维码的定位标做成圆形
  16. 联想网站诊断分析(12.10)
  17. 深度相机原理揭秘之3D结构光Sensor(iPhone X、小米8探索版、OPPO Find)
  18. 关于透明桌面相框图片不能显示的问题
  19. boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.Output
  20. 通过JAVA读取Visio

热门文章

  1. 【构造函数】解析构造函数的作用
  2. Creator模块介绍—领略模块化的力量
  3. opencv 检测 键盘_C++ 利用opencv识别飞车舞蹈按键
  4. navisworks保姆级安装教程?还不会安装?
  5. java jxl label_jxl.write.label 方法
  6. R plot图片背景设置为透明_R语言实战 牛国庆
  7. 创业板计算机软件股票,创业板、中小板继续活跃 8只计算机股受热捧
  8. [计算机图形学]光线追踪的基本原理(前瞻预习/复习回顾)
  9. 首师大附中集训第十三天综合模测
  10. 计算机不能读手机内存不足,电脑和手机的内存不足怎么办