仅按一个字段进行分组,而不是我在“选择”中拥有的所有字段

时间:2019-05-28 14:05:18

标签: sql oracle aggregate-functions

我正在处理下表:

**ID    Value   Data**
1   30  25/4
1   20  26/4
1   20  27/4
3   10  25/4
4   20  26/4
5   30  26/4

我需要查询表并得到下一个结果:

**ID    Value   Data**
1   70  "Any value, can be 25/4, 26/4 or 27/4"
3   10  25/4
4   20  26/4
5   30  26/4

我尝试使用GroupBy查询,但是如果添加所有字段(ID,值和数据),结果将返回第一个表。而且,如果我仅使用GroupBy字段ID,则遇到下一个错误:

ORA-00979:不是GROUP BY表达式

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

我们可以任意选择每个Data组中的最小ID值:

SELECT ID, SUM(Value) AS Value, MIN(Data) AS Data
FROM yourTable
GROUP BY ID;

答案 1 :(得分:0)

只需使用min()max()

select id, sum(value), min(data)
from t
group by id;

如果您实际上想要一个随机值,则可以使用:

select id, sum(value),
       min(data) keep (dense_rank first order by dbms_random.random)
from t
group by id;