Mysql 如何使用数量单位转换编写查询SQL分组?

Mysql 如何使用数量单位转换编写查询SQL分组?,mysql,sql,oracle,subquery,Mysql,Sql,Oracle,Subquery,如何将SQL查询写入特定单位的总和(数量)(例如示例中的瓶子) 诸如getRate(unit1、unit2)之类的数据库函数可以完成这项工作吗?性能如何?您需要展开转换表,使其具有所有组合。这是一次性工作,但您需要添加如下行: select product, sum(quantity * ....) from Stock group by product 然后您可以使用左连接: Unit1 Unit2 Rate ---------------------- box b

如何将SQL查询写入特定单位的总和(数量)(例如示例中的瓶子)


诸如getRate(unit1、unit2)之类的数据库函数可以完成这项工作吗?性能如何?

您需要展开转换表,使其具有所有组合。这是一次性工作,但您需要添加如下行:

select product, sum(quantity * ....) from Stock group by product
然后您可以使用
左连接

Unit1     Unit2    Rate
----------------------
box       bottle    20
bottle    gallon    30
gallon    bottle    1/30

有没有一种方法可以动态添加这些额外的费率,比如使用视图?谢谢。@Sunnyday。它可能变得相当复杂,需要某种类型的递归CTE。添加额外的速率会让用户更难管理。自定义函数getRate(unit1、unit2)怎么样?谢谢。@SunnyDay。这取决于您使用的数据库以及需要处理的不同单元的数量。函数是可以的,但如果表很大,通常会降低性能。预期的输出是什么?
Unit1     Unit2    Rate
----------------------
box       bottle    20
bottle    gallon    30
gallon    bottle    1/30
SELECT s.product, SUM(s.quantity * coalesce(c.rate, 1))
FROM stock s LEFT JOIN
     conversion c 
     ON s.unit = c.unit1 AND c.unit2 = 'bottle'
GROUP BY s.product