sql SELECT a.authorid, a.authorname, COUNT(b.bookid) AS bookscount FROM authors a JOIN authorbook ab ON a.authorid = ab.authorid JOIN books b ON ab.bookid = b.bookid GROUP BY a.authorid, a.authorname HAVING COUNT(b.bookid) > 10;
-- Вывести всех авторов и кол-во их книг.
Ответ и пояснения приведены в подробном разборе ниже.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
-- Вывести всех авторов и кол-во их книг. -- Пример:
-- author_name | book_count
-- Игорь | 2 -- Иван | 1
-- Вывести авторов, которые написали более 2-х книг.
Ответ
sql SELECT a.author_id, a.author_name, COUNT(b.book_id) AS books_count FROM authors a JOIN author_book ab ON a.author_id = ab.author_id JOIN books b ON ab.book_id = b.book_id GROUP BY a.author_id, a.author_name HAVING COUNT(b.book_id) > 10;
Здесь предполагается, что есть три таблицы:
- authors (author_id, author_name)
- books (book_id, ...)
- author_book (author_id, book_id) — таблица связи многие-ко-многим.
Запрос выбирает авторов, у которых количество связанных книг больше 10.