[英]SQL Query to sumproduct with grouped rows
我得到了底层数据结构:
+-----+-------+-----------+----------+---------+----------------+-------+---------+------+------+------+----------------+-----------------+--------------+
| Row | Order | Extension | Position | Amount1 | Running number | Type | Amount2 | Dim1 | Dim2 | Dim3 | Text | Additional Info | Articlegroup |
+-----+-------+-----------+----------+---------+----------------+-------+---------+------+------+------+----------------+-----------------+--------------+
| 1 | 1 | A | 26 | 1 | 10 | Wood | 1 | 1163 | 32 | 17 | Very good wood | Wood-1 | Wood Product |
| 2 | 1 | A | 26 | 1 | 12 | Wood | 1 | 1673 | 32 | 17 | Very good wood | Wood-1 | Wood Product |
| 3 | 1 | A | 26 | 1 | 14 | Glass | 1 | 1163 | 32 | 17 | Very good wood | Wood-1 | Wood Product |
| 4 | 2 | A | 29 | 1 | 16 | Wood | 1 | 1673 | 32 | 17 | Very good wood | Wood-1 | Wood Product |
| 5 | 2 | A | 29 | 1 | 48 | Wood | 1 | 1356 | 32 | 17 | Very good wood | Wood-1 | Wood Product |
+-----+-------+-----------+----------+---------+----------------+-------+---------+------+------+------+----------------+-----------------+--------------+
我想要两件事:1)我想要另一列乘以 Amount1 * Amount2 * Dim1 /1000(由于第 2 点,这可能有点棘手)
2)我想要以下输出:
+-------+-------+----------------+------------+
| Order | Type | Text | SumProduct |
+-------+-------+----------------+------------+
| 1 | Wood | Very good wood | 2836 |
| 1 | Glass | Very good wood | 1163 |
| 2 | Wood | Very good wood | 3029 |
+-------+-------+----------------+------------+
总之,我希望按顺序、类型和文本对行进行分组,并对第 1 点中的计算进行总和。
第 1 点可能会使用子查询来实现,只需对行求和。 Row 是一个唯一标识符,因此我们可能需要将其包含在子查询中以创建关系。
第2点是我迷失的地方。 文本是一个文本字段,因此我们可能需要找到一种不同的分组方式。 当我尝试对行进行分组时,其他列会受到影响,因为您也必须在分组中使用它们——我不知道为什么。
看起来您正在寻找SUM
与GROUP BY
。
SELECT T.Order, T.Type, T.Text, SUM(T.Amount1*T.Amount2*T.Dim1) SumProduct
FROM YourTable T
GROUP BY T.Order, T.Type, T.Text
在您的问题中,您提到将总和除以 1000,但我没有在您的预期结果中看到这一点,所以我将其省略了。
顺便说一句,你真的有一个名为Order
的列吗? 这可能需要转义,因为它是许多数据库中的保留字。
尝试这个:
SELECT
Order
,Type
,Text
,SUM( Amount1 * Amount2 * Dim1 / 1000) SumProduct
FROM tablename
GROUP BY
Order
,Type
,Text;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.