如何解决检查每个广告系列在一个国家/地区的销售状态是否已更改,并将结果分配给每个广告系列/所有国家/地区
CREATE TABLE operations (
id int auto_increment primary key,campaign VARCHAR(255),country VARCHAR(255),sales_status VARCHAR(255),quantity INT
);
INSERT INTO operations
(campaign,country,sales_status,quantity
)
VALUES
("C001","DE","demand","100"),("C001","US","shipped","300"),"NL","700"),"FR","400"),("C002","500"),"900"),"200"),("C003","600"),"250"),"150"),"PL","550"),("C004","825"),"462");
预期结果:
campaign | country | sales_status | quantity
---------|-----------|-----------------|------------------
C001 | DE | shipped | 100
C001 | FR | shipped | 400
C001 | NL | shipped | 700
C001 | US | shipped | 300
| |
C002 | DE | shipped | 500
C002 | FR | shipped | 200
C002 | US | shipped | 900
| | |
C003 | FR | demand | 150
C003 | NL | demand | 250
C003 | PL | demand | 550
| | |
C004 | DE | shipped | 250
C004 | PL | shipped | 550
在上表中,您可以看到不同的campaigns
及其每个sales_staus
的{{1}}
现在,如果要一个 country.
每个 country
在campaign
已发运每个其他国家/地区也应切换为sales_status
已发货。
例如在sales_status
国家C002
在FR
装运的中。
因此,所有其他sales_status
从结果中的需求更改为已发运。
我尝试了此查询,但无法使它工作:
countries
为了获得预期的结果,我需要更改什么?
解决方法
如果每个广告系列的一个国家/地区在sales_status已发货,则其他每个国家/地区也应切换为sales_status已发货。
您可以使用窗口函数和case
表达式:
select
campaign,country,case when max(sales_status = 'shipped') over(partition by campaign) = 1
then 'shipped'
else sales_status
end as sales_status,quantity
from operations
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。