Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
260 views
in Technique[技术] by (71.8m points)

使用Mysql 统计一周数据,若没有数据显示为0

SELECT time,count(*) as count FROM share WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY)<DATE(time) GROUP BY time

clipboard.png
像这样,查出近七天的数据了,但是中间没有6和7号的,我要怎么写可以把6号7号的补充为0


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

@火蜥蜴 的意思是 你数据库根据分组取出一周统计的数据,然后再遍历日期。比如你给的例子:

统计数据数组是:

$result = [
    '2018-01-03' => 5,
    '2018-01-04' => 1,
    '2018-01-05' => 3,
    '2018-01-08' => 3,
    '2018-01-09' => 1,
];

然后你的一周日期数组是:

$date_list = ['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07'];

循环$date_list数组,值与$result的下标对应,有的话取出count,没有的话输出0就行了。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...