Mysql-如何计算I';在所有的日子里都是最完整的

Mysql-如何计算I';在所有的日子里都是最完整的,mysql,sql,date,count,distinct,Mysql,Sql,Date,Count,Distinct,此查询: SELECT date_format(At,'%d %M %Y') as At, COUNT(ID) as ids FROM `purchases` WHERE At >= '2013-12-08 00:00:00' AND At <= '2013-12-09 23:59:59' GROUP BY date_format(At,'%D%M%Y') 很抱歉出现此表显示,我做得再好不过了。在该范围内每天至少购买一次的IDs的数量: SELECT COUNT(ID) FRO

此查询:

SELECT date_format(At,'%d %M %Y') as At,
COUNT(ID) as ids 
FROM `purchases`
WHERE At >= '2013-12-08 00:00:00' AND At <= '2013-12-09 23:59:59' 
GROUP BY date_format(At,'%D%M%Y')

很抱歉出现此表显示,我做得再好不过了。

在该范围内每天至少购买一次的
ID
s的数量:

SELECT COUNT(ID) FROM (
  SELECT   ID
  FROM     purchases
  WHERE    At >= '2013-12-08' AND At < '2013-12-10' 
  GROUP BY ID
  HAVING   COUNT(DISTINCT DATE(At)) = DATEDIFF('2013-12-10','2013-12-08')
) t
SELECT COUNT(DISTINCT ID) FROM (
  SELECT   ID, DATE(At)
  FROM     purchases
  WHERE    At >= '2013-12-08' AND At < '2013-12-10' 
  GROUP BY ID, DATE(At)
  HAVING   COUNT(*) >= 5
) t

(如果您在
ID
一天内至少购买了5次的次数之后,请从最后一个查询中删除
DISTINCT
,即,如果同一
ID在多个日期中的每一天至少购买了5次,请多次计数)。

您的问题不是很清楚。请解释您试图检索的信息以及数据库中的字段,以便我们可以为您提供帮助。您的表列
At
与别名结果列
At
之间存在名称冲突。虽然在
WHERE
GROUP BY
子句中,MySQL将优先使用表列而不是别名结果列,但最好通过避免名称冲突来更加明确-例如,命名结果列
AtDate
。在这个例子中,你可能会发现MySQL的函数比
DATE\u FORMAT()
更方便。非常感谢,这个查询非常重要,可能很多人都需要它。目前尚不清楚它如何发挥作用。再次感谢你!(键入双精度,其中不包括此简单修复)
SELECT COUNT(DISTINCT ID) FROM (
  SELECT   ID, DATE(At)
  FROM     purchases
  WHERE    At >= '2013-12-08' AND At < '2013-12-10' 
  GROUP BY ID, DATE(At)
  HAVING   COUNT(*) >= 5
) t