我有一个表,每15分钟存储一次cron作业的结果,它只不过是一个时间戳、一个填充数和一个id。
我试着如下查询它。
SELECT ROUND(AVG(`population`),0) AS population, DATE(`time`) AS date
FROM `swg_servertracker`
WHERE `time` >= DATE(NOW()) - INTERVAL 7 DAY
GROUP BY DATE(`time`)
DESC
LIMIT 7
它创建一个日均值,并获取最后7个条目。不幸的是,我没有按正确的顺序,所以我把它翻到了上升。我的问题是当我( asc
)它跳过了今天,又回到了一天(今天是十月三日,我用升序的时候,等式中没有考虑到这一点)
我试着将where语句设置为刚才的168小时间隔(也就是7天,但是相对向后),但在这方面也没有结果。但它还是跳过了今天,从昨天起又回到了7天。
SELECT ROUND(AVG(`population`),0) AS population, DATE(`time`) AS date
FROM `swg_servertracker`
WHERE `time` >= NOW() - INTERVAL 168 HOUR
GROUP BY DATE(`time`)
ASC
LIMIT 7
那么,有没有什么方法可以让我也考虑到今天的情况呢?
2条答案
按热度按时间yjghlzjz1#
可以在派生表中获取结果集,然后再次对结果进行排序。
注意,在mysql中,在
Select
子句可用于Group By
,Having
以及Order By
条款。所以,我取了个别名DATE(time)
以避免在Group by
以及Order By
.您可以这样做:
vwhgwdsa2#
选择8条记录而不是7条记录。如果要选择7条最新记录,则必须使用“大于”符号,而不是“大于或等于”符号。