Sql 从Where子句内的Select语句返回特定的Group By条件

Sql 从Where子句内的Select语句返回特定的Group By条件,sql,oracle,Sql,Oracle,由于where子句返回多个值,因此无法执行。我试图只返回一个值。。。举例来说,如果e.numeric_value>d.avgnumeric_value,并且e.id=d.id,则返回。这是在oracledb中 所以如果246是我的值,它们的id是1 2 1。我希望返回6和1。自6>avg2,6 您可以使用相关子查询: select numeric_value from table where numeric_value > (select avg(numeric_value) from t

由于where子句返回多个值,因此无法执行。我试图只返回一个值。。。举例来说,如果e.numeric_value>d.avgnumeric_value,并且e.id=d.id,则返回。这是在oracledb中

所以如果246是我的值,它们的id是1 2 1。我希望返回6和1。自6>avg2,6

您可以使用相关子查询:

select numeric_value
from table
where numeric_value >
(select avg(numeric_value)
from table
group by id)

注意:您的设计看起来有点错误,id应该是唯一的,或者它只是被错误地标记为id。

外部查询根本不使用id。。。我没有得到你想要的。可以添加示例吗?请尝试使用EXISTS子句子查询,以使用两个条件。也就是说,我不希望它以任何方式返回一个结果。为了尝试澄清,我希望得到的数值大于按ID分组的数值的平均值。每个数字_值都有一个id,我想添加那些具有匹配id的值,然后返回大于具有匹配id的值的平均值的数字_值。所以如果246是我的值,它们的id是1 2 1。我希望返回6和1。自6>avg2,6
select numeric_value
from table t1
where numeric_value >(select avg(numeric_value)
                      from table t2
                      WHERE t1.id = t2.id);