> Как написать запрос, который выберет названия всех книг с более чем тремя авторами (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Ozon

Стек: Go

> Пример ответа

Для выборки названий книг с более чем тремя авторами в Go с использованием SQL можно написать следующий запрос:

SQL
SELECT b.title
FROM books b
JOIN book_authors ba ON b.id = ba.book_id
GROUP BY b.id, b.title
HAVING COUNT(ba.author_id) > 3;

Если структура таблиц предполагает связь через промежуточную таблицу book_authors (где book_id и author_id - внешние ключи), этот запрос группирует книги по идентификатору и названию, а затем фильтрует те, у которых количество авторов превышает 3.

В Go с использованием пакета database/sql выполнение может выглядеть так:

GO
rows, err := db.Query(`
SELECT b.title
FROM books b
JOIN book_authors ba ON b.id = ba.book_id
GROUP BY b.id, b.title
HAVING COUNT(ba.author_id) > 3
`)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var titles []string
for rows.Next() {
var title string
if err := rows.Scan(&title); err != nil {
log.Fatal(err)
}
titles = append(titles, title)
}

Этот подход эффективен, так как использует агрегацию на стороне базы данных, минимизируя передачу данных в приложение.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью