Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 запрос на дубликаты(в FAQ такого нет)  [new]
спрашивающий2010
Guest
Имеется таблица, у которой по первым трем полям (с1,с2,с3) определяются дубликаты. Нужно вывести дубликаты в порядке возрастания количества этих дубликатов вместе с четвертым полем c4. Т.е. из этого набора
with t as (
select 'A' c1,'B' c2,'C' c3,'10' c4 from dual union all
select 'B' ,'C','A','51'  from dual union all
select 'A','B','C','34' from dual union all
select 'A','A','C','32'  from dual union all
select 'B','C','A','33'  from dual union all
select 'C','A','B','50'  from dual union all
select 'A','B','C','23' from dual  ) 
получить примерно такой
A B C 23
A B C 34
A B C 32
B C A 51
B C A 33
C A B 50
19 апр 10, 09:55    [8648354]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
Простомимошел
Guest
спрашивающий2010,

видимо обычный group by, order by, + having > 1
19 апр 10, 09:58    [8648378]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
спрашивающий2010
Guest
Простомимошел,

group by выдаст мне сгруппированный список, а мне нужно еще поле с4, которое у всех разное
19 апр 10, 10:00    [8648396]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
JaRo
Member

Откуда:
Сообщений: 1659
count(1) over (partition by c1,c2,c3) cou
)
order by cou
19 апр 10, 10:03    [8648406]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Автор, а почему 'A','A','C' не попало в результат,
но 'C','A','B' попало ?
19 апр 10, 10:05    [8648412]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
спрашивающий2010
Guest
JaRo,

то что нужно!
Спасибо
19 апр 10, 10:07    [8648434]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
спрашивающий2010
Guest
Паганель,

Короче вот
with t as (
select 'A' c1,'B' c2,'C' c3,'10' c4 from dual union all
select 'B' ,'C','A','51'  from dual union all
select 'A','B','C','34' from dual union all
select 'A','A','C','32'  from dual union all
select 'B','C','A','33'  from dual union all
select 'C','A','B','50'  from dual union all
select 'A','B','C','23' from dual  ) 
select count(*) over (partition by c1,c2,c3) c, c1,c2,c3,c4 from t order by c desc 

3 A 	B 	C 	10
3 A 	B 	C 	23
3 A 	B 	C 	34
2 B 	C 	A 	33
2 B 	C 	A 	51
1 C 	A 	B 	50
1 A 	A 	C 	32

19 апр 10, 10:10    [8648447]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
Простомимошел
Guest
with t as (
select 'A' c1,'B' c2,'C' c3,'10' c4 from dual union all
select 'B' ,'C','A','51' from dual union all
select 'A','B','C','34' from dual union all
select 'A','A','C','32' from dual union all
select 'B','C','A','33' from dual union all
select 'C','A','B','50' from dual union all
select 'A','B','C','23' from dual )
select * from (
select c1, c2, c3, c4, count (c4), row_number () over (partition by c1, c2, c3 order by c4) rw from t
group by c1, c2, c3, c4
--having count (c4) > 1
order by c1, c2, c3)
where rw > 1
19 апр 10, 10:12    [8648456]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
Elic
Member

Откуда:
Сообщений: 29988
JaRo
count(1) over (partition by c1,c2,c3) cou
)
order by cou
order by count(*) over (partition by c1, c2, c3)
19 апр 10, 10:13    [8648470]     Ответить | Цитировать Сообщить модератору
 Re: запрос на дубликаты(в FAQ такого нет)  [new]
JaRo
Member

Откуда:
Сообщений: 1659
спрашивающий2010
order by c desc
+ ещё должна быть сортировка по группе, например, c1||CHR(10)||c2||CHR(10)||c3||CHR(10)
19 апр 10, 10:14    [8648475]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить