如何减少从过去 30 天到现在的 SQL 查询?
Posted
技术标签:
【中文标题】如何减少从过去 30 天到现在的 SQL 查询?【英文标题】:How to decrease SQL Query from last 30 days until now? 【发布时间】:2016-06-23 08:36:22 【问题描述】:我正在尝试获取过去 30 天的数据量。
SELECT ( Now() - interval 1 month ),
Count(flightid) AS count
FROM flight
WHERE flightstatus = 0
AND flightvisibility = 1
AND flightvaliddate > Now()
AND flightvaliddate >= ( Now() - interval 1 month )
现在这工作正常,它只给我 1 行对应于上个月的同一天。
我想要的是从每天到现在的剩余数据。我该怎么做?
我正在使用 mysql。
【问题讨论】:
您使用的是什么版本的 SQL?你会在不同的系统上得到不同的答案。 @RichBenner 我正在使用 MySQL。编辑了问题 只有在flightValidate
大于now
时才能获取数据,因为这种情况AND flightvaliddate > Now() AND flightvaliddate >= ( Now() - interval 1 month )
。顺便说一句,flightvalidate
是 timestamp
数据类型吗?
使用COUNT
而不使用group by
会将您的结果集折叠成一行。
是的,感谢COUNT
的澄清,我会记住的。
【参考方案1】:
WHERE
子句中的条件错误。
既然你想要过去三十天的每日数据,那么你必须使用GROUP BY
。
SELECT
DATE(flightvalidate) AS flightValidateDate,
Count(flightid) AS count
FROM
flight
WHERE
flightstatus = 0
AND flightvisibility = 1
AND DATE(flightvaliddate) >= CURDATE() - INTERVAL 1 MONTH
GROUP BY flightValidateDate
ORDER BY flightvalidate
【讨论】:
以上是关于如何减少从过去 30 天到现在的 SQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章
Presto SQL / Athena:如何从“间隔天到秒”只返回小时、分钟和秒