Mysql 选择在给定日期范围内多次出现的项目

标签 mysql sql

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))
    

最佳答案

您需要获取所有进行过两次以上购买的用户的标识符(用户名或 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 子句过滤组,以仅检索出现两次以上的行。

关于Mysql 选择在给定日期范围内多次出现的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48989795/

相关文章:

Mysql 订单日期 按 m/h/s

mysql - 无法将列用于子查询 - MySQL 数据库

mysql - BLToolKit:如何获取 'empty' 日期时间字段?

mysql - 使用 mysql 数据库中的文件名填充表单

mysql - 一张表中的多个select SQL

mysql - SQL结果加法

sql - 如何在 Oracle 中将日期转换为日期时间?

mysql - 在mysql中获取给定 parent 的所有 child

php - 在 PHP 中使用 OOP 从查询中检索数据

sql - 表中的存储过程列表