gpt4 book ai didi

sql - 在连接中使用聚合函数时如何使用 Group By 子句?

转载 作者:行者123 更新时间:2023-12-02 14:58:57 25 4
gpt4 key购买 nike

我想连接三个表并计算表 A 的总和(数量)。我尝试了一些东西,得到了想要的输出。但我仍然对聚合函数和 Group By 子句感到困惑。

通过连接两个或多个表来计算总和值时,我们需要在 Group By 子句中提及哪些列以及为什么需要给出这些列?

例如:这是我的表格和所需的查询。

TableA: ItemID, JobOrderID, CustomerID, DivisionID, Quantity
TableB: ItemID, ItemName, SpecificationID
TableC: SpecificationID, SpecificationName
TableD: DivisionID, DivisionName
TableE: JobOrderID, JobOrderNo.
TableF: CustomerID, CustomerName

我想根据 ItemIDCustomerIDJobOrderIDDivisionID 获取 Sum(Quantity)。

我编写了以下查询,它工作正常。但是,如果我删除 Group By 子句中的任何列,它不会给出所需的结果。为什么? Group By 子句在这里做什么?使用聚合函数时如何指定Group By子句?这是我的查询。

    SELECT 
B.ItemName + ' - ' + C.SpecificationName AS 'ItemName',
SUM(A.Quantity) AS 'Quantity',
A.ItemID,
D.DivisionName,
F.CustomerName,
E.JobOrderNo,
A.DivisionID,
A.JobOrderID,
A.CustomerID

FROM
TableA A
INNER JOIN TableB B ON B.ItemID = A.ItemID
INNER JOIN TableC C ON C.SpecificationID = B.SpecificationID
INNER JOIN TableD D ON D.DivisionID = A.DivisionID
LEFT JOIN TableE E ON E.JobOrderID = A.JobOrderID
LEFT JOIN TableF F ON F.CustomerID = A.CustomerID
WHERE
A.ItemID = @ItemID
GROUP BY
A.ItemID,
A.JobOrderID,
A.DivisionID,
A.CustomerID,
D.DivisionName,
F.CustomerName,
E.JobOrderNo,
B.ItemName,
C.SpecificationName

任何人请以此为例对 Group By 子句提出建议。

最佳答案

GROUP BY 对于指定列的任何唯一组合进行聚合(如 sum、min 等)。如果您没有在 GROUP BY 子句或聚合函数中指定某些列名称,则 SQL 引擎不知道应该为该类型的列返回哪个值。

关于sql - 在连接中使用聚合函数时如何使用 Group By 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com