Az ismétlődő értékek kezelése az SQL-ben nehézkes feladat lehet. De ne féljen, ez az útmutató azért készült, hogy megkönnyítse a terheit.
Az adatok minden formában és formában megjelennek, de a duplikált rekordok minden adatformátum kiemelkedő részét képezik. Akár webalapú adatokkal foglalkozik, akár egyszerűen egy teherautónyi értékesítési adat között navigál, az elemzése torz lesz, ha ismétlődő értékek vannak.
Használja az SQL-t a számok tördelésére és hosszú lekérdezések végrehajtására az adathalmazokon? Ha igen, akkor ez az SQL-duplikátumok kezeléséről szóló útmutató teljes örömet okoz Önnek.
Íme néhány különböző módszer, amellyel az SQL használatával kezelheti a duplikációkat.
1. Ismétlődések számlálása funkció szerinti csoportosítással
Az SQL egy sokoldalú programozási nyelv, amely különféle funkciókat kínál a számítások egyszerűsítésére. Ha sok tapasztalattal rendelkezik az SQL aggregációs függvényeivel kapcsolatban, akkor valószínűleg már ismeri a funkció szerint csoportosítsd és mire használható.
A csoportosít funkció az egyik a legalapvetőbb SQL-parancsok, amely ideális több rekord kezeléséhez, mivel különböző összesítő függvényeket használhat, mint pl összeg, számol, átlagos, és még sokan mások a csoportosít függvényt, hogy különálló soronkénti értéket kapjunk.
A forgatókönyvtől függően ismétlődéseket találhat a csoportosít funkció egy oszlopon és több oszlopon belül.
a. Számolja a duplikátumokat egyetlen oszlopban
Tegyük fel, hogy van a következő két oszlopos adattáblázata: Termék azonosító és Megrendelések.
Termék azonosító |
Megrendelések |
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 |
Az ismétlődő termékazonosítók kereséséhez használja a csoportosít funkció és a amelynek záradék az összesített értékek szűrésére, az alábbiak szerint:
válassza ki termék azonosító, számol(termék azonosító) mint Teljes számlálás
innen: sahil.product_dups
csoportosítsd termékenként
amelynek száma (termék) > 1
terméktípus szerinti rendelés;
A tipikus SQL utasításokhoz hasonlóan a végeredményben megjeleníteni kívánt oszlopok meghatározásával kell kezdenie. Ebben az esetben szeretnénk megjeleníteni az ismétlődő értékek számát a Termék azonosító oszlop.
Az első szegmensben határozza meg a Termék azonosító oszlopon belül válassza ki nyilatkozat. A számol függvény követi a Termék azonosító hivatkozást, hogy az SQL megértse a lekérdezés célját.
Ezután határozza meg a forrástáblát a segítségével tól től kikötés. Mivel számol egy összesítő függvény, akkor használnia kell a csoportosít függvény az összes hasonló érték csoportosításához.
Ne feledje, az ötlet az, hogy felsorolja az ismétlődő értékeket a Termék azonosító oszlop. Ehhez szűrnie kell az oszlopban többször előforduló számlálási és megjelenítési értékeket. A amelynek záradék szűri az összesített adatokat; használhatja a feltételt, pl. szám (termék) >1, a kívánt eredmények megjelenítéséhez.
Végül a Rendezés záradék növekvő sorrendbe rendezi a végeredményt.
A kimenet a következő:
b. Számolja az ismétlődéseket több oszlopban
Ha több oszlopban szeretné számolni a duplikátumokat, de nem szeretne több SQL-lekérdezést írni, néhány módosítással kibővítheti a fenti kódot. Ha például ismétlődő sorokat szeretne megjeleníteni több oszlopban, akkor a következő kódot használhatja:
válassza ki termék, megrendelések, számol(*) mint Teljes számlálás
innen: sahil.product_dups
csoportosítás termék, rendelések szerint
amelynek száma (termék) > 1
terméktípus szerinti rendelés;
A kimenetben észre fogja venni, hogy csak két sor jelenik meg. Amikor módosítja a lekérdezést, és hozzáadja mindkét oszlop hivatkozását a válassza ki utasítást, akkor megkapja az egyező sorok számát, amelyek értéke ismétlődik.
Ahelyett, hogy a szám (oszlop) funkciót, át kell adnia a számol(*) függvény ismétlődő sorok beszerzéséhez. A * A függvény az összes soron keresztül vált, és az egyes ismétlődő értékek helyett ismétlődő sorokat keres.
A kimenet az alábbiakban látható:
A 14-es és 47-es termékazonosítójú megfelelő sorok megjelennek, mivel a rendelési értékek megegyeznek.
2. Ismétlődések megjelölése a row_number() függvénnyel
Amíg a csoportosít és amelynek A kombináció a legegyszerűbb módja a duplikátumok megkeresésének és megjelölésének egy táblázaton belül, van egy másik módszer is a duplikátumok megtalálására a sor_szám() funkció. A sor_szám() funkció része a SQL ablak funkciók kategória, és elengedhetetlen a lekérdezések hatékony feldolgozásához.
Így jelölheti meg az ismétlődéseket a sor_szám() funkció:
válassza ki termék, megrendelések,
sor_szám() over (partíció termékazonosító szerint sorrend termékazonosító szerint) mint sno
innen: sahil.product_dups;
A sor_szám() függvény átfésüli az egyes termékazonosító értékeket, és asszimilálja az egyes azonosítókhoz tartozó ismétlődések számát. A partíció A kulcsszó elkülöníti az ismétlődő értékeket, és időrendi sorrendben rendeli hozzá az értékeket, például 1, 2, 3 és így tovább.
Ha nem használja a partíció kulcsszót, akkor az összes termékazonosítóhoz egyedi sorozatszám tartozik, ami nem felel meg a célnak.
A Rendezés A partíció szakaszon belüli záradék funkcionális a rendezési sorrend meghatározásakor. Választhat a növekvő (alapértelmezett) és a csökkenő sorrend között.
Végül álnevet rendelhet az oszlophoz, hogy a későbbi szűrést megkönnyítse (ha szükséges).
3. Ismétlődő sorok törlése SQL-táblázatból
Mivel a táblázatokban szereplő ismétlődő értékek torzíthatják az elemzést, gyakran elengedhetetlen ezek eltávolítása az adattisztítási szakaszban. Az SQL egy értékes nyelv, amely lehetőséget kínál az ismétlődő értékek hatékony nyomon követésére és törlésére.
a. A különálló kulcsszó használata
A különböző A kulcsszó valószínűleg a leggyakoribb és leggyakrabban használt SQL-függvény a tábla ismétlődő értékeinek eltávolítására. Egyszerre eltávolíthatja az ismétlődéseket egyetlen oszlopból, vagy akár sorokat is.
A következőképpen távolíthatja el az ismétlődéseket egyetlen oszlopból:
válassza kikülönböző termék azonosító tól től sahil.product_dups;
A kimenet a táblázatban szereplő egyedi termékazonosítók listáját adja vissza.
Az ismétlődő sorok eltávolításához a fenti kódot az alábbiak szerint módosíthatja:
válassza kikülönböző * tól től sahil.product_dups;
A kimenet a tábla összes egyedi sorának listáját adja vissza. A kimenetre nézve észreveheti, hogy a 14-es és 47-es termékazonosító csak egyszer jelenik meg a végeredmény táblázatában.
b. A Common Table Expression (CTE) módszer használata
A Common Table Expression (CTE) metódus kissé eltér a mainstream SQL-kódtól. A CTE-k hasonlóak Az SQL ideiglenes táblái, azzal az egyetlen különbséggel, hogy virtuálisak, amelyekre csak a lekérdezés végrehajtása során hivatkozhat.
A legnagyobb előny az, hogy nem kell külön lekérdezést átadnia, hogy később eldobja ezeket a táblákat, mivel azok a lekérdezés végrehajtása után azonnal megszűnnek. A CTE módszerrel az alábbi kód segítségével keresheti és törölheti az ismétlődéseket.
val vel cteproducts mint
(válassza ki termék, megrendelések,
sor_szám() over (partíció termékazonosító szerint sorrend termékazonosító szerint) mint sno
innen: sahil.product_dups)
válassza ki * tól től cteproducts
ahol sno = 1;
A CTE funkciót a val vel kulcsszó; után adja meg az ideiglenes virtuális tábla nevét val vel kulcsszó. A CTE tábla hivatkozása hasznos a táblázat értékeinek szűrése során.
A következő részben rendeljen sorszámokat termékazonosítóihoz a következővel: sor_szám() funkció. Mivel minden termékazonosítóra hivatkozik a partíció függvényében minden ismétlődő azonosítónak külön értéke van.
Végül szűrje le az újonnan létrehozottakat sno oszlopban az utolsó szegmensben egy másikkal válassza ki nyilatkozat. Állítsa ezt a szűrőt 1-re, hogy egyedi értékeket kapjon a végső kimenetben.
Tanulja meg az SQL egyszerű használatát
Az SQL és változatai a város szóbeszédjévé váltak, veleszületett képességével relációs adatbázisok lekérdezésére és használatára. Az egyszerű lekérdezések írásától a részletes elemzések elvégzéséig az allekérdezésekkel ez a nyelv mindenből rendelkezik.
Mielőtt azonban bármilyen lekérdezést írna, csiszolnia kell képességeit, és fel kell törnie a kódokat, hogy ügyes kódoló legyen. Az SQL-t szórakoztató módon tanulhatja meg, ha tudását játékokban implementálja. Tanuljon meg néhány divatos kódolási árnyalatot, ha egy kis mókát ad a kódjához.