您将如何合并来自2个单独查询的结果?

时间:2018-04-15 21:39:56

标签: mysql sql mysql-workbench common-table-expression

我有一个包含3列的表:ID,Name和Salary。

有2例。 1,其中工资栏缺少全部0,其他工资列缺少原始工资。问题是:2之间的平均工资有什么区别?我得到平均工资有无0但不明白我怎么能找到区别?

Select AVG(Salary) AS Salary_with0
from Employees
where Salary regexp '[0]'

UNION ALL

select AVG(Salary) AS Salary_without0
from Employees
where Salary NOT regexp '[0]'

我知道有更简单的方法可以使用替换,但我真的想了解这一点。

由于

1 个答案:

答案 0 :(得分:0)

回答你的问题很容易:

Select AVG(case when Salary regexp '[0]' then Salary end) AS Salary_with0,
       AVG(case when Salary not regexp '[0]' then Salary end) AS Salary_with0,       
from Employees;

您可以减去这些值以获得差异。

实用程序这是另一回事。通常,人们不会在数字上使用正则表达式。并且"缺少零"对任何正在发生的事情的描述似乎都很奇怪。