背景
最近在做一个BI产品,遇到了一个需求,就是用户在做数据分析时,希望可以根据数据的时间维度字段来进行天、周、月、季度、年等聚合操作。
简单的描述一下。假设我们有如下一批明细数据
下单时间下单金额下单用户2020-09-10101
2020-09-12202
2020-10-10303
2020-11-10404
如果我们想根据下单时间来统计一下每周的下单金额汇总、每月的下单金额汇总或者是每个季度的下单金额汇总,那么我们该如何做呢?
解决办法:
我们可以将时间通过函数转换到对应的每周的第一天、每月的第一天、每个季度的第一天,然后再根据这个时间进行分组和统计,就可以实现上面的这个需求了。
所以最终的目的,是我们如何把时间维度字段转换对应的每周的第一天、每月的第一天、每个季度的第一天、每年的第一天。
因为BI工具需要支持对多个数据源进行分析,所以下面给出了常用的几个数据源的操作方法。
话不多说,开干!
Mysql
天
//输出2020-09-10
SELECT DATE('2020-09-10 18:16:17');
//输出2020-09-10
SELECT DATE('2020-09-10');
复制代码
周
//输出 2020-09-21 9.24是周四 对应的周一是9.21
SELECT DATE_SUB('2020-09-24',INTERVAL WEEKDAY('2020-09-24') day);
复制代码
月
//