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

标签 mysql sql

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

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/

相关文章:

sql - 具有服务器和本地副本的记录的数据库设计

javascript - NodeJs + Mysql 链式多查询

php - 需要一点数组方向指向(PHP 中的动态数组)

mysql - 子查询以收集具有限制的分组子集

mysql - 将多个列附加到一个字符串

mysql使用来自另一个表的关系从表中订购数据

mysql - REGEXP 性能(与 "LIKE"和 "="比较)

python - Django:具有不同功能的相同模型?

php - 捕获 mysql_query 错误

获取项目的所有祖先的 SQL 递归查询