Суммирование значений столбца с помощью функции SUM
Агрегатная функция SUM() вычисляет общую сумму значений в столбце. Для этого необходимо задать имя столбца, которое должно быть помещено внутри скобок. Давайте посмотрим, сколько компания BigFoot тратит на зарплату своих сотрудников. select SUM(salary) from employee_data; На рис. 7.7. приведен результат запроса.
Рис. 7.7. Сумма всех зарплат Аналогично можно вывести общую сумму надбавок, выдаваемых сотрудникам. select SUM(perks) from employee_data; На рис. 7.8. приведен результат запроса.
Рис. 7.8. Сумма всех надбавок Можно найти также общую сумму зарплаты и надбавок. select sum(salary) + sum(perks) from employee_data; На рис. 7.9. приведен результат запроса.
Рис. 7.9. Общая сумма зарплаты и надбавок Здесь показаны также дополнительные возможности команды SELECT. Значения можно складывать, вычитать, умножать или делить. В действительности можно записывать полноценные арифметические выражения. Вычисление среднего значения Агрегатная функция AVG() используется для вычисления среднего значения данных в столбце. select avg(age) from employee_data; На рис. 7.10. приведен результат запроса.
Рис. 7.10. Средний возраст сотрудников Пример выше вычисляет средний возраст сотрудников компании BigFoot, а следующий выводит среднюю зарплату. select avg(salary) from employee_data; На рис. 7.11. приведен результат запроса.
Рис. 7.11. Средняя зарплата сотрудников Задания
select (SUM(perks)/SUM(salary) * 100) from employee_data; Возможные решения 1. mysql> select SUM(age) from employee_data; На рис. 7.12. приведен результат запроса.
Рис. 7.12. Сумма всех возрастов сотрудников 2. mysql> select SUM(yos) from employee_data; На рис. 7.13. приведен результат запроса.
Рис. 7.13. Общее количество лет стажа работы сотрудников 3. mysql> select SUM(salary), AVG(age) -> from employee_data where -> title = 'программист'; На рис. 7.14. приведен результат запроса.
Рис. 7.14. Сумма зарплат и средний возраст программистов 4. Этот оператор выводит процент зарплаты, который сотрудники BigFoot получают в качестве надбавок. mysql> select (SUM(perks)/SUM(salary) * 100) -> from employee_data; На рис. 7.15. приведен результат запроса.
Рис. 7.15. Процент зарплаты, который сотрудники получают в качестве надбавок Именование столбцов MySQL позволяет задавать имена для выводимых столбцов. Поэтому вместо f_name или l_name и т.д. можно использовать более понятные и наглядные термины. Это делается с помощью оператора AS. select avg(salary) AS 'Средняя зарплата' from employee_data; На рис. 7.16. приведен результат запроса.
Рис. 7.16. Вывод средней зарплаты с использованием псевдо-имен столбцов. Такие псевдо-имена могут сделать вывод более понятным для пользователей. Важно только помнить, что при задании псевдо-имен с пробелами необходимо заключать такие имена в кавычки. Вот еще один пример: select (SUM(perks)/SUM(salary) * 100) AS 'Процент надбавок' from employee_data; На рис. 7.17. приведен результат запроса.
Рис. 7.17. Вывод процента зарплаты, которую сотрудники получают в качестве надбавок с использованием псевдо-имен Подсчет числа записей Агрегатная функция COUNT() подсчитывает и выводит общее число записей. Например, чтобы подсчитать общее число записей в таблице, выполните следующую команду. select COUNT(*) from employee_data; На рис. 7.18. приведен результат запроса.
Рис. 7.18. Общее количество записей Как мы уже знаем, знак * означает "все данные". Теперь давайте подсчитаем общее число сотрудников, которые занимают должность "программист". select COUNT(*) from employee_data where title = 'программист'; На рис. 7.19. приведен результат запроса.
Рис. 7.19. Общее количество сотрудников-программистов Группировка данных Предложение GROUP BY позволяет группировать аналогичные данные. Поэтому, чтобы вывести все уникальные должности в таблице, можно выполнить команду select title from employee_data GROUP BY title; На рис. 7.20. приведен результат запроса.
Рис. 7.20. Все уникальные должности сотрудников Можно видеть, что это аналогично использованию DISTINCT в предыдущей лекции. Вот как можно подсчитать число сотрудников имеющих определенную должность. select title, count(*) from employee_data GROUP BY title; На рис. 7.21. приведен результат запроса.
Рис. 7.21. Количество сотрудников по должностям В предыдущей команде MySQL сначала создает группы различных должностей, а затем выполняет подсчет в каждой группе. Сортировка данных Теперь давайте найдем и выведем число сотрудников, имеющих различные должности, и отсортируем их с помощью ORDER BY. select title, count(*) AS Number from employee_data GROUP BY title ORDER BY Number; На рис. 7.22. приведен результат запроса.
Рис. 7.22. Количество сотрудников по должностям с сортировкой Задания
Возможные решения 1. mysql> select count(*) from employee_data -> where yos > 3; На рис. 7.23. приведен результат запроса.
Рис. 7.23. Число сотрудников, которые проработали более трех лет 2. mysql> select age, count(*) -> from employee_data -> GROUP BY age; На рис. 7.24. приведен результат запроса.
Рис. 7.24. Количество сотрудников в группах одного возраста 3. mysql> select age, count(*) -> from employee_data -> GROUP BY age -> ORDER by age DESC; На рис. 7.25. приведен результат запроса.
Рис. 7.25. Количество сотрудников в группах одного возраста с обратной сортировкой 4. mysql> select title, AVG(age) -> from employee_data -> GROUP BY title; На рис. 7.26. приведен результат запроса.
Рис. 7.26. Средний возраст сотрудников по должностям 5. mysql> select title, AVG(age) -> AS 'средний возраст' -> from employee_data -> GROUP BY title -> ORDER BY 'средний возраст' DESC; На рис. 7.27. приведен результат запроса.
Рис. 7.27. Средний возраст сотрудников по должностям с использованием псевдо-имени столбца Примечание: Нам нужно задать псевдо-имя для столбца, содержащего среднее значение возраста, чтобы его можно было сортировать.
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (214)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |