yufan8410 2015-04-02 07:35 采纳率: 0%
浏览 2112

两个表各自排序后再按权重合并后排序问题?求指点,谢谢

原需求:这是个仓库自动入库策略, 共6台堆垛机,同时入库工作,要求根据入库物料在各堆垛机的分布数量,平均分布入库,同时考虑堆垛机入库任务数和繁忙程度。
(对物料分布查询的结果和堆垛机任务查询的结果分别作比重排序(例如物料分布排序1-6,堆垛机任务数量排序1-6,两者相加最后综合排序1-6)找出需要入库的堆垛机。)
实现过程:1.先查询需要入库的物料在各堆垛机所在巷道的分布,找出各个巷道物料数从小到大排序;排序的结果如下:(这个是从表A中查到的)
表A查询结果:

堆垛机 物料数-------------堆垛机 权重
a 23 ---------------- a 3
b 16 -----------------b 2
c 32 --转化为权重:-- -c 5
d 0 ------------------ d 1
e 26 -------------------e 4
f 39 -------------------f 6
2查询所有堆垛机任务数(从表B中查询的结果),从小到大排序。排序结果如下
表B查询结果:

堆垛机 任务数--------------堆垛机 权重
a 10-------------------a 2
b 13------------------b 4
c 23----转化为权重:--c 5
d 11------------------ d 3
e 0--------------------e 1
f 28-------------------f 6

3.将2次结果的权重相加

a 3----------------a 2------------a 5-----------------d 4
b 2----------------b 4----------- b 6-----------------a 5
c 5--------加------c 5------结果---c 10---排序后--- e 5
d 1----------------d 3-------------d 4---------------b 6
e 4----------------e 1-------------e 5--------------c 10
f 6-----------------f 6 ------------f 12--------------f 12

如果不按比重排序而直接按SUM结果排序是这样:
a 23---------------a 10------------a 33---------------d 11
b 16-------------- b 13------------b 29--------------e 26
c 32------加--------c 23----结果---c 55---排序后---b 29
d 0----------------d 11------------d 11---------------a 33
e 26--------------- e 0-------------e 26---------------c 55
f 39 ---------------f 28------------f 67 --------------f 67
这个结果跟我想要的结果不一样。因为表A中的物料数远远大于表B中的任务数(例如表A 堆垛机d的物料数可能是2000,而表B 堆垛机d的任务数可能只有1个,所以不能简单的相加排序,如果这样相加排序了表B任务数的约束条件就不起作用了,而权重排序更均匀些,毕竟物料数和任务数都是要考虑的约束条件)
堆垛机---权重
d---------4
a---------5
e---------5 :daebcf是我想要的排序结果,用权重排序更均匀些(表A)
b---------6
c---------10
f---------12

以下是例子:
表a
字段1 字段2

a 23
b 16
c 32
d 0
e 26
f 39

表b
字段1 字段2
a 10
b 13
c 23
d 11
e 0
f 28

要求结果:
表a和表b各自排序,排序后按结果赋予顺序权重值从小到大:
a表排序后:
字段1 权重
d 1
b 2
a 3
e 4
c 5
f 6
B表排序后:
字段1 权重
e 1
a 2
d 3
b 4
c 5
f 6
然后将两个权重结果合并求和排序,按从小到大:
结果如下:
d 4
a 5
e 5
b 6
c 10
f 12

主要是为了求出权重最小的d. 求指导,谢谢

  • 写回答

2条回答 默认 最新

  • danielinbiti 2015-04-02 08:08
    关注
     select * from 表a order by 字段2;//表a排序
    select * from 表b order by 字段2;//表b排序
    
    select 字段1,sum(字段2) as 字段2 from(//合并
    select * from 表a
    union
    select * from 表b
    ) order by 字段2;
    
    评论

报告相同问题?

悬赏问题

  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?