【问题标题】:Mysql select items that occur a number of times in given date rangeMysql选择在给定日期范围内出现多次的项目
【发布时间】:2018-02-26 21:54:57
【问题描述】:

Customer table with purchases in a date range

在这方面遇到一些挑战。

  1. 选择一小时内购买超过 2 次的所有客户 从给定的日期时间开始,例如 2016-01-01.13:00:00
  2. 选择一天内购买超过 2 次的所有客户(24 小时)从给定的日期时间开始,例如。 2016-01-01.15:30:05

    Select count(name) from cust_table where count(name) 
    IN (BETWEEN (2016-01-01.13:00:00, 2016-01-01.14:00:00))
    

【问题讨论】:

  • 学习是为了学习。如果我们为你做功课,你不会学到很多东西。
  • 不是作业。实际执行。我被 sql 部分困住了
  • WHERE count(name) >1 AND BETWEEN(2016-01-01.13:00:00, 2016-01-01.14:00:00)?
  • 或者如果你需要在一个日期时间之后:AND "date" > 2016-01-01.13:00:00

标签: mysql sql


【解决方案1】:

您需要获取所有购买两次以上的用户的标识符(用户名或 ID 等)。像下面这样的东西应该可以工作:

SELECT name FROM purchases GROUP BY name HAVING COUNT(name) > 2

要获得在某些日期之间进行购买的行,只需添加 WHERE 子句,它就会变成这样

SELECT name FROM purchases WHERE pdate BETWEEN (2016-01-01.13:00:00) AND (2016-01-01.14:00:00) GROUP BY name HAVING COUNT(name) > 2

它的作用是按名称对表格行进行分组,并在指定日期之间进行购买。然后,它使用HAVING COUNT(name) > 2 子句过滤组以仅检索出现两次以上的行。

【讨论】:

  • 谢谢。 datetime 值在 '13:00:00 附近给出 sql 错误。但是当我只约会时,它会起作用。意味着我们在日期时间之间找不到?
  • 检查此答案以获取正确的日期时间格式:stackoverflow.com/a/5786722/1256113
猜你喜欢
  • 1970-01-01
  • 2013-04-02
  • 2019-05-17
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多