{
  "assessmentTests": {
    "sql_test": {
      "name": "SQL चाचणी",
      "desc": "फिल्टरिंग, जॉइन्स, अॅग्रिगेशन, सबक्वेरीज आणि विंडो फंक्शन्सवरील 30 परिस्थितीवर आधारित प्रश्न — तुमचे SQL कौशल्य नोकरीच्या जाहिरातीत “SQL प्रवीणता” म्हणजे जे अपेक्षित असते त्याच्याशी जुळते का ते जाणून घ्या.",
      "recommendation": "तुमचे SQL कौशल्य प्रोफाइल",
      "results": {
        "beginner": {
          "name": "नवशिके",
          "desc": "तुम्ही चालणारे SELECT स्टेटमेंट लिहू शकता आणि काही अटींवर फिल्टर करू शकता, पण तुम्ही चुकवलेले प्रश्न सिंटॅक्सपेक्षा NULL हाताळणी आणि जॉइनच्या कार्यपद्धतीभोवती एकवटलेले आहेत — एखाद्या कॉलमची NULL शी = वापरून तुलना करणे, LEFT JOIN प्रत्यक्षात काय राखून ठेवतो, BETWEEN च्या सीमा कशा काम करतात. यापैकी कशाचाही संबंध तुम्ही डेटाबेसमध्ये कमकुवत असण्याशी नाही; हे असे विशिष्ट नियम आहेत ज्यांत मानक नियमांतून न शिकता चुकत-शिकत SQL शिकलेले लोक अडखळतात. कामाच्या ठिकाणी ते महत्त्वाचे आहेत, कारण प्रत्येक नियम असा बिंदू आहे जिथे क्वेरी खरी वाटणारी पण चुकीची रो संख्या देते.",
          "recommendation": "तीन गोष्टींपासून सुरुवात करा, या क्रमाने: WHERE col = NULL कधीही कशाशीही का जुळत नाही (आणि त्याऐवजी IS NULL का आवश्यक आहे), INNER JOIN जुळत नसलेल्या रो कशा वगळतो तर LEFT JOIN त्या कशा ठेवतो, आणि BETWEEN नेमकी कोणती टोके समाविष्ट करतो. मोड अॅनालिटिक्सचे SQL ट्यूटोरियल आणि पोस्टग्रेएसक्यूएल दस्तऐवजीकरण या तिन्ही गोष्टी चालवून पाहता येणाऱ्या उदाहरणांसह समजावतात."
        },
        "intermediate": {
          "name": "मध्यम",
          "desc": "तुम्ही दैनंदिन रिपोर्टिंग क्वेरी सहजपणे हाताळता — जॉइन्स, GROUP BY, सरळ फिल्टरिंग — आणि नेहमीच्या डॅशबोर्ड किंवा तात्कालिक विश्लेषणाच्या कामात तुम्ही मागे पडणार नाही. येथून प्रगत पातळीपर्यंतचा फरक बहुतेक वेळा क्लॉज एकमेकांवर परिणाम करतात तेव्हा काय होते यात आहे: जॉइन केलेल्या टेबलवरील WHERE क्लॉज शांतपणे LEFT JOIN ला पुन्हा INNER JOIN मध्ये बदलणे, अॅग्रिगेट लागू होण्यापूर्वी जॉइन रो संख्या वाढवून टाकणे, सबक्वेरीत एक NULL शिरल्यामुळे NOT IN काहीही न देता शांतपणे रिकामा निकाल देणे. असे बग झटपट नजर टाकली तर दिसत नाहीत आणि एखाद्याने एकूण संख्येची दुसऱ्या रिपोर्टशी तुलना केली तरच समोर येतात.",
          "recommendation": "प्रत्येक क्लॉज एकट्याने काय करतो यापेक्षा क्लॉज एकमेकांवर कसा परिणाम करतात यावर लक्ष केंद्रित करा: LEFT JOIN च्या उजव्या बाजूच्या कॉलमवर WHERE फिल्टर करणे, अॅग्रिगेट करण्यापूर्वी एक-ते-अनेक जॉइन्समुळे रो वाढणे, आणि NULL असताना NOT IN का बिघडतो (EXISTS सहसा बिघडत नाही). त्यानंतर HAVING विरुद्ध WHERE पाहा, कारण ती विभागणी दोन्ही क्लॉज वेगवेगळे माहीत असलेल्या लोकांनाही अडखळवते."
        },
        "advanced": {
          "name": "प्रगत",
          "desc": "बहुतेक नोकरीच्या जाहिरातींमध्ये \"मजबूत SQL\" म्हणजे हीच पातळी अपेक्षित असते. तुम्ही अनेक जॉइन असलेली क्वेरी वाचून ती चालवण्यापूर्वीच तिची रो संख्या सांगू शकता, निकाल बदलला इतकेच नव्हे तर तो का बदलला हे तुम्हाला माहीत असते, आणि जेव्हा स्पष्टतेसाठी तेच योग्य साधन असते तेव्हा तुम्ही नेस्टेड सबक्वेरीऐवजी CTE किंवा विंडो फंक्शन वापरता. ही श्रेणी सर्वोच्च श्रेणीपासून वेगळी करणारी गोष्ट म्हणजे कामाची संरक्षक बाजू: बरोबरी असताना कोणते रँकिंग फंक्शन वापरायचे, ट्रान्झॅक्शन समवर्ती सेशनपासून काय वेगळे ठेवते, आणि ON DELETE नियम नसेल तर डेटाबेस पातळीवर प्रत्यक्षात काय होते हे जाणणे.",
          "recommendation": "इतर लोकही ज्या डेटाला हात लावतात त्याचे संरक्षण करणाऱ्या भागांकडे वळा: बरोबरीच्या स्थितीत RANK, DENSE_RANK आणि ROW_NUMBER मधील फरक, COMMIT प्रत्यक्षात काय आणि कोणाला दृश्यमान करते, आणि DELETE वर फॉरेन कीचे वर्तन. विंडो फंक्शन्स आणि ट्रान्झॅक्शन आयसोलेशन या दोन्हींसाठी पुढचा टप्पा म्हणून द इंडेक्स न्यूजलेटरचे किंवा SQL फॉर डेव्ह्जचे सखोल लेख वापरा."
        },
        "expert": {
          "name": "तज्ज्ञ",
          "desc": "तुम्ही प्रत्येक विभागात सर्वोच्च गुण मिळवले — फिल्टरिंग आणि NULL सिमँटिक्स, जॉइन्स आणि सेट ऑपरेशन्स, अॅग्रिगेशन आणि सबक्वेरीज, आणि विंडो फंक्शन्स, CTE आणि कन्स्ट्रेंट्स. व्यवहारात याचा अर्थ असा की एखाद्या अनोळखी व्यक्तीची अनेक जॉइन असलेली रिपोर्ट क्वेरी तुमच्या हातात दिली, तर सिंटॅक्सनुसार ती काय करायला हवी हे सांगण्याऐवजी ती नेमकी तितकीच रो संख्या का देते हे तुम्ही समजावून सांगू शकता, आणि हे अधिक कठीण व अधिक मौल्यवान कौशल्य आहे. या पातळीवर क्वेरी भाषा क्वचितच मर्यादा ठरते; मर्यादा सहसा स्कीमा डिझाइन किंवा त्याखालील डेटाचा आकार असते.",
          "recommendation": "आता फायदा एक्झिक्युशन प्लॅन आणि डिझाइनमध्ये आहे: क्वेरी संथ आहे असे गृहीत धरण्यापूर्वी EXPLAIN आउटपुट वाचणे, इंडेक्सिंग धोरण हा मोफत फायदा नसून लिहिण्याच्या खर्चाशी केलेली तडजोड म्हणून पाहणे, आणि स्कीमा वाढत असताना टिकणारे नॉर्मलायझेशनचे निर्णय. जर तुमची एखाद्या पदासाठी चाचणी घेतली जात असेल, तर SQL च्या वैशिष्ट्यांची नावे सांगण्याऐवजी तुम्ही प्रॉडक्शनमध्ये शोधलेल्या क्वेरी बगचे, जसे की जॉइन फॅन-आउट किंवा NOT IN/NULL सापळा, वर्णन करा — त्यातून फक्त शब्दसंग्रह नव्हे तर तुमची विचारपद्धती दिसते."
        }
      },
      "questions": [
        {
          "question": "एका टेबलमध्ये NULL स्वीकारणारा कॉलम age आहे. तुम्ही SELECT * FROM users WHERE age = NULL चालवता. अनेक रो मध्ये age NULL असला तरी हे किती रो परत करते?",
          "options": [
            {
              "icon": "",
              "label": "age NULL असलेली प्रत्येक रो"
            },
            {
              "icon": "",
              "label": "शून्य रो"
            },
            {
              "icon": "",
              "label": "एक त्रुटी"
            },
            {
              "icon": "",
              "label": "सर्व रो"
            }
          ]
        },
        {
          "question": "तुम्ही SELECT DISTINCT department, role FROM employees चालवता. DISTINCT कशाच्या डुप्लिकेट्स काढून टाकतो?",
          "options": [
            {
              "icon": "",
              "label": "department आणि role यांचा प्रत्येक संयोग"
            },
            {
              "icon": "",
              "label": "फक्त डुप्लिकेट department मूल्ये"
            },
            {
              "icon": "",
              "label": "फक्त डुप्लिकेट role मूल्ये"
            },
            {
              "icon": "",
              "label": "काहीही नाही; DISTINCT फक्त एकाच कॉलमवर काम करतो"
            }
          ]
        },
        {
          "question": "WHERE name LIKE 'A_' वापरून name कॉलम फिल्टर केला आहे. यापैकी कोणती मूल्ये जुळतात: 'A', 'Al', 'Ana', 'Ally'?",
          "options": [
            {
              "icon": "",
              "label": "'A'"
            },
            {
              "icon": "",
              "label": "'Al'"
            },
            {
              "icon": "",
              "label": "'Ana' आणि 'Ally'"
            },
            {
              "icon": "",
              "label": "चारही मूल्ये"
            }
          ]
        },
        {
          "question": "price स्तंभ WHERE price BETWEEN 10 AND 20 वापरून फिल्टर केला आहे. price नेमके 10 किंवा नेमके 20 असलेल्या पंक्ती समाविष्ट होतात का?",
          "options": [
            {
              "icon": "",
              "label": "नाही, दोन्ही वगळल्या जातात"
            },
            {
              "icon": "",
              "label": "होय, दोन्ही समाविष्ट होतात"
            },
            {
              "icon": "",
              "label": "फक्त price = 10"
            },
            {
              "icon": "",
              "label": "फक्त price = 20"
            }
          ]
        },
        {
          "question": "orders टेबलमध्ये 10 पंक्ती आहेत, आणि त्यापैकी 3 मध्ये shipped_date NULL आहे. SELECT COUNT(*) FROM orders काय परत करते, आणि SELECT COUNT(shipped_date) FROM orders काय परत करते?",
          "options": [
            {
              "icon": "",
              "label": "10, मग 10"
            },
            {
              "icon": "",
              "label": "7, मग 7"
            },
            {
              "icon": "",
              "label": "10, मग 7"
            },
            {
              "icon": "",
              "label": "10, मग 3"
            }
          ]
        },
        {
          "question": "तुम्ही SELECT name, salary FROM employees ORDER BY 2 DESC चालवता. येथे 2 कशाकडे निर्देश करतो?",
          "options": [
            {
              "icon": "",
              "label": "सिंटॅक्स एरर"
            },
            {
              "icon": "",
              "label": "निकालातील दुसरी पंक्ती"
            },
            {
              "icon": "",
              "label": "2 हे शब्दशः मूल्य, टायब्रेकर म्हणून वापरलेले"
            },
            {
              "icon": "",
              "label": "SELECT यादीतील दुसरा स्तंभ, salary"
            }
          ]
        },
        {
          "question": "मानक SQL मध्ये 'Ana' || ' ' || 'Lee' चे मूल्य काय येते?",
          "options": [
            {
              "icon": "",
              "label": "सिंटॅक्स एरर"
            },
            {
              "icon": "",
              "label": "TRUE"
            },
            {
              "icon": "",
              "label": "'AnaLee'"
            },
            {
              "icon": "",
              "label": "'Ana Lee'"
            }
          ]
        },
        {
          "question": "यापैकी कोणते WHERE status IN ('open', 'pending', 'review') च्या अगदी समतुल्य आहे?",
          "options": [
            {
              "icon": "",
              "label": "WHERE status = 'open' AND status = 'pending' AND status = 'review'"
            },
            {
              "icon": "",
              "label": "WHERE status != 'open' OR status != 'pending' OR status != 'review'"
            },
            {
              "icon": "",
              "label": "WHERE status = 'open' OR status = 'pending' OR status = 'review'"
            },
            {
              "icon": "",
              "label": "WHERE status LIKE 'open,pending,review'"
            }
          ]
        },
        {
          "question": "customers मध्ये 100 पंक्ती आहेत; त्यापैकी 20 जणांनी कधीही ऑर्डर दिलेली नाही. तुम्ही SELECT c.id FROM customers c INNER JOIN orders o ON c.id = o.customer_id चालवता. ऑर्डर नसलेले ते 20 ग्राहक निकालात दिसतात का?",
          "options": [
            {
              "icon": "",
              "label": "होय, प्रत्येकी एकदा, o.id NULL म्हणून दिसेल"
            },
            {
              "icon": "",
              "label": "होय, पण ते WHERE क्लॉजमध्येही असतील तरच"
            },
            {
              "icon": "",
              "label": "No"
            },
            {
              "icon": "",
              "label": "होय, orders मधील प्रत्येक स्तंभासाठी एकदा याप्रमाणे पुन्हा पुन्हा दिसतात"
            }
          ]
        },
        {
          "question": "तुम्हाला ऑर्डर असोत वा नसोत, प्रत्येक ग्राहक हवा आहे, म्हणून तुम्ही SELECT c.id, o.total FROM customers c LEFT JOIN orders o ON c.id = o.customer_id WHERE o.total > 100 लिहिता. यातूनही शून्य ऑर्डर असलेले ग्राहक परत मिळतात का?",
          "options": [
            {
              "icon": "",
              "label": "नाही, ते INNER JOIN सारखे वागते"
            },
            {
              "icon": "",
              "label": "होय, LEFT JOIN प्रत्येक ग्राहक ठेवते"
            },
            {
              "icon": "",
              "label": "होय, o.total 0 म्हणून दिसेल"
            },
            {
              "icon": "",
              "label": "नाही, ते RIGHT JOIN सारखे वागते"
            }
          ]
        },
        {
          "question": "employees टेबलमध्ये id स्तंभ आणि manager_id स्तंभ आहे, जो दुसऱ्या पंक्तीच्या id कडे निर्देश करतो. प्रत्येक कर्मचाऱ्याच्या शेजारी त्याच्या मॅनेजरचे नाव दाखवण्यासाठी तुम्ही टेबलला स्वतःशीच जोडता: SELECT e.name, m.name FROM employees e JOIN employees m ON e.manager_id = m.id. या पद्धतीला काय म्हणतात?",
          "options": [
            {
              "icon": "",
              "label": "क्रॉस जॉइन"
            },
            {
              "icon": "",
              "label": "रिकर्सिव्ह जॉइन"
            },
            {
              "icon": "",
              "label": "सेल्फ-जॉइन"
            },
            {
              "icon": "",
              "label": "अवैध क्वेरी"
            }
          ]
        },
        {
          "question": "समान स्तंभ असलेल्या दोन SELECT क्वेरी UNION वापरून एकत्र केल्या आहेत. दोन्ही क्वेरींनी एकसारखीच पंक्ती परत केल्यास, अंतिम निकालात त्या पंक्तीच्या किती प्रती दिसतात?",
          "options": [
            {
              "icon": "",
              "label": "एक प्रत"
            },
            {
              "icon": "",
              "label": "दोन प्रती"
            },
            {
              "icon": "",
              "label": "शून्य प्रती"
            },
            {
              "icon": "",
              "label": "ती आधी कोणत्या क्वेरीत येते यावर ते अवलंबून आहे"
            }
          ]
        },
        {
          "question": "sizes टेबलमध्ये 3 पंक्ती आणि colors मध्ये 4 पंक्ती आहेत. SELECT * FROM sizes CROSS JOIN colors किती पंक्ती परत करते?",
          "options": [
            {
              "icon": "",
              "label": "7"
            },
            {
              "icon": "",
              "label": "12"
            },
            {
              "icon": "",
              "label": "3"
            },
            {
              "icon": "",
              "label": "0"
            }
          ]
        },
        {
          "question": "orders मध्ये ऑर्डर #100 साठी 1 पंक्ती आहे, आणि order_items मध्ये ऑर्डर #100 साठी 3 पंक्ती आहेत (प्रत्येक आयटमसाठी एक). तुम्ही SELECT o.id, o.total FROM orders o JOIN order_items i ON o.id = i.order_id WHERE o.id = 100 चालवता. ऑर्डर #100 साठी किती पंक्ती परत येतात?",
          "options": [
            {
              "icon": "",
              "label": "3"
            },
            {
              "icon": "",
              "label": "1"
            },
            {
              "icon": "",
              "label": "4"
            },
            {
              "icon": "",
              "label": "0"
            }
          ]
        },
        {
          "question": "SELECT c.name, o.id FROM customers c RIGHT JOIN orders o ON c.id = o.customer_id हे यापैकी कोणत्या क्वेरीसारख्याच पंक्ती परत करते?",
          "options": [
            {
              "icon": "",
              "label": "SELECT c.name, o.id FROM customers c INNER JOIN orders o ON c.id = o.customer_id"
            },
            {
              "icon": "",
              "label": "SELECT c.name, o.id FROM orders o LEFT JOIN customers c ON c.id = o.customer_id"
            },
            {
              "icon": "",
              "label": "SELECT c.name, o.id FROM customers c LEFT JOIN orders o ON c.id = o.customer_id"
            },
            {
              "icon": "",
              "label": "SELECT c.name, o.id FROM orders o CROSS JOIN customers c"
            }
          ]
        },
        {
          "question": "मानक SQL मध्ये तुम्ही SELECT department, name, AVG(salary) FROM employees GROUP BY department चालवता. ही वैध क्वेरी आहे का?",
          "options": [
            {
              "icon": "",
              "label": "होय, department नुसार गट करणे पुरेसे आहे"
            },
            {
              "icon": "",
              "label": "नाही, name हे अॅग्रिगेट केलेले किंवा GROUP BY मध्ये असणे आवश्यक आहे"
            },
            {
              "icon": "",
              "label": "होय, SQL प्रत्येक विभागासाठी एक नाव निवडते"
            },
            {
              "icon": "",
              "label": "नाही, AVG() GROUP BY सोबत वापरता येत नाही"
            }
          ]
        },
        {
          "question": "तुम्हाला ज्यांचा सरासरी पगार 80000 पेक्षा जास्त आहे असे विभाग हवे आहेत. गट केल्यानंतर AVG(salary) सारख्या अॅग्रिगेट मूल्यावर कोणता क्लॉज फिल्टर करतो — WHERE की HAVING?",
          "options": [
            {
              "icon": "",
              "label": "WHERE"
            },
            {
              "icon": "",
              "label": "दोन्हींपैकी कोणताही"
            },
            {
              "icon": "",
              "label": "कोणताही नाही; त्यासाठी सबक्वेरी लागते"
            },
            {
              "icon": "",
              "label": "HAVING"
            }
          ]
        },
        {
          "question": "तुम्ही SELECT salary * 1.1 AS new_salary FROM employees WHERE new_salary > 50000 लिहिता. हे चालते का?",
          "options": [
            {
              "icon": "",
              "label": "होय, WHERE मध्ये SELECT चे अॅलियास वापरता येतात"
            },
            {
              "icon": "",
              "label": "होय, पण फक्त संख्यात्मक अॅलियाससाठी"
            },
            {
              "icon": "",
              "label": "नाही, फिल्टर केलेल्या क्वेरीत AS ला परवानगी नाही"
            },
            {
              "icon": "",
              "label": "नाही, अॅलियास अस्तित्वात येण्याआधीच WHERE चालते"
            }
          ]
        },
        {
          "question": "SELECT name FROM employees e WHERE salary > (SELECT AVG(salary) FROM employees WHERE department = e.department). याला कोरिलेटेड सबक्वेरी का म्हणतात?",
          "options": [
            {
              "icon": "",
              "label": "ती WHERE क्लॉजऐवजी JOIN वापरते"
            },
            {
              "icon": "",
              "label": "ती बाहेरील क्वेरीतील e.department वापरते"
            },
            {
              "icon": "",
              "label": "ती एकापेक्षा जास्त स्तंभ परत करते"
            },
            {
              "icon": "",
              "label": "ती बाहेरील क्वेरी सुरू होण्याआधी एकदा चालते"
            }
          ]
        },
        {
          "question": "SELECT manager_id FROM employees ही सबक्वेरी खऱ्या id सोबत काही NULL मूल्येही परत करते. तुम्ही SELECT name FROM employees WHERE id NOT IN (SELECT manager_id FROM employees) चालवता. काय होते?",
          "options": [
            {
              "icon": "",
              "label": "ती NULL दुर्लक्षित करून मॅनेजर नसलेल्या प्रत्येकाला परत करते"
            },
            {
              "icon": "",
              "label": "ती शून्य पंक्ती परत करते"
            },
            {
              "icon": "",
              "label": "एरर येतो"
            },
            {
              "icon": "",
              "label": "ती प्रत्येक कर्मचाऱ्याला परत करते"
            }
          ]
        },
        {
          "question": "SELECT name FROM customers c WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id). हे काय परत करते?",
          "options": [
            {
              "icon": "",
              "label": "किमान एक ऑर्डर असलेला प्रत्येक ग्राहक"
            },
            {
              "icon": "",
              "label": "प्रत्येक ग्राहक"
            },
            {
              "icon": "",
              "label": "एक त्रुटी"
            },
            {
              "icon": "",
              "label": "फक्त नेमकी एक ऑर्डर असलेले ग्राहक"
            }
          ]
        },
        {
          "question": "तुम्ही SELECT name, (SELECT order_id FROM orders WHERE customer_id = c.id) AS last_order FROM customers c लिहिता, आणि एका ग्राहकाच्या orders मध्ये 3 पंक्ती आहेत. ही क्वेरी चालवल्यावर काय होते?",
          "options": [
            {
              "icon": "",
              "label": "ती फक्त पहिली परत करते"
            },
            {
              "icon": "",
              "label": "ती तिन्हींची स्वल्पविरामाने विभागलेली यादी परत करते"
            },
            {
              "icon": "",
              "label": "ती 3 पंक्ती परत करते"
            },
            {
              "icon": "",
              "label": "ती रनटाइमला एरर देते"
            }
          ]
        },
        {
          "question": "चार पंक्तींना सर्वाधिक स्कोअर समान मिळाला आहे. RANK() ORDER BY score DESC वापरल्यास, चारही पंक्तींना रँक 1 मिळतो. खालच्या पुढच्या पंक्तीला कोणता रँक मिळतो?",
          "options": [
            {
              "icon": "",
              "label": "5"
            },
            {
              "icon": "",
              "label": "2"
            },
            {
              "icon": "",
              "label": "1"
            },
            {
              "icon": "",
              "label": "4"
            }
          ]
        },
        {
          "question": "चार पंक्तींना सर्वाधिक स्कोअर समान मिळाला आहे. DENSE_RANK() ORDER BY score DESC वापरल्यास, चारही पंक्तींना रँक 1 मिळतो. खालच्या पुढच्या पंक्तीला कोणता रँक मिळतो?",
          "options": [
            {
              "icon": "",
              "label": "5"
            },
            {
              "icon": "",
              "label": "1"
            },
            {
              "icon": "",
              "label": "2"
            },
            {
              "icon": "",
              "label": "3"
            }
          ]
        },
        {
          "question": "क्वेरीमध्ये SUM(amount) OVER (PARTITION BY region ORDER BY amount) जोडले आहे. येथे PARTITION BY region काय करते?",
          "options": [
            {
              "icon": "",
              "label": "ते प्रत्येक प्रदेशासाठी चालू बेरीज पुन्हा सुरू करते"
            },
            {
              "icon": "",
              "label": "ते निकाल एकाच प्रदेशापुरते फिल्टर करते"
            },
            {
              "icon": "",
              "label": "ते पंक्ती एकत्र करून प्रत्येक प्रदेशासाठी एकच पंक्ती ठेवते"
            },
            {
              "icon": "",
              "label": "ते प्रदेशांना अक्षरक्रमाने लावते"
            }
          ]
        },
        {
          "question": "ROW_NUMBER() OVER (ORDER BY score DESC) पाच पंक्तींवर लावले आहे, ज्यापैकी दोन पंक्तींचा स्कोअर अगदी समान आहे. दोन पंक्तींना कधी एकच पंक्ती क्रमांक मिळू शकतो का?",
          "options": [
            {
              "icon": "",
              "label": "होय"
            },
            {
              "icon": "",
              "label": "फक्त PARTITION BY ही वापरले असेल तर"
            },
            {
              "icon": "",
              "label": "बरोबरी कुठे येते यावर ते अवलंबून आहे"
            },
            {
              "icon": "",
              "label": "No"
            }
          ]
        },
        {
          "question": "WITH high_earners AS (SELECT * FROM employees WHERE salary > 100000) SELECT department, COUNT(*) FROM high_earners GROUP BY department. high_earners म्हणजे काय?",
          "options": [
            {
              "icon": "",
              "label": "कॉमन टेबल एक्स्प्रेशन (CTE)"
            },
            {
              "icon": "",
              "label": "डेटाबेसमधील कायमस्वरूपी टेबल"
            },
            {
              "icon": "",
              "label": "क्वेरीनंतरही टिकणारा व्ह्यू"
            },
            {
              "icon": "",
              "label": "स्टोअर्ड प्रोसिजर"
            }
          ]
        },
        {
          "question": "एखादा स्तंभ PRIMARY KEY म्हणून घोषित केला आहे. त्या स्तंभात NULL असलेली पंक्ती तुम्ही घालू शकता का?",
          "options": [
            {
              "icon": "",
              "label": "होय"
            },
            {
              "icon": "",
              "label": "होय, पण फक्त एकच NULL पंक्ती"
            },
            {
              "icon": "",
              "label": "No"
            },
            {
              "icon": "",
              "label": "ते स्तंभाच्या डीफॉल्ट मूल्यावर अवलंबून आहे"
            }
          ]
        },
        {
          "question": "उघड्या ट्रान्झॅक्शनमध्ये तुम्ही UPDATE चालवले आहे, पण अजून COMMIT चालवलेले नाही. डेटाबेसच्या दुसऱ्या, वेगळ्या कनेक्शनवरून तो अपडेट दिसतो का?",
          "options": [
            {
              "icon": "",
              "label": "होय, लगेच"
            },
            {
              "icon": "",
              "label": "फक्त दुसऱ्या कनेक्शनने ट्रान्झॅक्शन उघडले तरच"
            },
            {
              "icon": "",
              "label": "कोणते टेबल अपडेट केले यावर ते अवलंबून आहे"
            },
            {
              "icon": "",
              "label": "नाही, तो कमिट होईपर्यंत नाही"
            }
          ]
        },
        {
          "question": "products.category_id वर categories.id चा संदर्भ देणारा FOREIGN KEY कन्स्ट्रेंट आहे. तुम्ही categories मधील अशी पंक्ती DELETE करण्याचा प्रयत्न करता, जिच्याकडे अजूनही products निर्देश करतात, आणि कोणताही ON DELETE नियम दिलेला नाही. काय होते?",
          "options": [
            {
              "icon": "",
              "label": "products चा category_id NULL वर सेट होतो"
            },
            {
              "icon": "",
              "label": "संदर्भ देणारे products सुद्धा डिलीट होतात"
            },
            {
              "icon": "",
              "label": "DELETE नाकारले जाते"
            },
            {
              "icon": "",
              "label": "DELETE यशस्वी होते आणि लटकते संदर्भ मागे राहतात"
            }
          ]
        }
      ],
      "optionOrderVersion": "f9e1314f9ea2bea2"
    }
  },
  "testNames": {
    "sql-test": "SQL चाचणी"
  }
}
