अनुभवी पेशेवरों के लिए SQL साक्षात्कार प्रश्न

स्रोत नोड: 1586233

अनुभवी पेशेवरों के लिए SQL साक्षात्कार प्रश्न
 

परिचय

 
यदि आप एक अनुभवी डेटा वैज्ञानिक हैं जो नौकरी की तलाश में हैं, तो आप इससे बेहतर समय नहीं चुन सकते थे। अभी, कई स्थापित संगठन डेटा वैज्ञानिकों की तलाश में हैं जो अपने शिल्प को अंदर और बाहर जानते हैं। हालांकि, उच्च मांग का मतलब यह नहीं है कि आप हुप्स के माध्यम से कूद सकते हैं या कूद सकते हैं और एक निश्चित कौशल सेट के बिना वरिष्ठ पदों के लिए आवेदन कर सकते हैं। अनुभवी डेटा वैज्ञानिकों को काम पर रखते समय, कंपनियां उनसे सबसे कठिन कार्यों पर काम करने की अपेक्षा करती हैं। इन कर्मचारियों को सबसे अस्पष्ट विशेषताओं की भी अच्छी समझ होनी चाहिए ताकि वे आवश्यकता पड़ने पर उनका उपयोग कर सकें।

यह आश्चर्य की बात नहीं है कि वरिष्ठ पदों के लिए साक्षात्कार करते समय, अनुभवी डेटा वैज्ञानिकों से अधिक कठिन प्रश्न पूछे जाते हैं। अक्सर, जब एक ही नौकरी पर कुछ वर्षों तक काम किया जाता है, तो डेटा वैज्ञानिक कुछ दोहराए जाने वाले कार्यों को करने में बहुत कुशल हो जाते हैं। पेशेवरों के लिए यह महसूस करना आवश्यक है कि SQL उनके मौजूदा ज्ञान के साथ रुकता और समाप्त नहीं होता है। जब उन्नत SQL अवधारणाओं की बात आती है, तब भी उनके ज्ञान में कुछ अंतराल हो सकते हैं। तो आपके डेटा वैज्ञानिक साक्षात्कार में सफल होने के लिए सहायता प्राप्त करने में कोई दिक्कत नहीं होती है। 

SQL डेटाबेस के प्रबंधन के लिए प्राथमिक भाषा है, इसलिए SQL संचालन करना डेटा वैज्ञानिकों की नौकरियों के केंद्र में है। एक उम्मीदवार के SQL के ज्ञान को निर्धारित करने के लिए अधिकांश डेटा वैज्ञानिक साक्षात्कार की व्यवस्था की जाती है। 

रोज़मर्रा के काम में जटिल प्रश्न लिखना शामिल नहीं हो सकता है, लेकिन आपको यह दिखाना होगा कि यदि ऐसे कौशल की आवश्यकता है, तो आप इसे करने में सक्षम व्यक्ति हैं। तो यह आश्चर्य की बात नहीं होनी चाहिए कि साक्षात्कारकर्ता विविध सेट के बारे में पूछते हैं एसक्यूएल साक्षात्कार सवाल एसक्यूएल में उम्मीदवार के प्रवाह का परीक्षण करने के लिए।

इस लेख में, हम अनुभवी पेशेवरों के साथ साक्षात्कार में पूछे गए कुछ जटिल प्रश्नों और अवधारणाओं को संक्षेप में प्रस्तुत करना चाहते थे। यहां तक ​​​​कि अगर आपको अपने SQL ज्ञान पर भरोसा है, तो कीवर्ड को स्कैन करने और यह सुनिश्चित करने में कोई हर्ज नहीं है कि आपने सब कुछ कवर कर लिया है।

अनुभवी पेशेवरों के लिए न्यूनतम अवधारणाएँ

मामला / कब

 
SQL की पूर्ण महारत हासिल करने के लिए CASE (और इसके साथ जब स्टेटमेंट) की अवधारणा को पूरी तरह से समझना आवश्यक है। एक केस स्टेटमेंट हमें कुछ शर्तों की जांच करने और उन शर्तों के सही या गलत के रूप में मूल्यांकन करने के आधार पर एक मान वापस करने की अनुमति देता है। WHERE और ORDER BY जैसे खंडों के संयोजन में, CASE हमें अपने SQL प्रश्नों में तर्क, शर्तें और आदेश लाने की अनुमति देता है।

CASE कथनों का महत्व हमारे प्रश्नों में एक साधारण सशर्त तर्क प्रदान करने तक सीमित नहीं है। अनुभवी डेटा वैज्ञानिकों के पास 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 जॉइन के उन्नत पहलुओं के बारे में साक्षात्कार प्रश्न जिन्हें अक्सर नज़रअंदाज कर दिया जाता है। इसलिए इस अवधारणा में गहराई से जाना और इसे पूरी तरह से महारत हासिल करना महत्वपूर्ण है।
 
बुनियादी अवधारणाओं के अलावा, साक्षात्कारकर्ता पूछताछ कर सकते हैं कि सेल्फ क्रॉस जॉइन क्या हैं, और व्यावहारिक प्रश्नों को हल करने के लिए पूछकर अपने ज्ञान की गहराई का पता लगा सकते हैं। आपको अधिक जटिल प्रकार, जैसे हैश जॉइन, या कंपोजिट जॉइन सहित सभी विभिन्न प्रकार के जॉइन के बारे में पता होना चाहिए। आपको यह समझाने के लिए भी कहा जा सकता है कि प्राकृतिक जोड़ क्या हैं, और वे सबसे उपयोगी कब हैं। कभी-कभी आपको प्राकृतिक और आंतरिक जुड़ाव के बीच के अंतरों को स्पष्ट करना होगा।
 
सामान्य तौर पर, आपको वांछित परिणाम प्राप्त करने के लिए अन्य कथनों के संयोजन में जॉइन का उपयोग करने का गहन अनुभव और महारत हासिल होनी चाहिए। उदाहरण के लिए, आपको पता होना चाहिए कि क्रॉस जॉइन का उपयोग करने के लिए WHERE क्लॉज का उपयोग कैसे करें जैसे कि यह एक इनर जॉइन था। आपसे यह जानने की भी अपेक्षा की जाएगी कि सर्वर पर बहुत अधिक दबाव डाले बिना नई तालिकाएँ बनाने के लिए जॉइन का उपयोग कैसे करें। या डेटाबेस को क्वेरी करते समय लापता मानों को पहचानने और भरने के लिए बाहरी जॉइन का उपयोग कैसे करें। या बाहरी जोड़ की आंतरिक कार्यप्रणाली, जैसे कि उनके क्रम को पुनर्व्यवस्थित करने से आउटपुट बदल सकता है। 

यहां उस प्रश्न का एक उदाहरण दिया गया है जिसमें एक आंतरिक संयुक्त विवरण लिखना शामिल है

यह एक काफी कठिन प्रश्न है, जहां उम्मीदवारों को कुल खर्च के प्रतिशत के रूप में ऑर्डर का आकार प्रदर्शित करने के लिए कहा जाता है।
 
 

उन्नत अवधारणा N1: दिनांक-समय में हेरफेर

 
अनुभवी पेशेवरों के लिए SQL साक्षात्कार प्रश्न
 

डेटाबेस में दिनांक और समय शामिल करना आम बात है, इसलिए किसी भी अनुभवी डेटा वैज्ञानिक को उनके साथ काम करने का गहरा ज्ञान होना चाहिए। इस प्रकार का डेटा हमें घटनाओं के घटित होने के क्रम को ट्रैक करने, आवृत्ति में परिवर्तन, अंतराल की गणना करने और अन्य महत्वपूर्ण अंतर्दृष्टि प्राप्त करने की अनुमति देता है। कई बार इन ऑपरेशनों को करने के लिए SQL में डेट-टाइम मैनिपुलेशन की पूरी महारत की आवश्यकता होती है। तो इस तरह के कौशल वाले पेशेवरों को प्रतिस्पर्धी उम्मीदवारों पर फायदा होने वाला है। यदि आप अपने कौशल में 100% आश्वस्त नहीं हैं, तो नीचे वर्णित अवधारणाओं को देखें और देखें कि उनमें से कितने परिचित लगते हैं।

चूंकि SQL में डेटा को स्वरूपित करने के लिए कई अलग-अलग (लेकिन मान्य) दृष्टिकोण हैं, इसलिए महान कोडर्स को कम से कम उन सभी से परिचित होना चाहिए। साक्षात्कार के दौरान, काम पर रखने वाले प्रबंधक बुनियादी डेटा स्वरूपण अवधारणाओं के ज्ञान और कार्य के लिए सही कार्य चुनने के बारे में समझदारी से बात करने की क्षमता की अपेक्षा करते हैं। इसमें एक महत्वपूर्ण FORMAT () फ़ंक्शन का ज्ञान और फ़ंक्शन का पूर्ण उपयोग करने के लिए संबंधित सिंटैक्स का ज्ञान शामिल है। अन्य बुनियादी कार्यों, जैसे अभी () का ज्ञान भी अपेक्षित है। साथ ही, अनुभवी पेशेवरों के लिए समय-श्रृंखला डेटा और इसके उद्देश्य जैसी बुनियादी अवधारणाओं के बारे में पूछना बिल्कुल भी आसान नहीं होगा।

जिस नौकरी के लिए आप आवेदन कर रहे हैं, उसके संदर्भ पर विचार करना भी महत्वपूर्ण है। एक एआई या आईओटी कंपनी सेंसर से एकत्र किए गए डेटा को ट्रैक करने से अधिक चिंतित होगी, जबकि स्टॉक ट्रेडिंग ऐप के लिए आपको दिन, सप्ताह या महीने के दौरान कीमतों में उतार-चढ़ाव को ट्रैक करने की आवश्यकता हो सकती है।

कुछ मामलों में, नियोक्ता SQL में अधिक उन्नत दिनांक/समय कार्यों के बारे में पूछ सकते हैं, जैसे CAST (), EXTRACT (), या DATE_TRUNC ()। ये फ़ंक्शन अमूल्य हो सकते हैं जब आप बड़ी मात्रा में डेटा के साथ काम कर रहे हों जिसमें तिथियां हों। एक अनुभवी डेटा वैज्ञानिक को प्रत्येक फ़ंक्शन और उसके अनुप्रयोगों के उद्देश्य को जानना चाहिए। एक आदर्श परिदृश्य में, उसे अतीत में उनका उपयोग करने का अनुभव होना चाहिए।

SQL में सबसे जटिल दिनांक-समय में हेरफेर बुनियादी और उन्नत कार्यों के संयोजन को शामिल करने वाला है। इसलिए अधिक बुनियादी FORMAT (), Now (), CURRENT_DATE, और CURRENT_TIME से शुरू होकर, और ऊपर वर्णित अधिक उन्नत कार्यों सहित, उन सभी को जानना आवश्यक है। एक अनुभवी डेटा वैज्ञानिक के रूप में, आपको यह भी पता होना चाहिए कि INTERVAL क्या करता है और इसका उपयोग कब करना है।

यहाँ Airbnb साक्षात्कारों में पूछे गए प्रश्न का एक उदाहरण दिया गया है, जहां उम्मीदवारों को Airbnb के विकास को ट्रैक करने के लिए उपलब्ध डेटा का उपयोग करना चाहिए।
 
 

परिसर:

 
इस प्रश्न में, उम्मीदवारों को प्रत्येक वर्ष साइन अप किए गए मेजबानों की संख्या में परिवर्तन के आधार पर Airbnb के विकास को ट्रैक करने के लिए कहा जाता है। दूसरे शब्दों में, हम प्रत्येक वर्ष के लिए वृद्धि के संकेतक के रूप में नए पंजीकृत मेजबानों की संख्या का उपयोग करेंगे। हम पिछले और चालू वर्ष के बीच मेजबानों की संख्या में अंतर की गणना करके और पिछले वर्ष के दौरान पंजीकृत मेजबानों की संख्या से उस संख्या को विभाजित करके विकास दर का पता लगाएंगे। फिर हम परिणाम को 100 से गुणा करके प्रतिशत मान ज्ञात करेंगे।

आउटपुट तालिका में चालू वर्ष में पिछले वर्ष में मेजबानों की संख्या के लिए कॉलम और संबंधित डेटा होना चाहिए, और साल-दर-साल वृद्धि का प्रतिशत होना चाहिए। प्रतिशत को निकटतम पूर्ण संख्या में गोल किया जाना चाहिए और पंक्तियों को वर्ष के आधार पर आरोही क्रम में क्रमबद्ध किया जाना चाहिए।
 
 

उपाय:

 
इस प्रश्न का उत्तर देने के लिए, एक उम्मीदवार को 'airbnb_search_details' नामक तालिका के साथ काम करना चाहिए, जिसमें कई कॉलम शामिल हैं। हमें जिस कॉलम की आवश्यकता है उसका लेबल 'host_since' है, जो उस वर्ष, महीने और उस दिन को दर्शाता है जब होस्ट ने पहली बार वेबसाइट के लिए साइन अप किया था। इस अभ्यास के लिए, महीना और दिन अप्रासंगिक हैं, इसलिए सबसे पहले हमें जो करना होगा, वह है वर्ष को मूल्य से निकालना। फिर हमें एक दृश्य बनाना होगा जिसमें चालू वर्ष, पिछले वर्ष के लिए अलग-अलग कॉलम और उस वर्ष में मेजबानों की कुल संख्या शामिल हो। 

Select       extract(year FROM host_since::DATE) FROM airbnb_search_details WHERE host_since IS NOT NULL

अब तक, हमने दो काम किए हैं:

  1. हमने केवल उन पंक्तियों को शामिल करना सुनिश्चित किया है जहां host_since कॉलम खाली नहीं है।
  2. हमने डेटा से वर्ष निकाला है और इसे DATE मान के रूप में डाला है।
Select       extract(year FROM host_since::DATE)       count(id) as current_year_host FROM airbnb_search_details WHERE host_since IS NOT NULL GROUP BY extract(year FROM host_since::DATE) ORDER BY year asc

फिर हम आईडी गिनने के लिए आगे बढ़ते हैं और हर साल ग्रुप बाय क्लॉज सेट करते हैं। और इसे आरोही क्रम में प्रदर्शित करें। 

यह हमें दो स्तंभों वाली एक तालिका देनी चाहिए: वर्ष, और उस वर्ष पंजीकृत मेजबानों की संख्या। हमारे पास अभी भी प्रश्न को हल करने के लिए आवश्यक पूरी तस्वीर नहीं है, लेकिन यह सही दिशा में एक कदम है। हमें पिछले वर्ष के दौरान साइन अप किए गए मेजबानों के लिए अलग कॉलम की भी आवश्यकता है। यह वह जगह है जहाँ LAG () फ़ंक्शन आता है।

SELECT       Year,       current_year_host,       LAG(current_year_host, 1) OVER (ORDER BY year) as prev_year_host Select       extract(year FROM host_since::DATE)       count(id) as current_year_host FROM airbnb_search_details WHERE host_since IS NOT NULL GROUP BY extract(year FROM host_since::DATE) ORDER BY year asc

यहां, हमने तीसरा कॉलम जोड़ा, जिसे 'prev_year_host' लेबल किया जाएगा और इसके मान 'current_year_host' से आने वाले हैं, एक पंक्ति की देरी को छोड़कर। यहां बताया गया है कि यह कैसा दिख सकता है:

अनुभवी पेशेवरों के लिए SQL साक्षात्कार प्रश्न
 

तालिका को इस प्रकार व्यवस्थित करने से अंतिम वृद्धि दर की गणना करना बहुत सुविधाजनक हो जाता है। समीकरण में प्रत्येक मान के लिए हमारे पास एक अलग कॉलम है। अंत में, हमारा कोड कुछ इस तरह दिखना चाहिए:

SELECT year,       current_year_host,       prev_year_host,       round(((current_year_host - prev_year_host)/(cast(prev_year_host AS numeric)))*100) estimated_growth FROM   (SELECT year,           current_year_host,           LAG(current_year_host, 1) OVER (ORDER BY year) AS prev_year_host   FROM     (SELECT extract(year                     FROM host_since::date) AS year,             count(id) current_year_host       FROM airbnb_search_details       WHERE host_since IS NOT NULL       GROUP BY extract(year                       FROM host_since::date)       ORDER BY year) t1) t2

यहां, हम एक और क्वेरी और एक अन्य कॉलम जोड़ते हैं जहां हम विकास दर की गणना करते हैं। हमें प्रारंभिक परिणाम को 100 से गुणा करना चाहिए और कार्य की आवश्यकताओं को पूरा करने के लिए इसे गोल करना चाहिए। 

यही इस कार्य का समाधान है। यह स्पष्ट है कि कार्य को पूरा करने के लिए दिनांक-समय में हेरफेर कार्य आवश्यक थे। 
 
 

उन्नत अवधारणा N2: विंडो कार्य और विभाजन

 
अनुभवी पेशेवरों के लिए SQL साक्षात्कार प्रश्न
 

SQL विंडो फ़ंक्शंस जटिल, फिर भी कुशल SQL क्वेरी लिखने के लिए सबसे महत्वपूर्ण अवधारणाओं में से एक हैं। अनुभवी पेशेवरों से अपेक्षा की जाती है कि वे खिड़की के कार्यों का गहन व्यावहारिक और सैद्धांतिक ज्ञान रखें। इसमें यह जानना शामिल है कि ओवर क्लॉज क्या है और इसके उपयोग में महारत हासिल करना। साक्षात्कारकर्ता पूछ सकते हैं कि ओवर क्लॉज समग्र कार्यों को विंडो फ़ंक्शन में कैसे बदल सकता है। आपसे उन तीन समग्र कार्यों के बारे में भी पूछा जा सकता है जिनका उपयोग विंडो फ़ंक्शन के रूप में किया जा सकता है। अनुभवी डेटा वैज्ञानिकों को अन्य, गैर-समुच्चय विंडो कार्यों के बारे में भी पता होना चाहिए।

विंडो फ़ंक्शंस का सर्वोत्तम उपयोग करने के लिए, किसी को यह भी पता होना चाहिए कि पार्टिशन बाय क्लॉज क्या है और इसका उपयोग कैसे करना है। आपको इसे समझाने और कुछ उपयोग के मामलों के उदाहरण प्रदान करने के लिए कहा जा सकता है। कभी-कभी आपको ORDER_BY खंड का उपयोग करके विभाजन के भीतर पंक्तियों को व्यवस्थित करना होगा।

जो उम्मीदवार प्रत्येक विंडो फ़ंक्शन, जैसे ROW_NUMBER () का संपूर्ण ज्ञान प्रदर्शित कर सकते हैं, उन्हें एक फायदा होगा। कहने की जरूरत नहीं है कि केवल सैद्धांतिक ज्ञान ही पर्याप्त नहीं है - पेशेवरों को भी विभाजन के साथ या बिना व्यवहार में उनका उपयोग करने का अनुभव होना चाहिए। उदाहरण के लिए, एक अनुभवी पेशेवर को RANK () और DENSE_RANK () के बीच के अंतरों को समझाने में सक्षम होना चाहिए। एक आदर्श उम्मीदवार को कुछ सबसे उन्नत अवधारणाओं को जानना चाहिए, जैसे कि विभाजन के भीतर फ्रेम, और उन्हें स्पष्ट रूप से समझाने में सक्षम होना चाहिए।

महान उम्मीदवारों को NTH_VALUE() फ़ंक्शन के उपयोग के बारे में भी बताना चाहिए। इस फ़ंक्शन के विकल्पों का उल्लेख करने में कोई दिक्कत नहीं होगी, जैसे कि FIRST_VALUE() और LAST_VALUE() फ़ंक्शन। कंपनियां अक्सर चतुर्थक, क्वांटाइल और पर्सेंटाइल को सामान्य रूप से मापना पसंद करती हैं। इस ऑपरेशन को करने के लिए, डेटा वैज्ञानिकों को पता होना चाहिए कि NTILE () विंडो फ़ंक्शन का भी उपयोग कैसे करें।

SQL में, आमतौर पर किसी कार्य को करने के कई तरीके होते हैं। फिर भी, विंडो फ़ंक्शन सामान्य, लेकिन जटिल संचालन करने का सबसे आसान तरीका प्रदान करते हैं। ऐसे विंडो फ़ंक्शन का एक अच्छा उदाहरण LAG () या LEAD () है, इसलिए आपको उनसे भी परिचित होना चाहिए। उदाहरण के लिए, आइए एक कठिन Airbnb साक्षात्कार प्रश्न के पिछले समाधान से एक उदाहरण देखें:

पिछले वर्ष में मेजबानों की संख्या प्रदर्शित करने के लिए, हमने ओवर स्टेटमेंट के साथ LAG () फ़ंक्शन का उपयोग किया। यह कई अन्य तरीकों से किया जा सकता था, लेकिन विंडो फ़ंक्शंस ने हमें SQL कोड की केवल एक पंक्ति में वांछित परिणाम प्राप्त करने की अनुमति दी:

LAG(current_year_host, 1) OVER (वर्ष के आधार पर) prev_year_host के रूप में

बहुत सी कंपनियों को एक निश्चित अवधि में विकास की गणना करने की आवश्यकता होती है। ऐसे असाइनमेंट को पूरा करने के लिए एलएजी () फ़ंक्शन अमूल्य हो सकता है।
 
 

एडवांस्ड कॉन्सेप्ट N3: मंथ ओवर मंथ ग्रोथ

 
अनुभवी पेशेवरों के लिए SQL साक्षात्कार प्रश्न
 

कई संगठन अपने स्वयं के प्रदर्शन को मापने के लिए डेटा विश्लेषण का उपयोग करते हैं। यह एक विशिष्ट निवेश पर विपणन अभियानों या आरओआई की प्रभावशीलता को मापने के लिए आवश्यक हो सकता है। इस तरह के विश्लेषण को करने के लिए SQL के गहन ज्ञान की आवश्यकता होती है, जैसे दिनांक, समय और विंडो फ़ंक्शंस।

डेटा वैज्ञानिकों को भी डेटा को स्वरूपित करने और इसे प्रतिशत या किसी अन्य रूप में प्रदर्शित करने में अपने कौशल को साबित करना होगा। सामान्य तौर पर, उन व्यावहारिक प्रश्नों को हल करने के लिए जहां आपको महीने-दर-महीने वृद्धि की गणना करनी होती है, आपको कई कौशल सेटों के संयोजन का उपयोग करना चाहिए। कुछ आवश्यक अवधारणाएं उन्नत होंगी (विंडो फ़ंक्शन, दिनांक-समय में हेरफेर), जबकि अन्य बुनियादी (कुल कार्य और सामान्य SQL कथन) होंगे।

आइए अमेज़ॅन पर साक्षात्कारकर्ताओं द्वारा पूछे गए एक उदाहरण प्रश्न को देखें।

परिसर:

 
इस प्रश्न में, हमें खरीद की एक तालिका के साथ काम करना है और मासिक वृद्धि या राजस्व में गिरावट की गणना करना है। अंतिम परिणाम को एक विशिष्ट तरीके (YYYY-MM प्रारूप) में स्वरूपित किया जाना चाहिए और प्रतिशत को दूसरे निकटतम दशमलव तक गोल किया जाना चाहिए। 

उपाय:

 
इस तरह के कार्य पर काम करते समय, आपको सबसे पहले जो करना है वह तालिका को समझना है। प्रश्न का उत्तर देने के लिए आपको उन स्तंभों की भी पहचान करनी चाहिए जिनके साथ आपको काम करने की आवश्यकता है। और आपका आउटपुट कैसा दिखने वाला है।

हमारे उदाहरण में, डेटा मानों में ऑब्जेक्ट प्रकार होता है, इसलिए हमें उन्हें दिनांक प्रकारों में बदलने के लिए CAST() फ़ंक्शन का उपयोग करना होगा।

SELECT   to_char(cast(created_at as date), 'YYYY-MM') FROM sf_transactions

प्रश्न तिथियों के लिए एक प्रारूप भी निर्दिष्ट करता है, इसलिए हम इस प्रारूप में दिनांक को आउटपुट करने के लिए SQL में theTO_CHAR () फ़ंक्शन का उपयोग कर सकते हैं।

वृद्धि की गणना करने के लिए, हमें उस तिथि के लिए कुल बिक्री की मात्रा प्राप्त करने के लिए create_at और SUM() कुल फ़ंक्शन का भी चयन करना चाहिए। 

SELECT   to_char(cast(created_at as date), 'YYYY-MM'),   created_at,   sum(value) FROM sf_transactions

इस बिंदु पर, हमें फिर से विंडो फ़ंक्शंस का उपयोग करना होगा। विशेष रूप से, हम पिछले महीने की मात्रा तक पहुँचने और इसे एक अलग कॉलम के रूप में प्रदर्शित करने के लिए LAG () फ़ंक्शन का उपयोग करने जा रहे हैं। उसके लिए, हमें एक ओवर क्लॉज की भी आवश्यकता होगी।

SELECT   to_char(cast(created_at as date), 'YYYY-MM') AS year_month,   created_at,   sum(value)   lag(sum(value), 1) OVER (ORDER BY created_at::date) FROM sf_transactions GROUP BY created_at

अब तक हमने जो कोड लिखा है, उसके आधार पर हमारी टेबल कुछ इस तरह दिखेगी:

अनुभवी पेशेवरों के लिए SQL साक्षात्कार प्रश्न
 

यहां, हमारे पास योग कॉलम में दिनांक और संबंधित कुल मान हैं, और अंतराल कॉलम में अंतिम तिथि के मान हैं। अब हम मूल्यों को सूत्र में जोड़ सकते हैं और विकास दर को एक अलग कॉलम में प्रदर्शित कर सकते हैं।

हमें अनावश्यक create_at कॉलम को भी हटा देना चाहिए, और GROUP BY और ORDER BY क्लॉज को वर्ष_माह में बदल देना चाहिए।

SELECT   to_char(cast(created_at as date), '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 year_month

एक बार जब हम कोड चलाते हैं, तो हमारी तालिका में केवल वे कॉलम शामिल होने चाहिए जो हमारी गणना के लिए आवश्यक हैं।

अनुभवी पेशेवरों के लिए SQL साक्षात्कार प्रश्न
 

अब हम अंत में समाधान पर पहुंच सकते हैं। यहाँ अंतिम कोड कैसा दिखेगा:

SELECT to_char(created_at::date, 'YYYY-MM') AS year_month,       round(((sum(value) - lag(sum(value), 1) OVER w) / (lag(sum(value), 1) OVER w)) * 100, 2) AS revenue_diff_pct FROM sf_transactions GROUP BY year_month WINDOW w AS (         ORDER BY to_char(created_at::date, 'YYYY-MM')) ORDER BY year_month ASC


 

इस कोड में, हम पिछले उदाहरण से दो कॉलम मान लेते हैं और उनके बीच के अंतर की गणना करते हैं। ध्यान दें कि हम अपने कोड की दोहराव को कम करने के लिए विंडो उपनामों का भी उपयोग करते हैं।

फिर, एल्गोरिथम के अनुसार, हम इसे चालू माह के राजस्व से विभाजित करते हैं और प्रतिशत मूल्य प्राप्त करने के लिए इसे 100 से गुणा करते हैं। अंत में, हम प्रतिशत मान को दो दशमलव बिंदुओं पर गोल करते हैं। हम उस उत्तर पर पहुँचते हैं जो कार्य की सभी आवश्यकताओं को पूरा करता है। 

उन्नत अवधारणा N4: मंथन दरें

 
भले ही यह विकास के विपरीत है, मंथन एक महत्वपूर्ण मीट्रिक भी है। कई कंपनियां अपनी मंथन दरों पर नज़र रखती हैं, खासकर यदि उनका व्यवसाय मॉडल सदस्यता-आधारित है। इस तरह, वे खोई हुई सदस्यताओं या खातों की संख्या को ट्रैक कर सकते हैं और इसके कारणों का अनुमान लगा सकते हैं। एक अनुभवी डेटा वैज्ञानिक से यह जानने की उम्मीद की जाएगी कि मंथन दरों की गणना के लिए किन कार्यों, कथनों और खंडों का उपयोग करना है।

सदस्यता डेटा बहुत निजी होता है और इसमें निजी उपयोगकर्ता जानकारी होती है। डेटा वैज्ञानिकों के लिए यह जानना भी महत्वपूर्ण है कि ऐसे डेटा को उजागर किए बिना उसके साथ कैसे काम किया जाए। अक्सर मंथन दरों की गणना में सामान्य तालिका अभिव्यक्ति शामिल होती है, जो अपेक्षाकृत नई अवधारणा है। सर्वोत्तम डेटा वैज्ञानिकों को पता होना चाहिए कि सीटीई क्यों उपयोगी हैं और उनका उपयोग कब करना है। पुराने डेटाबेस के साथ काम करते समय, जहां सीटीई उपलब्ध नहीं हैं, एक आदर्श उम्मीदवार को अभी भी काम पूरा करने में सक्षम होना चाहिए।

यहाँ एक कठिन कार्य का उदाहरण दिया गया है. Lyft में साक्षात्कार करने वाले उम्मीदवारों को कंपनी में ड्राइवरों की मंथन दर की गणना करने के लिए यह असाइनमेंट प्राप्त होता है।

इस समस्या को हल करने के लिए, डेटा वैज्ञानिकों को केस/जब स्टेटमेंट्स, विंडो फ़ंक्शंस जैसे LAG (), साथ ही FROM / WHERE, और अन्य बुनियादी क्लॉज़ का उपयोग करना चाहिए। 

निष्कर्ष

 
कई वर्षों तक डेटा वैज्ञानिक के रूप में काम करना निश्चित रूप से सीवी पर प्रभावशाली लगता है, और आपको कई साक्षात्कार मिलेंगे। हालाँकि, एक बार जब आप दरवाजे पर अपना पैर जमा लेते हैं, तब भी आपको वर्षों के अनुभव के पूरक के लिए ज्ञान प्रदर्शित करने की आवश्यकता होती है। भले ही आपके पास व्यापक अनुभव हो SQL में प्रश्न लिखना, यह जैसे संसाधनों का उपयोग करने के लिए चोट नहीं पहुंचाता है स्ट्रैट स्क्रैच अपने ज्ञान को ताज़ा करने के लिए।

 
 
नैट रोसीडि एक डेटा वैज्ञानिक और उत्पाद रणनीति में है। वह एनालिटिक्स पढ़ाने वाले एक सहायक प्रोफेसर भी हैं, और के संस्थापक हैं स्ट्रैट स्क्रैच, शीर्ष कंपनियों के वास्तविक साक्षात्कार प्रश्नों के साथ डेटा वैज्ञानिकों को उनके साक्षात्कार के लिए तैयार करने में मदद करने वाला एक मंच। उसके साथ जुड़ें ट्विटर: स्ट्रैट स्क्रैच or लिंक्डइन.

स्रोत: https://www.kdnuggets.com/2022/01/sql-interview-questions-experienced-professionals.html

समय टिकट:

से अधिक केडनगेट्स