在使用所有数据的内联视图时遇到问题

时间:2018-01-31 00:12:06

标签: mysql sql inline-view

我在使用内联视图创建一个列,我计算工资/ total_sal * 100时遇到了一些问题。我的问题是,由于某种原因,我没有获得所有员工的价值,只是第一个。 / p>

 select emp.ename, emp.sal, 
    ( select (emp.sal / sum(emp.sal) * 100))  
    from emp;

我试图环顾四周,看看能否找到答案,但我无法做到。任何帮助都会非常有帮助!

1 个答案:

答案 0 :(得分:0)

好吧,问题中的查询应该给你一个语法错误,因为子查询没有from子句。您只需要在子查询中获得总和,而不是整个百分比计算:

select emp.ename,
       emp.sal,
       emp.sal / (select sum(emp2.sal) from emp as emp2) * 100 
from emp;

另一种方法是将子查询移动到from子句(派生表)并进行交叉连接:

select emp.ename,
       emp.sal,
       emp.sal / t.tot_sal * 100 
from emp
join (select sum(emp2.sal) as tot_sal from emp as emp2) as t;