Базы данных

Поля, отбираемые в запросе


Поля, отбираемые в запросе с предложением group by, могут быть содержащимися в предложении group by атрибутами, обобщающими выражениями и литералами. Ни один атрибут, не входящий в предложение group by, не может перечисляться в предложении select. Такое ограничение налагается, поскольку для этих атрибутов нельзя гарантировать, что их значения внутри групп будут одинаковыми. Следовательно, нельзя однозначно определить значение атрибута, корректно представляющее группу. Чтобы включить в результат предыдущего запроса имя клиента, его необходимо включить в предложение group by, как это показано ниже, select Customer.accountld, lastName, firstName count() as numberRented from Customer, Rental

where Customer.accountld = Rental.accountld group by Customer.accountld, lastName, firstName

В заключение рассмотрим предложение having, которое служит для проведения отбора среди групп. Если группа не удовлетворяет Предложению having, то ее кортеж не входит в результирующую таблицу. Значения, которые могут входить в предложение having, те же самые, что и для предложения select. Следовательно, можно отбирать группы по размерам, другим обобщающим йараметрам или по значениям атрибутов, входящих в предложение group by. На 7.6 представлен запрос, посредством которого осуществляется отбор всех фильмов, которые выдавались напрокат хотя бы дважды, причем в результирующей таблице указываются название, жанр, число прокатов, средняя стоимость проката и рбщая стоимость проката этих фильмов. В 7.4 представлен результат выполнения этого запроса. Как можно увидеть из таблицы, только два фильма удовлетворяют предложению having.

select title, genre, count() as numRentals, avg(cost) as average, sum(cost) as sum from Movie, VideoTape, PreviousRental where Movie.movield = VideoTape. movield

and.VideoTape.videoID = PreviousRental.videold group by Movie.movield, title, genre having count() >=2

Puc. 7.6. Предложения group by и having в запросе отбора фильмов

Таблица 7.4. Результат выполнения запроса, представленного на 7.6

title genre numRentals average sum

Annie Hall comedy 4 $2.37 $9.46

The Thirty-Nine Steps mystery 2 $2.49 $4.98

Комментарии закрыты