mysql 8 上的聚合查询
Aggregate query on mysql 8
我有两个table,津贴和薪水,
津贴table看起来像,
Id Title value
1 Transport 2000
2 Housing 1000
3 Housing 1000
工资 table,
id Salary
1 2000
2 1000
3 3000
对于没有 住房 津贴的 id,对于住房,该值应被视为 0,并且应仅显示工资。如果有住房补贴,工资加住房。
我的查询没有给出正确的输出,
SELECT
s.id,
CASE
WHEN t.`Housing` = 0 THEN s.salary
END AS Salary,
CASE
WHEN t.`Housing` <> 0 THEN t.Housing + s.salary
WHEN t.`Housing` = 0 THEN s.salary
END AS SalaryAndHousing
FROM
(SELECT
id,
CASE
WHEN Title = 'Housing' THEN value
WHEN Title <> 'Housing' THEN 0
END AS 'Housing'
FROM
Allowance) t
JOIN
Salaries s ON (t.id = s.id);
我的查询输出是,
id Salary SalaryAndHousing
1 2000 2000
2 null 2000
3 null 4000
它应该看起来像,
id Salary SalaryAndHousing
1 2000 2000 -- 2000 + 0
2 1000 2000 -- 1000 + 1000
3 3000 4000 -- 1000 + 3000
这是一个非常简单的查询:
select
s.id,
s.Salary,
s.Salary + coalesce(a.value, 0) SalaryAndHousing
from Salaries s
left join Allowance a on a.id = s.id and a.Title = 'Housing'
order by s.id;
上试用
我有两个table,津贴和薪水,
津贴table看起来像,
Id Title value
1 Transport 2000
2 Housing 1000
3 Housing 1000
工资 table,
id Salary
1 2000
2 1000
3 3000
对于没有 住房 津贴的 id,对于住房,该值应被视为 0,并且应仅显示工资。如果有住房补贴,工资加住房。
我的查询没有给出正确的输出,
SELECT
s.id,
CASE
WHEN t.`Housing` = 0 THEN s.salary
END AS Salary,
CASE
WHEN t.`Housing` <> 0 THEN t.Housing + s.salary
WHEN t.`Housing` = 0 THEN s.salary
END AS SalaryAndHousing
FROM
(SELECT
id,
CASE
WHEN Title = 'Housing' THEN value
WHEN Title <> 'Housing' THEN 0
END AS 'Housing'
FROM
Allowance) t
JOIN
Salaries s ON (t.id = s.id);
我的查询输出是,
id Salary SalaryAndHousing
1 2000 2000
2 null 2000
3 null 4000
它应该看起来像,
id Salary SalaryAndHousing
1 2000 2000 -- 2000 + 0
2 1000 2000 -- 1000 + 1000
3 3000 4000 -- 1000 + 3000
这是一个非常简单的查询:
select
s.id,
s.Salary,
s.Salary + coalesce(a.value, 0) SalaryAndHousing
from Salaries s
left join Allowance a on a.id = s.id and a.Title = 'Housing'
order by s.id;
上试用