|
|
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
Вот задание :Создайте запрос, который выведет имена, номер отдела и зарплату сотрудников из отдела №20 которые идут на 2-м и 3-ем месте по уровню зарплаты в этом отделе. Код: plsql 1. 2. 3. 4. Нужно сам результат подзапроса передать уже отсортированным по убыванию. Когда пытаюсь добавить order by в подзапрос - получаю ошибку. Как решить эту проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2018, 23:48 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
А нафига тут подзапрос? Нужно то вернуть две записи, начиная со второй, а с этим LIMIT справиться должен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 00:49 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
vkle, Дело в том что в таком случае выведется только первые 2 неотсортированные строки(из 2000;800;2900 останется 2000;800) (Цифры взяты для примера) Мне нужно как раз чтобы из подзапроса передались 2 строки из 3 у которых sal самый большой .Либо же просто отсортированные 3 строки , из который останутся 2 командой Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 01:05 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
А что мешает в этом случае сделать сортировку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 01:07 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
vkle, Смотри в чем дело, сортируется уже результат работы запроса с подзапросом, которые возвращают 3 строки. Сортировка должна быть обязательно в с самом конце ,иначе она работать не будет, как я понимаю. Если ограничить результат подзапроса двумя строками , то это не даст нам нужного результата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 01:12 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
Но кстати да, мой вариант не будет правильно работать, если у двух или более сотрудников одинаковая максимальная зарплата. В этом смысле Ваш вариант правильный. Используйте алиас таблицы, чтобы указать, о каком именно экземпляре таблице идет речь в той или иной части запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 01:13 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
vkle, А как вот это сделать? А то мы это ещё не проходили. А задание дали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 01:17 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
Artem_ka_123Если ограничить результат подзапроса двумя строками , то это не даст нам нужного результатаВ Вашем варианте результатом подзапроса должна быть одна строка - максимальная зарплата в отделе, которая не нужна в выдаче. Это значение исключается из выборки в предложении WHERE. Соответственно, в конечной выдаче берем лимит в две строчки из отсортированной по убыванию зарплаты ... ORDER BY sal DESC LIMIT 2 Как раз и будут второе и третье места по отделу. Не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 01:52 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
Artem_ka_123Вот задание :Создайте запрос, который выведет имена, номер отдела и зарплату сотрудников из отдела №20 которые идут на 2-м и 3-ем месте по уровню зарплаты в этом отделе. Так что делать, если одинаковая максимальная зарплата у двух или более сотрудников? Исключить из вывода их всех или любого одного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 05:32 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
vkle, вот что получается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 09:18 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
paver, Исключить из вывода их всех. Но в данном случае это и так работает , две строки с одинаковым максимальным результатом sal= 3000 исключаются. Мне нужно как то либо из подзапроса вернуть отсортированные данные ,либо уже произвести ограничение в строки после последней сортировки order by (но на последнее ругается сам интерпретатор sql) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 09:22 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
Artem_ka_123, Вот выведены все строки с работниками 20-го отдела для наглядности .Выше есть с результатом подзапроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 09:25 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
Artem_ka_123paver, Исключить из вывода их всех. Но в данном случае это и так работает , две строки с одинаковым максимальным результатом sal= 3000 исключаются. Мне нужно как то либо из подзапроса вернуть отсортированные данные ,либо уже произвести ограничение в строки после последней сортировки order by (но на последнее ругается сам интерпретатор sql) 1. В подзапросе нужно получить значения з/п с номерами 2 и 3. Это достигается через конструкцию SELECT DISTINCT ... ORDER BY ... LIMIT 1,2 2. В запросе получаете всех сотрудников, у которых такая з/п, используя конструкцию WHERE ... IN (подзапрос) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 09:56 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
Artem_ka_123, что-то не похоже это на My SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 12:08 |
|
||
|
Как сделать сортировку в подзапросе
|
|||
|---|---|---|---|
|
#18+
Artem_ka_123, поскольку у тебя Oracle, самый прямой путь в этой задаче -- оконная функция rank() over() решать через select max() это прошлый век аналогично с mysql с версии 8.0 и mariadb 10.2 и выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2018, 12:12 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1829460]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 394ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...