SQL concepts for data analysts in Hindi
Table of Contents
Toggleएसक्यूएल क्या है?
एसक्यूएल, जिसे संरचित क्वेरी भाषा (Structured Query Language) के नाम से भी जाना जाता है, एक डेटाबेस प्रबंधन प्रणाली (DBMS) के साथ बातचीत करने के लिए एक मानक भाषा है। यह आपको डेटाबेस में डेटा को परिभाषित, हेरफेर, और पुनर्प्राप्त करने की सुविधा प्रदान करता है।
एसक्यूएल का उपयोग डेटाबेस में डेटा को स्टोर, एक्सेस, मैनेज और एनालाइज करने के लिए किया जाता है। यह विभिन्न प्रकार के कार्यों को करने के लिए उपयोगी है, जैसे कि:
- डेटाबेस बनाना और हटाना: आप CREATE DATABASE और DROP DATABASE स्टेटमेंट का उपयोग करके डेटाबेस बना और हटा सकते हैं।
- तालिकाएं बनाना और हटाना: आप CREATE TABLE और DROP TABLE स्टेटमेंट का उपयोग करके तालिकाएं बना और हटा सकते हैं।
- डेटा को तालिकाओं में सम्मिलित करना: आप INSERT INTO स्टेटमेंट का उपयोग करके डेटा को तालिकाओं में सम्मिलित कर सकते हैं।
मौजूदा डेटा को अपडेट करना: आप UPDATE स्टेटमेंट का उपयोग करके मौजूदा डेटा को अपडेट कर सकते हैं। - डेटा को तालिकाओं से हटाना: आप DELETE FROM स्टेटमेंट का उपयोग करके डेटा को तालिकाओं से हटा सकते हैं।
- डेटा का चयन करना: आप SELECT स्टेटमेंट का उपयोग करके विशिष्ट डेटा का चयन कर सकते हैं।
डेटा को विभिन्न तरीकों से क्रमबद्ध और फ़िल्टर करना: आप ORDER BY और WHERE खंडों का उपयोग करके डेटा को क्रमबद्ध और फ़िल्टर कर सकते हैं। - डेटा को विभिन्न तालिकाओं से जोड़ना: आप JOIN क्लॉज का उपयोग करके डेटा को विभिन्न तालिकाओं से जोड़ सकते हैं।
- डेटा को समूहों में सारांशित करना: आप समग्र कार्यों (जैसे SUM, AVG, COUNT) का उपयोग करके डेटा को समूहों में सारांशित कर सकते हैं।
डेटाबेस प्रबंधन प्रणाली (DBMS) क्या है? Database Management System
डेटाबेस प्रबंधन प्रणाली (DBMS) एक सॉफ्टवेयर एप्लिकेशन है जो डेटाबेस को बनाने, स्टोर करने, एक्सेस करने और प्रबंधित करने के लिए उपयोग किया जाता है। यह डेटाबेस में डेटा को व्यवस्थित और सुरक्षित रखने में मदद करता है और उपयोगकर्ताओं को डेटा को आसानी से खोजने और पुनर्प्राप्त करने की सुविधा प्रदान करता है।
DBMS विभिन्न प्रकार के कार्यों को करने में सक्षम है, जिनमें शामिल हैं:
- डेटा को परिभाषित करना: DBMS आपको डेटाबेस में संग्रहीत किए जाने वाले डेटा के प्रकार और संरचना को परिभाषित करने की सुविधा प्रदान करता है।
- डेटा को स्टोर करना: DBMS डेटाबेस में डेटा को सुरक्षित रूप से स्टोर करता है।
- डेटा को एक्सेस करना: DBMS उपयोगकर्ताओं को डेटाबेस में डेटा को एक्सेस करने और पुनर्प्राप्त करने की सुविधा प्रदान करता है।
- डेटा को अपडेट करना: DBMS उपयोगकर्ताओं को डेटाबेस में डेटा को अपडेट करने की सुविधा प्रदान करता है।
- डेटा को हटाना: DBMS उपयोगकर्ताओं को डेटाबेस से डेटा को हटाने की सुविधा प्रदान करता है।
- डेटा को सुरक्षित करना: DBMS डेटाबेस में डेटा को अनधिकृत पहुंच और संशोधन से बचाने में मदद करता है।
- डेटा का बैकअप लेना और पुनर्प्राप्त करना: DBMS डेटाबेस का बैकअप लेने और डेटा हानि की स्थिति में इसे पुनर्प्राप्त करने में मदद करता है।
- डेटा को एक साथ कई उपयोगकर्ताओं द्वारा एक्सेस करने की अनुमति देना: DBMS एक साथ कई उपयोगकर्ताओं को डेटाबेस तक पहुंचने और डेटा के साथ काम करने की अनुमति देता है।
- डेटाबेस में डेटा को ट्रैक और ऑडिट करना: DBMS डेटाबेस में डेटा में किए गए परिवर्तनों को ट्रैक और ऑडिट करने में मदद करता है।
DBMS के कुछ महत्वपूर्ण लाभ:
- डेटा को व्यवस्थित और सुव्यवस्थित रखता है: DBMS डेटा को व्यवस्थित और सुव्यवस्थित रखने में मदद करता है, जिससे इसे ढूंढना और पुनर्प्राप्त करना आसान हो जाता है।
- डेटा को डुप्लिकेट होने से रोकता है: DBMS डेटा को डुप्लिकेट होने से रोकता है, जिससे डेटाबेस की अखंडता और स्थिरता सुनिश्चित होती है।
- डेटा तक सुरक्षित पहुंच प्रदान करता है: DBMS डेटा तक सुरक्षित पहुंच प्रदान करता है, अनधिकृत उपयोगकर्ताओं को डेटा तक पहुंचने से रोकता है।
- डेटा को अपडेट करना और प्रबंधित करना आसान बनाता है: DBMS डेटा को अपडेट करना और प्रबंधित करना आसान बनाता है।
- डेटा का बैकअप लेना और पुनर्प्राप्त करना आसान बनाता है: DBMS डेटा का बैकअप लेना और पुनर्प्राप्त करना आसान बनाता है।
- डेटा को एक साथ कई उपयोगकर्ताओं द्वारा एक्सेस करने की अनुमति देता है: DBMS एक साथ कई उपयोगकर्ताओं को डेटाबेस तक पहुंचने और डेटा के साथ काम करने की अनुमति देता है।
DBMS का उपयोग विभिन्न प्रकार के संगठनों द्वारा किया जाता है, जिनमें शामिल हैं:
- व्यवसाय: व्यवसाय ग्राहक जानकारी, उत्पाद सूची, बिक्री डेटा और अन्य प्रकार के डेटा को संग्रहीत और प्रबंधित करने के लिए DBMS का उपयोग करते हैं।
- सरकारी एजेंसियां: सरकारी एजेंसियां नागरिकों, कर रिकॉर्ड और कानूनी दस्तावेजों के बारे में डेटा को संग्रहीत और प्रबंधित करने के लिए DBMS का उपयोग करती हैं।
- शैक्षणिक संस्थान: शैक्षणिक संस्थान छात्र रिकॉर्ड, पाठ्यक्रम डेटा और अनुसंधान डेटा को संग्रहीत और प्रबंधित करने के लिए DBMS का उपयोग करते हैं।
- गैर-लाभकारी संगठन: गैर-लाभकारी संगठ
डेटा टाइप SQL
डेटा टाइप (Data Types) किसी डेटाबेस में संग्रहीत डेटा के प्रकार को परिभाषित करते हैं. ये विभिन्न प्रकार के डेटा को व्यवस्थित और संग्रहीत करने में मदद करते हैं, यह सुनिश्चित करते हुए कि डेटा का सही तरीके से व्याख्या और उपयोग किया जा सके. आइए कुछ सामान्य डेटा टाइपों को हिंदी में देखें:
संख्यात्मक (Numeric):
यह डेटा टाइप संख्याओं को संग्रहीत करने के लिए उपयोग किया जाता है, जैसे कि उम्र, वेतन, मूल्य, या मात्रा.
इसमें उप-प्रकार हो सकते हैं, जैसे:
- पूर्णांक (Integer): पूरे नंबरों को संग्रहीत करने के लिए (उदाहरण: 25, -100)
- दशमलव (Decimal): दशमलव बिंदुओं वाले नंबरों को संग्रहीत करने के लिए (उदाहरण: 3.14, 125.99)
पाठ्य (Text):
यह डेटा टाइप अक्षरों, संख्याओं और विशेष वर्णों के संयोजन को संग्रहीत करने के लिए उपयोग किया जाता है, जैसे कि नाम, पते, या विवरण.
इसमें उप-प्रकार हो सकते हैं, जैसे:
- वर्ण (Char): एकल अक्षर को संग्रहीत करने के लिए (उदाहरण: ‘A’, ‘₹’)
- वर्णमाला (VarChar): परिवर्तनीय लंबाई वाले पाठ्य को संग्रहीत करने के लिए (उदाहरण: “दिल्ली”, “नमस्ते”)
तिथि और समय (Date and Time):
- यह डेटा टाइप तिथियों और समयों को संग्रहीत करने के लिए उपयोग किया जाता है.
विशिष्ट प्रारूप DBMS पर निर्भर करता है (उदाहरण: 2024-04-29, 14:30:00)
तार्किक (Logical):
यह डेटा टाइप सत्य या असत्य जैसे बूलियन मानों को संग्रहीत करने के लिए उपयोग किया जाता है.
इसका उपयोग अक्सर किसी शर्त या स्थिति को दर्शाने के लिए किया जाता है (उदाहरण: True, False)
इनके अलावा, और भी डेटा टाइप हो सकते हैं, जो DBMS और डेटा के प्रकार पर निर्भर करते हैं. डेटाबेस डिज़ाइन करते समय उपयुक्त डेटा टाइप चुनना महत्वपूर्ण होता है क्योंकि यह डेटा की सटीकता, संग्रहण दक्षता और डेटा के साथ किए जाने वाले कार्यों को प्रभावित करता है.
Database Objects in SQL Hindi
डेटाबेस ऑब्जेक्ट (Database Objects) किसी डेटाबेस के बिल्डिंग ब्लॉक्स की तरह होते हैं. ये संरचित इकाइयां डेटा को व्यवस्थित और प्रबंधित करने में मदद करती हैं. आइए SQL में कुछ सामान्य डेटाबेस ऑब्जेक्ट्स को हिंदी में देखें:
टेबल (Tables):
- टेबल एक डेटा संग्रह होता है, जिसे आप एक स्プレडशीट की तरह समझ सकते हैं. इसमें पंक्तियां (rows) और स्तंभ (columns) होते हैं.
- प्रत्येक पंक्ति एक रिकॉर्ड (record) का प्रतिनिधित्व करती है, जो किसी विशिष्ट इकाई के बारे में जानकारी रखती है (उदाहरण: एक ग्राहक, एक उत्पाद).
- प्रत्येक स्तंभ (column) एक विशेष डेटा विशेषता (attribute) को परिभाषित करता है, जो रिकॉर्ड में संग्रहीत सभी रिकॉर्ड्स के लिए एक समान डेटा टाइप रखता है (उदाहरण: ग्राहक का नाम, उत्पाद का मूल्य).
स्तंभ (Columns):
जैसा कि ऊपर बताया गया है, स्तंभ तालिका के भीतर डेटा के विशिष्ट क्षेत्रों को परिभाषित करते हैं.
ये टेबल की संरचना को निर्धारित करते हैं और यह बताते हैं कि किस प्रकार का डेटा प्रत्येक क्षेत्र में संग्रहीत किया जाएगा (उदाहरण: ग्राहक का नाम, ईमेल पता, फोन नंबर).
दृश्य (Views):
- दृश्य तालिकाओं से वर्चुअल टेबल की तरह कार्य करते हैं. ये वास्तविक डेटा को स्टोर नहीं करते बल्कि एक या अधिक तालिकाओं से डेटा को प्रदर्शित करने का एक तरीका प्रदान करते हैं.
- दृश्यों का उपयोग डेटा को फ़िल्टर करने, जॉइन करने या केवल विशिष्ट कॉलम दिखाने के लिए किया जा सकता है. यह जटिल प्रश्नों को सरल बनाने और डेटा सुरक्षा को लागू करने में मददगार होता है.
अनुक्रम (Sequences):
- अनुक्रम (sequence) अद्वितीय संख्याओं को स्वचालित रूप से उत्पन्न करने के लिए उपयोग किए जाने वाले ऑब्जेक्ट होते हैं.
- इन्हें अक्सर प्राथमिक कुंजियों (primary keys) के लिए उपयोग किया जाता है, जो तालिका में प्रत्येक रिकॉर्ड की विशिष्ट पहचान सुनिश्चित करती हैं.
इंडेक्स (Indexes):
- इंडेक्स तालिकाओं में डेटा को अनुक्रमित (indexed) करने के लिए उपयोग किए जाने वाले ऑब्जेक्ट होते हैं. ये किसी पुस्तक की अनुक्रमणिका की तरह काम करते हैं, जिससे विशिष्ट डेटा को तेजी से ढूंढना आसान हो जाता है. इंडेक्स क्वेरी प्रदर्शन को अनुकूलित करने में मदद करते हैं, खासकर बड़ी तालिकाओं के साथ काम करते समय.
** पर्यायवाची (Synonyms):**
पर्यायवाची किसी मौजूदा तालिका, दृश्य या अन्य डेटाबेस ऑब्जेक्ट के लिए उपनाम के रूप में कार्य करते हैं. ये उपयोगकर्ताओं को डेटाबेस ऑब्जेक्ट को अधिक सहज या यादगार नाम से एक्सेस करने की अनुमति देते हैं.
ट्रिगर (Triggers):
- ट्रिगर डेटाबेस में होने वाली विशिष्ट घटनाओं के लिए स्वचालित रूप से निष्पादित होने वाले कोडेड प्रक्रियाएं होती हैं.
उदाहरण के लिए, किसी तालिका में कोई नया रिकॉर्ड सम्मिलित करने पर ट्रिगर सक्रिय हो सकता है और स्वचालित रूप से किसी अन्य तालिका को अपडेट कर सकता है या डेटा सत्यापन लागू कर सकता है.
ये कुछ सामान्य डेटाबेस ऑब्जेक्ट हैं जिनका आप SQL में सामना करेंगे. ये ऑब्जेक्ट मिलकर डेटा को कुशलतापूर्वक संग्रहीत, एक्सेस और प्रबंधित करने के लिए एक संरचित वातावरण प्रदान करते हैं.
एसक्यूएल का उपयोग किस लिए किया जाता है?
एसक्यूएल का उपयोग विभिन्न प्रकार के कार्यों के लिए किया जाता है, जिनमें शामिल हैं:
डेटाबेस में डेटा को परिभाषित करना:
- आप CREATE DATABASE और CREATE TABLE स्टेटमेंट का उपयोग करके डेटाबेस और टेबल बना सकते हैं।
- आप डेटाबेस में स्तंभों, डेटा प्रकारों और बाधाओं को परिभाषित कर सकते हैं।
डेटाबेस में डेटा को हेरफेर करना:
आप INSERT, UPDATE और DELETE स्टेटमेंट का उपयोग करके डेटाबेस में डेटा को सम्मिलित, अपडेट और हटा सकते हैं।
आप डेटा को विभिन्न तरीकों से फ़िल्टर और क्रमबद्ध कर सकते हैं।
डेटाबेस से डेटा को पुनर्प्राप्त करना:
- आप SELECT स्टेटमेंट का उपयोग करके डेटाबेस से डेटा को पुनर्प्राप्त कर सकते हैं।
- आप जटिल प्रश्नों का उपयोग करके विशिष्ट डेटा का चयन कर सकते हैं।
डेटा का विश्लेषण और रिपोर्टिंग करना:
- आप डेटाबेस से डेटा को विभिन्न तरीकों से सारांशित और गणना कर सकते हैं।
- आप रिपोर्ट और चार्ट बनाने के लिए डेटा का उपयोग कर सकते हैं।
डेटाबेस सुरक्षा:
- आप डेटाबेस को अनधिकृत पहुंच से बचाने के लिए उपयोगकर्ताओं और अनुमतियों को नियंत्रित कर सकते हैं।
- आप डेटाबेस का बैकअप ले सकते हैं और डेटा हानि से पुनर्प्राप्त कर सकते हैं।
एसक्यूएल का उपयोग विभिन्न प्रकार के अनुप्रयोगों में किया जाता है, जिनमें शामिल हैं:
- व्यवसाय: ग्राहक डेटा, उत्पाद सूची, बिक्री डेटा और वित्तीय जानकारी का प्रबंधन करना।
- सरकार: नागरिकों के बारे में जानकारी, कर रिकॉर्ड और कानूनी दस्तावेजों का प्रबंधन करना।
- शिक्षा: छात्र रिकॉर्ड, पाठ्यक्रम डेटा और अनुसंधान डेटा का प्रबंधन करना।
- स्वास्थ्य सेवा: रोगी रिकॉर्ड, चिकित्सा इतिहास और बीमा जानकारी का प्रबंधन करना।
- वैज्ञानिक अनुसंधान: प्रयोगात्मक डेटा, परिणामों और विश्लेषणों का प्रबंधन करना।
एसक्यूएल एक शक्तिशाली भाषा है जो डेटा के साथ काम करने के लिए आवश्यक विभिन्न प्रकार के कार्यों को करने में सक्षम है। यह डेटाबेस एडमिनिस्ट्रेटर, डेटा एनालिस्ट, डेवलपर्स और डेटा-संचालित निर्णय लेने वाले किसी भी व्यक्ति के लिए एक आवश्यक कौशल है।
डाटा प्राप्ति और हेरफेर (Data Retrieval and Manipulation
CREATE TABLE Customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
city VARCHAR(50) NOT NULL,
phone_number VARCHAR(20)
);
CREATE TABLE Orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_date DATE NOT NULL,
customer_id INT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);
CREATE TABLE Products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
-- Insert Customers (at least 10 entries)
INSERT INTO Customers (name, email, city, phone_number)
VALUES ('John Doe', 'john.doe@example.com', 'New York', '123-456-7890'),
('Jane Smith', 'jane.smith@example.com', 'Los Angeles', NULL),
('Alice Johnson', 'alice.johnson@example.com', 'Chicago', '987-654-3210'),
('Michael Brown', 'michael.brown@example.com', 'Houston', '555-123-4567'),
('David Miller', 'david.miller@example.com', 'Phoenix', '444-333-2221'),
('Sarah Garcia', 'sarah.garcia@example.com', 'San Antonio', NULL),
('Robert Wilson', 'robert.wilson@example.com', 'San Diego', '888-777-6666'),
('Emily Jones', 'emily.jones@example.com', 'Dallas', '321-654-9870'),
('Matthew Hernandez', 'matthew.hernandez@example.com', 'San Jose', '212-987-6543'),
('Ashley Moore', 'ashley.moore@example.com', 'Austin', '789-456-1230');
-- Insert Orders (at least 5 entries with references to existing customers)
INSERT INTO Orders (order_date, customer_id)
VALUES ('2024-04-20', 1),
('2024-04-25', 3),
('2024-04-30', 5),
('2024-05-01', 7),
('2024-05-01', 9);
-- Insert Products (at least 5 entries)
INSERT INTO Products (product_name, price)
VALUES ('T-Shirt', 19.99),
('Laptop', 799.99),
('Coffee Mug', 9.99),
('Headphones', 49.99),
('Book', 24.95);
ग्राहकों के नाम, ईमेल और शहर प्राप्त करें:
SELECT name, email, city
FROM customers;
एक विशिष्ट तिथि के बाद किए गए सभी ऑर्डर ढूंढें:
SELECT *
FROM orders
WHERE order_date > '2024-05-01';
उत्पादों को मूल्य के अनुसार क्रमबद्ध करें (आरोही):
SELECT *
FROM products
ORDER BY price ASC;
क्वेरी परिणामों में कॉलम को अधिक पठनीय नाम देने के लिए उपनाम का उपयोग करें:
SELECT customer_name AS "ग्राहक का नाम",
customer_email AS "ईमेल",
customer_city AS "शहर"
FROM customers;
छूटे हुए फोन नंबर वाले ग्राहकों की पहचान करें:
SELECT *
FROM customers
WHERE phone_number IS NULL;
उत्पाद जानकारी के साथ ऑर्डर विवरण प्राप्त करने के लिए ऑर्डर और उत्पाद तालिकाओं को जॉइन करें:
SELECT o.order_id, o.order_date, o.customer_id, p.product_name, p.price
FROM orders AS o
JOIN products AS p
ON o.product_id = p.product_id;
उन सभी ग्राहकों को ढूंढें जिनके ऑर्डर की कुल राशि एक विशिष्ट मान से अधिक है:
SELECT c.customer_name, SUM(p.price) AS total_amount
FROM customers AS c
JOIN orders AS o
ON c.customer_id = o.customer_id
JOIN order_details AS od
ON o.order_id = od.order_id
JOIN products AS p
ON od.product_id = p.product_id
GROUP BY c.customer_name
HAVING total_amount > 100;
एग्रीगेशन और संक्षेपण (Aggregation and Summarization):
प्रत्येक श्रेणी में उत्पादों की कुल संख्या प्राप्त करें:
SELECT product_name, COUNT(*) AS product_count
FROM products
GROUP BY product_name;
प्रत्येक ग्राहक के लिए औसत ऑर्डर मूल्य की गणना करें:
SELECT customer_name, AVG(order_amount) AS average_order_value
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY customer_name;
सबसे महंगे और सबसे सस्ते उत्पादों की पहचान करें:
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 1; -- Top 1 most expensive product
SELECT product_name, price
FROM products
ORDER BY price ASC
LIMIT 1; -- Top 1 least expensive product
उत्पादों को श्रेणी के अनुसार समूहबद्ध करें और प्रत्येक श्रेणी के लिए बेची गई कुल मात्रा की गणना करें:
SELECT category, SUM(quantity) AS total_quantity_sold
FROM order_details od
JOIN products p ON od.product_id = p.product_id
GROUP BY category;
तिथि और समय फ़ंक्शंस (Date and Time Functions):
ऑर्डर तिथि कॉलम से वर्ष, माह और दिन निकालें:
SELECT order_id,
YEAR(order_date) AS order_year,
MONTH(order_date) AS order_month,
DAY(order_date) AS order_day
FROM orders;
दो तिथियों के बीच का अंतर ज्ञात करें (उदाहरण के लिए, ऑर्डर तिथि और डिलीवरी तिथि):
SELECT order_id, order_date, delivery_date, DATEDIFF(delivery_date, order_date) AS days_between
FROM orders;
पिछली तिमाही में किए गए सभी ऑर्डरों की पहचान करें:
SELECT *
FROM orders
WHERE order_date BETWEEN LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 3 MONTH)) + INTERVAL 1 DAY AND CURDATE();
उन्नत अवधारणाएं (Advanced Concepts):
जॉइन (Joins):
विभिन्न जॉइन प्रकारों का उपयोग करके संबंधित तालिकाओं से डेटा मर्ज करें:
- INNER JOIN: दोनों तालिकाओं में मिलान करने वाले रिकॉर्ड लौटाता है (जॉइन शर्त पर मिलान)।
- LEFT JOIN: बाईं तालिका से सभी रिकॉर्ड और दाएं तालिका से मिलान करने वाले रिकॉर्ड (असमानता के लिए NULL मान भरता है)।
- RIGHT JOIN: दाईं तालिका से सभी रिकॉर्ड और बाईं तालिका से मिलान करने वाले रिकॉर्ड (असमानता के लिए NULL मान भरता है)।
- FULL JOIN: दोनों तालिकाओं से सभी रिकॉर्ड (मिलान या नहीं, NULL मानों के साथ)।
उदाहरण (INNER JOIN):
SELECT c.name, p.product_name, o.order_date
FROM customers c
INNER JOIN orders o ON c.customer_id = o.customer_id
INNER JOIN products p ON o.product_id = p.product_id;
Union, Intersect, और Except:
कई प्रश्नों से परिणाम सेट को मिलाएं या फ़िल्टर करें:
- UNION: मिलते-जुलते रिकॉर्ड (डुप्लिकेट हटाए गए) को एक साथ जोड़ता है।
- INTERSECT: केवल मिलते-जुलते रिकॉर्ड (कोई डुप्लिकेट नहीं) लौटाता है।
- EXCEPT: पहले क्वेरी से दूसरे क्वेरी के रिकॉर्ड को हटाता है।
उदाहरण (UNION):
SELECT product_name FROM products
UNION
SELECT category FROM categories;
विंडो फ़ंक्शंस (RANK, ROW_NUMBER):
परिणाम सेट के भीतर पंक्तियों को रैंक या अनुक्रमिक संख्या असाइन करें:
- RANK(): समान समूहों के भीतर रैंक प्रदान करता है (टाई के लिए समान मान)।
- ROW_NUMBER(): प्रत्येक पंक्ति के लिए एक अद्वितीय अनुक्रमिक संख्या प्रदान करता है।
उदाहरण (RANK):
SELECT product_name, RANK() OVER (ORDER BY price DESC) AS product_rank
FROM products;
सामान्य तालिका अभिव्यक्ति (CTEs):
जटिल प्रश्नों को पुन: प्रयोज्य घटकों में विभाजित करें:
- CTEs को SELECT, FROM, WHERE, आदि क्लॉज के साथ परिभाषित किया जाता है।
- उन्हें मुख्य क्वेरी में उपक्वेरी या डेटा स्रोत के रूप में उपयोग किया जाता है।
उदाहरण (CTE):
WITH customer_orders AS (
SELECT c.name, o.order_date
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
)
SELECT * FROM customer_orders WHERE order_date > '2024-04-01';
उपयोगकर्ता द्वारा परिभाषित फ़ंक्शंस (UDFs):
दोहराव वाले कार्यों के लिए कस्टम फ़ंक्शन बनाएं:
- UDFs को SQL कोड के ब्लॉक के रूप में परिभाषित किया जाता है।
- उन्हें SELECT, WHERE, आदि क्लॉज में तर्क को कैप्सुलेट करने के लिए उपयोग किया जाता है।
उदाहरण (UDF):
CREATE FUNCTION calculate_order_total(order_id INT)
RETURNS DECIMAL(10,2)
BEGIN
DECLARE order_total DECIMAL(10,2);
SELECT SUM(od.quantity * p.price)
INTO order_total
FROM order_details od
JOIN products p ON od.product_id = p.product_id
WHERE od.order_id = order_id;
RETURN order_total;
END;
SELECT order_id, calculate_order_total(order_id) AS order_total
FROM orders;
डाटा विश्लेषण परिदृश्य (Data Analysis Scenarios):
बिक्री के आधार पर शीर्ष ग्राहकों की पहचान करें:
SELECT customer_name, SUM(order_amount) AS total_sales
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY customer_name
ORDER BY total_sales DESC
LIMIT 10; -- शीर्ष 10 ग्राहक
उत्पाद प्रदर्शन का विश्लेषण करें:
SELECT product_name, SUM(quantity) AS total_sold
FROM order_details od
JOIN products p ON od.product_id = p.product_id
GROUP BY product_name
ORDER BY total_sold DESC
LIMIT 5; -- शीर्ष 5 सबसे अधिक बिकने वाले उत्पाद
सबसे कम बिकने वाले उत्पाद:
SELECT product_name, SUM(quantity) AS total_sold
FROM order_details od
JOIN products p ON od.product_id = p.product_id
GROUP BY product_name
ORDER BY total_sold ASC
LIMIT 5; -- शीर्ष 5सबसे कम बिकने वाले उत्पाद
ग्राहक विभाजन:
SELECT c.name, purchase_category
FROM customers c
JOIN (
SELECT customer_id, MAX(order_date) AS last_order_date
FROM orders
GROUP BY customer_id
) AS last_order_on
ON c.customer_id = last_order_on.customer_id
LEFT JOIN (
SELECT customer_id, AVG(order_amount) AS average_order_amount
FROM orders
GROUP BY customer_id
) AS average_order_on
ON c.customer_id = average_order_on.customer_id
CASE
WHEN last_order_date IS NULL THEN 'New Customer'
WHEN average_order_amount > 500 THEN 'High Spender'
ELSE 'Regular Customer'
END AS purchase_category;
जनसांख्यिकी के आधार पर:
SELECT c.name, age_group, purchase_category
FROM customers c
LEFT JOIN (
SELECT customer_id, CASE
WHEN age BETWEEN 18 AND 24 THEN '18-24'
WHEN age BETWEEN 25 AND 34 THEN '25-34'
ELSE '35+'
END AS age_group
FROM customers
) AS age_on
ON c.customer_id = age_on.customer_id
LEFT JOIN (
SELECT customer_id, CASE
WHEN gender = 'M' THEN 'Male'
ELSE 'Female'
END AS gender_group
FROM customers
) AS gender_on
ON c.customer_id = gender_on.customer_id
CASE
WHEN gender_group = 'Male' THEN 'Male Customers'
WHEN gender_group = 'Female' THEN 'Female Customers'
ELSE 'Other'
END AS purchase_category;
बिक्री रुझान विश्लेषण:
SELECT order_date, SUM(order_amount) AS daily_sales
FROM orders
GROUP BY order_date
ORDER BY order_date;
साप्ताहिक बिक्री:
SELECT WEEK(order_date) AS order_week, SUM(order_amount) AS weekly_sales
FROM orders
GROUP BY WEEK(order_date)
ORDER BY order_week;
मासिक बिक्री:
SELECT MONTH(order_date) AS order_month, SUM(order_amount) AS monthly_sales
FROM orders
GROUP BY MONTH(order_date)
ORDER BY order_month;
कोहॉर्ट विश्लेषण:
-- पहले महीने में अर्जित ग्राहकों के लिए मासिक बिक्री
WITH customer_cohorts AS (
SELECT customer_id, MONTH(order_date) AS cohort_month
FROM orders
WHERE YEAR(order_date) = 2024 AND MONTH(order_date) = 1
GROUP BY customer_id, MONTH(order_date)
)
SELECT cohort_month, MONTH(order_date), SUM(order_amount) AS monthly_sales
FROM orders o
JOIN customer_