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