如果满足每个条件一个条件,则列出所有值

美智

DB-Fiddle:

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带有supplierwith的supplier_ratingwith 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_ratingsupplier它会显示low所有的supplierscampaign它也并不排斥C002

我如何修改此查询以达到预期的结果?

波比

难道不只是缺少的地方吗?还是我错过了什么?

SELECT 
campaign,
supplier,
supplier_rating

FROM operations

WHERE campaign IN (SELECT campaign FROM operations WHERE supplier_rating = 'low')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果值多次存在并且满足每个条件一个条件,请列出所有值

如果每个值至少满足一个条件,则将一个值分配给所有其他值

如果所有列都满足条件,则返回一个值的 Excel 函数

如果所有行都满足相同条件,并且只有一个满足条件,则选择行

如果至少一个单元格满足给定条件(例如,缺少值),则删除所有id行

如果不满足至少一个条件,则消除所有标识符

满足一个条件时选择所有组

Postgres查询,如果满足条件,则有条件地从记录子集中返回一个值

Concur / Cognos 报告工作室 - 如果 culmn b 中的至少一个值满足条件,则显示 a 列中的所有项目

如果一个键的所有记录都满足条件,如何返回一条记录?

es6数组返回所有达到特定条件的项目,如果所有项目都满足条件,则返回第一个项目

如何使一个循环,命令用户输入查询保持一个值,直到如果条件满足,有一个try catch语句的援助?

如果满足某些条件,则查找重复值;如果找不到,则查找下一个重复值的条件。

如果条件满足,则重复数据帧的行,并更改一个值的值

如何删除其中一个值满足条件的所有行?apply()不起作用

如果两列满足一个条件,则返回其他列的计算值。熊猫 / 窗户

如果满足多个条件,则将重复的单元格值计数为一个

如果满足条件,则从python数据框中选择一个值

GROUP BY如果组中的至少一个值满足条件,则创建组

如果满足另一个数组中值的条件,则对 numpy 数组中的值求和

如果不满足条件,则保留等于最后一个值的if / elif / else的numpy

如果满足条件则更新另一个表

matplotlib - 如果满足一个条件,点之间的虚线

应用流过滤掉除满足一个条件的所有元素

拿除最后一个满足条件的所有物品?

如果在同一查询中的另一结果行中满足条件,是否有办法减少一个结果行中的值

如果超过2/3满足一个值,则返回所有记录

保留满足一个条件的行,如果满足另一个条件,则保留其上方的行

获取最后一个满足条件的可用值