mysql - 对所有数据使用内联 View 时遇到问题

标签 mysql sql inline-view

我在使用内联 View 创建计算 salary/total_sal * 100 的列时遇到了一些问题。我的问题是,出于某种原因,我没有获得所有员工的值(value),而只是获得第一名员工的值(value)。

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

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

最佳答案

嗯,问题中的查询应该给你一个语法错误,因为子查询没有 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;

关于mysql - 对所有数据使用内联 View 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532519/

相关文章:

postgresql - 如何在 Postgresql 中使用内联 View (从子句中选择)进行外部连接

php - 我可以在 PHP 中混合使用 MySQL API 吗?

mysql - 将 utf8 csv 导入数据库

mysql - 比较值,对它们进行排序并确定哪个更有利

Oracle 12c 内联 View 评估

sql - FROM 子句中子选择的 Oracle 语法?

python - 在 python 和 heroku 网页中使用 MQTT 发布和订阅消息

php - 在 MySQL 中,我将如何比较今天的日期与数据库表中的日期?

mysql - 使用 GROUP BY 时选择特定行

MySQL返回具有相同名称的相同表的连接