sql - 如何将具有相同外键的计算字段组合起来?
问题描述
标题可能不完全准确地解决我的问题,但我想不出如何措辞。
在考虑初始设置成本后,我正在使用视图来计算项目的调整单价,因此计算的字段如下所示:
"SetupFee" + "Shipping" + ( "UnitPrice" * "Quantity" ) / "Quantity"
来自这些字段的表称为 ItemInvoice,并且具有指向仅称为 Item 的表的外键,该表包含特定于项目的信息,例如描述。我遇到的问题是,当一个项目有多个发票时,这种方法会给我两个不同的输出。例如,如果我有第 1 项的一张发票和第 2 项的两张发票,它会显示:
ItemName - (Calculation)
Item1 - 45.11
Item2 - 60.30
Item2 - 50.67
总的来说,我对我的 SQL 和数据库真的很生疏(我是第一次使用 LibreOffice Base),我想知道如何将两张发票的成本合并起来,然后除以总数量。所以像:
("SetupFee1" + "Shipping1" + ( "UnitPrice1" * "Quantity1" ) + "SetupFee2" + "Shipping2" + ( "UnitPrice2" * "Quantity2" )) / ("Quantity1" + "Quantity2")
...或者只是平均两个单独的结果,尽管我不确定这将如何改变十进制值。
到目前为止,我已经完全在 LibreOffice Base 的设计视图中制作了这个视图,但如果我知道我将要做什么,我并不反对使用 SQL。
编辑:LibreOffice 7.0 和嵌入式 HSQLDB 数据库。
解决方案
好的,所以我想我已经弄清楚了,尽管我觉得可能应该有一种更简单的方法。
绝对必须深入研究这个 SQL 语句,但这似乎符合我的要求:
SELECT "Item Name", AVG("Adjusted Unit Price") AS "Average Adjusted Unit Price"
FROM (
SELECT "Item"."ItemName" AS "Item Name", ( "SetupFee" + "Shipping" + ( "UnitPrice" * "Quantity" ) ) / "Quantity" AS "Adjusted Unit Price"
FROM "ItemInvoice", "Item" WHERE "ItemInvoice"."ItemID" = "Item"."ItemID"
)
GROUP BY "Item Name"
推荐阅读
- firebase - 隐藏查询以显示在列表磁贴小部件上
- spring-boot - HTTP 标头不允许使用字符?
- firebase - 是否可以使用 Cloudflare 工作者,例如具有 Flutter 和 Firebase 数据库的 Firebase 云功能
- javascript - 搜索功能的更多参数
- c++ - 如何在 nan、C++ 中将 int 转换为字符串?
- python - Python,django:我想将对象放在表单上的“输入”标签或“选择”标签内。..为了将对象转移到 booking_form
- python - 用于自定义对象检测的 TensorFlow 输出
- c# - 如何验证 WPF 中的 DataGrid 选定项?
- javascript - 是什么导致此事件处理程序继续运行?为什么当我尝试添加条件时它会停止?
- wordpress - ACF 自定义分类列表和分类值颜色、背景颜色