Zaobchádzanie s duplicitnými hodnotami v SQL môže byť ťažkopádna úloha. Ale nebojte sa, tento sprievodca je tu na to, aby vám uľahčil bremeno.

Údaje prichádzajú vo všetkých tvaroch a formách, ale duplicitné záznamy sú významnou súčasťou každého formátu údajov. Či už pracujete s údajmi z webu alebo jednoducho prechádzate nákladným autom s údajmi o predaji, vaša analýza bude skreslená, ak máte duplicitné hodnoty.

Používate SQL na drvenie čísel a vykonávanie dlhých dotazov na svoje zásobníky údajov? Ak áno, táto príručka o správe duplikátov SQL bude pre vás absolútnym potešením.

Tu je niekoľko rôznych spôsobov, ako môžete spravovať duplikáty pomocou SQL.

1. Počítanie duplikátov pomocou skupiny podľa funkcie

SQL je mnohostranný programovací jazyk, ktorý ponúka rôzne funkcie na zjednodušenie výpočtov. Ak máte dostatok skúseností s agregačnými funkciami v SQL, možno ste už oboznámení s skupina podľa funkcie a na čo sa dá použiť.

The skupina podľa funkcia je jednou z najzákladnejšie príkazy SQL, čo je ideálne na prácu s viacerými záznamami, pretože môžete použiť rôzne agregačné funkcie, ako napr

instagram viewer
súčet, počítať, priemer, a mnoho ďalších v spojení s skupina podľa funkcia na dosiahnutie odlišnej hodnoty po riadkoch.

V závislosti od scenára môžete nájsť duplikáty pomocou skupina podľa funkciu v rámci jedného stĺpca a viacerých stĺpcov.

a. Počítajte duplikáty v jednom stĺpci

Predpokladajme, že máte nasledujúcu tabuľku údajov s dvoma stĺpcami: Identifikačné číslo produktu a objednávky.

Identifikačné číslo produktu

objednávky

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

Ak chcete nájsť duplicitné ID produktov, môžete použiť skupina podľa funkcia a majúce klauzulu na filtrovanie agregovaných hodnôt takto:

vyberte identifikačné číslo produktu, počítať(identifikačné číslo produktu) ako Celkový_počet

zo stránky sahil.product_dups

skupina podľa productid

s počtom (produktid) > 1

poradie podľa productid;

Rovnako ako pri bežnom príkaze SQL musíte začať definovaním stĺpcov, ktoré chcete zobraziť v konečnom výsledku. V tomto prípade chceme zobraziť počet duplicitných hodnôt v rámci Identifikačné číslo produktu stĺpec.

V prvom segmente definujte Identifikačné číslo produktu stĺpec v rámci vyberte vyhlásenie. The počítať funkcia nasleduje Identifikačné číslo produktu odkaz, aby SQL pochopil účel vášho dotazu.

Ďalej definujte zdrojovú tabuľku pomocou od doložka. Od r počítať je agregačná funkcia, musíte použiť skupina podľa funkcia na zoskupenie všetkých podobných hodnôt.

Pamätajte, že cieľom je uviesť duplicitné hodnoty v rámci Identifikačné číslo produktu stĺpec. Ak to chcete urobiť, musíte filtrovať počet a zobraziť hodnoty, ktoré sa v stĺpci vyskytujú viackrát. The majúce doložka filtruje agregované údaje; môžete použiť podmienku, t.j. počet (productid) >1, na zobrazenie požadovaných výsledkov.

Nakoniec, zoradiť podľa klauzula triedi konečné výsledky vo vzostupnom poradí.

Výstup je nasledovný:

b. Počítajte duplikáty vo viacerých stĺpcoch

Ak chcete počítať duplikáty vo viacerých stĺpcoch, ale nechcete písať viacero SQL dotazov, môžete vyššie uvedený kód rozšíriť o niekoľko vylepšení. Napríklad, ak chcete zobraziť duplicitné riadky vo viacerých stĺpcoch, môžete použiť nasledujúci kód:

vyberte productid, objednávky, počítať(*) ako Celkový_počet

zo stránky sahil.product_dups

skupina podľa productid, objednávky

s počtom (produktid) > 1

poradie podľa productid;

Vo výstupe si všimnete, že sú zobrazené iba dva riadky. Keď vyladíte dotaz a pridáte odkaz na oba stĺpce v rámci vyberte získate počet zodpovedajúcich riadkov s duplicitnými hodnotami.

Namiesto toho počítať (stĺpec) funkciu, musíte prejsť počet (*) funkcia na získanie duplicitných riadkov. The * funkcia prepína všetky riadky a hľadá duplicitné riadky namiesto jednotlivých duplicitných hodnôt.

Výstup je zobrazený nižšie:

Zobrazia sa zodpovedajúce riadky s ID produktu 14 a 47, pretože hodnoty objednávky sú rovnaké.

2. Označenie duplikátov pomocou funkcie row_number().

Kým skupina podľa a majúce kombinácia je najjednoduchší spôsob, ako nájsť a označiť duplikáty v tabuľke, existuje alternatívny spôsob, ako nájsť duplikáty pomocou row_number() funkciu. The row_number() funkcia je súčasťou Funkcie okna SQL kategórie a je nevyhnutný pre efektívne spracovanie vašich dopytov.

Tu je návod, ako môžete označiť duplikáty pomocou row_number() funkcia:

vyberte productid, objednávky, 

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

od sahil.product_dups;

The row_number() funkcia prečesáva každú hodnotu ID produktu a asimiluje počet opakovaní pre každé ID. The oddiel kľúčové slovo oddeľuje duplicitné hodnoty a priraďuje hodnoty chronologicky, napríklad 1, 2, 3 atď.

Ak nepoužívate oddiel kľúčové slovo, budete mať jedinečné sériové číslo pre všetky ID produktov, ktoré nebude vyhovovať vášmu účelu.

The zoradiť podľa klauzula v sekcii oddielu je funkčná pri definovaní poradia triedenia. Môžete si vybrať medzi vzostupným (predvolené) a zostupným poradím.

Nakoniec môžete stĺpcu priradiť alias, aby ste uľahčili neskoršie filtrovanie (ak je to potrebné).

3. Odstránenie duplicitných riadkov z tabuľky SQL

Keďže duplicitné hodnoty v tabuľke môžu skresliť vašu analýzu, ich odstránenie počas fázy čistenia údajov je často nevyhnutné. SQL je cenný jazyk, ktorý ponúka spôsoby efektívneho sledovania a odstraňovania duplicitných hodnôt.

a. Použitie odlišného kľúčového slova

The odlišný Kľúčové slovo je pravdepodobne najbežnejšou a najčastejšie používanou funkciou SQL na odstránenie duplicitných hodnôt v tabuľke. Môžete odstrániť duplikáty z jedného stĺpca alebo dokonca duplicitné riadky naraz.

Tu je postup, ako môžete odstrániť duplikáty z jedného stĺpca:

vyberteodlišný identifikačné číslo produktu od sahil.product_dups;

Výstup vráti zoznam všetkých jedinečných ID produktov z tabuľky.

Ak chcete odstrániť duplicitné riadky, vyššie uvedený kód môžete upraviť takto:

vyberteodlišný * od sahil.product_dups;

Výstup vráti zoznam všetkých jedinečných riadkov z tabuľky. Pri pohľade na výstup si všimnete, že ID produktu 14 a 47 sa v tabuľke konečných výsledkov zobrazuje iba raz.

b. Použitie metódy Common Table Expression (CTE).

Metóda Common Table Expression (CTE) sa mierne líši od bežného kódu SQL. CTE sú podobné ako Dočasné tabuľky SQL, len s tým rozdielom, že sú virtuálne, na ktoré sa môžete odkazovať iba počas vykonávania dotazu.

Najväčšou výhodou je, že na neskoršie zrušenie týchto tabuliek nemusíte zadávať samostatný dotaz, pretože prestanú existovať hneď po vykonaní dotazu. Pomocou metódy CTE môžete použiť kód uvedený nižšie na vyhľadanie a odstránenie duplikátov.

s cteproducts ako

(vyberte productid, objednávky,

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

zo sahil.product_dups)

vyberte * od cteproducts

kde sno = 1;

Funkciu CTE môžete vyvolať pomocou s kľúčové slovo; definujte názov dočasnej virtuálnej tabuľky za s kľúčové slovo. Odkaz na tabuľku CTE je užitočný pri filtrovaní hodnôt tabuľky.

V ďalšej časti priraďte čísla riadkov svojim ID produktov pomocou row_number() funkciu. Keďže na každé ID produktu odkazujete s a oddiel má každé opakujúce sa ID odlišnú hodnotu.

Nakoniec prefiltrujte novovytvorené sno stĺpec v poslednom segmente s iným vyberte vyhlásenie. Nastavte tento filter na 1, aby ste v konečnom výstupe získali jedinečné hodnoty.

Naučte sa používať SQL jednoduchým spôsobom

O SQL a jeho variantoch sa hovorí v meste vďaka jeho vrodenej schopnosti vyhľadávať a používať relačné databázy. Od písania jednoduchých dotazov až po vykonávanie zložitých analýz s poddotazmi, tento jazyk má zo všetkého trochu.

Pred písaním akýchkoľvek otázok však musíte zdokonaliť svoje zručnosti a prelomiť kódy, aby ste sa stali šikovnými kódovačmi. SQL sa môžete naučiť zábavnou formou implementáciou svojich vedomostí do hier. Naučte sa nejaké efektné nuansy kódovania pridaním trocha zábavy do svojho kódu.