Mysql 如何将带有having子句的两个查询合并为一个查询?
我希望您能帮助我解决以下两个问题:Mysql 如何将带有having子句的两个查询合并为一个查询?,mysql,sql,having,Mysql,Sql,Having,我希望您能帮助我解决以下两个问题: 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'
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;
将它们组合成一个的最佳方式是什么?我的目标是选择所有客户支付现金超过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;
如果希望所有记录都不具有独立性,则可以使用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;
谢谢。你的书看起来也很有用。然而,它不应该是或代替和吗<代码>金额(SALETYPE=‘现金’后金额结束时的情况)>=50或(!)金额(SALETYPE=‘信用卡’后金额结束时的情况)>=1000代码>@user1269766。对我认为这两个条件都要满足。