关于统计当前日期到多少天以前的 数据 每一天的数据

(统计的一定的时间段内的每一条的数据)

是查从当前日期开始 往前面的30天的订单量的一个功能 采用的是echars 形式实现的

<select id="getWaybillSumByDay" resultType="map">
    SELECT
    <foreach collection="list" item="day" separator=",">
        MAX(CASE ed WHEN '${day}' THEN amount ELSE 0 END) '${day}'
    </foreach>
    FROM(
    SELECT
    DATE_FORMAT(enter_time, '%Y-%m-%d') ed,
    COUNT(waybill_id) amount
    FROM
    u_operate
    WHERE
    dept_id = #{deptId}
    AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) &lt;= date(enter_time)
    GROUP BY
    DAY (enter_time)
    ORDER BY ed DESC) tb
<select>

##上面是sql 采用的是 先在java代码里将那一段时间遍历出来然后传入sql 遍历出来 采用 case when then 的方法进行行转列的形式
DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(enter_time) 是 取30内的时间天数
DAY (enter_time) 是根据 表里的数据进行分组 enter_time表示的是数据库里面的数据

在数据库里 最原始的sql应该是这样的

SELECT
MAX(
CASE ed
WHEN ‘2018-08-20’ THEN
amount
ELSE
0
END
) ‘2018-08-20’,
MAX(
CASE ed
WHEN ‘2018-08-21’ THEN
amount
ELSE
0
END
) ‘2018-08-21’,
MAX(
CASE ed
WHEN ‘2018-08-22’ THEN
amount
ELSE
0
END
) ‘2018-08-22’,
MAX(
CASE ed
WHEN ‘2018-08-23’ THEN
amount
ELSE
0
END
) ‘2018-08-23’,
MAX(
CASE ed
WHEN ‘2018-08-24’ THEN
amount
ELSE
0
END
) ‘2018-08-24’,
MAX(
CASE ed
WHEN ‘2018-08-25’ THEN
amount
ELSE
0
END
) ‘2018-08-25’,
MAX(
CASE ed
WHEN ‘2018-08-26’ THEN
amount
ELSE
0
END
) ‘2018-08-26’,
MAX(
CASE ed
WHEN ‘2018-08-27’ THEN
amount
ELSE
0
END
) ‘2018-08-27’,
MAX(
CASE ed
WHEN ‘2018-08-28’ THEN
amount
ELSE
0
END
) ‘2018-08-28’,
MAX(
CASE ed
WHEN ‘2018-08-29’ THEN
amount
ELSE
0
END
) ‘2018-08-29’,
MAX(
CASE ed
WHEN ‘2018-08-30’ THEN
amount
ELSE
0
END
) ‘2018-08-30’,
MAX(
CASE ed
WHEN ‘2018-08-31’ THEN
amount
ELSE
0
END
) ‘2018-08-31’,
MAX(
CASE ed
WHEN ‘2018-09-01’ THEN
amount
ELSE
0
END
) ‘2018-09-01’,
MAX(
CASE ed
WHEN ‘2018-09-02’ THEN
amount
ELSE
0
END
) ‘2018-09-02’,
MAX(
CASE ed
WHEN ‘2018-09-03’ THEN
amount
ELSE
0
END
) ‘2018-09-03’,
MAX(
CASE ed
WHEN ‘2018-09-04’ THEN
amount
ELSE
0
END
) ‘2018-09-04’,
MAX(
CASE ed
WHEN ‘2018-09-05’ THEN
amount
ELSE
0
END
) ‘2018-09-05’,
MAX(
CASE ed
WHEN ‘2018-09-06’ THEN
amount
ELSE
0
END
) ‘2018-09-06’,
MAX(
CASE ed
WHEN ‘2018-09-07’ THEN
amount
ELSE
0
END
) ‘2018-09-07’,
MAX(
CASE ed
WHEN ‘2018-09-08’ THEN
amount
ELSE
0
END
) ‘2018-09-08’,
MAX(
CASE ed
WHEN ‘2018-09-09’ THEN
amount
ELSE
0
END
) ‘2018-09-09’,
MAX(
CASE ed
WHEN ‘2018-09-10’ THEN
amount
ELSE
0
END
) ‘2018-09-10’,
MAX(
CASE ed
WHEN ‘2018-09-11’ THEN
amount
ELSE
0
END
) ‘2018-09-11’,
MAX(
CASE ed
WHEN ‘2018-09-12’ THEN
amount
ELSE
0
END
) ‘2018-09-12’,
MAX(
CASE ed
WHEN ‘2018-09-13’ THEN
amount
ELSE
0
END
) ‘2018-09-13’,
MAX(
CASE ed
WHEN ‘2018-09-14’ THEN
amount
ELSE
0
END
) ‘2018-09-14’,
MAX(
CASE ed
WHEN ‘2018-09-15’ THEN
amount
ELSE
0
END
) ‘2018-09-15’,
MAX(
CASE ed
WHEN ‘2018-09-16’ THEN
amount
ELSE
0
END
) ‘2018-09-16’,
MAX(
CASE ed
WHEN ‘2018-09-17’ THEN
amount
ELSE
0
END
) ‘2018-09-17’,
MAX(
CASE ed
WHEN ‘2018-09-18’ THEN
amount
ELSE
0
END
) ‘2018-09-18’
FROM
(
SELECT
DATE_FORMAT(enter_time, ‘%Y-%m-%d’) ed,
COUNT(waybill_id) amount
FROM
u_operate
WHERE
dept_id = 28
AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(enter_time)
GROUP BY
DAY (enter_time)
ORDER BY
ed DESC
) tb
这是最终的数据展示 将日期 和数据 相对应到 横坐标上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值