SQL साक्षात्कार की तैयारी · पाठ

पूर्ण मॉक इंटरव्यू समस्या-संग्रह

इंटरव्यू जैसी परिस्थितियों में समय-सीमा के भीतर जॉइन, विंडो और CTE को मिलाने वाली शुरू से अंत तक की समस्याएँ

पाठ 4, कुल 4 में से13 चरण

पूर्ण मॉक इंटरव्यू समस्या-संग्रह, CoddyKit पर SQL साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

SQL साक्षात्कार चरण कैसे चलता है

यह अंतिम अभ्यास आपको साक्षात्कार जैसी परिस्थितियों में जोड़, विंडो और CTE को मिलाने वाली पूरी तरह से अभ्यास की गई समस्याओं से गुज़ारता है। पहले उस मेटा-कौशल पर ध्यान दें: साक्षात्कार कक्ष में कैसे व्यवहार करना है।

  • समस्या को दोहराएँ और स्कीमा की पुष्टि करें।
  • कोड लिखने से पहले सीमांत स्थितियों, जैसे NULL मान, बराबरी और डुप्लिकेट, को स्पष्ट करें।
  • अपना तरीका समझाएँ, फिर प्रश्न लिखें।
  • मन में एक छोटे नमूने पर परीक्षण करें।

साक्षात्कारकर्ता आपके अंतिम प्रश्न जितना ही आपकी प्रक्रिया को भी परखते हैं।

साझा स्कीमा

नीचे दी गई सभी समस्याएँ इस छोटी ऑनलाइन-वाणिज्य स्कीमा का उपयोग करती हैं। इसे एक बार पढ़ लें, ताकि हर प्रश्न समझ में आए।

  • customers(id, name, country)
  • orders(id, customer_id, order_date, status, amount)
  • order_items(order_id, product_id, quantity)
  • products(id, name, category, price)

इसे ध्यान में रखें; पाठ के बाकी हिस्से में इन्हीं तालिकाओं का संदर्भ दिया गया है।

-- orders.status is one of: 'paid','pending','cancelled'
-- amount is the order total in the customer's currency

समस्या 1: खर्च के आधार पर शीर्ष ग्राहक

“कुल भुगतान किए गए खर्च के आधार पर शीर्ष 3 ग्राहकों के नाम और उनका कुल खर्च लौटाएँ।”

तरीका: भुगतान किए गए ऑर्डरों तक फ़िल्टर करें, प्रति ग्राहक समेकन करें, क्रमबद्ध करें और LIMIT लगाएँ। यह भी बताएँ कि रद्द किए गए और लंबित ऑर्डरों को बाहर रखा गया है; साक्षात्कारकर्ता अक्सर ऐसी सीमांत स्थिति जानबूझकर रखते हैं।

SELECT c.name,
       SUM(o.amount) AS total_spend
FROM customers c
JOIN orders o ON o.customer_id = c.id
WHERE o.status = 'paid'
GROUP BY c.id, c.name
ORDER BY total_spend DESC
LIMIT 3;

समस्या 2: जिन ग्राहकों ने कभी ऑर्डर नहीं किया

“उन ग्राहकों की सूची दें जिन्होंने कभी ऑर्डर नहीं दिया।” यह एंटी-जोड़ पैटर्न है। दो साफ़ समाधान हैं: IS NULL के साथ LEFT JOIN, या NOT EXISTS।

NOT EXISTS को प्राथमिकता दें, क्योंकि यह NULL-सुरक्षित है, जबकि NOT IN ऐसा नहीं है। इस अंतर का उल्लेख करें; साक्षात्कारकर्ता वास्तव में इसी बात की तलाश कर रहे होते हैं।

-- NULL-safe anti-join
SELECT c.id, c.name
FROM customers c
WHERE NOT EXISTS (
  SELECT 1
  FROM orders o
  WHERE o.customer_id = c.id
);

समस्या 3: दूसरी सबसे बड़ी ऑर्डर राशि

“दूसरी सबसे बड़ी अलग ऑर्डर राशि खोजें।” बराबरी से सुरक्षित सबसे साफ़ समाधान DENSE_RANK का उपयोग करता है, ताकि समान राशियों को एक ही रैंक मिले।

बताने योग्य सीमांत स्थिति: यदि दूसरी अलग राशि मौजूद नहीं है, तो कोई पंक्ति नहीं लौटेगी। आवश्यकताओं के आधार पर यह स्वीकार्य हो सकता है या इसके लिए COALESCE आवरण की ज़रूरत पड़ सकती है।

SELECT amount
FROM (
  SELECT amount,
         DENSE_RANK() OVER (ORDER BY amount DESC) AS rnk
  FROM orders
) ranked
WHERE rnk = 2;

समस्या 4: प्रत्येक ग्राहक का नवीनतम ऑर्डर

“प्रत्येक ग्राहक का सबसे हाल का ऑर्डर लौटाएँ।” यह प्रत्येक कुंजी के लिए नवीनतम पंक्ति रखने वाला पैटर्न है, जिसे ग्राहक के आधार पर विभाजित करके और तारीख के अवरोही क्रम में व्यवस्थित करके ROW_NUMBER से हल किया जाता है।

बराबर तारीख वाले दो ऑर्डरों की स्थिति में परिणाम निश्चित रखने के लिए दूसरा क्रम-निर्धारक, जैसे ऑर्डर आईडी, जोड़ें। अच्छे उम्मीदवार इस विवरण को अवश्य शामिल करते हैं।

SELECT customer_id, id AS order_id, order_date, amount
FROM (
  SELECT o.*,
         ROW_NUMBER() OVER (
           PARTITION BY customer_id
           ORDER BY order_date DESC, id DESC
         ) AS rn
  FROM orders o
) t
WHERE rn = 1;

समस्या 5: महीने-दर-महीने वृद्धि

“हर महीने का भुगतान किया गया राजस्व और पिछले महीने की तुलना में उसका प्रतिशत बदलाव निकालें।” इसमें एक CTE में समेकन और LAG का उपयोग होता है।

पहले चरण में महीने के आधार पर समेकन करें; दूसरे चरण में LAG का उपयोग करके हर महीने की तुलना पिछले महीने से करें। भाग देने की प्रक्रिया को सुरक्षित बनाएँ, ताकि पहले महीने में, जब पिछला महीना न हो, कोई त्रुटि न आए।

WITH monthly AS (
  SELECT DATE_TRUNC('month', order_date) AS mth,
         SUM(amount) AS revenue
  FROM orders
  WHERE status = 'paid'
  GROUP BY DATE_TRUNC('month', order_date)
)
SELECT mth,
       revenue,
       LAG(revenue) OVER (ORDER BY mth) AS prev_revenue,
       ROUND(
         100.0 * (revenue - LAG(revenue) OVER (ORDER BY mth))
         / NULLIF(LAG(revenue) OVER (ORDER BY mth), 0), 2
       ) AS pct_change
FROM monthly
ORDER BY mth;

समस्या 6: प्रत्येक श्रेणी का शीर्ष उत्पाद

“प्रत्येक श्रेणी के लिए कुल मात्रा के आधार पर सबसे अधिक बिकने वाला उत्पाद लौटाएँ।” यह प्रत्येक समूह के शीर्ष-N वाला पैटर्न है: समेकन करें, विभाजन के भीतर रैंक दें और रैंक 1 तक फ़िल्टर करें।

यदि बराबरी महत्वपूर्ण है, तो ROW_NUMBER के बजाय RANK चुनें, ताकि समान रूप से शीर्ष पर रहने वाले सभी उत्पाद दिखाई दें। इस चुनाव का कारण बताने से पता चलता है कि आप दोनों के बीच का अंतर समझते हैं।

WITH sales AS (
  SELECT p.category,
         p.name AS product,
         SUM(oi.quantity) AS qty
  FROM order_items oi
  JOIN products p ON p.id = oi.product_id
  GROUP BY p.category, p.name
)
SELECT category, product, qty
FROM (
  SELECT s.*,
         ROW_NUMBER() OVER (
           PARTITION BY category ORDER BY qty DESC
         ) AS rn
  FROM sales s
) r
WHERE rn = 1;

समस्या 7: राजस्व का संचयी योग

“हर दिन के भुगतान किए गए राजस्व का चलता हुआ, यानी संचयी, कुल दिखाएँ।” क्रमबद्ध फ्रेम के साथ विंडो SUM स्वयं-जोड़ के बिना चलता हुआ कुल तैयार करता है।

वास्तविक पंक्ति-दर-पंक्ति संचय के लिए ROWS फ्रेमिंग का उल्लेख करें; बराबर तारीखों पर डिफ़ॉल्ट RANGE फ्रेम अप्रत्याशित व्यवहार कर सकता है।

SELECT order_date,
       SUM(daily) OVER (
         ORDER BY order_date
         ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
       ) AS running_total
FROM (
  SELECT order_date, SUM(amount) AS daily
  FROM orders
  WHERE status = 'paid'
  GROUP BY order_date
) d
ORDER BY order_date;

समस्या 8: लगातार सक्रिय दिन

“ऐसे उपयोगकर्ता खोजें जिनके पास भुगतान वाला ऑर्डर रखने वाले कम-से-कम 3 लगातार दिन हों।” यह पंक्ति-संख्या के अंतर वाली युक्ति का उपयोग करने वाला अंतराल और द्वीप पैटर्न है।

प्रति उपयोगकर्ता पंक्ति संख्या में से तारीख घटाने पर लगातार चलने वाले क्रम के भीतर एक स्थिर मान मिलता है। इसलिए उस स्थिर मान के आधार पर समूह बनाकर गिनती करें। यह वरिष्ठ स्तर की समझ का संकेत है।

WITH days AS (
  SELECT DISTINCT customer_id, order_date
  FROM orders WHERE status = 'paid'
),
grp AS (
  SELECT customer_id, order_date,
         order_date - (ROW_NUMBER() OVER (
           PARTITION BY customer_id ORDER BY order_date
         ) * INTERVAL '1 day') AS island
  FROM days
)
SELECT customer_id, COUNT(*) AS streak_len
FROM grp
GROUP BY customer_id, island
HAVING COUNT(*) >= 3;

प्रदर्शन और सामान्य गलतियाँ

सही प्रश्न लिखने के बाद साक्षात्कारकर्ता पूछते हैं, “आप इसे तेज़ कैसे बनाएँगे?” और सामान्य गलतियों पर ध्यान देते हैं। यह जाँच-सूची तैयार रखें:

  • जोड़ और फ़िल्टर वाले स्तंभों पर अनुक्रमणिका बनाएँ, जैसे orders(customer_id, status); WHERE में अनुक्रमित स्तंभों पर फ़ंक्शन लगाने से बचें।
  • बड़े एंटी-जोड़ों के लिए IN के बजाय EXISTS को प्राथमिकता दें; NULL वाले NOT IN से चुपचाप कुछ भी वापस नहीं मिलता।
  • बाहरी-जोड़ वाले स्तंभ पर WHERE में फ़िल्टर लगाने से वह चुपचाप आंतरिक जोड़ बन जाता है।
  • शीर्ष-N परिणामों को निश्चित रखने के लिए हमेशा दूसरा क्रम-निर्धारक जोड़ें।
  • बड़ी तालिकाओं पर क्रमिक स्कैन हो रहे हों, तो EXPLAIN योजना जाँचें।

त्वरित जाँच

आपको प्रत्येक ग्राहक का केवल सबसे हाल का ऑर्डर चाहिए, और दो ऑर्डरों की तारीख समान हो सकती है।

पुनरावलोकन: पूर्ण अभ्यास साक्षात्कार सेट

आपने साक्षात्कारों में सबसे अधिक पूछी जाने वाली समस्याओं को शुरू से अंत तक हल किया:

  • शीर्ष-N खर्च के लिए समेकन + LIMIT।
  • NOT EXISTS के साथ एंटी-जोड़ (NULL-सुरक्षित)।
  • Nवीं सबसे बड़ी राशि के लिए DENSE_RANK, प्रत्येक कुंजी की नवीनतम और प्रत्येक समूह के शीर्ष परिणाम के लिए ROW_NUMBER।
  • महीने-दर-महीने तुलना के लिए LAG, और संचयी योग के लिए SUM OVER।
  • लगातार क्रमों के लिए अंतराल और द्वीप वाली पंक्ति-संख्या युक्ति।
  • हर उत्तर का समापन अनुक्रमणिकाओं, EXPLAIN और सामान्य गलतियों पर चर्चा करके करें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “पूर्ण मॉक इंटरव्यू समस्या-संग्रह” पाठ निःशुल्क है?

हाँ—“पूर्ण मॉक इंटरव्यू समस्या-संग्रह” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“पूर्ण मॉक इंटरव्यू समस्या-संग्रह” में मैं क्या सीखूँगा?

इंटरव्यू जैसी परिस्थितियों में समय-सीमा के भीतर जॉइन, विंडो और CTE को मिलाने वाली शुरू से अंत तक की समस्याएँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“पूर्ण मॉक इंटरव्यू समस्या-संग्रह” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?

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

इस पाठ्यक्रम के सभी पाठ

  1. 3NF तक सामान्यीकरण
  2. ER मॉडलिंग और संबंधों की कार्डिनैलिटी
  3. स्टार स्कीमा और डेटा वेयरहाउस डिज़ाइन
  4. पूर्ण मॉक इंटरव्यू समस्या-संग्रह
← SQL साक्षात्कार की तैयारी पर वापस जाएँ