gpt4 book ai didi

在同一个表上加入连接的 SQL 计数查询

转载 作者:行者123 更新时间:2023-12-04 19:02:41 24 4
gpt4 key购买 nike

如果解决方案很明显,请提前为这个问题道歉。我已经搜索过但还没有找到解决方案。

我有一个包含 2 列的 Orders 表:CustID 和 ProductBrand。
ProductBrand 是所订购商品的品牌,例如索尼、惠普、戴尔等

我想获取至少订购了 10 件 ProductBrand=Sony 但少于 5 件 ProductBrand=HP 的客户列表。

我可以用这些方法来做到这一点吗?

SELECT o1.CustID
FROM Orders o1 HAVING COUNT(o1.ProductBrand="Sony") >= 10
INNER JOIN Orders o2 ON o1.CustID = o2.CustID
HAVING COUNT(o2.ProductBrand="HP") < 5;

最佳答案

您可以在没有自联接的情况下执行此操作,只需聚合:

select o.custid
from orders o
group by o.custid
having sum(case when o.ProductBrand = 'Sony' then 1 else 0 end) >= 10 and
sum(case when o.ProductBrand = 'HP' then 1 else 0 end) < 5;

在 MySQL 中,您可以通过删除 case 来简化此操作。 :
select o.custid
from orders o
group by o.custid
having sum(o.ProductBrand = 'Sony') >= 10 and
sum(o.ProductBrand = 'HP') < 5;

关于在同一个表上加入连接的 SQL 计数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33909118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com