首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按日期范围的不同顺序计数

按日期范围的不同顺序计数
EN

Stack Overflow用户
提问于 2017-03-16 07:23:51
回答 2查看 75关注 0票数 0

我正在试图弄清楚如何编写一个查询,以找出在给定日期范围内有多少客户下了1次、2次等订单。客户使用其唯一的电子邮件地址进行标识,并且订单应该是不同的订单号。

基本上,数据将显示每次购买的许多order-id,因为每个行项目都有自己的重复order-id……

结果应该返回1个客户,该年有4个订单。但是,它不会返回任何内容。任何帮助都将不胜感激。

当前查询(我的数据库表名为amazon)

代码语言:javascript
复制
SELECT COUNT(DISTINCT amazon.`amazon-order-id`), amazon.`buyer-email` 
FROM amazon
WHERE amazon.`purchase-date` >= '1/1/2014' and
      amazon.`purchase-date` <= '12/31/2014'
GROUP BY amazon.`buyer-email`
HAVING COUNT(amazon.`amazon-order-id`) = 4

我正在复制和粘贴下面的一些样本数据:

代码语言:javascript
复制
*114-2021965-2390651    3/18/2014   svj8w3vj3x4y4k8@marketplace.ama4on.com                                                                                                                                                                                      
*114-2021965-2390651    3/18/2014   svj8w3vj3x4y4k8@marketplace.ama4on.com                                                                                                                                                                                      
*114-8957580-1296223    3/26/2014   svj8w3vj3x4y4k8@marketplace.ama4on.com                                                                                                                                                                                      
*114-8957580-1296223    3/26/2014   svj8w3vj3x4y4k8@marketplace.ama4on.com                                                                                                                                                                                      
*108-5564197-2113836    6/2/2014    svj8w3vj3x4y4k8@marketplace.ama4on.com                                                                                                                                                                                      
*108-5564197-2113836    6/2/2014    svj8w3vj3x4y4k8@marketplace.ama4on.com                                                                                                                                                                                      
*114-4685236-6299434    10/11/2014  svj8w3vj3x4y4k8@marketplace.ama4on.com                                                                                                                                                                                      
*114-4685236-6299434    10/11/2014  svj8w3vj3x4y4k8@marketplace.ama4on.com  
EN

回答 2

Stack Overflow用户

发布于 2017-03-16 07:51:14

使用您的示例数据,在我将distinct添加到HAVING COUNT语句之后,您的查询就可以工作了。

代码语言:javascript
复制
HAVING COUNT(DISTINCT amazon.amazon-order-id) = 4

另外,您的样本数据中的日期也给我带来了一些麻烦。为了使where子句正确工作,我必须将零添加到单位数。不过,我不确定这对你是否重要。

代码语言:javascript
复制
3 -> 03
6 -> 06  2-> 02
票数 0
EN

Stack Overflow用户

发布于 2017-03-16 08:08:50

首先,使用更标准的日期格式。

然后,如果你想要一个通用的答案,那么使用两个级别的聚合:

代码语言:javascript
复制
select num_orders, count(*), min(`buyer-email`), max(`buyer-email`)
from (select a.`buyer-email`,
             count(distinct a.`amazon-order-id`) as num_orders
      from amazon a
      where a.`purchase-date` >= '2014-01-01' and
            a.`purchase-date` < '2015-01-01'
      group by a.`buyer-email`
     ) a
group by num_orders
order by num_orders;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42822586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档