Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将带有having子句的两个查询合并为一个查询?_Mysql_Sql_Having - Fatal编程技术网

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。对我认为这两个条件都要满足。