دستور Select Distinct در SQL

دستور Select Distinct در SQL

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۰۱ شهریور ۱۴۰۰
آخرین بروزرسانی: ۲۸ خرداد ۱۴۰۳
زمان مطالعه: 11 دقیقه
۵
(۴)

معرفی SQL Select Distinct

SQL، در واقع زبانی است که برای برقراری ارتباط با جداول پایگاه داده استفاده می‌‌شود. طبق ANSI یا انستیتوی ملی آمریکا، SQL زبان استاندارد برای سیستم‌ های مدیریت پایگاه داده رابطه ‌ای است. دستورات SQL برای انجام کار‌هایی مانند به‌روزرسانی داده‌‌ها در پایگاه داده‌ ها یا بازیابی داده ها از پایگاه داده استفاده می‌شود. برخی از سیستم‌های مدیریت پایگاه داده رابطه‌ای متداول که از SQL استفاده می‌ کنند عبارتند از Microsoft، Sybase، Access، SQL Server و… . اگرچه بیشتر سیستم‌های پایگاه داده از SQL استفاده می ‌کنند، اکثر آن‌ها یک سری تعمیم‌‌ها و توسعه‌های اختصاصی و اضافی مخصوص به خود را نیز دارند که به‌طور معمول فقط در سیستم‌های خودشان مورد استفاده قرار می‌گیرد.

با این حال، دستورات استاندارد SQL مانند Select و Insert و Update و Delete و Create و Drop می‌‌توانند برای انجام تقریباً تمام کار‌هایی که یک فرد می‌تواند با یک پایگاه داده انجام دهد، مورد استفاده قرار گیرند. علاوه‌براین‌ها، کلمات کلیدی بسیاری در SQL وجود دارد. یکی از آن‌ها، کلمه کلیدی DISTINCT است. از کلمه‌ کلیدی DISTINCT در SQL، برای استخراج رکورد‌های منحصربه‌فرد از جدول پایگاه داده استفاده می‌شود. دستور distinct در sql معمولا همراه با دستور SELECT استفاده می‌ شود.

دوره کوئری نویسی نیک آموز

از دستور SELECT، به طور کلی برای استخراج رکورد‌های مورد نظر از جدول پایگاه داده و از دستور distinct در sql برای حذف رکورد‌های تکراری و استخراج رکورد‌های یکتا استفاده می‌شود. علاوه‌براین، می‌تواند همراه با توابعی مانند AVG، MAX، MIN، SUM، COUNT و غیره نیز استفاده شود. استفاده از دستور distinct در sql، زمانی خیلی مفید است که جداول حاوی مقادیر تکراری بسیار زیادی باشند و فقط به رکورد‌های منحصربه‌فرد نیاز باشد. به طور مثال، در یک سناریوی مربوط به کسب و کار، وقتی می‌خواهیم تعداد مشتر‌ی‌ های متمایز و همینطور مکان‌های سفارش متمایز را داشته باشیم، استفاده از این دستور کمک کننده خواهد بود.
اگر می‌ خواهید بیش ‌تر با دستور Select Distinct در SQL و پارامتر‌ها و کاربرد‌‌های مربوط به آن آشنا شوید، در ادامه‌ مقاله با ما همراه باشید.

دستور Select Distinct در SQL و پارامتر‌های آن

دستور اصلی برای نوشتن دستور distinct در sql به شرح زیر است:

 

SELECT DISTINCT column_name1, column_name2,...
FROM table_name;

 
پارامتر‌های استفاده شده در دستور بالا عبارت است از:

  • column_name1, column_name2,..: این‌ ها ستون‌هایی هستند که می‌خواهید از آن‌ها استخراج مجموعه داده‌ مورد نظر خود را انجام دهید.
  • table_name: این پارامتر، نام جدولی است که از ستون‌های مربوط به آن، در فرایند استخراج رکورد‌های مورد نظر استفاده می‌شود.

عملکرد Select به همراه دستور distinct در sql چگونه است؟

همانطور که گفته شد، دستور Select Distinct در SQL ، مقادیر تکراری را فیلتر می‌کند. برای ساده‌سازی فهم عملکرد آن، در ادامه مطالبی را توضیح می‌دهیم. دستور distinct در sql ، ابتدا مجموعه نتایج کلی به همراه تمامی رکورد‌ها را ایجاد می‌کند که شامل مقادبر تکراری با توجه به استفاده از عبارات FROM و JOIN و WHERE و HAVING و عبارات دیگر است. سپس مجموعه نتایج را براساس column_name یا هر فیلد دیگری مرتب می‌کند و در نهایت عملیات de-duplication انجام می‌گیرد؛ به این معنا که مقادیر تکراری از مجموعه نتایج کلی حذف می‌شود.
دستور Select Distinct در SQL را می‌توان ازنظر معنایی معادل با GROUP BY که همه فیلد‌های موردنظر در مقابل آن ذکر می‌شود، در نظر گرفت. بعد از صحبت در مورد دستور SELECT DISTINCT و نحوه‌ عملکرد آن، در بخش بعدی مثال‌هایی را برای درک درست‌تر مفاهیم گفته‌شده، خواهید دید.

نمونه ‌هایی از دستور Select Distinct در SQL

به منظور نشان‌دادن عملکرد دستور distinct در sql با یک مثال، یک جدول پایگاه داده‌ ساختگی به نام customers ایجاد می‌کنیم. بدین منظور از کد زیر استفاده می‌کنیم:

 

CREATE TABLE public.customers
(
customer_id integer NOT NULL,
sale_date date NOT NULL,
sale_amount numeric NOT NULL,
salesperson character varying(255),
store_state character varying(255),
order_id character varying(255)

 

اکنون، جدول مورد نظر با موفقیت ایجاد شد. در گام بعدی، تعدادی رکورد به جدول اضافه می‌کنیم تا بتوانیم با آن‌ها کار کنیم.

 

INSERT INTO public.customers(
customer_id, sale_date, sale_amount, salesperson, store_state, order_id)
VALUES (1001,'2020-05-23',1200,'Raj K','KA','1001'),
(۱۰۰۱,'۲۰۲۰-۰۵-۲۲',۱۲۰۰,'M K','NULL','1002'),
(۱۰۰۲,'۲۰۲۰-۰۵-۲۳',۱۲۰۰,'Malika Rakesh','MH','1003'),
(۱۰۰۳,'۲۰۲۰-۰۵-۲۲',۱۵۰۰,'Malika Rakesh','MH','1004'),
(۱۰۰۱,'۲۰۲۰-۰۵-۲۳',۱۳۲۰,'Dave Peter','MH','1005'),
(۱۰۰۲,'۲۰۲۰-۰۵-۲۱',۱۲۰۰,'Molly Samberg','NY','1001'),
(۱۰۰۴,'۲۰۲۰-۰۵-۲۲',۱۲۱۰,'M K','NULL','1003');

 

خروجی این کد را می‌توانید در تصویر زیر مشاهده کنید:

 

نمونه ‌هایی از دستور Select  Distinct در SQL

 

حال با موفقیت توانستیم ۷ رکورد را در جدول وارد کنیم. جدول پایگاه داده مشتریان پس از انجام موارد درج‌شده فوق، به شرح زیر است:

 

SELECT * FROM customers;

 

نمونه ‌هایی از دستور Select  Distinct در SQL

 

در ادامه قصد داریم چندین مثال را با استفاده از دستور Select Distinct در SQL امتحان کنیم.

مثال اول

می‌ خواهیم شناسه‌ مشتری همه مشتری‌های منحصربه‌فرد را که چیزی از فروشگاه خریداری یا سفارش داده‌‌اند را پیدا کنیم. پس از قطعه کد زیر استفاده می‌کنیم.

 

SELECT DISTINCT customer_id
FROM customers;

 

خروجی این کد، طبق تصویر پایین خواهد بود.

 

نمونه ‌هایی از دستور Select  Distinct در SQL

 

در این مثال می‌توانیم ببینیم که استفاده از دستور distinct در sql ، باعث شده فقط شناسه‌های منحصربه‌فرد مشتری برگردانده شود.

مثال دوم

در این مثال به دنبال آن هستیم که تمام تاریخ‌های منحصربه‌فرد فروش مربوط به فروشگاه را به دست بیاوریم. به این منظور از قطعه کد زیر استفاده می‌کنیم.

 

SELECT DISTINCT sale_date
FROM customers

 نمونه ‌هایی از دستور Select  Distinct در SQL

 

مثال سوم

در این مثال می ‌خواهیم تمامی مکان‌های منحصربه‌فرد که فروشگاه در آن واقع شده را به دست بیاوریم. قطعه کد زیر ما را به این هدف می‌رساند.

 

SELECT DISTINCT store_state
FROM customers
ORDER BY store_state ASC;

 

خروجی مورد نظر در تصویر زیر قابل مشاهده است.

 

نمونه ‌هایی از دستور Select  Distinct در SQL

 

نکته‌ی مهم در مورد مقادیر NULL و کلمه کلیدی این است که DISTINCT به اولین NULL اجازه‌ حضور در مجموعه نتایج نهایی را می‌دهد ولی تمام مقادیر بعدی NULL را حذف می‌کند. این نکته را می‌توانید در همین مثال نیز مشاهده کنید. در ستون store_state، دو مقدار NULL وجود داشت، اما استفاده از DISTINCT باعث شده است که فقط یک NULL را در مجموعه نتایج نهایی داشته باشیم.

مثال چهارم

در این مثال قصد داریم تمام سفارش‌های منحصربه‌فرد را که در یک تاریخ خاص در فروشگاه انجام شده است را پیدا کنیم. قطعه کد زیر را به این منظور استفاده می‌ کنیم.

 

SELECT DISTINCT sale_date,
salesperson,
order_id,
store_state
FROM customers
ORDER BY sale_date;

 

خروجی مورد نظر براساس این کد را در تصویر پایین مشاهده می‌کنید.

 

نمونه ‌هایی از دستور Select  Distinct در SQL

 

مثال پنجم

اگر بخواهیم مجموع درآمد، برای کلیه سفارش‌های منحصربه‌فرد که در یک تاریخ خاص در یک مغازه‌ خاص فروشگاه انجام شده را پیدا کنیم، با کمک دستور Select Distinct در SQL به نتایج زیر می‌رسیم.

 

SELECT DISTINCT sale_date, store_state,
sum(sale_amount) as total_sales
FROM customers
GROUP BY store_state, sale_date
ORDER BY sale_date ASC;

 

خروجی موردنظر را در تصویر زیر مشاهده می‌کنید.

 

نمونه ‌هایی از دستور Select  Distinct در SQL

 

مثال ششم

در این مثال قصد داریم تمام مشتریان منحصربه‌فرد و مجموع هزینه صرف‌شده توسط آن‌ها در فروشگاه را پیدا کنیم. از قطعه کد زیر بدین منظور استفاده می‌کنیم.

 

SELECT DISTINCT customer_id,
sum(sale_amount) as total_sales
FROM customers
GROUP BY customer_id
ORDER BY customer_id ASC;

 

خروجی نهایی مورد نظر را در تصویر زیر مشاهده می کنید.

 

نمونه ‌هایی از دستور Select  Distinct در SQL

 

مثال هفتم

در مثال آخر به دنبال این هستیم که تمام فروشندگان منحصربه‌فردی که در فروشگاه‌ کار می‌کنند را پیدا کنیم. پس از دستور distinct در sql زیر استفاده می‌کنیم.

 

SELECT DISTINCT salesperson
FROM customers;

 

در تصویر زیر، خروجی دستور استفاده شده را می‌بینید.

 

عملکرد Select به همراه کلمه ‌ی کلیدی Distinct در SQL چگونه است؟

 

دستور Select Count Distinct

تابع SELECT COUNT DISTINCT، تعداد سطر‌هایی که با یک معیار مشخص مطابقت دارند، برمی‌گرداند. مثالی از این دستور و خروجی را در ادامه خواهید دید.

 

SELECT COUNT(DISTINCT EmpId) FROM EmpDetail

 

دستور Select Count Distinct

 

دستور Select AVG Distinct

تابع SELECT AVG DISTINCT ، مقدار میانگین یا متوسط یک ستون عددی را برمی‌گرداند. در ادامه مثال و خروجی این نوع دستور distinct در sql را می‌بینید.

 

SELECT AVG(DISTINCT EmpId)
FROM EmployeeDetail
WHERE EmpId= EmpId

 

دستور Select AVG Distinct

 

دستور Select MAX Distinct

تابع SELECT MAX DISTINCT، بیشترین مقدار ستون انتخاب شده را برمی‌گرداند. در ادامه به مثال و خروجی توجه کنید.

 

SELECT MAX(DISTINCT EmpId)
FROM EmployeeDetail
WHERE EmpId= EmpId

 

دستور Select MAX Distinct

 

جمع‌ بندی: دستور Select Distinct در SQL

SQL یا Structured Query Language، ‌یک زبان برنامه‌نویسی و پرس‌و‌‌‌جو است که برای پرس‌وجو از پایگاه داده‌ها مورد استفاده قرار می‌گیرد. ما در این مقاله در مورد دستور distinct در sql صحبت کردیم و گفتیم هنگامی که به داده‌‌های غیرتکراری نیاز داریم، از دستور Select Distinct در SQL استفاده می‌کنیم. پارامتر‌های مختلفی در هنگام استفاده از این دستور استفاده می‌شود. Column Name، Conditional ، Table Name و WHERE از جمله این آرگومان‌ها هستند که بسته به نیاز، به سراغ آن‌‌ها می‌رویم و رکورد‌های مورد نظر خود را از جداول پایگاه داده استخراج می‌ کنیم.

پس در مجموع می‌توان گفت دستور distinct در sql به ما این امکان را می‌دهد که داده‌های منحصربه‌فرد و کاملاً یکتا را را استخراج کنیم و همچنین تعداد این داده‌ها را با استفاده از دستور Select Distinct در SQL به دست آوریم. از این امر می‌توانیم برای پیش‌پردازش داده‌ها، بررسی کلی داده‌ها و درک و فهم نقاط بسیار مهم داده‌ها استفاده کنیم؛ چراکه با استفاده از این دستور، فقط داده‌های منحصربه‌فرد را درنظر می‌گیریم.

مقاله ‌های پیشنهادی

این متن، یک راهنمای کلی برای SQL SELECT DISTINCT بود. ما به معرفی دستور distinct در sql و مثال‌های عملی و subquery‌ های مختلف پرداختیم. پیشنهاد ما این است برای کسب اطلاعات بیشتر، این مقالات را نیز مرور کنید.

  1. Top 5 Examples of SQL Server Substring
  2. Overview of Triggers in SQL
  3. Introduction to SQL Arithmetic Operators
  4. ANY in SQL | Examples | Syntax

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۴

اولین نفر باش

title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
402 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران