Sql 博士后群体问题
我不确定这为什么行不通:Sql 博士后群体问题,sql,postgresql,Sql,Postgresql,我不确定这为什么行不通: SELECT u.id, u.tag, u.unit_type, Count(p.id) AS num_points FROM ot2.unit u INNER JOIN ot2.point p on p.unit_id = u.id GROUP BY u.id HAVING Count(p.id) > 800; 错误:“u.tag”列必须出现在GROUP BY子句中,或在聚合函数中使用 SQL状态:42803 我已经为GROUPBY提供了一个专栏。错误说明了什
SELECT u.id, u.tag, u.unit_type, Count(p.id) AS num_points
FROM ot2.unit u
INNER JOIN ot2.point p on p.unit_id = u.id
GROUP BY u.id
HAVING Count(p.id) > 800;
错误:“u.tag”列必须出现在GROUP BY子句中,或在聚合函数中使用
SQL状态:42803
我已经为GROUPBY提供了一个专栏。错误说明了什么。u、 标记不在group by中,并且您不知道如何将不同的u.tag值聚合为单个值 更具体地说,您有两种选择:
- 在GROUPBY子句中添加u.tag(以及u.unit\u类型)
- 在这两个字段(最小值、最大值、总和、平均值等)上使用聚合函数
u.unit\u类型
为什么?根据定义:如果有group By语句,则选择列表中的每个字段都必须在group By语句中命名,或者必须具有聚合函数。在这种情况下,u.id位于group by中,并且(p.id)具有聚合函数count()。u、 标记和u.unit_类型均不在其中。