Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.02.2021, 12:08
|
|||
---|---|---|---|
Высших 3 студента по грейдам на каждый курс |
|||
#18+
Добрый день. У меня такой вопрос, связанный с максимальными тремья грейдами на каждый курс. Есть 4 таблицы. Grade Student Section Course Они связаны по таким полям: Код: plsql 1. 2. 3. 4.
На выходе получаю массив данных. Стоит вопрос, на который я и так и сяк не смог ответить. Нужно 3 максимальных numeric_grade найти для каждого c.description c.description - это название курса. Так же из общего массива найти 3 самых максимальных numeric_grade Я вот так написал: Код: plsql 1. 2. 3. 4. 5. 6. 7.
База вернула пустой массив. А если поставлю ROWNUM = 1 вместо ROWNUM = 3, то база возвращает 1 запись как максимальную. Почему ROWNUM = 3 не работает? Где в моем коде ошибка подскажите пожалуйста? Заранее благодарю. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.02.2021, 12:15
|
|||
---|---|---|---|
Высших 3 студента по грейдам на каждый курс |
|||
#18+
LiQuid Почему ROWNUM = 3 не работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2021, 05:48
|
|||
---|---|---|---|
Высших 3 студента по грейдам на каждый курс |
|||
#18+
Хотя бы подскажите в чем проблема этого кода, почему он возвращает мне пустое значение вместо трех записей? Где моя ошибка? Как сделать так чтобы 3 записи увидеть? Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2021, 07:42
|
|||
---|---|---|---|
Высших 3 студента по грейдам на каждый курс |
|||
#18+
Решил. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2021, 07:50
|
|||
---|---|---|---|
|
|||
Высших 3 студента по грейдам на каждый курс |
|||
#18+
ROWNUM назначается по мере выборки -- получили первую строку, назначили ей ROWNUM=1, она не подходит по условию, отбросили -- получили следующую строку, с учетом того, что предыдущих строк, удовлетворяющим условиям не было, эта становится (пока) первой, назначаем ей ROWNUM=1, не подходит, отбросили -- ... Ну и как избавиться -- уже сказали, использовать аналитику (row_number() over()) или подзапрос Код: plsql 1. 2. 3. 4. 5.
Т.к. ROWNUM опять же назначается по мере выборки ДО упорядочивания, надо делать еще один позапрос. С аналитикой это все можно задать в конструкции упорядочивания ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=52&mobile=1&tid=1880409]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
145ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 240ms |
0 / 0 |