如何对两个 SUMmed SQL 结果字段求和
Posted
技术标签:
【中文标题】如何对两个 SUMmed SQL 结果字段求和【英文标题】:How to SUM two SUMmed SQL result fields 【发布时间】:2020-10-28 21:17:51 【问题描述】:我有一个简单的表结构,其中包含 reagent_bottles 和 reagent_aliquots 的记录。
等分试样是从瓶子创建的,并且等分试样记录有一个外键,bottle_id,到一个瓶子 id。
要获得特定试剂的总体积(计算瓶子中的体积和等分试样中的体积),以下查询部分完成了这项工作:
SELECT
COALESCE(SUM(rb.volume), 0) AS bVolume,
COALESCE(SUM(ra.volume), 0) AS aVolume
FROM reagent_bottles AS rb
LEFT JOIN
reagent_aliquotes AS ra
ON rb.id = ra.bottle_id
WHERE reagent_id = 408;
返回上述试剂 id (408):
bVolume | aVolume
2| 6
添加 bVolume 和 aVolume,是正确答案,即 8。
问题是,如何重写上述查询以创建一个新字段total_volume,在查询中求和 bVolume 和 aVolume?
我试过这个:
SELECT
COALESCE(SUM(rb.volume), 0) AS bVolume ,
COALESCE(SUM(ra.volume), 0) AS aVolume,
SUM(bVolume + aVolume) AS total_volume
FROM
reagent_bottles AS rb
LEFT JOIN
reagent_aliquotes AS ra
ON rb.id = ra.bottle_id
WHERE reagent_id = 408;
但出现错误,未知列,字段列表中的 bVolume..!
【问题讨论】:
【参考方案1】:对原始列求和:
SELECT
COALESCE(SUM(rb.volume), 0) AS bVolume ,
COALESCE(SUM(ra.volume), 0) AS aVolume,
SUM(COALESCE(rb.volume, 0) + COALESCE(ra.volume, 0)) AS total_volume
FROM
reagent_bottles AS rb
LEFT JOIN
reagent_aliquotes AS ra
ON rb.id = ra.bottle_id
WHERE reagent_id = 408;
【讨论】:
这提出了一个有趣的问题,即 OP 想要 COALESCE 的值。SUM(COALESCE... + COALESCE...)
将产生与 COALESCE(SUM...) + COALESCE(SUM...)
不同的结果
@e_i_pi 我想我想先合并,因为我想避免负交易量(不应该存在),然后对值求和。以上是关于如何对两个 SUMmed SQL 结果字段求和的主要内容,如果未能解决你的问题,请参考以下文章