mysql - 将公斤和克单位乘以每公斤的价格
问题描述
当我必须计算供应成本的值时,我目前有一项任务,我必须将 priceperweight 与重量相乘。但重量也有公斤和克。当我将它相乘时,结果是 500 克菠菜需要 3000 美元。这是我的计划。请帮忙。所有帮助将不胜感激:D 这是我的代码!太感谢了
select PricePerWeight * Weight from Supplies;
解决方案
使用以下方法将重量标准化为克或公斤(我将使用克)CASE x WHEN y
:
SELECT
s.*,
CASE s.metric
WHEN 'Kilos' THEN ( s.weight * 1000 )
WHEN 'grams' THEN ( s.weight * 1 ) ELSE NULL
END AS weightInGrams
FROM
supplies AS s
然后添加额外的单位很简单:
SELECT
s.*,
CASE s.metric
WHEN 'tonnes' THEN ( s.weight * 1000 * 1000 )
WHEN 'Kilos' THEN ( s.weight * 1000 )
WHEN 'grams' THEN ( s.weight * 1 )
WHEN 'jupiter' THEN ( s.weight * 1.9 * POW( 10, 27 ) * 1000 )
WHEN 'lbs' THEN ( s.weight * 453.592 ) ELSE NULL
END AS weightInGrams
FROM
supplies AS s
假设您使用的是符合 ISO 标准的 SQL,您需要使用外部查询或 CTE 来乘以pricePerWeight
,我假设它以 Kg 为单位:
请注意,下面的查询仍然使用克作为质量的基本单位,以避免由整数除法引起的问题(因为 SQL 并不容易确保数字文字被处理为浮点数或小数而不是整数,因为整数除法截断而不是回合)。
最终值是thePrice
以下查询中的列:
选项 1:使用外部查询:
SELECT
s2.*,
( s2.pricePerWeight * s2.weightInGrams ) / 1000.00 AS thePrice
FROM
(
SELECT
s.*,
CASE s.metric
WHEN 'tonnes' THEN ( s.weight * 1000 * 1000 )
WHEN 'Kilos' THEN ( s.weight * 1000 )
WHEN 'grams' THEN ( s.weight * 1 )
WHEN 'jupiter' THEN ( s.weight * 1.9 * POW( 10, 27 ) * 1000 )
WHEN 'lbs' THEN ( s.weight * 453.592 ) ELSE NULL
END AS weightInGrams
FROM
supplies AS s
)
选项 2:使用 CTE:
WITH s2 AS (
SELECT
s.*,
CASE s.metric
WHEN 'tonnes' THEN ( s.weight * 1000 * 1000 )
WHEN 'Kilos' THEN ( s.weight * 1000 )
WHEN 'grams' THEN ( s.weight * 1 )
WHEN 'jupiter' THEN ( s.weight * 1.9 * POW( 10, 27 ) * 1000 )
WHEN 'lbs' THEN ( s.weight * 453.592 ) ELSE NULL
END AS weightInGrams
FROM
supplies AS s
)
SELECT
s2.*,
( s2.pricePerWeight * s2.weightInGrams ) / 1000.00 AS thePrice
FROM
s2
推荐阅读
- php - 如何发布添加表?
- html - Bootstrap 4 左右对齐 div,对于小屏幕,将它们显示在单独的行中
- r - 我想在 R 中复制相同的 SAS,感谢您的输入
- php - How to get the number of rows in database based on few parameters
- angular - 按下退出按钮时防止关闭 Angular Material 对话框,但单击背景时允许关闭
- javascript - 在Javascript中按日期过滤数组
- jmeter - JMeter 并行控制器有两个事务控制器问题
- c# - 将颜色绑定到单例
- java - 为什么不@Autovired 会话工厂?Java 休眠弹簧
- java - 使用 Spring、JPA 和 Hibernate 的通用 DAO 设置