SQL查询选择…计数(…)>;5.

SQL查询选择…计数(…)>;5.,sql,oracle,group-by,Sql,Oracle,Group By,我有以下表格: USER(iduser, fname, lname); TRANSACTION(idtrans,iduser,iddoc,datetrans); 我必须列出所有拥有5个以上借用文档的用户,所以我这样做: SELECT u.fname, u.lname FROM USERS u, TRANSACTION t WHERE t.iduser=u.iduser HAVING count(t.iduser)>5; 但是我得到了这个错误 不是单一的组功能 是否有其他方法来编写此查

我有以下表格:

USER(iduser, fname, lname);

TRANSACTION(idtrans,iduser,iddoc,datetrans);
我必须列出所有拥有5个以上借用文档的用户,所以我这样做:

SELECT u.fname, u.lname
FROM USERS u, TRANSACTION t
WHERE t.iduser=u.iduser HAVING count(t.iduser)>5;
但是我得到了这个错误

不是单一的组功能


是否有其他方法来编写此查询?

您需要使用GROUP BY

SELECT u.fname, u.lname
FROM USERS u, TRANSACTION t
WHERE t.iduser=u.iduser 
GROUP BY u.fname, u.lname
HAVING count(t.iduser)>5;
尝试使用此查询:

选择u.fname,u.lname 从用户u内部加入t.iduser=u.iduser上的事务t,其中计数(t.iduser)>5


我只是将其转换为使用内部连接,而不是使用内部连接。首先,我非常关心一个名为TRANSACTION的表,因为它在SQL中有特殊的含义。我不确定您使用的是哪个数据库,但请注意,SO的MArkdown认为事务是一个关键字,而不是一个表名

如果不使用GROUPBY语句,则不能使用聚合函数或HAVING子句。试试这个:

SELECT u.fname, u.lname
FROM USERS u, TRANSACTION t
WHERE t.iduser=u.iduser
GROUP BY i.fname, u.lname
HAVING count(t.iduser)>5;

请将GROUPBY子句与Having子句一起使用。