Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / неупорядоченный group by / 3 сообщений из 3, страница 1 из 1
17.04.2019, 22:31
    #39803078
Rot
Rot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неупорядоченный group by
Доброго времени суток. Есть такой запрос:

select one, two, count(*) co
from tbl
group by one, two

и такой ответ:

А B 2
А С 1
B A 3

При помощи group by я получаю упорядоченные пары, но порядок не должен иметь значения. То есть для данного примера B A и A B одно и то же. Как можно изменить запрос, чтобы получить

A B 5
A C 1
или
A C 1
B A 5
...
Рейтинг: 0 / 0
17.04.2019, 23:11
    #39803084
chidoriami
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неупорядоченный group by
Rot,

ну как вариант:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with tbl as (
            select 'A' one, 'B' two from dual
  union all select 'B' one, 'A' two from dual
  union all select 'A' one, 'B' two from dual
  
  union all select 'A' one, 'C' two from dual
  union all select 'C' one, 'A' two from dual
)
select 
        least(one, two)||''||greatest(one, two)
       , count(*) co
  from tbl
 group by least(one, two)||''||greatest(one, two)


это если в полях one и two нет null значений - least/greatest возвратят null, если хотя бы один из аргументов is null
...
Рейтинг: 0 / 0
17.04.2019, 23:36
    #39803087
Rot
Rot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неупорядоченный group by
chidoriami,

Точно. Еще можно сравнение в case использовать, чтобы переносимо было. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / неупорядоченный group by / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]