gpt4 book ai didi

mysql - 用于分配满足给定条件的经理的 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 22:41:04 25 4
gpt4 key购买 nike

我有一份卖家名单,我必须为他们分配经理。数据格式如下

Seller  category    Division    Sales 
David 17 A 5000
David 23 B 2000
David 91 C 100
David 25 C 200
Jack 23 A 4000
Jack 17 A 4000
Jack 25 B 3000

现将经理名单公布如下:

Manager preferred_category  Designation
Tom 17 H
Aman 17 L
Sandy 23 H
John 23 L
Robin 91 H
Adam 91 L
Clara 25 H
Ted 25 L

现在遵循的规则如下:

  1. 卖家 A 和 B 部门类别将分配给该类别的设计“H”经理,C 类别将从销售额最高的类别的 A、B 经理那里获得相同的分配
  2. 如果所有类别都是C,那么卖家只会得到1个经理,即卖家销售额最高的类别的L设计

我已经设法用VBA解决这个问题,但是这太麻烦了,我想用sql自动化。我只需要找到某种开始或方式来开始这个过程,我就能继续前进。任何帮助将不胜感激。

提前致谢

最佳答案

这是一个粗略的方法。不保证适用于任何特定的 SQL 风格,但我假设您有 Access 或 SQL Server。

  1. 创建两个表:SELLER 和 MANAGER 并插入您的数据
  2. 在 SELLER 表中,添加一个名为“seller_id”的自动编号列和一个名为“manager_id”的新整数列(尚无数据)
  3. 在 MANAGER 表上,添加一个名为“manager_id”的自动编号列
  4. 执行一些 SQL 来填充 SELLER.manager_id 列:

规则 1 是这样的:

update seller set manager_id = 
(select manager_id from MANAGER m
inner join SELLER s on s.category = m.preferred_category
where s.division in ('A','B') and m.designation = 'H'
and rownum < 2)

对于规则 2:

update seller set manager_id = 
(select manager_id from MANAGER m
inner join SELLER s on s.category = m.preferred_category
where s.division = 'C' and m.designation = 'L'
and rownum < 2)

如果您需要为卖家分配更多经理,您需要创建一个交叉引用表并移动 ID 列

关于mysql - 用于分配满足给定条件的经理的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29350273/

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