我的sql“group by”和“having”语句有什么问题?

时间:2018-02-20 22:02:08

标签: sql oracle10g oracle-xe

当我在oracle XE中运行此语句时,我不断收到错误消息,说这不是一个表达式组。

SELECT PROJECTID, HOURSWORKED FROM ASSIGNMENT GROUP BY PROJECTID HAVING HOURSWORKED > 20;

Table: ASSIGNMENT

3 个答案:

答案 0 :(得分:0)

你必须在工作时间上有一个聚合函数 - 例如MAX(HOURSWORKED),AVERAGE(HOURSWORKED)等。或者您还必须将它添加到组中,尽管这看起来很奇怪..

在stackoverflow上询问SQL问题的另一个建议 - 使用SQL Fiddle创建一个最小的测试用例。例如。 http://sqlfiddle.com/#!17/fea91/5为您的例子。除非它是特定于Oracle的东西,否则Postgres通常足够接近普通的SQL问题。尝试将WHERE更改为HAVING,以查看两者之间的差异......

答案 1 :(得分:0)

class A { companion object { val fpath = ... } } class B{ fun xy() = print(“accessing property of A: ${A.fpath}”) } 用于汇总表达式,例如GROUP BYMAX()

答案 2 :(得分:0)

你可以写

SELECT PROJECTID, HOURSWORKED 
FROM ASSIGNMENT 
WHERE HOURSWORKED > 20;

SELECT PROJECTID, SUM(HOURSWORKED) 
FROM ASSIGNMENT 
GROUP BY PROJECTID 
HAVING SUM(HOURSWORKED) > 20;

(或其他一些聚合函数,例如:MAX,MIN),具体取决于你的意图。

WHERE用于过滤单个记录

HAVING用于过滤分组的汇总值。