我有4张表格,下面是图表
我想概括查询Institution表。在哪里我想得到的结果,
InstitutionType ProductName Quantity
例如。机构表的样本数据
Id Name Address InstitionTypeId 1 aaa ny132 1001 2 bbb dx23 1001 3 ccc bn33 1002
InstitionProduct
就像那样
Id ProductId Quantity InstitionId 1 1000 120 1 2 1000 100 2 3 1000 50 3
然后我想要一个查询结果,按Instition Type明智地输出给定产品的总数量。示例输出将如下所示。
InstitutionTypeId productId quantity 1001 1000 220 1002 1000 50
所以我想按类型对机构进行分组,并汇总所有机构类型组的产品数量。
我尝试使用group by子句,但产品数量不是分组元素,导致错误。
答案 0 :(得分:3)
SELECT
Institution.InstitutionTypeID,
InstitutionProduct.ProductID,
SUM(InstitutionProduct.Quantity)
FROM
Institution
LEFT JOIN
InstitutionProduct
ON InstitutionProduct.InstitutionID = Institution.ID
GROUP BY
Institution.InstitutionTypeID,
InstitutionProduct.ProductID
答案 1 :(得分:1)
如果您要使用group查询,则需要使用聚合函数或按所有包含的字段分组。原因是,'group by'每个'group by'返回一行只有一行,所以如果你引入一个未分组的字段,如果该字段每个分组约束有多个值,则会发生冲突。即使您的数据集可能不是这种情况,查询引擎也无法知道这一点,并引发错误。
解决方案是为所有非分组字段引入聚合,其中聚合(以及其他):平均(avg),汇总(sum),最小(min)和最大(max)。这会导致像
这样的东西 SELECT i.InstitutionTypeID, i.Institution.ID, SUM(ip.Quantity)
FROM Institution I LEFT JOIN InstitutionProduct IP
ON IP.InstituationID = I.ID
GROUP BY i.InstitutionTypeID, i.Institution.ID