sql - 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
. 我知道如何在一个简单的查询上执行此操作,但我不知道如何在连接后使用来自两个不同选择查询的数据添加它。
解决方案
只需添加b.sumB / a.sumA
到选择列表:
select a.*, b.*, b.sumB / a.sumA from
...
也许您想这样做b.sumB * 1.0 / a.sumA
,以避免整数除法(取决于使用的 dbms。)
推荐阅读
- javascript - myArray.map 不是函数:尝试使用来自 Javascript Fetch API 的数据设置 React 状态
- java - 为什么 API HTTP 响应 406 尽管没有传递接受标头?
- r - 为什么这是我的线性模型的输出,我该如何解决?
- oracle - 如何在 Oracle 中为 1 列创建具有特定值的约束唯一多列?
- swift - 多次调用 SpeechKit 函数结果
- python - 如何在函数中同时使用 (self , request) 参数
- python-3.x - 使用 Python 进行 PDF 文本挖掘
- python - 在python中带有dict的IndexError,
- jetty - 如何解决 HTTP:503 服务不可用错误,使用 java11 的码头驱动程序?
- python - 每次提交时,Web UI 中的 Selenium 类都会调用