【发布时间】: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 谢谢你的工作..你能把它作为答案发布吗?