> Как написать запрос, который выберет названия всех книг с более чем тремя авторами (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Ozon
Стек: Go
> Пример ответа
Для выборки названий книг с более чем тремя авторами в Go с использованием SQL можно написать следующий запрос:
SQLSELECT b.titleFROM books bJOIN book_authors ba ON b.id = ba.book_idGROUP BY b.id, b.titleHAVING COUNT(ba.author_id) > 3;
Если структура таблиц предполагает связь через промежуточную таблицу book_authors (где book_id и author_id - внешние ключи), этот запрос группирует книги по идентификатору и названию, а затем фильтрует те, у которых количество авторов превышает 3.
В Go с использованием пакета database/sql выполнение может выглядеть так:
GOrows, err := db.Query(`SELECT b.titleFROM books bJOIN book_authors ba ON b.id = ba.book_idGROUP BY b.id, b.titleHAVING COUNT(ba.author_id) > 3`)if err != nil {log.Fatal(err)}defer rows.Close()var titles []stringfor rows.Next() {var title stringif err := rows.Scan(&title); err != nil {log.Fatal(err)}titles = append(titles, title)}
Этот подход эффективен, так как использует агрегацию на стороне базы данных, минимизируя передачу данных в приложение.
> Похожие задачи по Go
Что такое полиморфизм в Go
Как модифицировать архитектуру микросервиса, чтобы обеспечить надежность обработки заказов при падении аналитического сервиса
Какой индекс построить для запроса с условиями на несколько столбцов
Что происходит при обновлении нескольких строк в одном запросе в базе данных
> Похожие задачи по backend
Что такое полиморфизм в Go
Как модифицировать архитектуру микросервиса, чтобы обеспечить надежность обработки заказов при падении аналитического сервиса
Какой индекс построить для запроса с условиями на несколько столбцов
Что происходит при обновлении нескольких строк в одном запросе в базе данных
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью