|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Добрый день! Уважаемые участники форума, подскажите пожалуйста с решением проблемы. В Эксель есть таблица на листе1 , содержащая в себе колонки: ID, summa, ostatok Я подключил библиотеку SQL, и мне нужно написать запрос для вывода записей с 3 максимальными значениями summa в каждой группе ID. То есть имеется таблица: ID / summa / ostatok 1 / 100 / 100 1 / 80 / 50 1 / 90 / 60 1 / 60 / 100 2 / 50 / 50 2 / 100 / 50 Рузультат должен быть: ID / summa / ostatok 1 / 100 /100 1 / 90 /60 1 / 80 /50 2 / 100 /50 2 / 50 /50 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 12:29 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Эффект Доплера, select id, max(summa) from tbl group by id ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 13:14 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Этот запрос выведет на против каждого ID его максимальное значение, а как вывести дополнительно следующее за ним максимальное? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 13:19 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Эффект Доплера, упорядочить что ли? Вы говорили пр омаксимально в группе, показали что то другое. Может так? Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 13:22 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Озверин, это тоже не подойдет. Надо ж 3 штуки, а не просто упорядочить. Теперь я соединил воедино картинку ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 13:25 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Эффект Доплера, у меня в голове запросом не выходит - только открыть рекордсет(предварительно упорядочив записи Код: sql 1.
) и там уже выбирать 3 первые в разрезе каждого ID. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 13:29 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Есть такая вещь, как TOP. Почитайте о нём. Пример Код: sql 1.
Первые 3 записи из запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 14:25 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Да, TOP должно применяться совместно с ORDER BY ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 14:40 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Эффект Доплеранужно написать запрос для вывода записей с 3 максимальными значениями summa в каждой группе ID Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 15:06 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Есть ещё такая штука, как WITH TIES но она вроде только для SQL Server Возможности параметра WITH TIES в версии SQL Server Когда во время учебных занятий по T-SQL мы обсуждаем фильтр TOP и упоминается параметр WITH TIES, я часто вижу удивленные лица слушателей. Очевидно, многим неизвестно о существовании этого параметра и его назначении, хотя он появился в фильтре TOP в версии SQL Server 7.0. Рассмотрим следующий запрос: Код: sql 1. 2. 3.
Этот запрос возвращает три последних заказа. Но поскольку столбец orderdate не уникален, нельзя определить предпочтения между строками с одинаковой датой. Из-за этого запрос становится недетерминированным. Порядок доступа к строкам с одинаковой датой определяется порядком физического доступа. Благодаря параметру WITH TIES выполнение запроса не останавливается немедленно после того, как возвращено заданное число строк, а выдаются все связи с последней строкой с учетом элементов упорядочения (в данном случае orderdate). Это означает, что вы можете получить больше строк, чем было запрошено, но отбор строк становится детерминированным. Применить этот параметр с нашим запросом можно следующим образом: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 15:25 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
__MichelleЭффект Доплеранужно написать запрос для вывода записей с 3 максимальными значениями summa в каждой группе ID Код: sql 1. 2. 3. 4. 5. 6.
Уточнение: в подзапросе сортировка по убыванию. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 15:28 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
__Michelle__Michelleпропущено... Код: sql 1. 2. 3. 4. 5. 6.
Уточнение: в подзапросе сортировка по убыванию. Код: sql 1. 2. 3. 4. 5.
Так ближе, наверное ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 15:46 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
У вас таблица в Экселе, а где будет выполняться запрос? Здесь же или в Аксе (к прилинкованной таблице)? И для чего нужен результат? В Экселе можно его средствами (написать процедуру) скопировать нужные строки на другой лист (или в другой файл), а затем, при необходимости, выполнить запрос к этим данным. Эффект ДоплераЯ подключил библиотеку SQL Имеется ввиду ADO, или DAO, или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 16:15 |
|
Запрос для выборки 3 максимальных значений в подгруппе
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, запрос будет выполняться в Экселе, подключил ADO. Мне кажется SQL к данной задаче лучше подходит, чем писать процедуру на VBA, но может я и ошибаюсь... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2018, 12:56 |
|
|
start [/forum/topic.php?fid=45&fpage=49&tid=1611359]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 145ms |
0 / 0 |