求和列作为附加列sql
我正在尝试使用具有不同列的数据集。我正在考虑添加一列,根据订单ID提供每行的数量总和。请参见下面的输入和所需输出:求和列作为附加列sql,sql,Sql,我正在尝试使用具有不同列的数据集。我正在考虑添加一列,根据订单ID提供每行的数量总和。请参见下面的输入和所需输出: +----+---------+-----+----------+-------+ | ID | OrderID | PID | Quantity | Total | +----+---------+-----+----------+-------+ | 1 | 10248 | 11 | 12 | 27 | +----+---------+-----+--
+----+---------+-----+----------+-------+
| ID | OrderID | PID | Quantity | Total |
+----+---------+-----+----------+-------+
| 1 | 10248 | 11 | 12 | 27 |
+----+---------+-----+----------+-------+
| 2 | 10248 | 42 | 10 | 27 |
+----+---------+-----+----------+-------+
| 3 | 10248 | 72 | 5 | 27 |
+----+---------+-----+----------+-------+
| 4 | 10249 | 14 | 9 | 49 |
+----+---------+-----+----------+-------+
| 5 | 10249 | 51 | 40 | 49 |
+----+---------+-----+----------+-------+
| 6 | 10250 | 41 | 10 | 60 |
+----+---------+-----+----------+-------+
| 7 | 10250 | 51 | 35 | 60 |
+----+---------+-----+----------+-------+
| 8 | 10250 | 65 | 15 | 60 |
+----+---------+-----+----------+-------+
| 9 | 10251 | 22 | 6 | 41 |
+----+---------+-----+----------+-------+
| 10 | 10251 | 57 | 15 | 41 |
+----+---------+-----+----------+-------+
| 11 | 10251 | 65 | 20 | 41 |
+----+---------+-----+----------+-------+
| 12 | 10252 | 20 | 40 | 65 |
+----+---------+-----+----------+-------+
| 13 | 10252 | 33 | 25 | 65 |
+----+---------+-----+----------+-------+
输入:
+----+---------+-----+----------+
| ID | OrderID | PID | Quantity |
+----+---------+-----+----------+
| 1 | 10248 | 11 | 12 |
+----+---------+-----+----------+
| 2 | 10248 | 42 | 10 |
+----+---------+-----+----------+
| 3 | 10248 | 72 | 5 |
+----+---------+-----+----------+
| 4 | 10249 | 14 | 9 |
+----+---------+-----+----------+
| 5 | 10249 | 51 | 40 |
+----+---------+-----+----------+
| 6 | 10250 | 41 | 10 |
+----+---------+-----+----------+
| 7 | 10250 | 51 | 35 |
+----+---------+-----+----------+
| 8 | 10250 | 65 | 15 |
+----+---------+-----+----------+
| 9 | 10251 | 22 | 6 |
+----+---------+-----+----------+
| 10 | 10251 | 57 | 15 |
+----+---------+-----+----------+
| 11 | 10251 | 65 | 20 |
+----+---------+-----+----------+
| 12 | 10252 | 20 | 40 |
+----+---------+-----+----------+
| 13 | 10252 | 33 | 25 |
+----+---------+-----+----------+
期望输出:
+----+---------+-----+----------+-------+
| ID | OrderID | PID | Quantity | Total |
+----+---------+-----+----------+-------+
| 1 | 10248 | 11 | 12 | 27 |
+----+---------+-----+----------+-------+
| 2 | 10248 | 42 | 10 | 27 |
+----+---------+-----+----------+-------+
| 3 | 10248 | 72 | 5 | 27 |
+----+---------+-----+----------+-------+
| 4 | 10249 | 14 | 9 | 49 |
+----+---------+-----+----------+-------+
| 5 | 10249 | 51 | 40 | 49 |
+----+---------+-----+----------+-------+
| 6 | 10250 | 41 | 10 | 60 |
+----+---------+-----+----------+-------+
| 7 | 10250 | 51 | 35 | 60 |
+----+---------+-----+----------+-------+
| 8 | 10250 | 65 | 15 | 60 |
+----+---------+-----+----------+-------+
| 9 | 10251 | 22 | 6 | 41 |
+----+---------+-----+----------+-------+
| 10 | 10251 | 57 | 15 | 41 |
+----+---------+-----+----------+-------+
| 11 | 10251 | 65 | 20 | 41 |
+----+---------+-----+----------+-------+
| 12 | 10252 | 20 | 40 | 65 |
+----+---------+-----+----------+-------+
| 13 | 10252 | 33 | 25 | 65 |
+----+---------+-----+----------+-------+
使用分组方式
尝试:
选择OrderID,按OrderID从表组中选择COUNTquantity as total;
因为您没有提到任何RDBMS,下面的查询几乎可以在大多数RDBMS中使用。查询所做的是计算子查询内的总数,并将结果加入原始表本身
SELECT a.*,
b.Total
FROM TableName a
INNER JOIN
(
SELECT OrderID, SUM(Quantity) Total
FROM TableName
GROUP BY OrderID
) b ON a.OrderID = b.OrderID
这是一个例子
但是,如果您的RDBMS支持窗口函数,如SUM OVER,则可以简单地编写为
SELECT a.*,
SUM(Quantity) OVER (PARTITION BY OrderID) Total
FROM TableName a
这里有一个。StackOverflow希望您能这样做。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。有关更多信息,请参阅,并使用:谢谢你的朋友。完美地工作