Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2011.02.06;
Скачать: [xml.tar.bz2];

Вниз

top2 по каждому значению условия   Найти похожие ветки 

 
Sergey2   (2009-09-03 15:49) [0]

можно  выбрать как то только 2 записи (top 2) по каждому значению условия?

вот такая выборка :

field1   field2
1         aa
1         bb
1         cc
2         aaa
2         bbb
2         ccc
2         ddd

по каждому field1 только первые 2 записи.
результат вот такой что бы получился

1 aa
1 bb
2 aaa
2 bbb
....

select top 2 field1, field2
from mytable
where field1 = 1
order by field2
union
select top 2 field1, field2
from mytable
where field1 = 2
order by field2
....

вот такой запрос поидее подходит. вот только в таблице 160000 записей.


 
Ega23 ©   (2009-09-03 16:54) [1]

group by?


 
Sergey2   (2009-09-03 17:09) [2]

по какому полю ?

select field1
from mytable
group by field1

1
2
3
5
....
160000

вернет необходимые коды... но по каждому из них необходимо взять из той же таблицы топ 2 полей field2

что бы получить

1    aa
1    bb
2    aaa
2    bbb
3    a1
3    b1
5    aa1
5    bb1
....
160000   aaaa11
160000   bbbb11

Как можно это в одном запросе сделать ?


 
stas ©   (2009-09-03 17:31) [3]

Если MSSQL 2005
select * from mytable as m outer apply (select top2 * from mytable where mytable.field1=m.field1)


 
stas ©   (2009-09-03 17:33) [4]

или даже так
select * from (select distinct field1 from mytable) as m outer apply (select top2 * from mytable where mytable.field1=m.field1)


 
adigozelov ©   (2009-09-04 00:55) [5]

privet atvet takoy

stolba "id" zdes Счетчик

select *  from mytable as  mytable2  where
id in ( select top 2 id from mytable where field1=mytable2.field1)


 
Sergey2   (2009-09-04 09:30) [6]

stas
отличный запрос. посмотрел в хелпе - то что нужно. sql вот только 2000 и там такого оператора нет. есть ли нечто подобное в 2000 ?

хотя идея предложенная adigozelov так же должна отработать. попробую ключевое автоинкрементное поле  добавить в таблицу

Спасибо за ответы


 
СовестьДМ ©   (2009-09-04 18:45) [7]


> adigozelov ©   (04.09.09 00:55) [5]

прежде чем что-то советовать рекомендуется испытывать на себе


 
sniknik ©   (2009-09-04 19:42) [8]

монстрообразно, но должно сработать и в 2000м ...
SELECT f1,(SELECT TOP 1 f2 FROM Table1 WHERE a.f1=f1) FROM (SELECT DISTINCT f1 FROM Table1) a
UNION ALL
SELECT f1,(SELECT TOP 1 f2 FROM Table1 WHERE a.f1=f1 AND f2<>(SELECT TOP 1 f2 FROM Table1 WHERE a.f1=f1)) FROM (SELECT DISTINCT f1 FROM Table1) a
ORDER BY f1

вот за скорость не ручаюсь...


 
adigozelov ©   (2009-09-04 22:29) [9]


> СовестьДМ

Slushuy ya paprobul mojut bit v ni paprobili!


 
СовестьДМ ©   (2009-09-04 22:40) [10]


> adigozelov ©   (04.09.09 22:29) [9]

ну и как оно?


 
adigozelov ©   (2009-09-04 22:55) [11]


> СовестьДМ

Sazdayci table vot takoy

id +
field1 int
field2 varchar(50)

i zdeliyici insert! a patom zdeliyici moy zapros i vidici shto eta rapotayit!


 
СовестьДМ ©   (2009-09-05 18:17) [12]


> adigozelov ©   (04.09.09 22:55) [11]

да вы правы
я не учел что вхождение делаем по идентификатору

считаю что запрос adigozelov ©   (04.09.09 00:55) [5] самый простой и БЫСТРЫЙ


 
Sergey2   (2009-09-08 15:12) [13]

adigozelov ©.

всё верно - ещё раз спасибо за решение. все получилось



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2011.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
11-1229077921
sir tictactoe
2008-12-12 13:32
2011.02.06
не получается создать MCK-проект в BDS2006


6-1233923881
leonidus
2009-02-06 15:38
2011.02.06
Прерывание работы TidHTTP


2-1289799666
antsa
2010-11-15 08:41
2011.02.06
Чтение цвета символа в консоли


4-1245062957
василий иванович
2009-06-15 14:49
2011.02.06
самописный CSP


2-1289815798
cyber-pilot
2010-11-15 13:09
2011.02.06
Вопрос про WideChar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский