首页 > 解决方案 > 不是试图计算课程参与者的 GROUP BY 表达式

问题描述

我正在尝试执行一条 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

标签: sqloraclegroup-bycount

解决方案


首先,永远不要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

推荐阅读