一定要整百吗?
原始数据是什么样的?

解决方案 »

  1.   

    不需要整百,保留一位小数位,原始数据就是:
    张三  50000
    李四  78854
    王五  65821
    赵六  35215

    把他们年收入,分到12个月里
      

  2.   

    做假账??如果不怕查,办法很简单。
      

  3.   

    啥办法? 能快速做账最简单方式,举个例子:
    如果年收入是1000,除12,商80,余40。
    然后,1~6月就是70、60、50、40、30、20;7~12月就是90、100、110、120、130、140。最后,余数的40加到12月,12月就是180。稍麻烦点的方式:
    如果年收入是1000,除12,商80,余40。
    然后生成一个随机数,用80加上这个随机数,变成7月份工资,80减去这个随机数,变成6月工资;再生成一个随机数,用80加上这个随机数,变成8月份工资,80减去这个随机数,变成5月工资……最后将余数加到12月。比较好的方式:
    如果年收入是1000,拿出720平均到每个月是60,剩余280,然后生成一个30以内的随机数(如25),加到60上,就是1月份工资(85),280减去这个随机数(剩余195);再生成一个30以内的随机数(如17),加到60上,就是2月份工资(77),再减去这个随机数(195-17=178)……如果剩余的数不够减了,就减成负数,还是加到60上。当然,每次都要检测是否重复。这样做的好处就是,每个月的工资都会在平均数左右变动,不会出现这个月上万,下个月几十的情况。如果不怕被查,就用第一种方式。怕查,就用最后一种。
      

  4.   

    啥办法? 能快速做账资都会在平均数左右变动,不会出现这个月上万,下个月几十的情况。如果不怕被查,就用第一种方式。怕查,就用最后一种。
    这种差异太小 不敢用
      

  5.   

    哎 不如我每月弄个系数,算出来个数在补差
      

  6.   

    啥办法? 能快速做账资都会在平均数左右变动,不会出现这个月上万,下个月几十的情况。如果不怕被查,就用第一种方式。怕查,就用最后一种。
    这种差异太小 不敢用
    如果怕查,就加大随机数大小。
    如第三种方式“如果年收入是1000,拿出720平均到每个月是60,剩余280”,改成“如果年收入是1000,拿出360平均到每个月是30,剩余640去产生随机数”。这样范围就会加大很多。
      

  7.   

    啥办法? 能快速做账资都会在平均数左右变动,不会出现这个月上万,下个月几十的情况。如果不怕被查,就用第一种方式。怕查,就用最后一种。
    这样范围就会加大很多。
    恩 在商量下 用那种好
      

  8.   


    create table bp
    (xm varchar(10),
     yf varchar(10),
     gz decimal(8,1))
    declare @empname varchar(10),  -- 姓名
            @nsr decimal(8,1),     -- 年收入
            @i tinyint
            
    select @empname='张三', 
           @nsr=50000,
           @i=1while(@i<=12)
    begin
     if @i<=11
     begin
       insert into bp(xm,yf,gz)
        select @empname,
               case @i when 1 then '一月' when 2 then '二月' when 3 then '三月'
                       when 4 then '四月' when 5 then '五月' when 6 then '六月'
                       when 7 then '七月' when 8 then '八月' when 9 then '九月'
                       when 10 then '十月' when 11 then '十一月' when 12 then '十二月' end,
               cast(@nsr/12*0.9+rand()*@nsr/12*0.2 as decimal(8,1))       
     end if @i=12
     begin
       insert into bp(xm,yf,gz)
        select @empname,
               '十二月',
               @nsr-(select sum(gz) from bp where xm=@empname)
     end  select @i=@i+1
    end
    -- 结果
    select * from bp/*
    xm         yf         gz
    ---------- ---------- -----------------
    张三         一月         3952.1
    张三         二月         4511.3
    张三         三月         3847.5
    张三         四月         4258.7
    张三         五月         4469.5
    张三         六月         4192.0
    张三         七月         4289.5
    张三         八月         4376.8
    张三         九月         4550.5
    张三         十月         4439.3
    张三         十一月        4188.2
    张三         十二月        2924.6(12 row(s) affected)
    */
    -- 检验
    select xm,
           sum(gz) 'gz'
     from bp 
     group by xm/*
    xm         gz
    ---------- --------------
    张三         50000.0(1 row(s) affected)
    */
      

  9.   


    版主 可等着你来了
    0.9  0.2 是啥意思?补差后有可能会出现负数
      

  10.   

    哈哈  我测试了下 没问题 刚才弄错个数
      

  11.   


    版主能给解释下这句话不
      

  12.   

    每月的工资数为平均数上下浮动10%.