首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql 8的聚合查询

mysql 8的聚合查询
EN

Stack Overflow用户
提问于 2020-11-10 14:37:30
回答 1查看 35关注 0票数 0

我有两张桌子,津贴和薪水,

津贴表看起来像,

代码语言:javascript
复制
Id  Title       value
1   Transport   2000
2   Housing     1000
3   Housing     1000

工资表,

代码语言:javascript
复制
    id  Salary
    1   2000
    2   1000
    3   3000

对于没有住房津贴的身份证,房屋的价值应视为0,只需显示工资。如果有住房津贴,把工资和住房加起来。

我的查询没有给出正确的输出,

代码语言:javascript
复制
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);

我查询的输出是,

代码语言:javascript
复制
id  Salary  SalaryAndHousing
1    2000        2000
2    null        2000
3    null        4000

看起来应该是,

代码语言:javascript
复制
   id        Salary    SalaryAndHousing
    1         2000          2000 -- 2000 + 0
    2         1000          2000 -- 1000 + 1000
    3         3000          4000 -- 1000 + 3000

[医]小提琴

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-10 14:52:56

这是非常简单的查询:

代码语言:javascript
复制
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;

SQLize.online上试一试

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64771011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档