不是试图计算课程参与者的GROUP BY表达式

时间:2018-06-05 12:18:05

标签: 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是员工的主要成员,CURSIST是注册表中的外键。

它返回错误:

  

不是按表达式分组的行错误:1列:8

2 个答案:

答案 0 :(得分:3)

首先,从不FROM子句中使用逗号。 始终使用正确,明确,标准 JOIN语法。

其次,未聚合的列进入GROUP BY。所以:

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

答案 1 :(得分:0)

m.mnr, m.name添加到GROUP BY子句并排除i.cursist

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语法而不是旧式逗号