خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه برخورد با مقادیر تکراری در SQL

برخورد با مقادیر تکراری در SQL می تواند یک کار دست و پا گیر باشد. اما نترسید، این راهنما اینجاست تا بار شما را کاهش دهد.

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

آیا از SQL برای خرد کردن اعداد و انجام پرس و جوهای طولانی در پشته های داده خود استفاده می کنید؟ اگر بله، پس این راهنمای مدیریت نسخه های تکراری SQL برای شما بسیار لذت بخش خواهد بود.

در اینجا چند روش مختلف برای مدیریت موارد تکراری با استفاده از SQL وجود دارد.

1. شمارش موارد تکراری با استفاده از گروه بر اساس تابع

SQL یک زبان برنامه نویسی چند وجهی است که توابع مختلفی را برای ساده کردن محاسبات ارائه می دهد. اگر تجربه زیادی در مورد توابع تجمع در SQL دارید، ممکن است قبلاً با گروه بر اساس تابع و آنچه که می توان از آن استفاده کرد آشنا هستید.

گروه بر اساس تابع یکی از اساسی ترین دستورات SQL است که برای برخورد با چندین رکورد ایده آل است زیرا می توانید از توابع مجموع مختلف مانند مجموع، شمارش، میانگین و بسیاری دیگر در ارتباط با گروه بر اساس تابع برای رسیدن به یک متمایز استفاده کنید. ارزش ردیفی

بسته به سناریو، می توانید موارد تکراری را با گروه بر اساس تابع در یک ستون و چندین ستون پیدا کنید.

آ. موارد تکراری را در یک ستون بشمارید

فرض کنید جدول داده های زیر را با دو ستون دارید: ProductID و Orders.

شناسه محصول

سفارشات

10

10

10

12

12

12

12

14

14

47

47

برای یافتن شناسه‌های محصول تکراری، می‌توانید از گروه بر اساس تابع و عبارت داشتن برای فیلتر کردن مقادیر جمع‌آوری شده به شرح زیر استفاده کنید:

select productid, count(productid) as Total_count

from sahil.product_dups

group by productid

having count(productid) > 1

order by productid;

مانند یک دستور SQL معمولی، باید با تعریف ستون هایی که می خواهید در نتیجه نهایی نمایش دهید شروع کنید. در این حالت می خواهیم تعداد مقادیر تکراری را در ستون ProductID نمایش دهیم.

مطلب مرتبط:   چگونه با استفاده از پایتون یک سیستم تایید OTP بسازیم

در بخش اول، ستون ProductID را در دستور select تعریف کنید. تابع شمارش از مرجع ProductID پیروی می کند تا SQL هدف درخواست شما را درک کند.

سپس جدول منبع را با استفاده از عبارت from تعریف کنید. از آنجایی که count یک تابع تجمیع است، باید از گروه به تابع برای گروه بندی تمام مقادیر مشابه استفاده کنید.

به یاد داشته باشید، ایده این است که مقادیر تکراری را در ستون ProductID فهرست کنید. برای انجام این کار، باید تعداد و مقادیر نمایش داده شده بیش از یک بار در ستون را فیلتر کنید. بند دارای داده های جمع آوری شده را فیلتر می کند. می توانید از شرط، یعنی count(productid) >1 برای نمایش نتایج مورد نظر استفاده کنید.

در نهایت، ترتیب بر اساس بند، نتایج نهایی را به ترتیب صعودی مرتب می کند.

خروجی به صورت زیر است:

کد SQL و خروجی در رابط MySQL

ب موارد تکراری را در چندین ستون بشمارید

هنگامی که می خواهید موارد تکراری را در چندین ستون بشمارید اما نمی خواهید چندین پرس و جو SQL بنویسید، می توانید کد بالا را با چند ترفند گسترش دهید. به عنوان مثال، اگر می خواهید ردیف های تکراری را در چندین ستون نمایش دهید، می توانید از کد زیر استفاده کنید:

select productid, orders, count(*) as Total_count

from sahil.product_dups

group by productid, orders

having count(productid) > 1

order by productid;

در خروجی متوجه خواهید شد که فقط دو ردیف نمایش داده می شود. هنگامی که پرس و جو را تغییر می دهید و مرجع هر دو ستون را در عبارت select اضافه می کنید، تعداد ردیف های منطبق با مقادیر تکراری را دریافت می کنید.

به جای تابع count(column)، باید تابع count(*) را ارسال کنید تا ردیف های تکراری دریافت کنید. تابع * در تمام ردیف‌ها جابجا می‌شود و به‌جای مقادیر تکراری منفرد به دنبال ردیف‌های تکراری می‌گردد.

خروجی در زیر نشان داده شده است:

کد و خروجی در MySQL

ردیف های مربوطه با شناسه محصول 14 و 47 نمایش داده می شوند زیرا مقادیر سفارش یکسان هستند.

2. پرچم گذاری موارد تکراری با تابع row_number().

در حالی که گروه by و داشتن ترکیب ساده‌ترین راه برای یافتن و پرچم‌گذاری موارد تکراری در یک جدول است، یک راه جایگزین برای یافتن موارد تکراری با استفاده از تابع row_number () وجود دارد. تابع row_number() بخشی از دسته توابع پنجره SQL است و برای پردازش کارآمد پرس و جوهای شما ضروری است.

مطلب مرتبط:   انویدیا می گوید هوش مصنوعی کدنویسی را از بین می برد، اما در اینجا 5 دلیل برای اشتباه بودن آن وجود دارد.

در اینجا نحوه پرچم گذاری موارد تکراری با استفاده از تابع row_number () آمده است:

select productid, orders,

row_number() over (partition by productid order by productid) as sno

from sahil.product_dups;

تابع row_number() از هر مقدار شناسه محصول عبور می کند و تعداد تکرارها را برای هر ID یکسان می کند. کلمه کلیدی پارتیشن مقادیر تکراری را جدا می کند و مقادیر را به ترتیب زمانی مانند 1، 2،3 و غیره اختصاص می دهد.

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

ترتیب به بند در بخش پارتیشن هنگام تعریف ترتیب مرتب سازی کاربردی است. می توانید بین ترتیب صعودی (پیش فرض) و نزولی یکی را انتخاب کنید.

در نهایت، می‌توانید یک نام مستعار به ستون اختصاص دهید تا بعداً (در صورت نیاز) فیلتر شود.

کد SQL و خروجی استفاده از تابع row_number برای پرچم‌گذاری موارد تکراری را نشان می‌دهد

3. حذف ردیف های تکراری از یک جدول SQL

از آنجایی که مقادیر تکراری در یک جدول می تواند تحلیل شما را منحرف کند، حذف آنها در مرحله پاکسازی داده ها اغلب ضروری است. SQL زبان ارزشمندی است که راه هایی را برای ردیابی و حذف مقادیر تکراری به طور موثر ارائه می دهد.

آ. استفاده از کلمه کلیدی متمایز

کلمه کلیدی متمایز احتمالاً رایج ترین و پرکاربردترین تابع SQL برای حذف مقادیر تکراری در جدول است. شما می توانید موارد تکراری را از یک ستون یا حتی ردیف های تکراری را در یک حرکت حذف کنید.

در اینجا نحوه حذف موارد تکراری از یک ستون آمده است:

select distinct productid from sahil.product_dups;

کد و خروجی SQL لیستی از مقادیر منحصر به فرد را در یک ستون نشان می دهد

خروجی فهرستی از تمام شناسه های محصول منحصر به فرد را از جدول برمی گرداند.

برای حذف ردیف های تکراری، می توانید کد بالا را به صورت زیر تغییر دهید:

select distinct * from sahil.product_dups;

خروجی لیستی از تمام ردیف های منحصر به فرد جدول را برمی گرداند. با نگاهی به خروجی، متوجه خواهید شد که شناسه های محصول 14 و 47 تنها یک بار در جدول نتیجه نهایی ظاهر می شوند.

مطلب مرتبط:   چگونه کامپوننت های Drag and Drop را در React بسازیم

کد SQL و خروجی که لیستی از ردیف های منحصر به فرد را نشان می دهد

ب با استفاده از روش Common Table Expression (CTE).

روش Common Table Expression (CTE) کمی با کد اصلی SQL متفاوت است. CTEها شبیه جداول موقت SQL هستند، تنها تفاوت آنها مجازی بودن آنهاست که می توانید فقط در حین اجرای پرس و جو به آنها ارجاع دهید.

بزرگترین مزیت این است که شما مجبور نیستید یک پرس و جو جداگانه ارسال کنید تا بعداً این جداول حذف شوند، زیرا به محض اجرای پرس و جو دیگر وجود ندارند. با استفاده از روش CTE می توانید از کد زیر برای یافتن و حذف موارد تکراری استفاده کنید.

with cteproducts as

(select productid, orders,

row_number() over (partition by productid order by productid) as sno

from sahil.product_dups)

select * from cteproducts

where sno = 1;

می توانید تابع CTE را با استفاده از کلمه کلیدی with فراخوانی کنید. نام جدول مجازی موقت را بعد از کلمه کلیدی with تعریف کنید. مرجع جدول CTE هنگام فیلتر کردن مقادیر جدول مفید است.

در قسمت بعدی، با استفاده از تابع row_number () شماره ردیف را به شناسه محصولات خود اختصاص دهید. از آنجایی که شما به هر شناسه محصول با یک تابع پارتیشن ارجاع می دهید، هر شناسه تکرار شونده دارای یک مقدار متمایز است.

در نهایت، ستون sno جدید ایجاد شده را در آخرین بخش با دستور انتخاب دیگری فیلتر کنید. برای بدست آوردن مقادیر منحصر به فرد در خروجی نهایی، این فیلتر را روی 1 تنظیم کنید.

کد SQL و خروجی با استفاده از تابع CTE

آموزش استفاده از SQL به روش آسان

SQL و انواع آن با توانایی ذاتی خود در پرس و جو و استفاده از پایگاه داده های رابطه ای تبدیل به موضوع مورد بحث شده اند. این زبان از نوشتن پرس و جوهای ساده گرفته تا انجام تحلیل های دقیق با پرس و جوهای فرعی، اندکی از همه چیز را دارد.

با این حال، قبل از نوشتن هر سؤالی، باید مهارت های خود را تقویت کنید و کدها را شکست دهید تا خود را به یک کدنویس ماهر تبدیل کنید. با پیاده سازی دانش خود در بازی ها می توانید SQL را به روشی سرگرم کننده یاد بگیرید. با اضافه کردن کمی سرگرم کننده به کد خود، برخی از تفاوت های ظریف کدنویسی را بیاموزید.