9 вопросов для собеседования по SQL в Apple

От анализа данных о продажах iPhone до управления музыкальным каталогом Apple Music – SQL используется в Apple довольно часто. Неудивительно, что именно поэтому Apple часто задает вопросы по работе с SQL на собеседованиях при приеме на работу в области анализа данных, науки о данных и инженерии данных. Итак, чтобы подготовиться к SQL-собеседованию, мы собрали 9 вопросов для SQL-собеседования Apple, которые похожи на вопросы, недавно заданные в Apple – сколько из них вы сможете решить?

В моем канале вы найдете много задач с собеседований и акутальных инструментов и гайдов для SQL разработчиков.

SQL Вопрос 1: Определите важных пользователей Apple

Компания Apple ведет базу данных своих клиентов, совершивших покупки в магазине App Store. По определению Apple, важный пользователь – это покупатель, совершивший не менее 10 покупок в месяц за последний год. Задача состоит в том, чтобы выявить важных для Apple пользователей App Store.

В таблице “Покупки” регистрируется каждая покупка. В качестве примера можно привести следующие данные:

purchases Example Input:

9 вопросов для собеседования по SQL в Apple

В таблице “Пользователи” хранятся данные о каждом пользователе. Пример данных:

users Example Input:

9 вопросов для собеседования по SQL в Apple

Запрос на SQL:

SELECT u.user_id, u.email
FROM users u
JOIN (
  SELECT p.user_id
  FROM purchases p
  WHERE p.purchase_date BETWEEN (CURRENT_DATE() - INTERVAL 1 YEAR) AND CURRENT_DATE()
  GROUP BY YEAR(p.purchase_date), MONTH(p.purchase_date), p.user_id
  HAVING COUNT(p.purchase_id) >= 10
) AS monthly_purchases
ON u.user_id = monthly_purchases.user_id
GROUP BY u.user_id
HAVING COUNT(monthly_purchases.user_id) = 12;

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

С помощью HAVING мы отфильтровываем пользователей, совершивших не менее 10 покупок в каждой группировке.

Затем этот список объединяется с таблицей “Пользователи”, чтобы получить данные о пользователях. Наконец, мы группируем данные по идентификатору пользователя и убеждаемся, что эти пользователи выполнили условие покупки за все 12 месяцев в прошлом году.

Чтобы решить похожий вопрос по анализу данных с помощью бесплатного интерактивного редактора SQL-кода DataLemur, попробуйте ответить на этот вопрос Microsoft Teams Power User SQL Interview Question.

SQL Вопрос 2: Анализ характеристик продукции Apple на основе отзывов

Учитывая таблицу отзывов, содержащую данные об отзывах о товарах, представленных пользователями с течением времени, напишите SQL-запрос для вычисления среднемесячного рейтинга каждого продукта Apple. Таблица отзывов имеет следующую схему:

  • review_id: Целое число, уникально идентифицирующее каждый отзыв
  • user_id: Целое число, идентифицирующее пользователя, который отправил отзыв
  • submit_date: временное значение, отражающее время, когда был отправлен отзыв
  • product_id: Целое число, идентифицирующее продукт, на который отправлен отзыв
  • звезды: Целое число, указывающее количество звезд, полученных товаром в обзоре (от 1 до 5).

Обратите внимание, что для целей этой задачи можно предположить, что product_id соответствует продукту Apple, а дата отправки_даты для каждого отзыва имеет формат “MM/DD/YYY HH:MI:SS”.

reviews Example Input:

9 вопросов для собеседования по SQL в Apple

Пример вывода:

9 вопросов для собеседования по SQL в Apple

Ответ:

SELECT EXTRACT(MONTH FROM submit_date) as mth, 
       product_id as product, 
       AVG(stars) as avg_stars
FROM reviews
GROUP BY mth, product
ORDER BY mth, product;

Приведенный выше запрос извлекает месяц из submit_date с помощью функции EXTRACT и группирует по нему данные вместе с product_id. Затем используется агрегатная функция AVG для расчета среднего рейтинга, ежемесячно выставляемого пользователями каждому продукту Apple. Сортировка выполняется сначала по месяцу, а затем по идентификатору продукта.

Совет: Вопросы с агрегатными функциями, такими как AVG, очень полезны. Практикуйте больше таких вопросов на DataLemur.

SQL ВОПРОС 3: Что делают внешние ключи при проектировании баз данных?

Внешний ключ – это столбец или группа столбцов в таблице, которые ссылаются на первичный ключ в другой таблице. Ограничение внешнего ключа помогает поддерживать ссылочную целостность между двумя таблицами.

Давайте рассмотрим данные о сотрудниках из базы данных отдела кадров Apple:

apple_employees:

| employee_id| first_name | last_name | manager_id |

—-+ | 1 | Aubrey | Graham | 3 | | | 2 | Marshal | Mathers | 3 | | 3 | Dwayne | Carter | 4 | | 4 | Shawn | Carter |

В этой таблице employee_id служит первичным ключом, а manager_id – внешним ключом, поскольку он связан с employee_id менеджера сотрудника. Таким образом, устанавливается связь между сотрудниками Apple и их менеджерами, что позволяет легко выполнять запросы, чтобы найти менеджера сотрудника или узнать, какие сотрудники подчиняются определенному менеджеру.

Таблица apple_employees также может иметь несколько внешних ключей, которые ссылаются на первичные ключи в других таблицах. Например, внешние ключи department_id и location_id могут использоваться для связи каждого сотрудника с его соответствующим отделом и местом работы.

Вопрос 4 SQL: Средние продажи продукции Apple

Как аналитик данных в компании Apple, вы должны понять, каковы показатели продаж различных продуктов Apple с течением времени, чтобы принимать обоснованные бизнес-решения. Вам даны две таблицы: продукты и продажи. В таблице products каждая строка представляет отдельный продукт, обозначенный product_id, продаваемый компанией Apple. Таблица продаж содержит данные о продажах этих продуктов, включая количествопродаж и датупродажи. Вычислите среднее количество каждого продукта, проданного за месяц в 2021 году.

Примеры таблиц,

products table:

9 вопросов для собеседования по SQL в Apple

sales table:

9 вопросов для собеседования по SQL в Apple

Ответ:

SELECT MONTH(s.date_of_sale) as 'Month', p.product_name, AVG(s.quantity_sold) as 'Average_Sold'
FROM sales s
JOIN products p ON s.product_id = p.product_id
WHERE YEAR(s.date_of_sale) = 2021
GROUP BY Month, p.product_name

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

ВОПРОС ПО SQL 5: Что такое хранимая процедура?

Хранимые процедуры похожи на функции в Python – они могут принимать входные параметры и возвращаемые значения и используются для инкапсуляции сложной логики.

Например, если бы вы работали аналитиком данных в команде маркетинговой аналитики Apple, обычной задачей могло бы быть нахождение коэффициента конверсии для ваших объявлений за определенный период времени. Вместо того чтобы писать этот запрос снова и снова, вы можете написать хранимую процедуру, как показано ниже:

CREATE FUNCTION get_conversion_rate(start_date DATE, end_date DATE, event_name TEXT)
RETURNS NUMERIC AS
$BODY$
BEGIN
  RETURN (SELECT COUNT(*) FROM events WHERE event_date BETWEEN start_date AND end_date AND event_name = 'conversion')
          / (SELECT COUNT(*) FROM events WHERE event_date BETWEEN start_date AND end_date AND event_name = 'impression');
END;
$BODY$
LANGUAGE 'plpgsql';

Чтобы вызвать эту хранимую процедуру, выполните следующий запрос:

SELECT get_conversion_rate('2023-01-01', '2023-01-31', 'conversion');

Вопрос 6 SQL: Рассчитайте коэффициент конверсии по клику для продуктов Apple

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

clicks Пример ввода:

9 вопросов для собеседования по SQL в Apple

cart_adds Пример ввода:

9 вопросов для собеседования по SQL в Apple

Ваша задача – написать SQL-запрос, который вычисляет коэффициент конверсии по клику, определяемый как количество пользователей, добавивших товар в корзину после клика на листинг продукта, деленное на общее количество кликов по продукту. Разбейте результат по product_id.

Ответ:

SELECT 
c.product_id, 
sum(case when a.add_id is not null then 1 else 0 end) / count(c.click_id) as conversion_rate
FROM 
clicks c
LEFT JOIN cart_adds a ON a.product_id = c.product_id AND a.user_id = c.user_id
GROUP BY c.product_id

SQL-запрос начинается с левого соединения таблицы clicks с таблицей cart_adds по идентификаторам product_id и user_id. Оператор case в функции sum подсчитывает количество записей, которые имеют совпадающие записи в таблице cart_adds (т. е. продукт был добавлен в корзину). Это число делится на общее количество кликов по каждому товару, чтобы получить коэффициент конверсии.

Чтобы решить похожий вопрос SQL-собеседования по показателю кликов с помощью бесплатного интерактивного редактора SQL-кода DataLemur, попробуйте ответить на этот вопрос Meta SQL-собеседования.

SQL Вопрос 7: Как ограничение FOREIGN KEY используется в базе данных?

FOREIGN KEY – это поле в таблице, которое ссылается на PRIMARY KEY другой таблицы. Оно создает связь между двумя таблицами и гарантирует, что данные в поле FOREIGN KEY являются достоверными.

Например, у вас есть данные аналитики продаж из CRM (инструмент управления взаимоотношениями с клиентами) компании Apple.

CREATE TABLE apple_accounts (
    account_id INTEGER PRIMARY KEY,
    account_name VARCHAR(255) NOT NULL,
    industry VARCHAR(255) NOT NULL
);

CREATE TABLE opportunities (
    opportunity_id INTEGER PRIMARY KEY,
    opportunity_name VARCHAR(255) NOT NULL,
    account_id INTEGER NOT NULL,
    FOREIGN KEY (account_id) REFERENCES apple_accounts(account_id)
);

Ограничение FOREIGN KEY гарантирует, что данные в поле account_id таблицы “Возможности” действительны, и предотвращает вставку строк в таблице “Возможности”, не имеющих соответствующих записей в таблице apple_accounts. Оно также помогает усилить связь между двумя таблицами и может быть использовано для обеспечения того, чтобы данные не удалялись из таблицы счетов, если на них все еще есть ссылки в таблице возможностей.

SQL Вопрос 8: Найти максимальное количество проданных продуктов Apple

Apple продает множество продуктов, таких как iPhone, iPad, Macbook и т.д. Каждый продукт имеет свою модель и год выпуска. Задача состоит в том, чтобы выяснить максимальное количество проданных единиц каждого продукта Apple в любом году, то есть год и модель продукта, который был продан больше всего.

Вот таблицы:

sales Пример ввода:

9 вопросов для собеседования по SQL в Apple

Пример вывода:

9 вопросов для собеседования по SQL в Apple

Ответ:

SELECT product_model, product_year, SUM(quantity) as max_quantity 
FROM sales 
GROUP BY product_model, product_year 
ORDER BY max_quantity DESC;

Этот запрос сегментирует таблицу продаж по кортежам (product_model, product_year) и суммирует количество проданных товаров для каждого сегмента. Затем он сортирует результаты в порядке убывания общего количества проданных товаров, то есть модели товаров с наибольшим количеством проданных товаров окажутся вверху.

Вопрос 9 SQL: Рассчитайте общий объем продаж одного продукта, произведенного компанией Apple

Вам предоставлен доступ к двум базам данных. Одна содержит информацию о клиентах Apple, например их идентификатор, имя и местоположение, а другая – информацию о товарах, например, идентификатор, имя и цену товара. Одна из наиболее часто выполняемых задач – вычисление общего объема продаж определенного продукта. Напишите SQL-запрос, который вычислит и вернет список продуктов, проданных Apple Inc, вместе с их общим объемом продаж.

DisplayName содержит название продукта, продаваемого Apple Inc, unit price – цену за единицу, а quantity – количество единиц, проданных клиентам.

Customer Пример ввода:

9 вопросов для собеседования по SQL в Apple

Product Пример ввода:

9 вопросов для собеседования по SQL в Apple

Ответ:

SELECT 
    P.DisplayName AS Product,
    SUM(P.UnitPrice) AS TotalSales
FROM 
    Product P
JOIN 
    Customer C 
ON 
    P.CustomerId = C.CustomerId
GROUP BY 
    P.DisplayName

Это даст вам список всех продуктов вместе с их общими продажами. Для каждого продукта мы суммируем его цену за каждый раз, когда он был куплен, объединив таблицы Product и Customer по их общему столбцу CustomerId и сгруппировав результат по названию продукта.

Поскольку на собеседованиях по SQL часто встречаются вопросы о соединениях, попробуйте ответить на этот интерактивный вопрос Snapchat Join SQL.

Подготовка к собеседованию по SQL в Apple

Лучший способ подготовиться к SQL-собеседованию в Apple, помимо того, что вы должны быть уверены, что владеете основами SQL, – это отработать тонну реальных вопросов по SQL, которые задавались на последних собеседованиях в Apple.

+1
1
+1
0
+1
0
+1
0
+1
1

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *