SQLсервер в Linux -самостоятельное освоение пакета

         

Использование секции HAVING



Листинг 4.41. Использование секции HAVING

booktown=# SELECT count(e.isbn) AS "number of books",

booktown-# p.name AS publisher

booktown-# FROM editions AS e INNER JOIN publishers AS p

booktown-# ON (e.publisher_id - p.id)

booktown-# GROUP BY publisher

booktown-# HAVING count(e.isbn) >
1;

number of books | publisher

2 | Ace Books

2 | Doubleday

3 | Random House

2 | Roc

(4 rows)

В листингах 4.40 и 4.41 набор данных создается внутренним объединением таблиц editions и publishers, однако листинг4.41 ограничивает результат теми издательствами, которые представлены в базе данных booktown двумя и более книгами. Задача решается при помощи секции HAVING.

Примечание 1
Примечание 1

Если поле итогового набора связывается ключевым словом AS с синонимом, совпадающим с именем уществующего поля в одном из исходных наборов данных, то при использовании этого имени в секции GROUP BY PostgreSQL предполагает, что имя относится к исходному полю, а не к синониму.



Содержание раздела