如何在SQL中进行计算

如何在SQL中进行计算,sql,sum,subquery,Sql,Sum,Subquery,如何在SQL中进行计算 SELECT NO , SUM(COST)*1.05 FROM TR WHERE NO in (SELECT NO FROM USERS) AND TR.TYPE = 'A' OR TR.TYPE = 'B' GROUP BY NO 我想计算一下成本: 当TR.TYPE为时,我想将其添加到总成本中 当TR.TYPE为B时我想从总数中减去成本值 我认为在聚合函数中需要一个条件表达式: select

如何在SQL中进行计算

SELECT NO 
     , SUM(COST)*1.05 
  FROM TR 
 WHERE NO in (SELECT NO FROM USERS)  
   AND TR.TYPE = 'A' 
    OR TR.TYPE = 'B' 
 GROUP 
    BY NO 
我想计算一下成本:

  • 当TR.TYPE为
    时,我想将其添加到总成本中

  • 当TR.TYPE为B时
    我想从总数中减去成本值


我认为在聚合函数中需要一个条件表达式:

select 
    no,
    sum(case when type = 'A' then cost else -cost end) * 0.25 as fuyogaku 
from tr 
where 
    tr.type in ('A', 'B') 
    and exists (select 1 from users u where u.no = c.card_no)
group by no 

请注意,我将
中的
条件重写为
exists
条件-两者在这里是等效的,但是
exists
通常在子查询中有大量行时伸缩性更好。

@puss。我删除了不一致的数据库标记。请仅使用您真正使用的数据库进行标记。
Ideal
No1  COST  700
No2  COST  100
select 
    no,
    sum(case when type = 'A' then cost else -cost end) * 0.25 as fuyogaku 
from tr 
where 
    tr.type in ('A', 'B') 
    and exists (select 1 from users u where u.no = c.card_no)
group by no