具有多列SAME值的单元格的SUM和AVG

时间:2015-11-05 11:28:57

标签: sql sum average

我需要某种方式,为具有相同dtzdanitpln +相同podminky +相同jmeno_uziv的细胞做whereSUM(mnozstvi)。在我按照这三个条件对它进行分组后,同时SUM(prostoje)我需要在列mnpracovniku,naklad和hdudrzbapracoviste

列中为它们设置AVG功能

我在另一个单元格中搜索了具有相同id的单元格的SUM的解决方案,但是当我尝试更改SUM(mnozstvi)时出现错误,例如,如果我尝试从Group中删除prac,我得到这样:

  

消息8120,等级16,状态1,行20列'temptab.pracoviste'是   在选择列表中无效,因为它不包含在任何一个中   聚合函数或GROUP BY子句。

     

Msg 8120,Level 16,State   1,第20行列'temptab.pracoviste'在选择列表中无效   因为它不包含在聚合函数或   GROUP BY子句。

     

Msg 8120,Level 16,State 1,Line 20 Column   'temptab.pracoviste'在选择列表中无效,因为它不是   包含在聚合函数或GROUP BY子句中。

     

消息   8120,Level 16,State 1,Line 20 Column'temptab.pracoviste'是   在选择列表中无效,因为它不包含在任何一个中   聚合函数或GROUP BY子句。

group by

这是我拥有的和我需要的例子: EXAMPLE

1 个答案:

答案 0 :(得分:0)

在GROUP BY子句中放入的内容应该很容易说明:“我希望每个__________________有一个结果记录”。假设你用temptab.idhdok, temptab.ucet_obd, temptab.dtzdanitpln填补了这个空白,那么你的GROUP BY子句是相应的:

GROUP BY temptab.idhdok, temptab.ucet_obd, temptab.dtzdanitpln;

您在SELECT子句中使用的所有其他列必须使用SUM,AVG,MIN,MAX等进行聚合。您已使用SUM(temptab.hdmzda_naklad_smena)进行了聚合。

因此,当您从现有的GROUP BY子句中删除temptab.pracoviste时,您不能再使用此列本身,而只能使用此列的聚合,例如MIN(temptab.pracoviste)

例如行

qhdok_udr.cis_zbozi_pracovisteadd like temptab.pracoviste

必须是

qhdok_udr.cis_zbozi_pracovisteadd like MIN(temptab.pracoviste)

然后

BTW:为什么这是like?这是没有意义的,因为pracoviste不包含通配符。它应该只是=而不是like

还有一件事:

count (temptab.idhdok) as pocet
count(temptab.pracoviste) as prac

pracoviste永远不会为NULL,因此它与count(*)相同。 idhdok可以为NULL吗?否则,它也等于count(*)。这需要吗?

相关问题