SELECT GENRE, COUNT(DISTINCT TITLE),
ROUND(AVG(PRICE), 2) FROM BOOKS GROUP BY GENRE
HAVING COUNT(DISTINCT TITLE) >= 2;
5.
Выбрать из таблицы BOOKS информацию о минимальной стоимо-
сти книг в жанре «Роман»:
SELECT MIN(PRICE) FROM BOOKS WHERE GENRE = 'Роман';
6.
Выбрать из таблицы BOOKS информацию (фамилия автора, назва-
ние, цена) о самой дешевой книге в жанре «Роман»:
SELECT AUTHOR, TITLE, PRICE
FROM BOOKS
WHERE PRICE = (SELECT MIN(PRICE)
FROM BOOKS
WHERE GENRE = 'Роман') AND GENRE = 'Роман';
7.
Выбрать из таблицы BOOKS информацию (фамилия автора, назва-
ние, жанр, цена) о книгах, имеющих максимальную стоимость в своем
жанре:
а) SELECT AUTHOR, TITLE, GENRE, PRICE FROM BOOKS
WHERE (PRICE, GENRE) IN (SELECT MAX(PRICE),
GENRE
FROM BOOKS GROUP BY GENRE);
б) SELECT AUTHOR, TITLE, BOOKS.GENRE,
PRICE FROM
BOOKS, (SELECT GENRE, MAX(PRICE) МАКС FROM BOOKS
GROUP BY GENRE) P1
WHERE PRICE = МАКС AND BOOKS.GENRE = P1.GENRE;
в) SELECT AUTHOR, TITLE, GENRE, PRICE FROM BOOKS P1
WHERE PRICE = (SELECT MAX(PRICE) FROM BOOKS
WHERE BOOKS.GENRE = P1.GENRE);
Третий запрос содержит коррелированный подзапрос. Поскольку в
своем условии подзапрос содержит ссылку на столбец родительского за-
проса, он будет выполняться один раз для каждой строки, извлекаемой
родительским запросом. В первом и втором вариантах подзапрос не яв-
ляется коррелированным, он выполняется только один раз для родитель-
ского запроса.
8.
Выбрать из таблицы BOOKS информацию (фамилия автора, назва-
ние, цена) о книгах стоимостью больше средней стоимости книг:
SELECT AUTHOR, TITLE, PRICE FROM BOOKS
WHERE PRICE > (SELECT AVG(PRICE) FROM BOOKS);
147
9.
Выбрать из таблицы BOOKS список жанров, по которым имеется
наибольшее количество различных книг, с указанием количества книг:
SELECT GENRE, COUNT(DISTINCT TITLE)
FROM BOOKS
GROUP BY GENRE HAVING COUNT(DISTINCT TITLE) =
(SELECT MAX(COUNT(DISTINCT TITLE)) FROM BOOKS
GROUP BY GENRE);
10.
Выбрать из таблицы BOOKS информацию о книгах (фамилия ав-
тора, название), относящихся к жанрам, по которым имеется наибольшее
количество различных книг:
SELECT AUTHOR, TITLE
FROM BOOKS WHERE GENRE IN
(SELECT GENRE FROM BOOKS GROUP BY GENRE HAVING
COUNT(DISTINCT TITLE) =
(SELECT MAX(COUNT(DISTINCT TITLE)) FROM BOOKS
GROUP BY GENRE));
Достарыңызбен бөлісу: