使用where子句-MySQL查找两列的差异

使用where子句-MySQL查找两列的差异,mysql,sql,join,inner-join,difference,Mysql,Sql,Join,Inner Join,Difference,我试图得到两列Sother和SENIOR的差,带WHERE子句,以及它们的金额之和。这些公式运行良好,但是,我没有得到我想要的结果 我尝试使用内部连接来实现它,但不幸的是,这并不是我所期望的结果 我的问题是: select a.ID as EMPLOYEE, sum(a.amount) as other, sum(b.amount) as senior, (sum(a.amount) - sum(b.amount)) as result from gndsale a INNER join

我试图得到两列Sother和SENIOR的差,带WHERE子句,以及它们的金额之和。这些公式运行良好,但是,我没有得到我想要的结果

我尝试使用内部连接来实现它,但不幸的是,这并不是我所期望的结果

我的问题是:

select a.ID as EMPLOYEE, 
sum(a.amount) as other,
sum(b.amount) as senior, 
(sum(a.amount) - sum(b.amount)) as result 
from gndsale a 
INNER join gndsale 
b ON a.ID= b.ID 
where a.TYPE = "5" and b.seniortype = "10" 
group by a.ID
结果:

我想做的是得到列Other,其中type=5和列Senior,其中seniortype=10的差值

以下是我对高级管理人员的询问:

 select ID as EMPLOYEE, sum(amount) 
 from gndsale 
 where seniortype = "10" 
 group by ID
结果:

以下是我对其他问题的查询:

select ID as employee, sum(amount) 
from gndsale 
where type = "5" 
group by ID
结果应该是

9907=530 9912=63.71

有人能帮我吗

样本/预期产出:


您可以尝试一下:

SELECT 
    a.`employee`,
    sum(a.`amount`) - sum(b.`amount`) as total
FROM `gndsale` a
JOIN `gndsale` b
ON a.`employee` = b.`employee` and b.`senior_type` = "10"
WHERE a.`type` = "5"
GROUP BY a.`employee`
ORDER BY a.`employee`;
它只是连接两个查询。

请尝试此查询

select employee, other, senior, (other-senior) AS result
From (
    select ID as employee,
           sum(if(type=5,amount,0)) AS other,
           sum(if(seniortype =10,amount,0)) AS senior 
           from gndsale group by ID
) a

您为该列选择了一个非常糟糕的名称。尽管名称不同,ID不是标识表中记录的ID

您可能正在寻找以下内容,即每个ID的聚合,其中您分别对类型5和类型10求和:

select 
  a.ID as employee, 
  coalesce(sum(case when type = 5 then amount end), 0) as other, 
  coalesce(sum(case when seniortype = 10 then amount end), 0) as senior, 
  coalesce(sum(case when type = 5 then amount end), 0) -
  coalesce(sum(case when seniortype = 10 then amount end), 0) as result
from gndsale
group by a.id
having sum(type = 5) > 0 and sum(seniortype = 10) > 0;

HAVING子句确保只获取同时具有type=5和siniorType=10的记录的ID。我们在这里使用MySQL的true=1/false=0。如果您还需要其他ID,请将其删除。如果保留它并且值不能为null,则可以删除合并。

是否可以使用一些示例数据和预期结果发布数据库架构?老实说,您好,提供给我的数据表没有组织,我的任务是使用示例excel报告查找结果。我的理解是,您希望获得其他和高级的差异,其中type=5和seniortype=10。如果我弄错了,请解释。编辑您的问题并显示示例输入和输出。下面给出的两个答案都没有达到你的预期,我会得出结论,你从来没有明确你的预期。很抱歉,它没有给我我想要的结果:9907=1987.60和9912=20.47这得到了我想要的结果!!!那花了我几个小时。。。谢谢Thorsten,如果我没有早点把我的问题说清楚,我很抱歉。。。