Sql 不是试图计算课程参与者的分组表达式

Sql 不是试图计算课程参与者的分组表达式,sql,oracle,group-by,count,Sql,Oracle,Group By,Count,我试图做一个SQL语句,它告诉我哪些员工遵循了 某些课程不止一次。这是我的以下SQL: SELECT m.mnr, m.name, count(i.cursist) FROM employee m, registrations i WHERE i.cursist = m.mnr GROUP BY i.cursist; MNR是员工的主键,而Curist是registrations表中的外键 它返回错误: 第1行第8列不是group by表达式错误 首先,切勿在FROM子句中使用逗号。始终使用

我试图做一个SQL语句,它告诉我哪些员工遵循了 某些课程不止一次。这是我的以下SQL:

SELECT m.mnr, m.name, count(i.cursist) 
FROM employee m, registrations i
WHERE i.cursist = m.mnr
GROUP BY i.cursist;
MNR是员工的主键,而Curist是registrations表中的外键

它返回错误:

第1行第8列不是group by表达式错误

首先,切勿在
FROM
子句中使用逗号。始终使用正确、明确、标准的连接语法

其次,未聚合的列按进入
分组。因此:

SELECT m.mnr, m.name, count(i.cursist) 
FROM employee m JOIN
     registrations i
     ON i.cursist = m.mnr
GROUP BY m.mnr, m.name;
不止一次,您希望:

HAVING COUNT(i.cursist) > 1

包括
m.mnr,m.name
groupby
子句,并排除
i.curist

SELECT m.mnr, m.name, count(i.cursist) 
FROM employee m inner join 
     registrations i
     on i.cursist = m.mnr
GROUP BY m.mnr, m.name
HAVING count(i.cursist) > 1;

我使用了显式的
JOIN
语法,而不是老式的逗号

在GROUP BY clauseProper之后添加“HAVING count(I.curist)>1”?标准是不是,和join等价?我的意思是,为了清晰起见,我可以让你们先加入。这让我再一次了解了这个小组。谢谢。完全忘记了未聚合的列!