Sql 甲骨文;不是按表达式分组;
我的GROUPBY语句中出现oracle错误,我的GROUPBY不是表达式。这似乎在MYSQL中起作用Sql 甲骨文;不是按表达式分组;,sql,oracle,Sql,Oracle,我的GROUPBY语句中出现oracle错误,我的GROUPBY不是表达式。这似乎在MYSQL中起作用 SELECT pname, PNUMBER, SUM(HOURS) FROM PROJECT, WORKS_ON w, EMPLOYEE e WHERE w.essn=e.ssn AND pnumber=pno GROUP BY PNUMBER; 建议?谢谢它和mySQL不一样,你忘了PNAME SELECT pname, PNUMBER, SUM(HOURS) FROM PROJECT
SELECT pname, PNUMBER, SUM(HOURS)
FROM PROJECT, WORKS_ON w, EMPLOYEE e
WHERE w.essn=e.ssn AND pnumber=pno
GROUP BY PNUMBER;
建议?谢谢它和mySQL不一样,你忘了PNAME
SELECT pname, PNUMBER, SUM(HOURS)
FROM PROJECT, WORKS_ON w, EMPLOYEE e
WHERE w.essn=e.ssn AND pnumber=pno
GROUP BY PNUMBER, **PNAME**;
使用
groupby
时,SELECT
子句中只允许使用以下表达式*
- 这些包括在
列表中,以及分组依据
- 这些函数使用聚合函数
PNUMBER
正常,因为它在分组依据
列表中SUM(HOURS)
可以,因为它使用SUM
聚合器
这就给我们留下了pname
,两者都不是。根据您试图实现的目标,您需要将其聚合,添加到分组依据
,或从选择
列表中排除。
*一些RDBMS放宽了这些规则,但通常情况下,这就是使用
groupby
尝试groupby PNUMBER,pname来形成查询的方式代码>MySQL允许一些非标准的扩展来分组。这是因为MySQL不遵守ANSI标准。不在聚合函数中的SELECT
的每一列都需要在分组依据中列出。另外,在一个不相关的注释中,您应该开始使用显式连接,而不是旧的隐式连接(确切地说:),但是我的英语很差,很难解释。