|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
Помогите, пожалуйста, решить. По заданию, не могу использовать LIMIT, нужно заменить на что-то по стандарту Mysql. Задача: Вывести имя сотрудника, получающего третью по величине зарплату в организации . таблица по сотрудникам (employee): id - число, первичный ключ department_id - число, внешний ключ на таблицу department chief_id - число, внешний ключ на саму таблицу employee name - строка salary - число Мое стандартное работающее решение с LIMIT было бы таким: SELECT name, MAX(salary) FROM employee GROUP BY salary ORDER BY salary DESC LIMIT 2, 1; ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 17:26 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
kate1994-07, LIMIT не параметризуется, поэтому в задании есть логика. Решить можно двумя способами: - через переменные, см. FAQ: Нумерация строк и другие вопросы про использование переменных - аналитическими/оконными функциями, если версия MySQL позволяет. Например, с помощью ROW_NUMBER() ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 17:35 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
miksoft, но разве это получится уместить в один запрос? Нужно сделать именно одним запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 18:10 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
kate1994-07 miksoft, но разве это получится уместить в один запрос? Нужно сделать именно одним запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 18:18 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
kate1994-07 SELECT name, MAX(salary) FROM employee GROUP BY salary ORDER BY salary DESC LIMIT 2, 1; ваш запрос не имеет смысла так делать нельзя, тем более в MySQL ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 18:33 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
Если поле salary уникально (имеется соотв. уникальный индекс), то OR (t1.salary = t2.salary AND t1.id > t2.id) из ON - убрать. id - поле или выражение первичного или любого уникального индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 20:22 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
а я думаю нужно не стесняться смотреть на то, что выдает запрос 1) пишем базовый запрос Код: sql 1. 2. 3.
2) выводим результаты в клиенте, выписываем результат на бумажке 3) после этого смотрим на результаты стандартного рабочего решения 4) правим стандартное рабочее решение 5) приступаем к выполнению задания ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 23:33 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
kate1994-07, Есть еще 1 способ, со звездочкой, так сказать (по крайней мере, когда я его первый раз увидел, он мне показался малость заумным). Но рабочий вариант, почему бы и нет ) Код: sql 1. 2. 3. 4. 5. 6. 7.
Хотя, по ходу у Akina в предыдущем сообщении почти то же самое, только в профиль ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 01:01 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
MikkiMouse, спасибо большое, работает! Сама бы не справилась! И вариант Akina тоже работает, спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 02:13 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
mini.weblab, потому что в GROUP BY не то, что в SELECT? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 02:14 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
kate1994-07 mini.weblab, потому что в GROUP BY не то, что в SELECT? Потому что в SELECT не то, что в GROUP BY SELECT name, MAX(salary) ... GROUP BY name имело бы смысл ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 10:28 |
|
Чем заменить LIMIT?
|
|||
---|---|---|---|
#18+
kate1994-07 mini.weblab, потому что в GROUP BY не то, что в SELECT? потому что нужно смотреть и понимать результаты, которые возвращает запрос во-первых, для вашей задачи GROUP не нужен, во-вторых, вы используете группировку неправильно и, в-третьих, если вы все-таки решили использовать группировку, то у вас должна быть хорошая причина для этого :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 12:19 |
|
|
start [/forum/topic.php?fid=47&fpage=20&tid=1828520]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 264ms |
total: | 397ms |
0 / 0 |