Логические операторы
Упорядочивание данных
Рассмотрим вопрос о том, как можно изменить порядок вывода данных, извлеченных из таблиц MySQL, используя предложение ORDER BY оператора SELECT.
Извлекаемые до сих пор данные всегда выводились в том порядке, в котором они были сохранены в таблице. В действительности SQL позволяет сортировать извлеченные данные с помощью предложения ORDER BY. Это предложение требует имя столбца, на основе которого будут сортироваться данные. Давайте посмотрим, как можно вывести имена сотрудников с упорядоченными по алфавиту фамилиями сотрудников (в возрастающем порядке).
SELECT l_name, f_name from employee_data ORDER BY l_name;
А вот так сотрудников можно отсортировать по возрасту.
SELECT f_name, l_name, age from employee_data ORDER BY age;
Предложение ORDER BY может сортировать в возрастающем порядке ( ASCENDING или ASC ) или в убывающем порядке ( DESCENDING или DESC ) в зависимости от указанного аргумента.
Чтобы вывести список сотрудников в убывающем порядке, можно использовать следующий оператор.
SELECT f_name from employee_data ORDER by f_name DESC;
Примечание: Возрастающий порядок ( ASC ) используется по умолчанию.
Задания
1. Вывести список сотрудников в порядке, определяемом зарплатой, которую они получают.
2. Выведите список сотрудников в убывающем порядке их стажа работы в компании.
3. Что делает следующий оператор?
SELECT emp_id, l_name, title, age from employee_data ORDER BY title DESC, age ASC;
4. Вывести список сотрудников (фамилию и имя), которые занимают должность "программист" или "разработчик Web" и отсортировать их фамилии по алфавиту.
Возможные решения
-
mysql> SELECT f_name, l_name, salary -> from employee_data -> ORDER BY salary;
-
mysql> SELECT f_name, l_name, yos -> from employee_data -> ORDER by yos DESC;
- Оператор выводит список сотрудников с идентификационным номером, должностью, и возрастом, отсортированный по должности в убывающем порядке и по возрасту в возрастающем порядке.
mysql> SELECT emp_id, l_name, title, age -> from employee_data ORDER BY -> title DESC, age ASC;
Примечание: Сначала сортируются должности в убывающем порядке. Затем для каждой должности сортируется возраст сотрудников в возрастающем порядке.
-
mysql> SELECT l_name, f_name from employee_data -> where title IN ('программист', -> 'разработчик Web') ORDER BY l_name;