[UA] Тестова SQL-cпівбесіда Data Analyst з 11 задачами | SQL Mock Technical Interview
HTML-код
- Опубликовано: 26 июн 2024
- Таймкоди відео:
00:00:00 Знайти 5 найкасовіших років.
00:03:36 Топ-5 років за показником дохід на фільм.
00:09:21 Що там роблять 1982 та 1980?
00:11:15 Що вигідніше створювати: комедії чи драми?
00:26:34 Перший фільм від кожного дистриб’ютора, який потрапив у цей список і його рік.
00:33:52 Які фільми заробляють більше у залежності від тривалості: що йдуть до 2 годин, до 3 годин і більше?
00:40:33 Коли частіше виходять фільми: у грудні чи у липні? І які з них у середньому більше приносять?
00:45:16 Маємо дату логу користувача у додаток та user_id. Потрібно знайти скільки нових користувачів ми отримали за жовтень 2023.
00:52:53 Який улюблений ресторан найактивнішого клієнта?
01:00:16 Який ресторан змушує найдовше чекати своїх користувачів? І який у нього при цьому рейтинг? Клієнт мав залишити рейтинг, ресторан повинен мати не менше 10 замовлень.
01:07:02 Скільки відсотків від загального заробітку припадає на топ-5 ресторанів?
01:14:00 Підведення підсумків.
________________________________________________________
Датасети для задач у цьому відео:
1. Для задач №1-6: Top 1000 Highest Grossing Movies www.kaggle.com/datasets/sanje.... Тут підчистив назви колонок для зручності.
2. Для задач №8-11: NYC Restaurants Data - Food Ordering and Delivery: www.kaggle.com/datasets/ahsan....
SQL-сервіс, який використаний у співбесіді: dumbmatter.com/csv-sql-live/.
Задачі в рамках цього відео:
1. Знайти 5 найкасовіших років.
2. Топ-5 років за показником дохід на фільм.
3. Що там роблять 1982 та 1980?
4. Що вигідніше створювати: комедії чи драми?
5. Перший фільм від кожного дистриб’ютора, який потрапив у цей список і його рік.
6. Які фільми заробляють більше у залежності від тривалості: що йдуть до 2 годин, до 3 годин і більше?
7. Коли частіше виходять фільми: у грудні чи у липні? І які з них у середньому більше приносять?
8. Маємо дату логу користувача у додаток та user_id. Потрібно знайти скільки нових користувачів ми отримали за жовтень 2023.
9. Який улюблений ресторан найактивнішого клієнта?
10. Який ресторан змушує найдовше чекати своїх користувачів? І який у нього при цьому рейтинг? Клієнт мав залишити рейтинг, ресторан повинен мати не менше 10 замовлень.
11. Скільки відсотків від загального заробітку припадає на топ-5 ресторанів?
____________________________________________________
Мене звати Роман Повзик. Я допомагаю початківцям в аналітиці даних збільшити свої шанси отримати офер.
Якщо хочеш почати кар'єру в аналітиці даних, то напиши мені в LinkedIn і поговоримо: / romanpovzyk .
________________________________________________________________
Посилання, які даю до ознайомлення до зустрічі:
1. • Как свитчеру сформиров... - тут для GoIT розповідаю, як я переходив у роботу з даними з проєктного менеджменту і підходи, які використовував і досі юзаю для самонавчання.
2. • е7: СТАРТ В АНАЛІТИЦІ ... - тут стрім про старт в аналітиці даних.
3. gamedev.dou.ua/articles/produ... - тут загалом описав суть професії, якою займаюся.
4. dou.ua/forums/topic/40265/ - база знань для початківців в аналітиці. Ресурси, які раджу для навчання.
5. dou.ua/forums/topic/40959/ - як проходить робочий тиждень аналітика даних в ІТ.
6. dou.ua/forums/topic/43889/ - тут про пет-проєкти, навіщо потрібні та якими можуть бути.
7. • Публічна співбесіда Tr... - тут приклад технічної співбесіди на аналітика даних.
8. dou.ua/forums/topic/44769/ - 250+ питань на співбесіді для початківця-аналітика.
Дякую за відео, дуже мало подібного контенту, сподіваюся, ви будете розвивати цю тему зі співбесідами!
Дякую за перегляд та коментар.
Пробуватиму розвивати цю нішу і допомагати тим, хто готується до співбесід. Справа лише за тим, щоб знаходити бажаючих 😊
вам колаборацію потрібно зробити 😉, бо ваші відео також класні
SQL така штука, що коли дивишся як хтось досвідчений працює, то все інтуїтивно зрозуміло, але коли починаєш сам робити то робиш кучу помилок на самих легких задачах😅
Ще раз дякую за таке відео!
Так це правило працює з будь-яким інструментом чи мовою. Тому і треба набивати руку на SQL)
Дякую вам за перегляд. Якщо захочете взяти участь у подібній співбесіді - пишіть.
а ще в повсякденному житті SQL-щіка - є доступ в інтернет, і не треба хранити всю інфу в голові, наприклад рівномірне розподілення, гарна функція NTILE - я її часто юзаю, але ЗАВЖДИ лізу в інет глянути сінтаксіс. На співбесіді я би може й облажався не згадавши її STATEMENT )))
Я про NTILE дізнався десь тижня три тому з курсу на DataCamp. Теж сподобалася команда. Але теж не впевнений, що запам'ятаю, якщо не використовуватиму часто.
Мега корисне відео для початківців! Дякую за такий корисний контент! З мене підписка та лайк для вас!
Дякую за відгук. Сподіваюся, ще будуть такі співбесіди, й не одна. Тож якщо підписалися, то будете у курсі.
Контент цікавий. Більше 10 років з SQL-ем працював в FoxPro, Interbase, Paradox, MSSQL, Oracle з сотнями таблиць та міліонними записами для формувань статистики та аналітики в одній державнній структурі. Хм... Виявляється я був Data-аналітіком, а не "тыж програмист". )
Так, SQL живе вже кілька десятиліть, а професія аналітика даних у її теперішньому вигляді - все ж менше.
Радий, що вам сподобалося.
А зараз чим займаєтеся? Змінили профіль?
Топовий розбір, сподіваюсь вони будуть регулярно, удачі Вам! Лайк+Підписка
Дякую) Якщо будуть бажаючі, то будуть і подібні відео 😊
Ви крутий, дякую за Вашу працю, дуже допомогають відео
Дякую, що дивитеся і лишаєте такі теплі відгуки.
Надихає і далі створювати подібний контент)
Сподіваюся, що ще будуть тестові співбесіди)
Дякую, було дуже цікаво
Дякую, радий, що вам сподобалося 😊 Сподіваюся, що незабаром будуть нові співбесіди)
Клас🔥 Дуже-дуже корисно! Дякую за те, що Ви робите))
Дуже приємно чути) Дякую вам за перегляди)
дякую за відео 👍🏻
Дякую, що дивитеся. Радий, що вам сподобалося 😊
Дякую! Чекала від Вас такого формату. Сподіваюсь в майбутьньому будуть ще такі відео)
Дякую, що дивитеся.
Так, точно буде. Головне, щоб були кандидати, готові до подібних співбесід.
сподобалось) хочу ще))
не думала що може бути корисним продивитись як хтось виконує завдання на співбесіді. Зазвичай люди досить знервовані і трохи губляться а тут так здорово вийшло
Дякую) Сподіваюся, будуть ще кандидати, які готові пройти подібні співбесіди під запис. Якщо хотіли б спробувати, то кажіть.
Ось ще маю травневу співбесіду, але там SQL немає: ruclips.net/video/wnvgQOHqCM4/видео.html.
Тут ставки були не такі високі, оскільки йшлося не про офер, а перевірку знань та навичок у цій мові.
ще раз дякую за відео! Ось роблю 9-11 і в описі під відео наче два посилання на перший датасет про фільми замість одне про фільми, а інше про їжу
Дякую за уважність.
Поправив в описі, дійсно продублював двічі перший датасет.
Ось другий: www.kaggle.com/datasets/ahsan81/food-ordering-and-delivery-app-dataset
хлопець красава)
Так, мені теж сподобалися знання кандидата. І загалом вести цю співбесіду.
Дякую, Романе 🙏
Чи можна дізнатися, де хлопець навчався? Він реально крутий!
Думаю, тут питання не у навчанні, а у тому, що він не початківець, а аналітик з досвідом у продуктових ІТ-компаніях, наприклад, Genesis.
У його нинішній компанії він не працює з SQL, тому вирішив попрактикуватися у рамках даної співбесіди. І все чудово вийшло.
дякую за відео і посилання на онлайн SQL з можливістю завантажити датасет, щоб можна було спробувати робити самотужки і потім звірятися з відео
Будь ласка) На це і розраховував. Не дуже вірю у навчання від перегляду коду, його треба вчити пальцями. Тому важливо все повторювати, навіть якщо виглядає зрозуміло.
Я зараз так Practical Statistics for Data Scientists: 50+ Essential Concepts Using R and Python (www.amazon.com/Practical-Statistics-Data-Scientists-Essential/dp/149207294X) читаю і пробую кожен рядок коду, щоб все зрозуміти.
Цікаві запитання. Хороші відповіді!
Дякую) Старався, щоб це було корисно не тільки кандидату, але й глядачам.
Цікаво... Дякую дуже. Принаймні я тепер впевнений що все ок в мене з SQL. Лишилося навчитися писати резюме щоб не морозили 19/20 ейчарів...
Дякую, що дивитеся і коментуєте.
А що з іншими дисциплінами та складниками ваших подач? Бо SQL - це лише частинка того, що потрібно.
@@romanpovzyk Я не побачив спершу, що це в контексті Data Analyst. Тому в цьому напрямку - нічого. Хіба що, років 5 тому задля розваги R вчив (це рахується?). Тоді ще працював за спеціальністю, і було цікаво використати це для дослідження аномалій/закономірностей в продажах.
Зараз я .NET розробник. І, звісно, SQL маст хев. Ну як розробник... Без релевантного комерційного досвіду, на думку ейчарів, але з рядом проєктів у яких брав участь.
На жаль, тут не допоможу, бо спеціалізуюся саме на аналітиці даних. Я б радив б пошукати ментора серед розробників цього профілю і обговорити вашу ситуацію: як ви можете підсилити свою кандидатуру у порівнянні з іншими. Думаю, такі люди є і вони можуть допомогти.
@@romanpovzyk гм... Так, неупереджена думка зі сторони того, хто шарить... Добре, дякую. І дякую за відео)
Так, дуже раджу спробувати менторство як один з інструментів прокачування себе.
Дякую 😊
уже і аналитики знають sql краще ніж прогери, давайте щось робити з цим, а то ще знайдуть книжку python для чайників )))
А нащо для чайників?
wesmckinney.com/book/ - я місяць тому цю читав, від творця Pandas. Як на мене, цілком достатньо, щоб почати аналізувати датасети з допомогою Python. Дуже сподобалося.
А щодо SQL - так без цієї мови аналітику взагалі нічого буде робити, бо не буде даних ні для аналізу, ні для дашбордів.
доброго вечора. дякую за такі відео. щодо переостанньої задачі, я отримала іншу відповідь. Ресторан з найдовшим очікуванням виявився S'MAC - 55.857 хвилин очікування. рейтинг 4.71. Можливо різниця в результатах виникла через те що я спочатку відкринула всі доставки без рейтингу, а потім вже рахувала середній час доставки і середній рейтинг. Хоча і виконавець також має подібну логіку. Прикріплю свій запит у відповіді, кому стане цікаво (на жаль він набагато складніше написаний, трохи перемудрувала):
with
filtered as ( -- відфільтрована таблиця, прибрані логи без рейтиннгу і ресторани з < 10 доставками
select *
from `new-project-382718.dataset_1.food_order`
where restaurant_name in (
select restaurant_name
from `new-project-382718.dataset_1.food_order`
group by restaurant_name
having count(*) >= 10
)
and rating 'Not given'
),
delivery as ( -- по кожному ресторану середній час доставки
select restaurant_name, avg(food_preparation_time+delivery_time) del
from filtered
group by restaurant_name
),
max_time_rest as ( -- назва ресторану з найдовшою доставкою і її сер. час
select restaurant_name, del from delivery where del =
(select max(del)
from delivery)
)
select filtered.restaurant_name, max_time_rest.del, avg(cast(rating as float64))
from filtered inner join max_time_rest on filtered.restaurant_name = max_time_rest.restaurant_name
group by filtered.restaurant_name, max_time_rest.del
Привіт, Єлизавето.
Дякую, що дивишся і дякую, що перевіряєш запити)
Різниця між твоїм запитом і тим, що на відео - у тому, де відкидати замовлення без відгуків. В умові я вказав: Ми розглядаємо лише замовлення, де клієнт залишив рейтинг і ресторан мав хоча б 10 замовлень (тут можна вказати, що відсутнє було слово ТАКИХ замовлень).
Тому у таблиці filtered підзапит у WHERE мав би включати rating 'Not given'. Бо так ти брала ресторани, які мали 10 замовлень, серед яких могли бути замовлення без рейтингу (а ми не маємо такі замовлення розглядати).
Так само ти включала такі замовлення й у таблиці delivery, а не мала б. Твій запит з цими правками дає таку відповідь, як і на відео. Але при цьому він більший і складніше читається.
Якщо постаратися, то можна довести як твій варіант, так і той, що на відео.
with
filtered as ( -- відфільтрована таблиця, прибрані логи без рейтиннгу і ресторани з < 10 доставками
select *
from food_order
where restaurant_name in (
select restaurant_name
from food_order
group by restaurant_name
having count(*) >= 10
and rating 'Not given'
)
),
delivery as ( -- по кожному ресторану середній час доставки
select restaurant_name, avg(food_preparation_time+delivery_time) del
from filtered
WHERE rating 'Not given'
group by restaurant_name
),
max_time_rest as ( -- назва ресторану з найдовшою доставкою і її сер. час
select restaurant_name, del from delivery where del =
(select max(del)
from delivery)
)
select filtered.restaurant_name, max_time_rest.del, avg(cast(rating as float64))
from filtered inner join max_time_rest on filtered.restaurant_name = max_time_rest.restaurant_name
group by filtered.restaurant_name, max_time_rest.del
@@romanpovzyk тепер зрозуміла) Дуже дякую за підказку
Будь ласка) Дуже приємно бачити таку активність. Мотивує вдвічі уважніше підбирати наступні задачі 😊
Романе, вітаю Вас. Дякую за це відео та ваш внесок в розвиток починаючих аналітиків.
Підкажіть, будь ласка, у завданні №4 альтернативний запит буде виглядати так?:
select avg (world_wide_sales_), genre
FROM "DF"
where genre like '%Drama%'
union
select avg (world_wide_sales_), genre
FROM "DF"
where genre like '%Comedy%'
Дякую, що дивитеся.
Так, виглядає цілком норм як відповідь на це питання прибутковості жанру.
Хоча мені здається, бракує GROUP BY. Пишу з телефону, не можу перевірити на датасеті нині, але наврядчи без вказування по чому групуємо, спрацює.
@@romanpovzyk Дякую🙏
Будь ласка)
Дякую за вашу активність тут 😊
26:00 по 34:00 там перший фільм від кожного.... Я лише з Access грався, але ж є функціонал Group by і написати first, якщо відсортувати роки в потрібному напрямку?
Ну в SQL немає поняття First, для цього якраз віконна функція і потрібна, як показано на відео.
Let's more examples!
Післязавтра має бути нова тестова співбесіда, але англійською. І ще одна українською планується скоро.
поясніть , будь ласка, «логіку» задачі про драму і комедію - якщо необхідно обирати лише між драмою або комедією, то чи не є помилкою додавати «драму і комедію» до обох жанрів адже це може кардинально змінити середнє значення кожного жанру ?
🤔
Я думаю, що краще б було б комедійну драму відділити в окрему категорію, щоб подивитися касу чистих жанрів.
У цілому по цій задачі хотів перевірити знання команд CASE та LIKE.
Я думаю, що краще б було б комедійну драму відділити в окрему категорію, щоб подивитися касу чистих жанрів.
У цілому по цій задачі хотів перевірити знання команд CASE та LIKE.
Це такі задачі вирішує джун дата-аналітик? Тобто якщо я всі ці задачі можу вирішити за 2-5 хв на кожну то можу бути джуном?
Ні, цього буде недостатньо. Ці задачі мали перевірити знання в SQL: такий був запит у кандидата.
У середньому для посади аналітика, крім SQL, потрібно володіти BI-системою (Power BI / Tableau), статистику (у тому числі те, що відноситься до тестування гіпотез), продуктові метрики, Excel / Google SpreadSheet, англійську, Python (це не сильно пріоритетно, але буде перевагою на нинішньому ринку). Це я ще про софт скіли не говорю.
Хоча знання SQL серед цього всього найголовніше.
dou.ua/forums/topic/40265/ - ось тут детально описував, що вартувало б знати, і де це варто було б вчити.
dou.ua/forums/topic/44769/ - а тут приклади, що варто було б знати, щоб пройти співбесіду.
А еще нужно свои DA insights communicate
Так, це одна з найважливіших навичок, яку доволі складно розвивати інтровертам (а більшість аналітиків такі, як на мене). Але приходить з досвідом і практикою.
можете,будь ласка,сказати для чого у 1 задачі, ми пишемо order by 2?
Нам потрібно відсортувати по другій колонці (sales). Тому тут можемо писати або ORDER BY sales DESC, або ORDER BY 2 DESC. Я надаю перевагу назві колонки, а не її номеру, але в обох випадках буде однаковий результат.
Чи зрозуміло пояснив?
@@romanpovzyk так,дякую дуже
Будь ласка. У разі, якщо ще з'являться додаткові питання стосовно SQL - сміливо пишіть сюди. А якщо захочете стати учасницею подібної співбесіди - теж звертайтеся, саме шукаю кандидатів.
@@romanpovzyk О, супер! Саму мучило це питання. Якось інтуїтивно також зрозуміла, що 2 це номер колонки, але раніше мені така інформація не траплялась. Дякую, тепер буду знати!
Раджу не звикати до такого запису: якщо вирішили додати в SELECT додаткову колонку, а ORDER BY не поправили, то отримаєте не те, що хотіли. Тому все ж краще писати назву колонки.
7:33 cte должна иметь название с нижним подчеркиванием
Не зовсім зрозумів коментар. Хіба там не з нижнім підчеркуванням було?
Г'ю Джекман у молодості вовсю сіквелів.😁
🙂
world_wide_sales_ це не працює в цій таблиці так само як і: world_wide_sales, World_Wide_Sales, World Wide Sales. І багато інших варіантів
Що маєте на увазі? Не виходить взяти цю колонку з датасету в описі під відео?
Так, можу скріни скинути мб я шось неправильно роблю. А у вас виходить ? @@romanpovzyk
@roman_povzyk
Напишіть мені у Телеграм зі скрінами. Завтра гляну. Наскільки пригадую, я чистив той датасет, бо там було 4-5 проблемних рядків, які трішки збилися відносно своїх колонок. Решта мала працювати (принаймні у мене і у кандидата було все норм).
Спробуйте зі скобами [World Wide Sales], без них пробіли недопустимі.
Та я вже дав почищений файл, який використовувався у цій співбесіди. Ніби все спрацювало.
Дякую за відео. На мою думку, корисним для розвитку, при вирішенні задач знаходити не 1 варіант а більше. Це допомагає подивитись на задачу з іншого боку і, можливо, інші варіанти будуть менш оптимальні, але вони дозволяють швидше вивчати матеріал. Наприклад, задачу на 45 хв спробувати розв'язати:
SELECT COUNT(*) AS count_user
FROM table1
WHERE event_date BETWEEN '2023-10-01' AND '2023-10-31'
AND user_id NOT IN (SELECT user_id
FROM table
WHERE event_date < '2023-10-01')
Повторюсь, рішення не найоптимальніше, але вирішуючи задачу декількома способами розвиватись можна швидше.
Можливо @ion_lab зробить це в своїх відео ;) ?
Так, можна. Але мені все ж хотілося побачити розв'язки різних задач, а не багато розв'язків однієї. У роботі все ж обмежуєшся одним варіантом.
До вашого запиту є уточнення: COUNT(*) візьме кількість рядків у таблиці з логуванням сесій від нових користувачів. А їх точно буде більше за кількість нових користувачів, бо користувач у жовтні міг мати не одну сесію. Тому там варто використати COUNT(DISTINCT user_id). Але цікавий підхід, щоб уникнути віконних функцій.
З задоволенням переглядаю ваші відео, але дуже шкода що я нічого не розумію, хотілось би навчитись, можливо порадите якусь школу?
Школу не пораджу, бо не бачив жодної школи, яка відкрито показує свій відсоток працевлаштованих з курсів. Зазвичай, показують лише успішні приклади студентів, яким вдалося отримати офер. Але це не середній рівень.
У описі до цього відео у п. 4 є стаття, де я збирав ресурси, які допомогли мені у навчанні. Раджу спробувати їх: майже усе там безкоштовне.