SFMCpulse
Learn • Practise • Grow — SQL Foundations
SQL LEARNING GUIDE
Beginner-friendly • Hinglish

SQL SELECT & JOIN — Simple Learning Guide

SQL ko daily office conversation ki tarah samjho: manager requirement deta hai, aur tum us requirement ko query mein convert karte ho.

Learning goal: Data kahan se lena hai, kaunse records chahiye, tables ko kaise connect karna hai, aur result ko kaise summarize karna hai.

SELECTFROMWHEREJOINGROUP BYHAVINGORDER BY

1. SELECT kya karta hai?

SELECT database ko batata hai ki result mein kaunse columns ya calculations dikhane hain. Database tak pahunchne ke liye application API use kar sakti hai, lekin SELECT khud API nahi—SQL statement hai.

SELECT CustomerName
FROM Customers
WHERE PurchaseAmount > 10000;
PartSimple meaning
SELECT CustomerNameCustomer ka naam dikhao.
FROM CustomersCustomers table se data lo.
WHERE PurchaseAmount > 10000Sirf un rows ko rakho jahan purchase 10,000 se zyada hai.

Backend mein simplified flow

  1. Query receive: SQL editor ya application database ko query bhejti hai.
  2. Parse and validate: Database syntax, table/column names aur access check karta hai.
  3. Plan: Optimizer decide karta hai ki data access karne ka efficient tareeka kya ho.
  4. Read and filter: Required data access hota hai aur conditions apply hoti hain.
  5. Return result: Rows application ko milti hain; API unhe JSON jaise format mein bhej sakti hai.
Yaad rakho: SQL likhne ka order aur logical processing order same nahi hote. Query likhte waqt SELECT pehle aata hai; logical understanding mein FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY ka order useful hai. Actual physical execution optimizer ke hisaab se badal sakta hai.

2. Basic SELECT template

SELECT column1, column2
FROM table_name
WHERE condition
ORDER BY column_name ASC;

Har clause har query mein zaroori nahi. Pehle simple query likho, phir requirement ke hisaab se clauses add karo.

All columns

SELECT *
FROM Customers;

Star * ka matlab saare columns.

Selected columns

SELECT CustomerName, Email
FROM Customers;

Sirf required columns return honge.

Filter rows

SELECT CustomerName
FROM Customers
WHERE City = 'Delhi';

Sirf Delhi ke customers.

Sort results

SELECT CustomerName, Age
FROM Students
ORDER BY Age DESC;

Age ke hisaab se largest se smallest.

3. SELECT clauses — placement aur purpose

ClauseKya likhna hai?KaamExample
SELECTColumns / expressionsResult mein kya dikhana haiSELECT City, COUNT(*)
FROMTable(s)Data sourceFROM Customers
WHERERow conditionRows filter karnaWHERE City = 'Delhi'
GROUP BYGrouping column(s)Similar rows ka group bananaGROUP BY City
HAVINGGroup conditionGroups filter karnaHAVING COUNT(*) > 10
ORDER BYSort column + directionResult sort karnaORDER BY Total DESC
LIMIT / TOPNumber of rowsReturned rows limit karnaLIMIT 10 (dialect-specific)

Manager ki language ko SQL mein badlo

Requirement wordsSQL mein socho
Show / fetch / retrieveSELECT
From which table?FROM
Only those / where / whoseWHERE
More than / above / exceeds>
At least / minimum>=
Each city / per customerOften GROUP BY
More than 10 per groupOften HAVING
Highest firstORDER BY ... DESC

4. JOIN kyun use karte hain?

Jab required information alag-alag tables mein hoti hai, tab related records ko connect karne ke liye JOIN use karte hain.

Customers table

CustomerIDNameCity
101RahulDelhi
102PriyaMumbai
103AmitDelhi
104NehaPune

Orders table

OrderIDCustomerIDAmount
5011012000
5021025000
5031013000
5041051500
SELECT c.Name, o.Amount
FROM Customers c
INNER JOIN Orders o
    ON c.CustomerID = o.CustomerID;

c Customers ka alias hai aur o Orders ka alias hai. ON batata hai ki match kis field ke basis par hoga.

Important: Rahul ke do orders hain, isliye Rahul do rows mein aa sakta hai. JOIN automatically unique customers nahi banata.

5. JOIN ke main types

JOIN typeSimple meaningExample requirement
INNER JOINSirf matching recordsSirf un customers ko dikhao jinke orders hain.
LEFT JOINLeft table ke saare records + matching right recordsSaare customers dikhao, order ho ya na ho.
RIGHT JOINRight table ke saare records + matching left recordsSaare orders dikhao, customer match ho ya na ho.
FULL OUTER JOINDono tables ke saare recordsMatched aur unmatched customers/orders dono chahiye.

INNER JOIN

SELECT c.Name, o.Amount
FROM Customers c
INNER JOIN Orders o
    ON c.CustomerID = o.CustomerID;

Expected: Rahul ₹2,000; Priya ₹5,000; Rahul ₹3,000. Amit, Neha aur unmatched Order 504 nahi aayenge.

LEFT JOIN

SELECT c.Name, o.Amount
FROM Customers c
LEFT JOIN Orders o
    ON c.CustomerID = o.CustomerID;

Expected: Rahul ke do orders, Priya ka order, Amit aur Neha with NULL amount.

RIGHT JOIN

SELECT c.Name, o.OrderID, o.Amount
FROM Customers c
RIGHT JOIN Orders o
    ON c.CustomerID = o.CustomerID;

Saare orders aayenge, including Order 504. Uska matching customer nahi mila, isliye name NULL hoga.

FULL OUTER JOIN

SELECT c.Name, o.OrderID, o.Amount
FROM Customers c
FULL OUTER JOIN Orders o
    ON c.CustomerID = o.CustomerID;

Dono taraf ke unmatched records bhi aayenge. Note: Har database FULL OUTER JOIN support nahi karta.

6. JOIN + WHERE

Manager: “Sirf Delhi ke customers ke orders dikhao.”

SELECT c.Name, o.Amount
FROM Customers c
INNER JOIN Orders o
    ON c.CustomerID = o.CustomerID
WHERE c.City = 'Delhi';

Result mein Rahul ke ₹2,000 aur ₹3,000 wale orders aayenge.

ON

Tables ke records ko connect karne ka matching rule.

WHERE

Rows ko condition ke basis par filter karta hai.

Customers jinka koi order nahi

SELECT c.Name
FROM Customers c
LEFT JOIN Orders o
    ON c.CustomerID = o.CustomerID
WHERE o.OrderID IS NULL;

Expected result: Neha.

7. JOIN + GROUP BY + SUM

Manager: “Har customer ka total order amount dikhao, including customers who have never ordered.”

SELECT
    c.CustomerID,
    c.Name,
    COALESCE(SUM(o.Amount), 0) AS TotalAmount
FROM Customers c
LEFT JOIN Orders o
    ON c.CustomerID = o.CustomerID
GROUP BY c.CustomerID, c.Name
ORDER BY TotalAmount DESC;
NameTotalAmount
Rahul5000
Priya5000
Amit0
Neha0
  • SUM() order amounts ko add karta hai.
  • GROUP BY har customer ki rows ko ek group banata hai.
  • COALESCE(..., 0) NULL total ko zero dikhata hai.
  • ORDER BY ... DESC highest total ko pehle rakhta hai.
Common mistake: LEFT JOIN ke baad right-table condition ko WHERE mein rakhne se unmatched rows remove ho sakti hain. Query likhte waqt socho ki tumhe unmatched left records preserve karne hain ya nahi.

9. Problem-Solving Framework: Requirement se Query tak

Real project mein query syntax se start nahi hoti. Pehle business ki problem samjho, phir data aur logic identify karo.

  1. Business question samjho
    Exactly kya chahiye—customer list, unpaid orders, revenue, ya campaign responses?
  2. Tables aur columns discover karo
    Data kis table mein hai? Kaunse columns output mein chahiye? Tables ko connect karne ke liye common key kya hai?
  3. Query building blocks choose karo
    SELECT columns, FROM source, JOIN relationships, WHERE filters, GROUP BY summaries, HAVING group filters, ORDER BY sorting.
  4. Result validate karo
    Row count, duplicate records, missing data, totals, aur sample records check karo. Result sahi dikh raha hai, sirf itna kaafi nahi—business logic bhi match hona chahiye.
  5. Business action se connect karo
    Result report, audience segment, campaign suppression, personalization, ya decision mein use hoga?
Memory anchor: Question → Tables → Logic → Query → Validation → Action.

Practice ke liye sample data ecosystem

TableUseful columnsBusiness meaning
CustomersCustomerID, Name, City, EmailCustomer profile
OrdersOrderID, CustomerID, OrderDate, Amount, StatusCustomer purchases
PaymentsPaymentID, OrderID, PaymentStatusPayment outcome
CampaignsCampaignID, CampaignName, ChannelMarketing campaign details
CampaignResponsesCustomerID, CampaignID, ResponseCustomer engagement/response
Platform note: Generic SQL ka har feature Salesforce Marketing Cloud Engagement Query Activities ya Data 360 ke har query interface mein same tarah available nahi hota. Apne target platform ki SQL limitations aur data model verify karo.

10. Scenario Practice: Business language ko SQL logic mein badlo

Har scenario mein pehle khud option choose karo. Phir answer check karke explanation padho.

Q1. Delhi ke customers ke Name aur Email chahiye. Kya use karoge?

Sample query
SELECT Name, Email
FROM Customers
WHERE City = 'Delhi';

Q2. Aise customers chahiye jinhone kabhi order nahi diya.

Sample query
SELECT c.CustomerID, c.Name
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE o.OrderID IS NULL;

Q3. Top 10 highest-spending customers chahiye.

Sample query
SELECT CustomerID, SUM(Amount) AS TotalAmount
FROM Orders
GROUP BY CustomerID
ORDER BY TotalAmount DESC
LIMIT 10;

LIMIT kuch SQL dialects mein different ho sakta hai. Salesforce platform par supported syntax confirm karo.

Q4. Har campaign par kitne unique customers ne response diya?

Sample query
SELECT CampaignID,
       COUNT(DISTINCT CustomerID) AS RespondingCustomers
FROM CampaignResponses
GROUP BY CampaignID;

Q5. Successful payments se related orders ka revenue calculate karna hai. Sabse important validation kya hai?

Logic example
-- Join: Orders o to Payments p using OrderID
-- Filter: PaymentStatus = 'Successful'
-- Before SUM(o.Amount), validate one-to-many payment records.

SFMC / Data 360 mein yeh kaise kaam aata hai?

  • SFMC: Data Extensions ko subscriber/customer key se connect karke audience, exclusions, purchase-based segmentation ya reporting banana.
  • Data 360: Relevant DMOs aur relationship fields samajhkar unified customer, order, engagement ya calculated metric ki query logic plan karna.
  • Consultant habit: Query run karne se pehle expected grain define karo—ek row per customer, per order, per campaign, ya per event?
Pro tip: JOIN se pehle poochho: “Final result mein ek row kis cheez ko represent karegi?” Yeh duplicates aur incorrect totals se bachne mein help karta hai.

11. JOIN practice quiz

Har question ka option choose karo, phir answer check karo.

Q1. Saare customers chahiye, order ho ya na ho. Kaunsa JOIN?

Q2. INNER JOIN ke result mein kitni rows aayengi?

Q3. Jin customers ka order nahi hai, unhe kaise find karoge?

Q4. Delhi customers ke orders filter karne ke liye correct condition?

Q5. Dono tables ke saare records chahiye, match ho ya na ho.

12. Quick cheat sheet

RequirementApproach
Sirf matching recordsINNER JOIN
Left table ke saare recordsLEFT JOIN
Right table ke saare recordsRIGHT JOIN
Dono tables ke saare recordsFULL OUTER JOIN
Unmatched left-side recordsLEFT JOIN + WHERE right_key IS NULL
Customer-wise totalJOIN + SUM() + GROUP BY
Golden rule: Pehle decide karo result mein kaunse records preserve karne hain. Phir JOIN type choose karo. Uske baad ON mein matching condition likho.

Salesforce Data 360 connection

Data 360 mein bhi related data objects ko join karte waqt relationship fields aur expected output samajhna important hai. Lekin Data 360 query interfaces, Calculated Insights aur Marketing Cloud Engagement Query Activities ki SQL capabilities alag ho sakti hain. Har jagah generic SQL ke saare features available hon, zaroori nahi.