【问题标题】:How to decrease SQL Query from last 30 days until now?如何减少从过去 30 天到现在的 SQL 查询?
【发布时间】: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 ) 。顺便说一句,flightvalidatetimestamp 数据类型吗?
  • 使用COUNT 而不使用group by 会将您的结果集折叠成一行。
  • 是的,感谢COUNT 的澄清,我会记住的。

标签: mysql


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 2018-08-25
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2013-07-08
    相关资源
    最近更新 更多