Работата с дублирани стойности в SQL може да бъде тромава задача. Но не се страхувайте, това ръководство е тук, за да ви облекчи.
Данните идват във всякакви форми и форми, но дублиращите се записи са важна част от всеки формат на данни. Независимо дали работите с уеб базирани данни или просто навигирате в камион с данни за продажби, вашият анализ ще бъде изкривен, ако имате дублирани стойности.
Използвате ли SQL, за да пресмятате числата си и да извършвате дълги заявки към вашите стекове от данни? Ако да, тогава това ръководство за управление на SQL дубликати ще бъде абсолютно удоволствие за вас.
Ето няколко различни начина, които можете да използвате за управление на дубликати с помощта на SQL.
1. Преброяване на дубликати с помощта на група по функция
SQL е многостранен език за програмиране, който предлага различни функции за опростяване на изчисленията. Ако имате богат опит с функциите за агрегиране в SQL, може вече да сте запознати с група по функция и за какво може да се използва.
The Групирай по
функцията е една от най-основните SQL команди, което е идеално за работа с множество записи, тъй като можете да използвате различни агрегатни функции като сума, броя, средно аритметично, и много други във връзка с Групирай по функция, за да достигне до отделна стойност по ред.В зависимост от сценария, можете да намерите дубликати с Групирай по функция в рамките на една колона и множество колони.
а. Преброяване на дубликати в една колона
Да предположим, че имате следната таблица с данни с две колони: Идентификация на продукта и Поръчки.
Идентификация на продукта |
Поръчки |
2 |
7 |
2 |
8 |
2 |
10 |
9 |
6 |
10 |
1 |
10 |
5 |
12 |
5 |
12 |
12 |
12 |
7 |
14 |
1 |
14 |
1 |
47 |
4 |
47 |
4 |
За да намерите дублиращи се идентификатори на продукти, можете да използвате Групирай по функция и имайки клауза за филтриране на агрегираните стойности, както следва:
изберете идентификация на продукта, броя(идентификация на продукта) като Общ_брой
от sahil.product_dups
група по productid
с брой (productid) > 1
поръчка по productid;
Както при типичния SQL оператор, трябва да започнете с дефиниране на колоните, които искате да покажете в крайния резултат. В този случай искаме да покажем броя на дублиращите се стойности в рамките на Идентификация на продукта колона.
В първия сегмент дефинирайте Идентификация на продукта колона в рамките на изберете изявление. The броя функция следва Идентификация на продукта справка, така че SQL да разбере целта на вашата заявка.
След това дефинирайте изходната таблица, като използвате от клауза. От броя е функция за агрегиране, трябва да използвате Групирай по функция за групиране на всички подобни стойности.
Не забравяйте, че идеята е да изброите дублиращите се стойности в рамките на Идентификация на продукта колона. За да направите това, трябва да филтрирате броя и показваните стойности, които се появяват повече от веднъж в колоната. The имайки клауза филтрира обобщените данни; можете да използвате условието, т.е. брой (productid) >1, за показване на желаните резултати.
И накрая, на подредени по клаузата сортира крайните резултати във възходящ ред.
Резултатът е както следва:
b. Преброяване на дубликати в множество колони
Когато искате да преброите дубликати в множество колони, но не искате да пишете множество SQL заявки, можете да разширите горния код с няколко настройки. Например, ако искате да покажете дублирани редове в множество колони, можете да използвате следния код:
изберете productid, поръчки, броя(*) като Общ_брой
от sahil.product_dups
групиране по productid, поръчки
с брой (productid) > 1
поръчка по productid;
В изхода ще забележите, че се показват само два реда. Когато промените заявката и добавите референцията на двете колони в рамките на изберете оператор, получавате брой съвпадащи редове с дублиращи се стойности.
Вместо на брой (колона) функция, трябва да преминете броя(*) функция за получаване на дублирани редове. The * функцията превключва през всички редове и търси дублиращи се редове вместо отделни дублиращи се стойности.
Резултатът е показан по-долу:
Показват се съответните редове с ID на продукта 14 и 47, тъй като стойностите на поръчката са еднакви.
2. Маркиране на дубликати с функция row_number().
Докато Групирай по и имайки комбинацията е най-лесният начин за намиране и маркиране на дубликати в таблица, има алтернативен начин за намиране на дубликати с помощта на номер_на_ред() функция. The номер_на_ред() функция е част от SQL прозоречни функции категория и е от съществено значение за ефективната обработка на вашите заявки.
Ето как можете да маркирате дубликати с помощта на номер_на_ред() функция:
изберете productid, поръчки,
row_number() над (разделяне по productid ред по productid) като sno
от sahil.product_dups;
The номер_на_ред() функция претърсва всяка стойност на ID на продукта и асимилира броя на повторенията за всеки ID. The преграда ключовата дума разделя дублиращите се стойности и присвоява стойности хронологично, като 1, 2,3 и т.н.
Ако не използвате преграда ключова дума, ще имате уникален сериен номер за всички идентификатори на продукти, което няма да отговаря на вашата цел.
The подредени по клаузата в секцията за разделяне е функционална при дефиниране на реда на сортиране. Можете да избирате между възходящ (по подразбиране) и низходящ ред.
И накрая, можете да зададете псевдоним на колоната, за да улесните филтрирането по-късно (ако е необходимо).
3. Изтриване на дублиращи се редове от SQL таблица
Тъй като дублиращите се стойности в таблица могат да изкривят анализа ви, елиминирането им по време на етапа на почистване на данни често е наложително. SQL е ценен език, който предлага начини за ефективно проследяване и изтриване на вашите дублирани стойности.
а. Използване на отделната ключова дума
The различен ключовата дума е може би най-разпространената и често използвана SQL функция за премахване на дублирани стойности в таблица. Можете да премахнете дубликати от една колона или дори дублирани редове с едно движение.
Ето как можете да премахнете дубликати от една колона:
изберетеразличен идентификация на продукта от sahil.product_dups;
Изходът връща списък на всички уникални идентификатори на продукти от таблицата.
За да премахнете дублиращи се редове, можете да промените горния код, както следва:
изберетеразличен * от sahil.product_dups;
Изходът връща списък на всички уникални редове от таблицата. Разглеждайки изхода, ще забележите, че идентификаторите на продукта 14 и 47 се появяват само веднъж в таблицата с крайни резултати.
b. Използване на метода на общия табличен израз (CTE).
Методът на Common Table Expression (CTE) се различава леко от основния SQL код. CTE са подобни на Временни таблици на SQL, с единствената разлика, че те са виртуални, които можете да препращате само по време на изпълнение на заявката.
Най-голямото предимство е, че не е необходимо да предавате отделна заявка, за да премахнете тези таблици по-късно, тъй като те престават да съществуват веднага щом заявката се изпълни. Използвайки метода CTE, можете да използвате кода по-долу, за да намерите и изтриете дубликати.
с cteproducts като
(изберете productid, поръчки,
row_number() над (разделяне по productid ред по productid) като sno
от sahil.product_dups)
изберете * от cteproducts
където sno = 1;
Можете да извикате функцията CTE, като използвате с ключова дума; дефинирайте името на временната виртуална таблица след с ключова дума. Справката на CTE таблицата е полезна при филтриране на стойностите на таблицата.
В следващата част задайте номера на редове на вашите идентификатори на продукти, като използвате номер_на_ред() функция. Тъй като препращате към всеки идентификатор на продукт с a преграда функция, всеки повтарящ се ID има отделна стойност.
Накрая филтрирайте новосъздадените сняг колона в последния сегмент с друга изберете изявление. Задайте този филтър на 1, за да получите уникални стойности в крайния изход.
Научете се да използвате SQL по лесния начин
SQL и неговите варианти се превърнаха в тема за разговори с вродената му способност да прави заявки и да използва релационни бази данни. От писане на прости заявки до извършване на сложни анализи с подзаявки, този език има от всичко по малко.
Въпреки това, преди да пишете каквито и да е запитвания, трябва да усъвършенствате уменията си и да се справите с кодовете, за да станете опитен кодер. Можете да научите SQL по забавен начин, като приложите знанията си в игри. Научете някои фантастични нюанси на кодиране, като добавите малко забавление към вашия код.