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子句一起使用。