gpt4 book ai didi

来自 2 个表的 SQL 匹配数据

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

我有2张 table 。

'Order details'
OrderID | Quantity | UnitPrice | ProductID
1002 | 19 | 17 | 824
1002 | 5 | 15 | 285
1003 | 7 | 17 | 824
1003 | 7 | 15 | 285
1003 | 7 | 11 | 205
1004 | 12 | 11 | 205


'Orders'
OrderID | CustomerID
1002 | 224
1003 | 348
1004 | 224

我需要找到与另一个 CustomerID 具有相同订单 (ProductID) 的 CustomerID,例如 ID 号 224。必须接受所有订单,我的意思是它的所有 OrderID。
所以输出将是 348,因为这个 id 在他的订单中具有完全相同的 productid。

最佳答案

如果您希望客户拥有相同的产品:

with od1 as (
select distinct o.customerid, od.productid
from orderdetails od join
orders o
on o.orderid = od.orderid
),
od as (
select od1.*,
(select count(*) from od1 od2 where od2.customerid = od1.customerid) as numproducts
from od1
)
select od.customerid
from od od join
od od2
on od.productid = od2.productid and od.numproducts = od2.numproducts and
od.customerid = 224
group by od.customerid
having count(*) = od.numproducts;

CTE 的目的只是为每个客户、产品和产品数量获取一行。外部查询计算两个客户之间的匹配数。匹配的数量需要与产品的数量相匹配。

这将返回完全匹配。第二个客户必须拥有完全相同的产品,不多也不少。

注意:这将返回原始客户(很容易用 where 子句过滤掉)。

关于来自 2 个表的 SQL 匹配数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542679/

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