GroupBy только одно поле, а не все поля, которые у меня есть в Select - PullRequest
0 голосов
/ 28 мая 2019

Я работаю со следующей таблицей:

**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, Value и Data), результат возвращает 1-ю таблицу.И, если я только ID поля GroupBy, у меня появляется следующая ошибка:

ORA-00979: не выражение GROUP BY

Может кто-нибудь помочь в том, как это сделать?

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Мы могли бы произвольно взять минимальное значение Data в каждой группе ID:

SELECT ID, SUM(Value) AS Value, MIN(Data) AS Data
FROM yourTable
GROUP BY ID;
0 голосов
/ 28 мая 2019

Просто используйте 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;
...