Randy·Yu 2022-11-05 11:12 采纳率: 100%
浏览 94
已结题

mysql单表,依据数据内容按比例计算出权限值,依据权限值进行排序

还请各位帮忙看下这个问题要如何解决。
表单内容如下图:

img


表名为COMPANY_PLANT

需求:
依据数据计算出p1~p3每个厂房的权限值,最终依据权限值进行降序排序。

解析:
1.每个厂(PLANT)都有三个数据类别(DATA_TYPE):OUTPUT,WFF,DID,它们都有ACT和GOAL两个数据值;
2.关于权限值的计算以p1为例(其他厂区比例一致),p1的权限值 = OUTPUT数据类别的(ACT/GOAL)*0.5的值 + WFF数据类别的(ACT/GOAL)*0.25的值 + DID数据类别的(ACT/GOAL)*0.25的值;
3.ACT和GOAL两个值存在为0的情况。

  • 写回答

2条回答 默认 最新

  • curating 2022-11-05 20:52
    关注

    原始数据和增加p4 存在act/goal为0的记录:

    img


    语句机结果截图:

    img


    完整源代码:

     select c.*
     from 
     (select b.plant,sum(b.weight) sum_weight
       from 
          ( select
             a.plant,a.data_type, case a.data_type
                        when 'OUTPUT' then (act/goal)*0.5
                        when 'WFF'    then (act/goal)*0.25
                        when 'DID'    then (act/goal)*0.25
                        end weight                    
              from 
                (select plant,data_type,act,goal from COMPANY_PLANT where goal <>0) a
           ) b
     group by b.plant 
     ) c 
     order by c.sum_weight desc;
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月7日
  • 已采纳回答 11月7日
  • 赞助了问题酬金15元 11月5日
  • 赞助了问题酬金1元 11月5日
  • 展开全部