معرفی
اگر شما یک دانشمند داده با تجربه هستید که به دنبال شغل هستید، نمی توانستید زمان بهتری را انتخاب کنید. در حال حاضر، بسیاری از سازمان های تاسیس شده به دنبال دانشمندان داده ای هستند که مهارت های خود را در داخل و خارج بدانند. با این حال، تقاضای بالا به این معنا نیست که میتوانید یا باید از حلقهها بپرید و بدون مجموعه مهارت خاصی برای پستهای ارشد درخواست دهید. هنگام استخدام دانشمندان داده با تجربه، شرکت ها از آنها انتظار دارند که روی سخت ترین کارهایی که در دست دارند کار کنند. این کارمندان باید حتی مبهم ترین ویژگی ها را به خوبی درک کنند تا در صورت لزوم بتوانند از آنها استفاده کنند.
جای تعجب نیست که هنگام مصاحبه برای موقعیت های ارشد، از دانشمندان داده با تجربه سوالات بسیار سخت تری پرسیده می شود. اغلب، وقتی چند سال روی یک شغل واحد کار میکنند، دانشمندان داده در انجام برخی وظایف تکراری بسیار ماهر میشوند. برای حرفه ای ها ضروری است که بدانند SQL با دانش موجود آنها متوقف نمی شود و به پایان نمی رسد. وقتی صحبت از مفاهیم پیشرفته SQL می شود، ممکن است هنوز در دانش آنها شکاف هایی وجود داشته باشد. بنابراین دریافت کمک برای موفقیت در مصاحبه با دانشمند داده ضرری ندارد.
SQL زبان اصلی برای مدیریت پایگاه های داده است، بنابراین انجام عملیات SQL در قلب شغل دانشمندان داده است. اکثر مصاحبه های دانشمند داده برای تعیین دانش نامزد از SQL ترتیب داده می شود.
کار روزمره ممکن است شامل نوشتن پرس و جوهای پیچیده نباشد، اما باید نشان دهید که اگر چنین مهارت هایی مورد نیاز است، شما فردی هستید که قادر به انجام آن هستید. بنابراین جای تعجب نیست که مصاحبهکنندگان مجموعهای متنوع از آنها را بپرسند سوالات مصاحبه SQL برای تست تسلط داوطلب در SQL.
در این مقاله قصد داشتیم برخی از سوالات و مفاهیم پیچیده ای که در مصاحبه با متخصصان مجرب پرسیده می شود را خلاصه کنیم. حتی اگر به دانش SQL خود اطمینان دارید، اسکن کلمات کلیدی و اطمینان از اینکه همه چیز را پوشش داده اید ضرری ندارد.
حداقل مفاهیم برای متخصصان با تجربه
مورد / چه زمانی
درک کامل مفهوم CASE (و دستور وقتی همراه آن) برای دستیابی به تسلط کامل بر SQL ضروری است. دستور case به ما امکان می دهد شرایط خاصی را بررسی کنیم و بر اساس درست یا نادرست بودن آن شرایط، مقداری را برگردانیم. در ترکیب با بندهایی مانند WHERE و ORDER BY، CASE به ما امکان می دهد منطق، شرایط و نظم را در جستارهای SQL خود بیاوریم.
ارزش عبارات CASE به ارائه یک منطق شرطی ساده در جستارهای ما محدود نمی شود. دانشمندان داده باتجربه باید بیش از درک سطحی از عبارت CASE و کاربردهای آن داشته باشند. مصاحبهکنندگان احتمالاً از شما سؤالاتی در مورد انواع مختلف عبارات CASE و نحوه نوشتن آنها میپرسند.
داوطلبان باتجربه باید آماده پاسخگویی به سؤالات نظری باشند، مانند توضیح تفاوت بین عبارات ارزش گذاری شده و جستجو شده CASE، نحوه کار آنها و نحوه نوشتن آنها. این نیاز به درک قوی از نحو و شیوه های رایج آنها دارد. نیازی به گفتن نیست که این شامل استفاده صحیح از بند ELSE نیز می شود.
از دانشمندان داده باتجربه انتظار می رود که نحوه استفاده از CASE را با توابع انبوه نیز بدانند. همچنین ممکن است از شما خواسته شود که یک عبارت CASE مختصر بنویسید که کمتر تکراری است و درک آن آسان تر است. شما باید بتوانید هوشمندانه در مورد هشدارها و خطرات احتمالی استفاده از عبارات کوتاه CASE صحبت کنید.
به طور کلی، یک دانشمند داده با تجربه باید بتواند از CASE برای نوشتن پرس و جوهای کارآمدتر استفاده کند. از این گذشته، تمام هدف بیانیه CASE این است که از نوشتن درخواست های فردی بیش از حد برای ادغام داده ها اجتناب شود.
در اینجا نمونه ای از سؤالی است که می توان با استفاده از عبارات CASE / WHEN حل کرد: https://platform.stratascratch.com/coding/9634-host-response-rates-with-cleaning-fees?python=
این سؤال دشواری است که در مصاحبههای Airbnb پرسیده میشود، جایی که داوطلبان باید میانگین نرخ پاسخ میزبان، کد پستی و هزینه تمیز کردن مربوطه را پیدا کنند.
در این مورد، دستور CASE/WHEN برای فرمت نتیجه به عنوان یک عدد و ارائه آن به عنوان یک مقدار درصد، علاوه بر کد پستی استفاده می شود.
SQL می پیوندد
به راحتی می توانید نسبت به دانش خود در مورد SQL Joins اطمینان داشته باشید، اما هرچه بیشتر این موضوع را بررسی کنید، بیشتر متوجه می شوید که نمی دانید. مصاحبه کنندگان اغلب می پرسند سوالات مصاحبه در مورد جنبه های پیشرفته SQL Joins که اغلب نادیده گرفته می شوند. بنابراین مهم است که به این مفهوم بپردازیم و به طور کامل بر آن مسلط شویم.
علاوه بر مفاهیم اولیه، مصاحبهکنندگان ممکن است بپرسند که اتصالات خود متقاطع چیست و با پرسیدن برای حل سؤالات عملی، به عمق دانش شما پی ببرند. شما باید انواع مختلف اتصالات، از جمله انواع پیچیده تر، مانند اتصالات هش یا اتصالات ترکیبی را بشناسید. همچنین میتوانید از شما خواسته شود که توضیح دهید اتصالات طبیعی چیست و چه زمانی مفیدتر هستند. گاهی اوقات باید تفاوت بین اتصالات طبیعی و داخلی را توضیح دهید.
به طور کلی باید تجربه و تسلط کاملی در استفاده از اتصالات در ترکیب با سایر دستورات داشته باشید تا به نتایج دلخواه برسید. به عنوان مثال، شما باید بدانید که چگونه از عبارت WHERE برای استفاده از Cross Join استفاده کنید که گویی یک Join داخلی است. همچنین از شما انتظار می رود که بدانید چگونه از اتصالات برای تولید جداول جدید بدون فشار زیاد بر سرور استفاده کنید. یا نحوه استفاده از اتصالات خارجی برای شناسایی و پر کردن مقادیر از دست رفته هنگام پرس و جو از پایگاه داده. یا عملکرد داخلی اتصالات بیرونی، مانند این که مرتب کردن مجدد ترتیب آنها می تواند خروجی را تغییر دهد.
در اینجا نمونه ای از سؤالی است که شامل نوشتن یک بیانیه مشترک داخلی است.
این یک سوال نسبتاً دشوار است، جایی که از نامزدها خواسته می شود اندازه سفارش را به عنوان درصدی از کل هزینه نشان دهند.
مفهوم پیشرفته N1: دستکاری تاریخ-زمان
معمولاً پایگاههای داده شامل تاریخ و زمان است، بنابراین هر دانشمند داده با تجربه باید دانش عمیقی از کار با آنها داشته باشد. این نوع داده به ما امکان می دهد ترتیب وقوع رویدادها، تغییرات فرکانس، محاسبه فواصل زمانی و سایر بینش های مهم را دنبال کنیم. بسیاری از اوقات انجام این عملیات مستلزم تسلط کامل بر دستکاری تاریخ-زمان در SQL است. بنابراین متخصصان با چنین مجموعه ای از مهارت ها نسبت به نامزدهای رقیب برتری خواهند داشت. اگر 100% به مهارت های خود اطمینان ندارید، به مفاهیمی که در زیر توضیح داده شده است نگاهی بیندازید و ببینید چه تعداد از آنها آشنا به نظر می رسند.
از آنجایی که روشهای مختلف (اما معتبر) زیادی برای قالببندی دادهها در SQL وجود دارد، کدنویسهای بزرگ باید حداقل با همه آنها آشنا باشند. در طول مصاحبه، مدیران استخدام انتظار دارند مفاهیم اولیه قالب بندی داده ها و توانایی صحبت هوشمندانه در مورد انتخاب عملکرد مناسب برای کار را داشته باشند. این شامل دانش یک تابع مهم FORMAT() و نحو مرتبط برای استفاده کامل از تابع است. دانش سایر توابع اساسی مانند NOW() نیز مورد انتظار است. همچنین، برای متخصصان باتجربه عجیب نیست که در مورد مفاهیم اولیه مانند دادههای سری زمانی و هدف آن سؤال شوند.
در نظر گرفتن زمینه شغلی که برای آن درخواست می کنید نیز مهم است. یک شرکت هوش مصنوعی یا اینترنت اشیا بیشتر نگران ردیابی داده های جمع آوری شده از حسگرها است، در حالی که یک برنامه معاملاتی سهام ممکن است از شما بخواهد که نوسانات قیمت را در طول روز، هفته یا ماه پیگیری کنید.
در برخی موارد، کارفرمایان ممکن است در مورد توابع تاریخ/زمان پیشرفتهتر در SQL، مانند CAST()، EXTRACT() یا DATE_TRUNC() بپرسند. وقتی با حجم زیادی از دادهها که حاوی تاریخ هستند کار میکنید، این توابع میتوانند بسیار ارزشمند باشند. یک دانشمند داده با تجربه باید هدف هر عملکرد و کاربردهای آن را بداند. در یک سناریوی ایده آل، او باید تجربه استفاده از آنها را در گذشته داشته باشد.
پیچیده ترین دستکاری تاریخ-زمان در SQL شامل ترکیبی از توابع اولیه و پیشرفته است. بنابراین لازم است که همه آنها را بشناسید، از FORMAT()، NOW()، CURRENT_DATE، و CURRENT_TIME، و شامل توابع پیشرفته تری که در بالا ذکر شد، شروع کنید. به عنوان یک دانشمند داده با تجربه، باید بدانید که INTERVAL چه کاری انجام می دهد و چه زمانی از آن استفاده کنید.
در اینجا نمونه ای از سؤالی است که در مصاحبه های Airbnb پرسیده شده است، جایی که نامزدها باید از داده های موجود برای پیگیری رشد Airbnb استفاده کنند.
پیش فرض:
در این سوال، از نامزدها خواسته میشود تا رشد Airbnb را بر اساس تغییرات تعداد میزبانهای ثبتنام شده در هر سال پیگیری کنند. به عبارت دیگر، از تعداد هاست های تازه ثبت نام شده به عنوان شاخص رشد برای هر سال استفاده خواهیم کرد. نرخ رشد را با محاسبه تفاوت تعداد هاست ها بین سال گذشته و سال جاری و تقسیم آن بر تعداد میزبان های ثبت شده در سال قبل پیدا می کنیم. سپس با ضرب نتیجه در 100 مقدار درصد را پیدا می کنیم.
جدول خروجی باید دارای ستون ها و داده های مربوط به تعداد میزبان ها در سال جاری، در سال قبل و درصد رشد سال به سال باشد. درصد باید به نزدیکترین عدد کامل گرد شود و سطرها بسته به سال باید به ترتیب صعودی مرتب شوند.
راه حل:
برای پاسخ به این سوال، یک داوطلب باید با جدولی به نام 'airbnb_search_details' کار کند که شامل ستون های زیادی است. ستونی که ما نیاز داریم با عنوان "host_since" نامگذاری شده است که نشان دهنده سال، ماه و روزی است که میزبان برای اولین بار در وب سایت ثبت نام کرده است. برای این تمرین، ماه و روز مهم نیستند، بنابراین اولین کاری که باید انجام دهیم این است که سال را از مقدار استخراج کنیم. سپس باید یک نمای ایجاد کنیم که شامل ستونهای جداگانه برای سال جاری، سال قبل و تعداد کل میزبانها در آن سال باشد.
استخراج را انتخاب کنید (سال از host_since::DATE) از airbnb_search_details WHERE host_since IS NULL
تا الان دو کار انجام دادیم:
- ما مطمئن شدهایم که فقط ردیفهایی را که ستون host_since خالی نیست شامل میشود.
- ما سال را از داده ها استخراج کرده و آن را به عنوان مقدار DATE ریخته ایم.
استخراج (سال از host_since::DATE) count(id) به عنوان current_year_host FROM airbnb_search_details WHERE host_since IS NULL GROUP BY استخراج (سال از host_since::DATE) سفارش بر اساس سال صعودی
سپس به شمارش شناسه ها و تنظیم بند GROUP BY برای هر سال اقدام می کنیم. و آن را به ترتیب صعودی نمایش دهید.
این باید جدولی با دو ستون به ما بدهد: سال و تعداد میزبانهای ثبتشده در آن سال. ما هنوز تصویر کاملی برای حل این سوال نداریم، اما این گامی در مسیر درست است. همچنین برای میزبان هایی که در سال گذشته ثبت نام کرده اند به ستون های جداگانه نیاز داریم. اینجاست که تابع LAG() وارد می شود.
SELECT Year, current_year_host, LAG(current_year_host, 1) OVER (ORDER BY) به عنوان prev_year_host عصاره (سال FROM host_since::DATE) را انتخاب کنید. :DATE) سفارش بر اساس سال صعودی
در اینجا، ستون سوم را اضافه کردیم که دارای برچسب 'prev_year_host' خواهد بود و مقادیر آن به جز تاخیر یک ردیف، از 'current_year_host' می آید. در اینجا چیزی است که ممکن است به نظر برسد:
چیدمان جدول به این صورت محاسبه نرخ رشد نهایی را بسیار راحت می کند. برای هر مقدار در معادله یک ستون جداگانه داریم. در نهایت، کد ما باید چیزی شبیه به این باشد:
SELECT year, current_year_host, prev_year_host, round(((current_year_host - prev_year_host)/(cast(prev_year_host AS numeric))*100) تخمینی_رشد FROM (انتخاب سال, سال جاری_میزبان, LAG(current_year_year_host, BORDERY_student) FROM (انتخاب عصاره (سال از host_since::date) به عنوان سال، count(id) current_year_host FROM airbnb_search_details WHERE host_since IS NULL GROUP BY استخراج (سال از host_since::date) ORDER BY سال) t1) t1
در اینجا، یک پرس و جو دیگر و ستون دیگری اضافه می کنیم که در آن نرخ رشد را محاسبه می کنیم. ما باید نتیجه اولیه را در 100 ضرب کنیم و آن را گرد کنیم تا نیازهای کار برآورده شود.
این راه حل این کار است. واضح است که توابع دستکاری تاریخ-زمان برای تکمیل کار ضروری بودند.
مفهوم پیشرفته N2: توابع و پارتیشن های پنجره
توابع پنجره SQL یکی از مهمترین مفاهیم برای نوشتن پرس و جوهای پیچیده و در عین حال کارآمد SQL هستند. از متخصصان با تجربه انتظار می رود که دانش عملی و نظری عمیقی از عملکردهای پنجره داشته باشند. این شامل دانستن عبارت over چیست و تسلط بر استفاده از آن است. مصاحبهکنندگان ممکن است بپرسند چگونه بند OVER میتواند توابع کل را به توابع پنجره تبدیل کند. همچنین ممکن است از شما در مورد سه تابع جمعی که میتوانند به عنوان توابع پنجره استفاده شوند، سؤال شود. دانشمندان داده با تجربه باید از سایر عملکردهای پنجره غیرجمعی نیز آگاه باشند.
برای استفاده بهینه از توابع پنجره، باید بدانید که PARTITION BY عبارت چیست و چگونه از آن استفاده کنید. ممکن است از شما خواسته شود که آن را توضیح دهید و نمونه هایی از چند مورد استفاده ارائه دهید. گاهی اوقات باید با استفاده از عبارت ORDER_BY ردیف ها را در پارتیشن ها سازماندهی کنید.
کاندیداهایی که می توانند دانش کاملی از هر تابع پنجره جداگانه، مانند ROW_NUMBER() نشان دهند، مزیتی خواهند داشت. نیازی به گفتن نیست که دانش نظری به تنهایی کافی نیست - متخصصان همچنین باید تجربه استفاده از آنها را در عمل، با یا بدون پارتیشن داشته باشند. به عنوان مثال، یک متخصص با تجربه باید بتواند تفاوت های بین RANK() و DENSE_RANK() را توضیح دهد. یک کاندیدای ایده آل باید برخی از پیشرفته ترین مفاهیم مانند فریم های درون پارتیشن ها را بداند و بتواند آنها را به وضوح توضیح دهد.
نامزدهای عالی همچنین باید استفاده از تابع NTH_VALUE() را توضیح دهند. ذکر گزینه های جایگزین برای این تابع، مانند توابع FIRST_VALUE() و LAST_VALUE() ضرری ندارد. شرکت ها اغلب دوست دارند چارک ها، چندک ها و به طور کلی صدک ها را اندازه گیری کنند. برای انجام این عملیات، دانشمندان داده باید نحوه استفاده از تابع پنجره NTILE() را نیز بدانند.
در SQL معمولا راه های زیادی برای نزدیک شدن به یک کار وجود دارد. با این حال، توابع پنجره ساده ترین راه را برای انجام عملیات رایج، اما پیچیده ارائه می دهند. یک مثال خوب از این تابع پنجره، LAG() یا LEAD() است، بنابراین باید با آنها نیز آشنا باشید. به عنوان مثال، بیایید به مثالی از راه حل قبلی برای یک سوال دشوار مصاحبه Airbnb نگاه کنیم:
برای نمایش تعداد میزبان ها در سال قبل، از تابع LAG() با دستور OVER استفاده کردیم. این کار را میتوان به روشهای بسیار دیگری انجام داد، اما توابع پنجره به ما این امکان را میدهند که تنها در یک خط کد SQL به نتیجه دلخواه برسیم:
LAG (current_year_host, 1) OVER (ORDER BY) به عنوان prev_year_host
بسیاری از شرکت ها باید رشد را در یک دوره زمانی مشخص محاسبه کنند. تابع LAG() می تواند برای تکمیل چنین تکالیفی بسیار ارزشمند باشد.
مفهوم پیشرفته N3: رشد ماه به ماه
بسیاری از سازمان ها از تجزیه و تحلیل داده ها برای اندازه گیری عملکرد خود استفاده می کنند. این ممکن است مستلزم اندازهگیری اثربخشی کمپینهای بازاریابی یا ROI بر روی یک سرمایهگذاری خاص باشد. انجام چنین تحلیلی به دانش عمیق SQL مانند تاریخ، زمان و توابع پنجره نیاز دارد.
دانشمندان داده همچنین باید مهارتهای خود را در قالببندی دادهها و نمایش آنها به صورت درصد یا به هر شکل دیگری اثبات کنند. به طور کلی، برای حل سوالات عملی که باید رشد ماه به ماه را محاسبه کنید، باید از ترکیب مجموعه مهارت های متعدد استفاده کنید. برخی از مفاهیم مورد نیاز پیشرفته خواهند بود (توابع پنجره، دستکاری تاریخ-زمان)، در حالی که برخی دیگر پایه خواهند بود (توابع انبوه و عبارات رایج SQL).
بیایید به یک نمونه سوال پرسیده شده توسط مصاحبه کنندگان در آمازون نگاه کنیم.
پیش فرض:
در این سوال باید با جدول خرید کار کنیم و رشد یا کاهش درآمد ماهانه را محاسبه کنیم. نتیجه نهایی باید به روش خاصی قالب بندی شود (فرمت YYYY-MM) و درصدها باید به دومین اعشار گرد شوند.
راه حل:
هنگام کار بر روی کاری مانند این، اولین کاری که باید انجام دهید این است که جدول را درک کنید. همچنین باید ستون هایی را که برای پاسخ به سوال باید با آنها کار کنید، مشخص کنید. و خروجی شما چگونه خواهد بود.
در مثال ما، مقادیر داده دارای نوع شی هستند، بنابراین ما باید از تابع CAST() برای تبدیل آنها به انواع تاریخ استفاده کنیم.
SELECT to_char(cast(created_at as date), 'YYYY-MM') FROM sf_transactions
این سوال همچنین یک قالب برای تاریخ ها مشخص می کند، بنابراین می توانیم از تابع ()theTO_CHAR در SQL برای خروجی تاریخ در این فرمت استفاده کنیم.
برای محاسبه رشد، باید تابع ()created_at و SUM را نیز انتخاب کنیم تا حجم کل فروش آن تاریخ را بدست آوریم.
SELECT to_char(cast(created_at as date), 'YYYY-MM'), create_at, sum (value) FROM sf_transactions
در این مرحله باید دوباره از توابع پنجره استفاده کنیم. به طور خاص، ما از تابع LAG() برای دسترسی به حجم ماه گذشته و نمایش آن به عنوان یک ستون جداگانه استفاده می کنیم. برای آن، ما همچنین به یک بند OVER نیاز داریم.
SELECT to_char(cast(created_at as date), 'YYYY-MM') AS year_month, create_at, sum(value) lag(sum(value), 1) OVER (ORDER BY create_at::date) FROM sf_transactions GROUP BY create_at
بر اساس کدی که تاکنون نوشته ایم، جدول ما چیزی شبیه به این خواهد بود:
در اینجا، تاریخ ها و مقادیر کل متناظر را در ستون جمع، و مقادیر آخرین تاریخ را در ستون تاخیر داریم. اکنون میتوانیم مقادیر را به فرمول متصل کرده و نرخ رشد را در یک ستون جداگانه نمایش دهیم.
همچنین باید ستون غیرضروری create_at را حذف کنیم و بندهای GROUP BY و ORDER BY را به year_month تغییر دهیم.
SELECT to_char(cast(created_at به عنوان تاریخ)، 'YYYY-MM') AS year_month, sum(value), lag(sum (value), 1) OVER (ORDER BY to_char(cast(created_at as date)) FROM sf_transactions GROUP BY سال_ماه
هنگامی که کد را اجرا می کنیم، جدول ما فقط باید شامل ستون هایی باشد که برای محاسبه ما ضروری هستند.
حالا بالاخره می توانیم به راه حل برسیم. کد نهایی به این صورت است:
SELECT to_char(created_at::date, 'YYYY-MM') AS year_month, round(((sumsum(value) - lag(sum(value), 1) over w) / (lag(sum(value), 1) over w)) * 100، 2) AS gain_diff_pct FROM sf_transactions GROUP BY year_month WINDOW w AS ( ORDER BY to_char(created_at::date, 'YYYY-MM')) سفارش بر اساس year_month ASC
در این کد از مثال قبلی دو مقدار ستون گرفته و تفاوت آنها را محاسبه می کنیم. توجه داشته باشید که ما همچنین از نام مستعار پنجره برای کاهش تکراری بودن کد خود استفاده می کنیم.
سپس طبق الگوریتم آن را بر درآمد ماه جاری تقسیم کرده و در 100 ضرب می کنیم تا مقدار درصد بدست آید. در نهایت، مقدار درصد را به دو نقطه اعشار گرد می کنیم. ما به پاسخی می رسیم که تمام الزامات کار را برآورده می کند.
مفهوم پیشرفته N4: نرخ ریزش
حتی اگر برعکس رشد است، ریزش نیز یک معیار مهم است. بسیاری از شرکت ها نرخ ریزش خود را پیگیری می کنند، به خصوص اگر مدل کسب و کار آنها مبتنی بر اشتراک باشد. به این ترتیب، آنها می توانند تعداد اشتراک ها یا حساب های از دست رفته را ردیابی کنند و دلایل ایجاد آن را پیش بینی کنند. از یک دانشمند داده با تجربه انتظار می رود که بداند از کدام توابع، عبارات و بندها برای محاسبه نرخ ریزش استفاده کند.
داده های اشتراک بسیار خصوصی است و حاوی اطلاعات خصوصی کاربر است. همچنین برای دانشمندان داده مهم است که بدانند چگونه با چنین داده هایی بدون افشای آنها کار کنند. اغلب محاسبه نرخ ریزش شامل عبارات جدول رایج است که یک مفهوم نسبتاً جدید است. بهترین دانشمندان داده باید بدانند چرا CTEها مفید هستند و چه زمانی از آنها استفاده کنند. هنگام کار با پایگاههای داده قدیمیتر، جایی که CTE در دسترس نیست، یک نامزد ایدهآل باید همچنان بتواند کار را انجام دهد.
در اینجا یک مثال از یک کار دشوار است. داوطلبانی که در Lyft مصاحبه می کنند این وظیفه را برای محاسبه نرخ ریزش رانندگان در شرکت دریافت می کنند.
برای حل این مشکل، دانشمندان داده باید از دستورات case/when، توابع پنجره مانند LAG() و همچنین از FROM/WHERE و دیگر جملات اساسی استفاده کنند.
نتیجه
کار کردن به عنوان یک دانشمند داده برای سالها مطمئناً در یک CV چشمگیر به نظر میرسد و مصاحبههای زیادی را برای شما به همراه خواهد داشت. با این حال، هنگامی که پای خود را به در بردید، هنوز باید دانش خود را برای تکمیل سال ها تجربه نشان دهید. حتی اگر تجربه گسترده ای در این زمینه داشته باشید نوشتن پرس و جو در SQL، استفاده از منابعی مانند ضرری ندارد StrataScratch برای تازه کردن دانش خود
ناتی روزیدی یک دانشمند داده و در استراتژی محصول است. او همچنین یک استاد کمکی در تدریس تجزیه و تحلیل است و بنیانگذار آن است StrataScratch، پلتفرمی است که به دانشمندان داده کمک می کند تا برای مصاحبه های خود با سؤالات مصاحبه واقعی از شرکت های برتر آماده شوند. با او ارتباط برقرار کنید توییتر: StrataScratch or لینک.
منبع: https://www.kdnuggets.com/2022/01/sql-interview-questions-experienced-professionals.html
- 100
- 11
- 9
- درباره ما
- دسترسی
- اضافه
- مزیت - فایده - سود - منفعت
- AI
- Airbnb
- الگوریتم
- معرفی
- آمازون
- تحلیل
- علم تجزیه و تحلیل
- نرم افزار
- برنامه های کاربردی
- مقاله
- در دسترس
- میانگین
- بهترین
- کسب و کار
- مدل کسب و کار
- مبارزات
- موارد
- ایجاد می شود
- تغییر دادن
- تمیز کاری
- رمز
- ستون
- ترکیب
- مشترک
- شرکت
- شرکت
- پیچیده
- میتوانست
- زن و شوهر
- جاری
- داده ها
- تحلیل داده ها
- دانشمند داده
- پایگاه داده
- پایگاه های داده
- تاریخ
- روز
- تاخیر
- تقاضا
- مختلف
- كشف كردن
- نمی کند
- در طی
- کارکنان
- کارفرمایان
- به خصوص
- تاسیس
- حوادث
- مثال
- ورزش
- تجربه
- امکانات
- سرانجام
- نام خانوادگی
- فرم
- قالب
- موسس
- کامل
- تابع
- توابع
- سوالات عمومی
- رفتن
- خوب
- بزرگ
- گروه
- رشد
- مخلوط
- کمک
- زیاد
- استخدام
- چگونه
- چگونه
- HTTPS
- شناسایی
- مهم
- از جمله
- فرد
- اطلاعات
- بینش
- مصاحبه
- مصاحبه
- سرمایه گذاری
- اینترنت اشیا
- IT
- کار
- شغل ها
- پیوستن
- پرش
- دانش
- زبان
- بزرگ
- محدود شده
- لاین
- لینک
- به دنبال
- Lyft
- دست کاری
- بازار یابی (Marketing)
- کمپین های بازاریابی
- اندازه
- مدل
- بیش
- ضروری
- عملیات
- سفارش
- سازمان های
- دیگر
- دیگران
- درصد
- کارایی
- تصویر
- سکو
- در حال حاضر
- فشار
- قیمت
- خصوصی
- مشکل
- محصول
- حرفه ای
- ارائه
- خرید
- پــایتــون
- سوال
- نرخ
- دلایل
- كاهش دادن
- مورد نیاز
- منابع
- پاسخ
- نتایج
- درامد
- ROI
- دویدن
- حراجی
- اسکن
- دانشمندان
- سنسور
- تنظیم
- ساده
- اندازه
- مهارت ها
- So
- حل
- چیزی
- به طور خاص
- هزینه
- SQL
- بیانیه
- موجودی
- تجارت سهام
- استراتژی
- صحبت
- تعلیم
- آزمون
- از طریق
- زمان
- بالا
- مسیر
- پیگردی
- تجارت
- دگرگون کردن
- us
- معمولا
- ارزش
- ارزش
- چشم انداز
- حجم
- W
- سایت اینترنتی
- هفته
- چی
- WHO
- در داخل
- بدون
- کلمات
- مهاجرت کاری
- کارگر
- خواهد بود
- نوشته
- سال
- سال