Группировка по определенному значению атрибута

thekip
Дата: 19.12.2012 12:00:59
Вообщем есть выборка

id id2 rank
6 5366 1,0000
6 5363 0,6667
6 5362 0,5000
7 5428 0,5000
6 5624 0,3333
6 5391 0,3333
6 5364 0,3333
6 5426 0,3333

Необходимо из этих данных выбрать со следующим условием:
Если у id есть ранк 1,000 (точное совпадение), то выводим только его, строки с другим ранком отбрасываем.
Если же иначе, у id нет точного спадения (ранк меньше 1), то выводим все имеющиеся строки...

Такое вообще возможно?
Добрый Э - Эх
Дата: 19.12.2012 12:09:29
[not] exists подзапрос
tanglir
Дата: 19.12.2012 12:10:10
thekip,

select 'yes' as have_rank_1,*
from tbl
where rank=1
UNION ALL
select 'no',tbl.* from tbl 
left join 
(select distinct id 
 from tbl 
 where id=1
) t1 on tbl.id=t1.id 
where t1.id is null
thekip
Дата: 19.12.2012 12:17:25
tanglir,

Что то совсем не понял вашего решения...
tanglir
Дата: 19.12.2012 12:40:32
thekip,

Первая часть запроса выводит все записи с рангом 1.
Вторая выводит все записи с теми ид, для каждого из которых нет записей с таким же ид и рангом 1.

Если вам что-то другое надо было, то объясняйте заново или давайте желаемый результат, исходные данные в первом посте вы уже привели.