MySQL比较当前行之前的日期范围和count()它们的数据

时间:2011-02-24 06:48:46

标签: mysql query-optimization

这是关于仍未解决的问题here - 我想尝试以不同的方式处理它。

我有一个包含两条信息的MySQL表:order_dateemail_address。这是详尽无遗的,这意味着如果有人碰巧每天进行多次购买,则会出现重复。

我需要在尽可能少的查询中获得以下报告,希望是:

YYYY-MM | number_emails_this_month | numer_emails_repeated_prior

查询结果的某些示例输出如下所示:

YYYY-MM | number_emails_this_month | numer_emails_repeated_prior
2010-02     23423               1231
2010-03     4422                2234
2010-04     1424                650

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

我不确定我明白什么是number_emails_repeated_prior。如果您可以发布一个简短的数据示例和相应的想要结果示例,那将会很有帮助。

猜测您的目标是什么,每月获得特定用户的电子邮件数量,您只需:

SELECT DATE_FORMAT(order_date, '%Y-%m') as `YYYY-MM`, 
       COUNT(email_address) as `number_emails_this_month `
FROM table_name
WHERE email_address = 'some@address'
GROUP BY 1
ORDER BY 1

答案 1 :(得分:0)

此问题在随后的相关问题中得到了解答:

MySQL Subquery with User-Defined Variables

最终解决方案是创建一个表格,其中包含所请求的范围并加入,而不是使用子查询来定义相关范围。回想起来,在MySQL中使用用户定义的变量有助于搜索无子查询的解决方案。