Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить несколько задач по SQL пожалуйста, всю голову сломал уже себе.

Андрей Берлизев Ученик (157), на голосовании 1 год назад
Задание: Вывести жанр (или жанры), в котором было заказано больше всего экземпляров книг, указать это количество. Последний столбец назвать Количество.
вот мое решение:
SELECT name_genre, SUM(buy_book.amount) AS Количество
FROM genre JOIN book USING(genre_id)
JOIN buy_book USING(book_id)
GROUP BY name_genre
Limit 1
Результат верный но выдает ошибку что через Limit нельзя, только через вложенный запрос.

Задание: Придумайте один или несколько запросов на выборку для предметной области «Интернет-магазин книг» (в таблицы занесены данные, как на первом шаге урока). Проверьте, правильно ли они работают.

При желании можно формулировку запросов разместить в комментариях.
Размещенные задания можно использовать для закрепления материала урока.
Оценивайте понравившиеся Вам запросы.
В последнем модуле создан отдельный урок, в котором мы разместим запросы, набравшие наибольшее количество лайков.
Наполнение таблицы Задание: Вывести название книги, написанные авторами, средняя цена книг которых больше средней цены всех книг на складе. Вывести название автора, название книги и цену. Информацию отсортировать сначала по фамилии автора в алфавитном порядке, затем по названию книги тоже в алфавитном порядке.

Наполнение таблицы
Таблица genre:
| genre_id | name_genre |
+----------+-------------+
| Роман |
| Поэзия |
| Приключения |

Таблица author:

| author_id | name_author |

| Булгаков М.А. |
| Достоевский Ф.М. |
| Есенин С.А. |
| Пастернак Б.Л. |
| Лермонтов М.Ю. |

Таблица book:
| book_id | title | author_id | genre_id | price | amount |
| Мастер и Маргарита | 1 | 1 | 670.99 | 3 |
| Белая гвардия | 1 | 1 | 540.50 | 5 |
| Идиот | 2 | 1 | 460.00 | 10 |
| Братья Карамазовы | 2 | 1 | 799.01 | 3 |
| Игрок | 2 | 1 | 480.50 | 10 |
| Стихотворения и поэмы | 3 | 2 | 650.00 | 15 |
| Черный человек | 3 | 2 | 570.20 | 6 |
| Лирика | 4 | 2 | 518.99 | 2 |
Голосование за лучший ответ
Белый Клык Мастер (1356) 1 год назад
3.
 SELECT  
T.na,
bk.title,
bk.price
FROM book bk
INNER JOIN
(

/*выбираем нужных авторов*/
select author_id id,name_author na from author a,book bb where a.author_id=bb.author_id
group by author_id,name_author
/*средняя цена книг автора больше средней цены всех книг*/
having AVG(bb.price)>(select AVG(b.price) from book b)

) T
/*соединяем выбранных авторов с книгами по id автора*/
ON T.id=bk.author_id
/*сортируем*/
ORDER BY T.na ASC,bk.title ASC
Белый КлыкМастер (1356) 1 год назад
1.
 SELECT gg.name_genre,COUNT(*) 
FROM
genre gg INNER JOIN book bb ON gg.genre_id=bb.genre_id INNER JOIN buy_book bbb ON bbb.book_id=bb.book_id
GROUP BY gg.genre_id
/*Где число книг для данного genre_id равно максимальному*/
HAVING COUNT(*)=(
/*Поиск максимального числа книг одного жанра*/
SELECT MAX(T.num) FROM (
/*Ставим в соответствие жанру, число его книг*/
SELECT g.genre_id,COUNT(*) num FROM
genre g INNER JOIN book b ON g.genre_id=b.genre_id INNER JOIN buy_book bb ON bb.book_id=b.book_id
GROUP BY g.genre_id) T)
Похожие вопросы