sql. Выражения, используемые в операторах SELECT | MetodPro.ru

Реклама на сайте

sql. Выражения, используемые в операторах SELECT


SQL  — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.

Оператор SELECT не только позволяет выбирать атрибуты отношений по именам, но производить над ними действия с помощью операций сложения, вычитания, умножения, деления.

Пример.

selectФамилия, Имя,Отчество, Табельный_номер, Зарплата,

Зарплата*0.75Премия

FROMСотрудник

WHEREНаименование_отдела=“Художественный”

 

Кроме имен выводимых столбцов и арифметических операторов выражение может содержать функции. Рассмотрим пять основных агрегатных и восемь временных функций, а также функции LENGTH, USER, TODAY, HEX, ROUND, TRUNC.

Функции, используемые в выражениях оператора SELECT:

  • COUNT - Подсчет и вывод на экран общего числа строк
  • AVG - Вычисление среднего значения
  • MAX - Вычисление максимального значения
  • MIN - Вычисление минимального значения
  • SUM - Вычисление суммарного значения

 

Примеры запросов.

  1. Определить количество сотрудников художественного отдела библиотеки, максимальную, среднюю, минимальную зарплату, а также общую сумму зарплат по отделу. Результат вывести в столбцы с наименованиями соответственно: «число», «максимум», «среднее», «минимум», «сумма». Запрос: SELECTCOUNT(*) Число, MAX(Зарплата) максимум, AVG(Зарплата) среднее,  MIN(Зарплата) минимум, SUM(Зарплата) сумма FROMСотрудник WHEREНаименование_отдела=”Художественный
  2. Выбрать фамилии, имена, отчества сотрудников художественного отдела, устроившихся на работу в текущем году. При этом, день, месяц и год начала работы сотрудников вывести в отдельных столбцах. Запрос: SELECTФамилия, Имя, Отчество, DAY(Дата_приема_на_работу), MONTH(Дата_приема_на_работу), YEAR(Дата_приема_на_работу) FROMСотрудник WHERE (Наименование_отдела=”Художественный”) AND (YEAR(Дата_приема_на_работу)=YEAR(CURRENT))
  3. Выбрать фамилии, имена, отчества тех сотрудников художественного отдела, которые начали работать в понедельник или во вторник. Запрос: SELECTФамилия, Имя, Отчество FROMСотрудник WHERE (Наименование_отдела=”Художественный”) AND (WEEKDAY(Дата_приема_на_работу) IN (1,2))
  4. Выбрать фамилии, имена, отчества сотрудников библиотеки, принятых на работу в первый день текущего месяца. Запрос: SELECTФамилия, Имя, Отчество FROMСотрудник
  5. WHEREДата_приема_на_работу= MDY(MONTH(TODAY), 1, YEAR(TODAY))
  6. Выбрать фамилии, имена, отчества, день и месяц начала работы сотрудников художественного отдела библиотеки. Запрос: SELECTФамилия, Имя, Отчество,             DAY(Дата_приема_на_работу), MONTH(Дата_приема_на_работу) FROMСотрудник WHERE (Наименование_отдела=”Художественный”)
  7. 6. Выбрать фамилии, имена, отчества сотрудников художественного отдела библиотеки, начавших работу в период с 1.10.2000 г. по 31.12.2000 г. Запрос: SELECTФамилия, Имя, Отчество FROMСотрудник WHERE (Наименование_отдела=”Художественный”) AND (Дата_приема_на_работу>=DATE(”1/10/2000”))           AND (Дата_приема_на_работу<=DATE(”31/12/2000”))
  8. 8.                  7. Вычислить суммарную длину фамилий, имен сотрудников художественного отдела библиотеки, чье отчество превышает 8 байт. Запрос: SELECTLENGTH(Фамилия)+LENGTH(Имя)             FROMСотрудник WHERE (Наименование_отдела=”Художественный”) ANDLENGTH(Отчество)>8

 

10. sql. Использование спецификатора GROUP BY и HAVING

Спецификатор GROUPBY разбивает множество строк, формируемых спецификатором SELECT, на группы. Критерием разбивания является одинаковые значения для атрибутов, перечисленных в списке спецификатора GROUPBY. Для каждой группы строк спецификатор производит единственную результирующую строку, выполняя далее действия, определенные оператором SELECT.

Спецификатор HAVING задает условие для выбора группы строк. Данный спецификатор в отличие от спецификатора WHERE позволяет использовать агрегатные функции. Спецификаторы GROUPBY и HAVING могут использоваться отдельно друг от друга.

Примеры.

  1. Вычислить для каждого отдела, имеющегося в библиотеке, число его сотрудников, а также сумму выплаченной им зарплаты с учетом премии. Упорядочить результат запроса по возрастанию выплаченных сумм.

SELECTНаименование_отдела,

COUNT(*) Число,

SUM(Зарплата*1,75) Сумма

            FROMСотрудник

GROUPBYНаименование_отдела

ORDER BY Сумма ASC

В данном операторе можно использовать номера следования наименований атрибутов результирующего отношения следующим образом:

SELECTНаименование_отдела,

COUNT(*) Число,

SUM(Зарплата*1,75) Сумма

            FROMСотрудник

GROUPBY1

ORDERBY3ASC

 

Использование GROUPBY разбивает множество строк таблицы «Сотрудник» на группы. Каждая группа состоит из строк, имеющих одинаковые наименования отделов (то есть информация по каждому отделу группируется вместе). После того, как группы сформированы, внутри каждой из них производится применение функций COUNT, SUM. Этот запрос возвращает в качестве результата одну строку для каждого отдела с заголовками «Число» и «Сумма». Результат запроса упорядочен по возрастанию значений сумм. Ключевое слово ASC может быть опущено. Если в запросе требовалось бы упорядочить результат по убыванию, то было бы необходимо использовать ключевое слово DESC.

  1. Вычислить количество сотрудников и среднюю зарплату для каждого отдела библиотеки с численностью больше 6. Вывести при этом на экран наименование отдела, число сотрудников в атрибут с наименованием «Число», а также среднюю их зарплату  в атрибут с наименованием «Средняя_зарплата».

SELECTНаименование_отдела,

COUNT(*) Число,

AVG(Зарплата) Средняя_зарплата

            FROMСотрудник

GROUPBYНаименование_отделаHAVINGCOUNT(*)>6

Данный оператор группирует строки по значению атрибута «Наименование_отдела», проверяет условие: группа должна включать более 6 строк и затем считает среднюю зарплату в группе.



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем