【问题标题】:SQL - creating new columns by making calculations on the result of a join of 2 tablesSQL - 通过对 2 个表的连接结果进行计算来创建新列
【发布时间】:2021-12-14 11:05:18
【问题描述】:

我有 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 的结果。我知道如何在一个简单的查询中执行此操作,但我不知道如何在连接后使用来自两个不同选择查询的数据添加它。

【问题讨论】:

  • 只需做select a.*, b.*, a.sumB / b.sumA ...
  • 也许你想做b.sumB * 1.0 / a.sumA,以避免整数除法(取决于使用的dbms。)
  • @jarlh 谢谢你的工作..你能把它作为答案发布吗?

标签: sql join


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    相关资源
    最近更新 更多