统计近一周每天的销售额

select date_format(create_at,'%Y-%m-%d') as 'date', IFNULL(SUM(amount),0) as 'dayAmount'
from order_pay_trace
where create_at >= date(now()) - interval 6 day
group by day(create_at);

统计近三个月每个月的销售额
这里在限制条件处先获得四个月的数据,因为最前面的月份不是满月的销售额,故舍去

select month(create_at) as 'month', IFNULL(SUM(amount),0) as 'monthAmount'
from order_pay_trace
where create_at >= date(now()) - interval 3 month AND date_format(create_at,'%Y-%m') <> date_format(date(now()) - interval 3 month,'%Y-%m')
group by month(create_at);

统计指定月份的销售额(此处以统计当前日期前一个月的销售额为例)

select date_format(date(now()) - interval 1 month,'%Y-%m') as 月份,IFNULL(SUM(amount),0) as 销售额
from order_orders
where date_format(create_at,'%Y-%m') = date_format(date(now()) - interval 1 month,'%Y-%m')

注意:上述sql语句也有一些bug,比方说如果使用第一条sql语句来查询当前时间内近七天的每天的销售额,因为group by分组是按照day(create_at)的日期来分的,若其中某一天没有创建订单,自然也不会有create_at,这样查出来的数据就会缺失这一天的销售额数据。
解决方案:在java代码中新建一个List<Map<String, Object>> newMapList = new ArrayList<>();集合,然后用java代码获取当前日期及其当前日期近一周内的所有日期,用java代码获得的日期和从sql中查出来的日期循环对比,若sql查出来的日期存在,那么将sql查出来的销售额赋值,若不存在默认销售额为0,最后将java代码中查出来的近七天的日期和对应的销售额存入一个map集合中一起加入到list集合中即可。

     List<Map<String, Object>> newMapList = new ArrayList<>();//获得近七天的日期和对应日期的日销售额List<Map<String, Object>> mapList = this.baseMapper.selectLastSevenDaysAmount();//处理日销售额格式 分转元for (Map<String, Object> map : mapList) {BigDecimal dayAmount = (BigDecimal) map.get("dayAmount");Integer intAmount = dayAmount.intValue();map.put("dayAmount", MoneyUtils.changeF2YDouble(intAmount));}//此处为了处理数据缺失导致的问题,比如某一天没有订单创建,那么sql语句中按照日期分组后就没有该日期这一组,自然也会缺失这一天的销售额for (int i = 0; i < 7; i++) {HashMap<String, Object> newMap = new HashMap<>();//获得近七天的日期dateSimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = new GregorianCalendar();calendar.setTime(new Date());calendar.add(Calendar.DATE,-i);String date= sdf.format(calendar.getTime());Double dayAmount = 0.0;//将获得的日期和从数据库查询的日期作比较,若存才则将数据库得到的销售额赋值,若不存在则默认该天销售额为0.0for (Map<String, Object> map : mapList) {if (date.equals(map.get("date"))) {dayAmount = (Double) map.get("dayAmount");}}newMap.put("date", date);newMap.put("dayAmount", dayAmount);newMapList.add(newMap);}return newMapList;}

sql统计近三个月每月的销售额,统计近一周每天的销售额相关推荐

  1. SQL语句统计每天、每月、每年的数据

    SQL语句统计每天.每月.每年的数据 1.每年 select year(ordertime) 年, sum(Total) 销售合计 from 订单表 group by year(ordertime) ...

  2. 数据库专题——SQL语句统计每天、每月、每年的数据

    SQL语句统计每天.每月.每年的数据 1.每年 select year(ordertime) 年, sum(Total) 销售合计   from 订单表   group by year(orderti ...

  3. 73、Spark SQL之开窗函数以及top3销售额统计案例实战

    开窗函数以及top3销售额统计案例实战 Spark 1.4.x版本以后,为Spark SQL和DataFrame引入了开窗函数,比如最经典,最常用的,row_number(),可以让我们实现分组取to ...

  4. SQL语句统计每天、每月、每年的销售总额

    每年 SQL语句统计每天.每月.每年的销售总额 每月 SQL语句统计每天.每月.每年的销售总额 每日 SQL语句统计每天.每月.每年的销售总额 总结 SQL语句统计每天.每月.每年的销售总额 SQL语 ...

  5. 用户行为分析大数据系统(实时统计每个分类被点击的次数,实时计算商品销售额,统计网站PV、UV )

    Spark Streaming实战对论坛网站动态行为pv,uv,注册人数,跳出率的多维度分析_小强签名设计 的博客-CSDN博客_spark streaming uv 实时统计每天pv,uv的spar ...

  6. oracle 收集统计信息会锁表吗,统计信息锁住导致收集统计信息失败引起sql执行异常...

    这个是老生产谈的事情,统计信息不准确导致sql执行异常,此次记录的主要是表的统计信息被锁住导致无法正常收集统计信息导致sql执行异常: 收集表的统计信息: SQL> exec DBMS_STAT ...

  7. SQL Server中的筛选后的统计信息和CE模型变化

    In this blog post, we are going to view some interesting model variation, that I've found while expl ...

  8. 统计各个商品每月的销售金额

    统计各个商品每月的销售金额 -- 主表ORDR 其中单号docentry, 客户cardcode,日期docdate -- 销售订单子表RDR1 其中单号docentry, 行号linenum,物料i ...

  9. 每天一道大厂SQL题【Day03】订单量统计

    每天一道大厂SQL题[Day03]订单量统计 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典 ...

最新文章

  1. Numpy入门教程:05. 逻辑函数
  2. Mask R-CNN:实例分割与检测算法
  3. [Beta]第二次 Scrum Meeting
  4. 人工智能:各种知识收集----不断追加内容
  5. 富爸爸穷爸爸害了我_这是我必须告诉爸爸的-在我们的时间用完之前
  6. java面向对象程序设计董小园_java面向对象程序设计(董小园版).doc
  7. 【干货】分享总结:MySQL数据一致性
  8. object htmldivelement什么意思_深入探究 Function amp; Object 鸡蛋问题
  9. 程序员从幼稚到成熟会经历哪些变化?你都知道吗?
  10. FPS 每秒传输帧数(Frames Per Second)
  11. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
  12. 后端给base64码,在前端显示成图片
  13. SQL Server Group by
  14. 抢滩直播基地:有人黯然退场,有人闪亮进场,还有人只当跳板
  15. 计算机专业群名有内涵,好听又有内涵的群名推荐 诗意有文化
  16. NDN命名网络工作机制和优点
  17. Java多线程--深入浅出Java多线程
  18. kettle安装及使用
  19. 查询彩票中奖号码小程序
  20. Filter内存马浅析

热门文章

  1. C++对象模型探索--04数据语义
  2. 三分钟教你增值税发票怎么识别
  3. unbuntu 安装mongodb
  4. 中学教学能用上python吗_AI双师教学、用Python绘图 未来的中小学可能这样上课
  5. RTKLIB学习总结(四)rnx2rtkp.c、Option文件读取
  6. 【BIEE】01_下载安装BIEE(Business Intelligence)11g 11.1.1.9.0
  7. 向日葵android平板,远程控制安卓手机、平板设备——向日葵绝对OK
  8. 基于nand flash的文件系统的整理
  9. Azure | AZ-204 认证之旅-ASP VS ASE
  10. 目前在学的汤子赢的操作系统和C语言