- 1.见:《MySQL实战基础知识入门(10):今天、昨天、近7天、近30天在一个筛选语句内实现的解决方案》
上文是时间段的数据合计统计; - 2.见《MySQL实战基础知识入门(3):近7日销量合计php后端mysql语句如果当日为空则自动补0的解决方案》
上文是最近七日每日的分别统计。
如果只是为了7天,写那么字段也就算了。但是遇见了统计30天内每天的数据
时,是不是哭了呢?
新的MYSQL筛选语句:
$sql = "select DATE_FORMAT(a.paid_at,'%Y-%m-%d') as dataKey,ifnull(COUNT(a.id),0) AS totalTrans,ifnull(SUM(a.should_paid),0) AS totalPays,b.uniacid,b.dpopen from " . $db->table('orders') . " AS a, " . $db->table('set_basic') . " AS b WHERE a.paid_at <> '' AND a.uniacid = b.uniacid"; $sql .= " GROUP BY DATE_FORMAT(a.paid_at,'%Y-%m-%d') ORDER BY a.paid_at DESC LIMIT 7"; $row = $db->queryall($sql); $res["data"] = $row; die(json_encode_lockdata($res));
解析:
一、按照每日的日期作为分组的依据进行SUM统计;
DATE_FORMAT(a.paid_at,'%Y-%m-%d') as dataKey
二、限制显示数量
ORDER BY a.paid_at DESC LIMIT 7
三、调整显示方式
由于是按照时间降序排列,在echarts使用过程中,X轴需要加入反转参数
inverse: true,
Done!