Oracle,使用 group by 子句进行内连接

Sor*_*scu 4 oracle

我有两个 oracle 表:

用户:ID、用户名、密码、角色

ARCHIVE_POSESSION : ID, USERID, ARCHIVEID

我想要做的是获取一个查询,该查询返回以下结果集:

用户名、角色、档案数量

到目前为止一切顺利,但我无法理解查询,我仍然是初学者。到目前为止,这是我得到的地方:

SELECT users.ID, USERNAME, ROLE, count(archive_posession.USERID) 
from users inner join 
archive_posession on 
users.id = archive_posession.USERID 
group by 
archive_posession.USERID ;
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误

ORA-00979: not a GROUP BY expression
Run Code Online (Sandbox Code Playgroud)

有小费吗?我确信 group by 应该适用于聚合函数,但在这种情况下我很兴奋。

ist*_*tis 6

您选择的字段要么在 group by 中声明,要么您应该使用聚合函数。例如

SELECT archive_posession, Max(USERID USERNAME), Max(ROLE), count(archive_posession.USERID) 
FROM users INNER JOIN
archive_posession ON 
users.id = archive_posession.USERID 
GROUP BY 
archive_posession.USERID ;
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩。

之所以能解决此问题,是因为 Group By 返回单行。因此,您应该找到一种方法将所有不在 group by 中的选定字段仅收集在一行中