[英]How can I combine two queries with a having clause into one?
我希望你能帮我解决这两个查询问题:
select count(distinct ID), sum(AMOUNT)
from SALES
where YEAR(SALEDATE) = '2015' and SALETYPE ='CASH'
group by CUSTOMER having sum(AMOUNT) >=500;
select count(distinct ID), sum(AMOUNT)
from SALES
where YEAR(SALEDATE) = '2015' and SALETYPE ='CREDITCARD'
group by CUSTOMER having sum(AMOUNT) >=1000;
将它们合二为一的最佳方法是什么? 我的目的是选择客户通过CREDITCARD支付超过500现金或超过1000的所有情况。
非常感谢你的帮助。
在您的情况下,您可以使用此示例:
select count(distinct ID),
sum(AMOUNT)
from SALES
where YEAR(SALEDATE) = '2015'
and SALETYPE ='CASH'
group by CUSTOMER
having sum(AMOUNT) >=500;
UNION
select count(distinct ID),
sum(AMOUNT)
from SALES
where YEAR(SALEDATE) = '2015'
and SALETYPE ='CREDITCARD'
group by CUSTOMER
having sum(AMOUNT) >=1000;
如果您希望所有记录没有明显的,则为UN UNION ALL。
select count(distinct ID),
sum(AMOUNT)
from SALES
where YEAR(SALEDATE) = '2015'
and SALETYPE ='CASH'
group by CUSTOMER
having sum(AMOUNT) >=500;
UNION ALL
select count(distinct ID),
sum(AMOUNT)
from SALES
where YEAR(SALEDATE) = '2015'
and SALETYPE ='CREDITCARD'
group by CUSTOMER
having sum(AMOUNT) >=1000;
在having
子句中使用条件聚合:
select count(distinct ID), sum(AMOUNT)
from SALES
where YEAR(SALEDATE) = '2015' and
SALETYPE IN ('CASH', 'CREDITCARD')
group by CUSTOMER
having sum(case when SALETYPE = 'CASH' then AMOUNT end) >= 50 OR
sum(case when SALETYPE = 'CREDITCARD' then AMOUNT end) >= 1000;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.