Sql 不是试图计算课程参与者的分组表达式
我试图做一个SQL语句,它告诉我哪些员工遵循了 某些课程不止一次。这是我的以下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子句中使用逗号。始终使用
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等价?我的意思是,为了清晰起见,我可以让你们先加入。这让我再一次了解了这个小组。谢谢。完全忘记了未聚合的列!