我有两个 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 应该适用于聚合函数,但在这种情况下我很兴奋。
您选择的字段要么在 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 中的选定字段仅收集在一行中