mysql - 如何将两个带有 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' 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;

OR UNION ALL 如果你想要所有没有distinct的记录。

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;

关于mysql - 如何将两个带有 having 子句的查询合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657413/

相关文章:

sql - 在HAVING子句之后可以有WHERE子句吗?

MySql 从已选择的数据中选择

java - <%@ 页面导入 ="com.sql.*"%> 错误

MySQL 8.0 使用 LEFT JOIN 返回 0 行,而不是返回具有 0 列值的 1 行

sql - MySQL分组限制查询

sql - 防止 SELECT 检索事务开始后提交的行

mysql - 如何从表中删除列(如果存在)

mysql - 如何搜索在 WHERE 条件或 HAVING 条件下可以返回 true 的值?

mysql - 如何创建一个使用整个其他外部表的表?

c# - Winforms 上的 SQL 更新语句