Учебно-справочное пособие по СУБД Informix


5. Снова Оператор SELECT. - часть 2


Пример с использованием соединения таблиц. Находится среднее значение зарплаты превосходящей 300 (столбец zarplata принадлежит одной из таблиц), при условии совпадения столбцов dolvnost в двух таблицах. SELECT AVG (zarplata) FROM table1,table2 WHERE table1.dolvnost=table2.dolvnost and zarplata>300

Группировка GROUP BY.

Группировка используется для для "сплющивания" группы (строк) в одну. Результат запроса содержит одну строку для каждого множества строк, удовлетворяющих WHERE предложению и содержащих одно и то же значение в указанном столбце. SELECT dolvnostx, COUNT(*), AVG(zarplata) FROM kadry GROUP BY dolvnostx
Получить количество работающих и их среднюю зарплату по каждой должности из штатного расписания. SELECT dolvnostx, COUNT(*), AVG(zarplata) FROM kadry GROUP BY 1
Эквивалентная запись.
Предложение HAVING накладывает дополнительные условия на группу. SELECT order_num, AVG(total_priece) FROM items GROUP BY order_num HAVING COUNT(*) > 2
Этот запрос возвращает номера ордеров и среднее значение total_price в заявках для всех ордеров, имеющих не менее двух заявок.

Внешнее соединение таблиц.

Строки из таблицы, присоединенной внешним образом (на внешнее соединение указывает ключевое слово OUTER) будут выбираться не смотря на то, удовлетворяют они условиям WHERE предложения или нет. В некоторых случаях это полезно, когда у вас есть главная таблица и есть вспомогательная, и данные из главной таблицы вам нужно получить в любом случае. Пример внешнего соединения: SELECT company, order_num FROM customer c, OUTER orders o WHERE c.customer_num=o.customer_num
Запрос находит названия компаний и номера ордеров, которые они послали. Если же компания ордеров не присылала, то ее название все равно будет выбрано, а номер ордера в этой строке будет равен NULL. (А если бы мы запустили запрос без параметра OUTER, то названия этих компаний вообще бы не попали в выборку.)




Начало  Назад  Вперед



Книжный магазин