Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Використання функцій




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

Для цього можна використовувати функції:

1)count(<умова>)- кількість записів задовольняючих умові,

2)count(*) – повна кількість записав;

3)min(<поле>) - мінімальне значеня поля;

4)max(<поле>) - максимальне значеня поля;

5)avg(<поле>) - середне значеня поля;

6)sum(<поле>) – сума значень поля.

У цих функціях <поле > -числове поле.

Результат запиту з цими функціями - таблиця з одного рядка.

 

Приклади.

1)SELECT count(*) FROM PERS – число співробітників(записів у таблиці PERS).

2) SELECT count(*) FROM PERS WHERE DEP='Цех 1'– число співробітників цеху 1.

3) SELECT count(DISTINCT DEP) FROM PERS – число різних підрозділів.

4) SELECT min(zarpl), max(zarpl),avg(zarpl) FROM PERS

WHERE DEP='Бухгалтерія'– мінімальна, максимальна і середня зарплата в бухгалтерії.

 

Однак не можна написати так:

SELECT FAM, max(zarpl) FROM PERS

– для видачі списку співробітників з максимальною зарплатою.

 

Якщо ужити ключові слова GROUP BY зміст сукупних характеристик міняється - вони роблять обчислення не по всіх записах, а тільки по тим, що відповідають однаковим значенням полів.

 

Приклад. Запит
SELECT DEP count(*) FROM PERS GROUP BY DEP – поверне таблицю з двох рядків: назви підрозділу і число співробітників у ньому.

 

Вкладені оператори SELECT

Результати, що повертаються оператором SELECT можна використовувати в іншому операторі SELECT.

Приклад.

Список прізвищ співробітників підприємства, що одержують максимальну зарплату:

SELECT FAM FROM PERS WHERE ZARPL=(SELECT max(ZARPL) FROM PERS).

Тут вкладений оператор SELECT повертає максимальну зарплату, зовнішній видає список співробітників по знайденій зарплаті.

 

Приклад.

Потрібно визначити, є чи загальні співробітники в двох різних організаціях.

Для цього видамо список співпадаючих прізвищ:
SELECT * FROM PERS1 WHERE FAM IN (SELECT FAM FROM PERS2).

Використовуємо перевірку на входження в множину. Запити здійснюються до різних таблиць.

 

При роботі з вкладеними запитами можна використовувати ключові слова ANY,ALL,EXISTS,SINGULAR. ALL означає, що умова виконується для всіх записів, ANY – хоча б для однієї.

Приклад.

SELECT FAM FROM PERS WHERE ZARPL>= ALL (SELECT ZARPL FROM PERS) виділяє іншим способом співробітників з найбільш високою зарплатою.

Приклад.

SELECT FAM FROM PERS WHERE DEP=’Бібліотека’ AND ZARPL>= ANY (SELECT ZARPL FROM PERS WHERE DEP LIKE ’Цех%’).

Запит виділяє співробітників бібліотеки з зарплатою не нижче ніж у самих низькооплачуваних працівників будь-якого цеху.

 

Ключове слово EXISTS означає вибір тільки тих значень, для яких вкладений запит поверне одне чи більше значень, а ключове слово SINGULAR - коли вкладений запит повертає одне і тільки одне значення.

 

Приклад.

Запит поверне список співробітників, що мають однолітків:

SELECT TABNUM, FAM, YEAR_B FROM PERS P1

WHERE EXISTS(SELECT TABNUM, FAM,YEAR_B FROM PERS P2 WHERE P1.YEAR_B=P2.YEAR_B AND P1.TABNUM<>P2.TABNUM).

Приклад.

Запит поверне список співробітників, що не мають однолітків:

SELECT TABNUM, FAM, YEAR_B FROM PERS P1

WHERE SINGULAR(SELECT TABNUM, FAM, YEAR_B FROM PERS P2 WHERE P1.YEAR_B=P2.YEAR_B AND P1.TABNUM=P2.TABNUM).

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...