Top.Mail.Ru
Ответы

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

Задание: Вывести жанр (или жанры), в котором было заказано больше всего экземпляров книг, указать это количество. Последний столбец назвать Количество.
вот мое решение:
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 |

По дате
По рейтингу
Аватар пользователя
Мастер

3.

12345678910111213141516171819
 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