繁体   English   中英

SQL Query to sumproduct 与分组的行

[英]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点是我迷失的地方。 文本是一个文本字段,因此我们可能需要找到一种不同的分组方式。 当我尝试对行进行分组时,其他列会受到影响,因为您也必须在分组中使用它们——我不知道为什么。

看起来您正在寻找SUMGROUP 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM