কেন DISTINCT দরকার — আগে গল্প
আজকের ক্লাস SQL কোড দিয়ে শুরু হবে না। প্রথমে চারটা বাস্তব সমস্যা। সমস্যাটা না বুঝলে DISTINCT মুখস্থ হয়ে যাবে — বোঝা হবে না।
গল্প ১ — বিশ্ববিদ্যালয় (৫০,০০০ ছাত্র)
প্রশাসক জিজ্ঞেস করলেন: “আমাদের ছাত্ররা কোন কোন শহর থেকে আসে?”
১) কি আমরা সবগুলো Dhaka বারবার দেখাব, নাকি প্রতিটা শহর একবার?
২) কেন একই শহর বারবার আসছে?
৩) SQL কীভাবে প্রতিটা মান একবার করে দেখাতে পারে?
বারবার দেখালে
বিভ্রান্তিকর। পড়া কষ্ট।
একবার করে দেখালে
পরিষ্কার ইউনিক তালিকা।
গল্প ২ — ই-কমার্স (১০ লক্ষ অর্ডার)
“কোন কোন শহরে কাস্টমার আছে?” — তিনি ১০ লক্ষ সারি চান না। চান শুধু:
গল্প ৩ — ব্যাংক
মিলিয়ন ট্রানজেকশনের Branch কলামে একই শাখার নাম হাজারবার। ম্যানেজার চান: “কোন কোন শাখায় লেনদেন হয়েছে?” — প্রতিটা শাখা একবার।
গল্প ৪ — হাসপাতাল
পরিচালক চান ডিপার্টমেন্টের ইউনিক তালিকা:
DISTINCT আসলে কী?
ডুপ্লিকেট কী? ইউনিক কী?
- Duplicate: একই মান বারবার আসা (Dhaka, Dhaka, Dhaka)।
- Unique: প্রতিটা আলাদা মান একবার (Dhaka একবার)।
DISTINCT কী করে?
SELECT-এর ফলাফল থেকে একই মান / একই কলাম-কম্বিনেশন বারবার না দেখিয়ে ইউনিক রেজাল্ট দেয়।
কী করে
- Query result-এ ডুপ্লিকেট কমায়
- ইউনিক তালিকা দেয়
- রিপোর্ট পঠনযোগ্য করে
কী করে না
- টেবিল থেকে রো DELETE করে না
- আসল ডেটা বদলায় না
- সাজায় না (ORDER BY লাগে)
- গণনা করে না (GROUP BY + COUNT লাগে)
Basic DISTINCT — লাইন বাই লাইন
স্যাম্পল টেবিল: Customers
| CustomerID | Name | City |
|---|---|---|
| 1 | Rahim | Dhaka |
| 2 | Karim | Dhaka |
| 3 | Salma | Chittagong |
| 4 | Nadia | Dhaka |
| 5 | Jamal | Sylhet |
| 6 | Rina | Chittagong |
Query
Expected output
আউটপুট ব্যাখ্যা: টেবিলে ৬ সারি ছিল, কিন্তু City অনুযায়ী মাত্র ৩টা আলাদা মান — তাই ৩ সারি ফিরে এসেছে। আসল টেবিলে এখনো ৬ সারিই আছে।
লাইন বাই লাইন
SELECT→ কী দেখতে চাই?DISTINCT→ একই মান বারবার নয়।City→ কোন কলাম?FROM Customers→ কোন টেবিল?
বিভিন্ন ডেটা টাইপে DISTINCT
টেক্সট — Department
Country
Category
সংখ্যা — Age
Salary (ইউনিক বেতনের মান)
একাধিক কলামে DISTINCT — কম্বিনেশন
খুবই গুরুত্বপূর্ণ: DISTINCT প্রতিটা কলাম আলাদাভাবে ইউনিক করে না। সে নির্বাচিত কলামগুলোর পুরো জোড়া/কম্বিনেশন দেখে।
| Department | City |
|---|---|
| IT | Dhaka |
| IT | Dhaka |
| HR | Dhaka |
| IT | Sylhet |
| HR | Dhaka |
Output (ইউনিক কম্বিনেশন)
| Department | City |
|---|---|
| IT | Dhaka |
| HR | Dhaka |
| IT | Sylhet |
IT + Dhaka দুবার ছিল → একবার রাখা হয়েছে। IT + Sylhet আলাদা কম্বিনেশন → আলাদা সারি।
বিজনেস উদাহরণ
- Country + City
- Department + Designation
- Category + Brand
- Year + Month
DISTINCT + WHERE
আরও উদাহরণ
DISTINCT + ORDER BY
DISTINCT vs GROUP BY
ইউনিক তালিকা
গ্রুপ + গণনা
| DISTINCT | GROUP BY |
|---|---|
| প্রধানত ইউনিক রেজাল্ট | প্রধানত গ্রুপ বিশ্লেষণ |
| সিম্পল ডুপ্লিকেট রিমুভাল | গ্রুপড রিপোর্টের জন্য ডিজাইন |
| প্রায়ই Aggregate ছাড়া | COUNT/SUM/AVG-এর সাথে সাধারণ |
| ইউনিক লিস্টে সহজ | রিপোর্ট ও অ্যাগ্রিগেশনে ভালো |
শুধু “কোন কোন ডিপার্টমেন্ট আছে?” → DISTINCT যথেষ্ট। “প্রতি ডিপার্টমেন্টে কতজন?” → GROUP BY + COUNT — DISTINCT একা এটি পারে না।
অন্যান্য SQL কনসেপ্টের সাথে তুলনা
| তুলনা | সহজ ব্যাখ্যা |
|---|---|
| DISTINCT vs GROUP BY | লিস্ট vs গ্রুপ+হিসাব |
| DISTINCT vs ORDER BY | ডুপ্লিকেট সরানো vs সাজানো |
| DISTINCT vs WHERE | ফলাফলে ইউনিক vs আগে সারি ফিল্টার |
| DISTINCT vs LIMIT | ইউনিক মান vs কতগুলো সারি দেখাবে |
| DISTINCT vs স্থায়ী ডুপ্লিকেট ডিলিট | শুধু result vs DELETE/ডেটা ক্লিনিং |
MySQL Workbench — হাতে-কলমে
Step 1–3: Database, Table, Data (২৫ রো)
Step 4 — সব ডেটা দেখো
২৫ সারি আসবে। এখনো DISTINCT নেই।
Step 5 — ইউনিক Department
ব্যাখ্যা: অনেক কর্মী, কিন্তু ডিপার্টমেন্ট মাত্র ৪টা। ভুল: ভাবা যে বাকি ডিপার্টমেন্ট ডিলিট হয়ে গেছে।
Step 6 — ইউনিক City
Step 7 — Department + City কম্বিনেশন
শুধু City DISTINCT-এর চেয়ে বেশি সারি আসবে — কারণ একই শহরে একাধিক ডিপার্টমেন্ট আলাদা কম্বিনেশন।
Step 8 — WHERE সহ
শুধু IT কর্মীদের শহর।
Step 9 — ORDER BY সহ
কমন বিগিনার ভুল
Mistake 1 — DISTINCT = DELETE ভাবা
ভুল ধারণা
সঠিক ধারণা
Mistake 2 — শুধু প্রথম কলামে কাজ করে ভাবা
একাধিক কলাম থাকলে পুরো কম্বিনেশন চেক হয়।
Mistake 3 — GROUP BY-এর সাথে গুলিয়ে ফেলা
গণনা/সামারি চাইলে GROUP BY; শুধু ইউনিক লিস্টে DISTINCT।
Mistake 4 — অপ্রয়োজনে DISTINCT
বড় টেবিলে অতিরিক্ত DISTINCT ধীর করতে পারে। দরকার না থাকলে ব্যবহার কোরো না।
Mistake 5 — “ভালো” ডুপ্লিকেট বেছে নেবে ভাবা
DISTINCT কোন সারি “ভালো” তা সিদ্ধান্ত নেয় না — শুধু একই রেজাল্ট কম্বিনেশন একবার রাখে।
ইন্ডাস্ট্রিতে কে কীভাবে ব্যবহার করে
| রোল | DISTINCT দিয়ে কী করেন |
|---|---|
| Data Analyst | ইউনিক কাস্টমার সিটি |
| Marketing | ইউনিক কাস্টমার সেগমেন্ট |
| E-commerce | ইউনিক প্রোডাক্ট ক্যাটাগরি |
| HR | ইউনিক ডিপার্টমেন্ট |
| Finance | ইউনিক ব্রাঞ্চ |
| Healthcare | ইউনিক ট্রিটমেন্ট ডিপার্টমেন্ট |
| Data Engineer | ডেটা কোয়ালিটি চেক |
| Data Scientist | EDA-তে ক্যাটাগরির মান এক্সপ্লোর |
বিজনেস কেস স্টাডি — E-commerce
টেবিল কলাম: Customer_ID, Customer_Name, City, Country, Gender, Product_Category, Payment_Method, Order_Status, Order_Amount
- কোন কোন শহরে কাস্টমার আছে? →
SELECT DISTINCT City FROM … - কোন কোন দেশ? →
DISTINCT Country - কোন ক্যাটাগরি আছে? →
DISTINCT Product_Category - কোন পেমেন্ট মেথড? →
DISTINCT Payment_Method - City + Category কম্বিনেশন? →
DISTINCT City, Product_Category - সম্পন্ন অর্ডারের শহর? →
WHERE Order_Status='Completed'+DISTINCT City
ক্লাসরুম অ্যাক্টিভিটি
DISTINCT কী রিটার্ন করবে? (উত্তর: Dhaka, Sylhet, Chittagong)
টেবিল ও query দেখিয়ে আগে কাগজে আউটপুট লেখো, পরে রান করো।
- “কোন কোন ব্র্যান্ড আছে?” → DISTINCT
- “প্রতি ব্র্যান্ডের মোট বিক্রি?” → GROUP BY + SUM
মিসটেক: DISTINCT ডিলিট করে না।
মিনি প্রজেক্ট — Customer Analytics Report
খুঁজে বের করো:
- Unique cities / countries / departments / product categories / payment methods
- Unique city + product category combinations
তারপর DISTINCT-এর সাথে WHERE, ORDER BY, LIMIT জোড়া লাগাও।
পারফরম্যান্স ও প্রফেশনাল টিপস
- DISTINCT অনেক মান তুলনা করতে পারে — বড় ডেটাসেটে ব্যয়বহুল হতে পারে।
- শুধু দরকারি কলাম SELECT করো।
SELECT DISTINCT *এড়াও, যদি না সত্যিই পুরো সারি ইউনিক চাও।- আগে WHERE দিয়ে সারি কমাও।
- বিজনেসে সামারি লাগলে GROUP BY ভেবে দেখো।
সরলীকৃত SQL এক্সিকিউশন ফ্লো
রিভিশন ও চিট শিট
- Duplicate = বারবার একই মান; Unique = একবার।
- DISTINCT = query result ইউনিক করে; টেবিল মুছে না।
- Multi-column = কম্বিনেশন চেক।
- WHERE আগে ফিল্টার; ORDER BY পরে সাজায়।
- লিস্ট → DISTINCT; গণনা/সামারি → GROUP BY।
SELECT DISTINCT column FROM table;
SELECT DISTINCT column1, column2 FROM table;
SELECT DISTINCT column FROM table WHERE condition;
SELECT DISTINCT column FROM table ORDER BY column;
MCQ — ক্লিক করে উত্তর দেখো
SELECT DISTINCT City FROM Emp WHERE Department='IT';ভিভা প্রশ্ন (১৫+)
ইন্টারভিউ — Top 25 DISTINCT
প্রতিটিতে ক্লিক করো — উত্তর, উদাহরণ, কমন ভুল, ফলো-আপ, ইউজ-কেস।
হোমওয়ার্ক — E-commerce Database
প্রশ্নসমূহ (আগে শুধু প্রশ্ন)
- Unique cities বের করো।
- Unique countries।
- Unique categories।
- Unique payment methods।
- Unique order statuses।
- Unique city + category combinations।
- Completed অর্ডারের unique cities।
- Unique categories নাম অনুযায়ী সাজাও।
- অ্যালফাবেটিকভাবে প্রথম ৫টি unique cities।
উত্তর সেকশন (ক্লিক করে দেখো)
SELECT DISTINCT City FROM Orders;SELECT DISTINCT Country FROM Orders;SELECT DISTINCT Product_Category FROM Orders;SELECT DISTINCT Payment_Method FROM Orders;SELECT DISTINCT Order_Status FROM Orders;SELECT DISTINCT City, Product_Category FROM Orders;SELECT DISTINCT City FROM Orders WHERE Order_Status = 'Completed';SELECT DISTINCT Product_Category FROM Orders ORDER BY Product_Category;SELECT DISTINCT City FROM Orders ORDER BY City ASC LIMIT 5;