7 вопросов по SQL на собеседовании в Microsoft, Airbnb, Twitter с ответами

От автора Telegram-канала Аналитика и Growth mind-set.

Вопросы и ответы взяты с зарубежных карьерных сайтов.

Microsoft

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

ms_user_dimension user_id:int acc_id:int
ms_acc_dimension acc_id:int paying_customer:varchar
ms_download_facts date:datetime user_id:int downloads:int

ОТВЕТ:

with out AS(select date , Sum (downloads) Filter(Where paying_customer = 'no') as non_paying , Sum (downloads) Filter(Where paying_customer = 'yes') as paying From ms_download_facts fact Left Join ms_user_dimension a on fact.user_id = a.user_id Join ms_acc_dimension acc on a.acc_id = acc.acc_id Group by date order by date) Select date , non_paying , paying From out Where non_paying > paying

Как выучить SQL быстрее? Читайте в посте!

Airbnb

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

airbnb_search_details id:int price:float property_type:varchar room_type:varchar amenities:varchar accommodates:int bathrooms:int bed_type:varchar cancellation_policy:varchar cleaning_fee:bool city:varchar host_identity_verified:varchar host_response_rate:varchar host_since:datetime neighbourhood:varchar number_of_reviews:int review_scores_rating:float zipcode:int bedrooms:int beds:int

ОТВЕТ:

SELECT city, property_type, avg(bedrooms) as n_bedrooms_avg, avg(bathrooms) as n_bathrooms_avg FROM airbnb_search_details GROUP BY city, property_type ORDER BY city

Twitter

Найдите сотрудника с самой высокой зарплатой в каждом отделе. Выведите название отдела, имя сотрудника и соответствующую зарплату.

employee id:int first_name:varchar last_name:varchar age:int sex:varchar employee_title:varchar department:varchar salary:int target:int bonus:int email:varchar city:varchar address:varchar manager_id:int

ОТВЕТ:

SELECT department as department, first_name as employee_name, salary FROM employee WHERE (department, salary) IN (SELECT department, MAX(salary) FROM employee GROUP BY department)

Amazon

Напишите запрос, который будет идентифицировать возвращающихся активных пользователей. Вернувшийся активный пользователь — это пользователь, совершивший вторую покупку в течение 7 дней после любой другой покупки. Выведите список user_id этих вернувшихся активных пользователей.

amazon_transactions id:int user_id:int item:varchar created_at:datetime revenue:int

ОТВЕТ:

SELECT DISTINCT(a.user_id) FROM amazon_transactions a JOIN amazon_transactions b ON a.user_id = b.user_id WHERE a.created_at - b.created_at BETWEEN 0 AND 7 AND a.id != b.id

Найдите клиента с самой высокой суммой дневных заказов в период с 01.02.2019 по 01.05.2019. Если у клиента было более одного заказа в определенный день, суммируйте стоимость его заказов в этот день. Выведите имя клиента, общую стоимость его товаров и дату.

customers id:int first_name:varchar last_name:varchar city:varchar address:varchar phone_number:varchar
orders id:int cust_id:int order_date:datetime order_details:varchar total_order_cost:int

ОТВЕТ:

select c.first_name, sum(o.total_order_cost) as total_order_cost, o.order_date from customers c inner join orders o on c.id = o.cust_id where o.order_date between '2019-02-01' and '2019-05-01' group by first_name, cust_id, order_date order by total_order_cost desc limit 1

Dropbox

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

​db_employee id:int first_name:varchar last_name:varchar salary:int department_id:int
db_dept id:int department:varchar

ОТВЕТ:

select abs(max(salary) filter (where department = 'marketing') - max(salary) filter (where department = 'engineering')) from db_employee emp LEFT JOIN db_dept dept on emp.department_id = dept.id

Salesforce

Найдите самую высокую цель, достигнутую сотрудником или сотрудниками, работающими под менеджером с id 13. Выведите имя сотрудника/сотрудников и достигнутую цель. Решение должно показывать самую высокую цель, достигнутую при manager_id=13, и какие сотрудники ее достигли.

salesforce_employees id:int first_name:varchar last_name:varchar age:int sex:varchar employee_title:varchar department:varchar salary:int target:int bonus:int email:varchar city:varchar address:varchar manager_id:int

ОТВЕТ:

select first_name, target from salesforce_employees where manager_id=13 and target=(select max(target) from salesforce_employees where manager_id=13)

А если вы интересуетесь аналитикой, то вот бесплатные курсы от лучших университетов в моем телеграм канале:

10+ бесплатных курсов по аналитике данных от Harvard University, Google, IBM и других

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

HARVARD UNIVERSITY

Data Science: Wrangling. На курсе научитесь обрабатывать и преобразовывать необработанные данные в форматы, необходимые для анализа.

Data Science: Visualization. Изучите основные принципы визуализации данных.

Data Science: Machine Learning. На курсе изучите машинное обучение. Создатите систему рекомендаций фильмов и изучите научные основы одного из самых популярных и успешных методов обработки данных.

И другие курсы от университета

GOOGLE DATA ANALYTICS Professional Certificate

В этой программе вы освоите востребованные навыки, которые помогут вам подготовиться к работе менее чем за 6 месяцев. Никакой степени или опыта не требуется. Курс состоит из 8 подкурсов, посвященных конкретной теме в аналитике данных.

IBM

IBM - это один из крупнейших в мире поставщиков программного обеспечения.

Курс состоит из нескольких частей: введение, визуализация данных, основы Python, SQL, анализ данных с помощью Python, визуализация с помощью Python, итоговый проект.

OPENLEARN

Бесплатный восьминедельный курс OpenLearn по кодированию «Учитесь кодировать для анализа данных» дает четкое представление об основных концепциях программирования и анализа данных, и вы даже сможете писать простые аналитические алгоритмы в среде программирования.

UDEMY

Udemy предлагает тысячи курсов по анализу данных и науке о данных от различных загрузчиков. Это не курсы от Harvard, Google и IBM, однако можно найти что-то полезное для себя.

CAREER FOUNDRY

Бесплатный краткий курс по аналитике данных CareerFoundy, состоящий из 6 частей, идеально подходит, если вам нужно легкое введение в аналитику данных.

Приятного обучения!

#бесплатные_курсы

А тут 5 бесплатных сервисов для практики SQL:

5 бесплатных сервисов для практики SQL

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

1. HackerRank

В сервисе много задач разного уровня (легкий, средний и трудный). Также можно бесплатно получить сертификат, подтверждающий уровень. Несмотря на то, что сервис на английском, все интуитивно понятно и просто.

2. Strata scratch

Это замечательная платформа для подготовки к собеседованиям и тренировки навыков. Здесь не просто задачи по SQL, а задачи от топ компаний: Google, Netflix, Apple, Airbnb, Spotify и других.

3. SQLBolt

Это сайт объясняет концепции языка SQL и включает полезные практические упражнения по каждой лекции. Довольно простой, но очень подойдет для новичков.

4. W3schools

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

5. SQL EX

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

#sql

55
Начать дискуссию