select p.name,e.employee_id,e.employee_name, (sum(num1+num2+num3)) as time,pra.wage/(sum(num1+num2+num3)) as bzgzl, pra.wage2 /(sum(num1+num2+num3)) 
  from pra_manhour
        pra left join base_project p on pra.project_id = p.id left join base_employee e on e.employee_pk=pra.employee_pk
         group by e.employee_name,p.name,e.employee_id    差不多就是这么一个情况,每次都要/(sum(num1+num2+num3+......))很麻烦,能不能用一个变量代替啊?

解决方案 »

  1.   

    现在我写的只是(sum(num1+num2+num3)),但是实际情况是那段要加的东西很长有很多行,然后要用到好几次,那样的话就要白白的多几十行,看起来也很乱
      

  2.   

    select name,employee_id,employee_name,num as `time`,wage/num as bzgzl,wage2/num
    from(
      select p.name,e.employee_id,e.employee_name,sum(num1+num2+num3) as num,pra.wage,pra.wage2  
      from pra_manhour pra 
      left join base_project p on pra.project_id = p.id 
      left join base_employee e on e.employee_pk=pra.employee_pk 
      group by e.employee_name,p.name,e.employee_id,pra.wage,pra.wage2
    ) t