Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб-1-2-теория.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Предложения group by и having

Предложение GROUP BY позволяет группировать аналогичные данные.

Поэтому, чтобы вывести все уникальные должности в таблице, можно выполнить команду

select title from employee_data GROUP BY title;

Все уникальные должности сотрудников

Можно видеть, что это аналогично использованию DISTINCT.

Вот как можно подсчитать число сотрудников имеющих определенную должность.

select title, count(*) from employee_data GROUP BY title;

В этой команде MySQL сначала создает группы различных должностей, а затем выполняет подсчет в каждой группе

Количество сотрудников по должностям

Выведем среднюю зарплату сотрудников в различных подразделениях (должностях),

select title, AVG(salary) from employee_data GROUP BY title;

Вывод средней зарплаты сотрудников по подразделениям

Предположим теперь, что требуется вывести только те подразделения, где средняя зарплата более 100000. Это можно сделать с помощью предложения HAVING.

select title, AVG(salary) from employee_data GROUP BY title HAVING AVG(salary) > 100000;

Вывод средней зарплаты определённого диапазона по подразделениям

Пример

Вывести подразделения и средний возраст, где средний возраст больше 30.

select title, AVG(age) from employee_data GROUP BY title HAVING AVG(age) > 30;

Вывод подразделения и среднего возраста, где средний возраст больше 30 лет

Удаление записей из таблицы

Для удаления записей из таблицы можно использовать оператор DELETE.

Оператор удаления DELETE требует задания имени таблицы и необязательных условий.

DELETE from имя_таблицы [WHERE условия];

Примечание: Если никакие условия не будут заданы, то удаляются все данные в таблице.

Предположим, один из специалистов по мультимедиа 'Василий Пупкин' уволился из компании. Надо удалить его запись.

DELETE from employee_data WHERE l_name = 'Пупкин';

Результат удаления записи из таблицы

Упорядочивание данных order by

Рассмотрим вопрос о том, как можно изменить порядок вывода данных, извлеченных из таблиц 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) используется по умолчанию.

Теперь давайте найдем и выведем число сотрудников, имеющих различные должности, и отсортируем их с помощью ORDER BY.

select title, count(*) AS Number from employee_data GROUP BY title ORDER BY Number;

Количество сотрудников по должностям с сортировкой

Провести сортировку с учетом регистра символов можно при помощи команды BINARY:

ORDER BY BINARY(поле).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]