首页 > 解决方案 > SQL - 通过对 2 个表的连接结果进行计算来创建新列

问题描述

我有 2 个这样加入的选择查询:

select * from
    (
    select sum(checkedcrates.checkedcrates) as sumA, checkedcrates.paramdescription from 
    (another query...) 
    as checkedcrates 
    group by checkedcrates.paramdescription
    )
as A
Join
    (select sum(cratecnt.cnt) as sumB, cratecnt.paramdescription from 
    (yet another query... ) 
    as cratecnt 
    group by cratecnt.paramdescription)
as B
on a.paramdescription = b.paramdescription order by B.sum desc 

这个查询的结果是这样的:

sumA     paramdescription     sumB     paramdescription
----------------------------------------------------------
1779     bottom               10       bottom
1779     totalarea            8        totalarea
1779     innerwalls           7        innerwalls
1779     risperror            1        risperror
1779     outerwalls           0        outerwalls
1779     clipserror           0        clipserror
1779     totalnumberdefects   0        totalnumberdefects

到目前为止,一切都很好。现在我需要添加第五列,作为sumB/sumA. 我知道如何在一个简单的查询上执行此操作,但我不知道如何在连接后使用来自两个不同选择查询的数据添加它。

标签: sqljoin

解决方案


只需添加b.sumB / a.sumA到选择列表:

select a.*, b.*, b.sumB / a.sumA from
...

也许您想这样做b.sumB * 1.0 / a.sumA,以避免整数除法(取决于使用的 dbms。)


推荐阅读