Mysql - 如何计算所有天数内的 Ids

标签 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。代表在我店里呆了一整天甚至一天 5 次的唯一 ID。

这是购买表

column1:At                     
colunm2:ID

 - '2013-09-23 11:00:14',   2:34299989
 - '2013-09-23 11:00:51',   1:100004003444031
 - '2013-09-23 11:01:02',   1:100001273059371
 - '2013-09-23 11:01:02',   1:100001476045767
 - '2013-09-23 11:01:11',   1:1081392435
 - '2013-09-23 11:01:17',   1:100001436850024
 - '2013-09-23 11:01:30',   1:100000663028305
 - '2013-09-23 11:01:38',   1:100003991975009

很抱歉这个表格显示,我无法做得更好。

最佳答案

范围内每天至少进行一次购买的 ID 数量:

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

在该范围内至少一天进行至少 5 次购买的 ID 数量:

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 次购买)。

关于Mysql - 如何计算所有天数内的 Ids,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20606430/

相关文章:

javascript - 如何访问 RowDataPacket mysql-node.js

mysql - 如何将这个使用 WITH 子句的 SQL 查询转换为 MySQL?

具有多个嵌套 JOIN 的 MySQL 查询

mysql - 仅当值不存在时返回行

java - Java 中的字符串到日期

php - 下拉列表值未发送到数据库

php - Mysql错误: Duplicate entry '1-5' for key 'PRIMARY' on insert unsure of how

mysql - 如何插入其他表中的值?

r - 在将字符日期转换为 R 调查数据中的可用日期时处理 2000 与 1900

bash - 在 bash 脚本 : next occurrence of 3pm 中使用日期命令