CREATE TABLE operations (
id int auto_increment primary key,
campaign VARCHAR(255),
supplier VARCHAR(255),
supplier_rating VARCHAR(255),
quantity INT
);
INSERT INTO operations
(campaign, supplier, supplier_rating, quantity)
VALUES
("C001", "Supplier_A", "high", "300"),
("C001", "Supplier_D", "high", "420"),
("C001", "Supplier_F", "low", "200"),
("C002", "Supplier_L", "high", "910"),
("C002", "Supplier_B", "mid", "370"),
("C003", "Supplier_Z", "mid", "136"),
("C003", "Supplier_M", "low", "247"),
("C003", "Supplier_C", "high", "496");
预期结果:
campaign | supplier | supplier_rating
-----------------|-------------------|-----------------------------
C001 | Supplier_A | high
C001 | Supplier_D | high
C001 | Supplier_F | low
-----------------|-------------------|-----------------------------
C003 | Supplier_Z | mid
C003 | Supplier_M | low
C003 | Supplier_C | high
在上面的示例中,我要查询所有campaigns
带有supplier
with的supplier_rating
with low
。
所有campaigns
这fullfill这个条件应与它们对应的上市supplier
,并supplier_rating
在结果中。
我尝试使用此查询:
SELECT
campaign,
supplier,
supplier_rating,
(CASE WHEN MAX(supplier_rating = 'low') OVER (PARTITION BY campaign) = 1
THEN 'low' ELSE supplier_rating END) AS supplier_evaluation2
FROM operations;
它接近的结果,而是显示了每个的supplier_rating
每supplier
它会显示low
所有的suppliers
每campaign
它也并不排斥C002
。
我如何修改此查询以达到预期的结果?
难道不只是缺少的地方吗?还是我错过了什么?
SELECT
campaign,
supplier,
supplier_rating
FROM operations
WHERE campaign IN (SELECT campaign FROM operations WHERE supplier_rating = 'low')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句