Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики. Максим Михайлович Чалышев
наименования городов (CITYNAME) и население (PEOPLES) из таблицы CITY, отсортируйте выбранные данные по коду города (CITYCODE), в обратном порядке по наименованию города и количеству населения.
Я знаю, что для инструкции ORDER BY существует альтернативный синтаксис. Расскажите о нем.
Перепишем этот запрос с использованием альтернативного синтаксиса:
То есть вместо названий колонок таблиц в инструкции ORDER BY мы используем порядковый номер колонки в нашем запросе – у CITYCODE он равен 1, у CITYNAME 2, у PEOPLES 3.
Можно ли отсортировать запрос по полю, которого нет в запросе, но которое есть в таблице после инструкции FROM?
Да, синтаксис SQL это допускает, и вот пример:
Контрольные вопросы и задания для самостоятельного выполнения
1. Выберите записи из таблицы CITY, где в названии города (CITYNAME) есть слог «ем», отсортируйте запрос по названию города (CITYNAME) и по популяции (PEOPLES) в обратном порядке.
2. Выберите все записи из таблицы AUTO, отсортируйте записи по цвету (COLOR) и по марке (MARK) автомобиля в обратном порядке.
Шаг 14. Ограничение на количество выбранных строк ROWNUM, TOP (n)
Введение
Иногда запросы строятся таким образом, что на экран сразу выводится множество строк.
А что если нам необходимо ограничить количество строк выводимой информации, то есть из десятков тысяч строк нам достаточно нескольких строк для анализа информации?
Теория и практика
Для решения этой задачи в разных диалектах языка SQL используются разные синтаксические конструкции: в MS SQL это конструкция TOP, в ORACLE есть специальный предикат ROWNUM, в PostgreSql, MYSQL для этого существует конструкция LIMIT.
Разберем диалект SQL ORACLE.
Конструкция ROWNUM позволит ограничить количество выводимых строк на заданную величину.
Синтаксис
Примеры
Вывести первые 5 строк из таблицы AUTO.
Рисунок 29. Запрос с ограничением строк (первые 5)
Вывести первые 5 строк из таблицы CITY, где население (PEOPLES) городов больше 300 000.
Рисунок 30. Выбрать первые 5 строк, запрос города: население больше 300 000
Важные замечания
Если использовать ROWNUM совместно с сортировкой, то необходимо прибегнуть к специальному приему, иначе ROWNUM не будет работать как нужно и запрос вернет неверные данные.
Правильно следует написать так:
Вывести первые 5 автомобилей, отсортированных по дате производства (RELEASEDT).
Ошибочный запрос:
Правильный запрос:
Вопросы учеников
Покажите, как ограничивать вывод строк в MYSQL, MS SQL и PostgreSQL.
Разберемся на примере.
Вывести первые 5 строк из таблицы CITY, где население (PEOPLES) городов больше 3000.
ORACLE SQL