假如有N个产品C,每一个有唯一一个比例因子,每种产品的数量乘以此比例因子可得到一个数值,如下
产品   数量  比例因子     结果
A      100    1.2       100*1.2=120
B      50     0.8       50*0.8=40
C      200    1.3       200*1.3=260
...    ...    ...       ...
                总数量为:120+40+360=420
问如何确定一个平衡比例因子值X,可是使下面的结果成立
(100*X)+(50*X)+(200*X)=420
注:并不一定要一定等于原总数量,可以无限接近或保留小数为6位(419.342042)

解决方案 »

  1.   

    select CONVERT(NUMERIC(18,6),sum(1.000000*数量*比例因子)/sum(数量)) 平衡比例因子 from yourtable
      

  2.   

    (100*X)+(50*X)+(200*X)=420?420/(100+50+200) = 1.2
      

  3.   

    tiaoci(我挑刺,我快乐):
    你的水平很高吗?有本事的就做出来. fangzhouyu(海) :
    并不需要精确值,只要近似值即可heluqing(鉴之小河) :
    已知产品数量与比例
      

  4.   

    要使 (100*X)+(50*X)+(200*X)=420可不就是X = 420/(100+50+200) = 1.2地球人都知道!怀疑你连提问题都不会!
      

  5.   

    nhdj(柳柳荷叶清清水) 这种方法我觉得是对的;
    至于在数据库中的sql语句,就不用罗嗦了吧?楼主说不对,可否搞个理由听听?  :)
      

  6.   

    xhh_88(三友)不是写了个SQL语句给你吗,还不照抄?
    广东人说“顶颈靠学野”,果然如此。
      

  7.   

    liufh520 (搞IT真烦) 
    可以这样吗:
      
    DECLARE 1_Cursor   CURSOR FOR
    SELECT 数量  比例因子  FROM  yourtablename  
    OPEN xs_CursorFETCH NEXT FROM 1_Cursor into @numb,@bi
    WHILE @@FETCH_STATUS = 0
    BEGIN
     select @sum1=@sum1+@numb*@bi         
    select @sum2=@sum2+@numb
    FETCH  NEXT FROM xs_Cursor into @numb,@bi
    END
    CLOSE 1_Cursor
    DEALLOCATE 1_Cursor
     
    select CONVERT(NUMERIC(18,6),@sum1/@sum2) 平衡比例因子