MYSQL具有特定条目数的列的总和

MYSQL具有特定条目数的列的总和,mysql,sql,group-by,Mysql,Sql,Group By,您好,我正在尝试根据以下数据计算过去三个月内多次出现的不同AccountID的数量;我希望查询结果为2,因为test1@gmail.com及test2@gmail.com出现超过1次 accountid purchase requesttime test1@gmail.com 150 2017-01-01 test2@gmail.com 100 2017-01-01 test1@gmail.com 100 2017-01-01 t

您好,我正在尝试根据以下数据计算过去三个月内多次出现的不同AccountID的数量;我希望查询结果为2,因为test1@gmail.com及test2@gmail.com出现超过1次

accountid         purchase  requesttime
test1@gmail.com   150       2017-01-01
test2@gmail.com   100       2017-01-01
test1@gmail.com   100       2017-01-01
test1@gmail.com   200       2017-01-01
test2@gmail.com   240       2017-01-01
test1@gmail.com   210       2017-01-01
test3@gmail.com   4         2017-01-01
test4@gmail.com   60        2017-01-01

我认为您需要两个级别的聚合。第一个返回满足条件的电子邮件:

select n.account_id, count(*) as cnt
from ndsbulkstorage22 n
where requesttime >= CURRENT_DATE - interval 3 month
group by accountid
having count(*) > 1;
然后可以将其用作子查询:

select count(*)
from (select n.account_id, count(*) as cnt
      from ndsbulkstorage22 n
      where requesttime >= CURRENT_DATE - interval 3 month
      group by accountid
      having count(*) > 1
     ) n;

我认为您需要两个级别的聚合。第一个返回满足条件的电子邮件:

select n.account_id, count(*) as cnt
from ndsbulkstorage22 n
where requesttime >= CURRENT_DATE - interval 3 month
group by accountid
having count(*) > 1;
然后可以将其用作子查询:

select count(*)
from (select n.account_id, count(*) as cnt
      from ndsbulkstorage22 n
      where requesttime >= CURRENT_DATE - interval 3 month
      group by accountid
      having count(*) > 1
     ) n;

此查询将显示请求时间前3个月的结果和一些采购字段

MYSQL

select accountid,sum(purchase) as your_sum,requesttime from tbl_sum 
where requesttime <=DATE_ADD(requesttime,INTERVAL -3 month) GROUP BY accountid,requesttime
select accountid,sum(purchase) as your_sum,requesttime from tbl_sum 
where requesttime <=DATEADD(month,-3,requesttime) GROUP BY accountid,requesttim
选择accountid,sum(purchase)作为您的金额,requesttime from tbl\u sum

其中requesttime此查询将显示请求时间前3个月的结果和一些购买字段

MYSQL

select accountid,sum(purchase) as your_sum,requesttime from tbl_sum 
where requesttime <=DATE_ADD(requesttime,INTERVAL -3 month) GROUP BY accountid,requesttime
select accountid,sum(purchase) as your_sum,requesttime from tbl_sum 
where requesttime <=DATEADD(month,-3,requesttime) GROUP BY accountid,requesttim
选择accountid,sum(purchase)作为您的金额,requesttime from tbl\u sum

其中requesttime您声明的需求和尝试的查询不匹配。如果您提供了正确的CREATE和INSERT语句以及所需的结果,这将非常有用。查看您声明的要求和您尝试的查询不匹配。如果您提供了正确的CREATE和INSERT语句以及所需的结果,这将非常有用。看见