Darbs ar dublētām vērtībām SQL var būt apgrūtinošs uzdevums. Bet nebaidieties, šī rokasgrāmata ir paredzēta, lai atvieglotu jūsu slogu.
Dati ir pieejami visās formās, taču ierakstu dublikāti ir svarīga katra datu formāta daļa. Neatkarīgi no tā, vai strādājat ar tīmekļa datiem vai vienkārši pārvietojaties pa lielam pārdošanas datu apjomam, jūsu analīze tiks novirzīta, ja jums būs dublētās vērtības.
Vai jūs izmantojat SQL, lai apkopotu savus skaitļus un veiktu garus vaicājumus datu skursteņos? Ja jā, tad šī rokasgrāmata par SQL dublikātu pārvaldību jums būs patiess prieks.
Šeit ir daži dažādi veidi, kā pārvaldīt dublikātus, izmantojot SQL.
1. Dublikātu skaitīšana, izmantojot grupu pēc funkcijas
SQL ir daudzpusīga programmēšanas valoda, kas piedāvā dažādas funkcijas, lai vienkāršotu aprēķinus. Ja jums ir liela pieredze ar apkopošanas funkcijām SQL, iespējams, jau esat pazīstams ar sagrupēt pēc funkcijas un kādam nolūkam to var izmantot.
The grupēt pēc funkcija ir viena no visvienkāršākās SQL komandas
, kas ir ideāli piemērots vairāku ierakstu apstrādei, jo varat izmantot dažādas apkopošanas funkcijas, piemēram, summa, skaitīt, vidēji, un daudzi citi kopā ar grupēt pēc funkciju, lai iegūtu noteiktu rindu vērtību.Atkarībā no scenārija varat atrast dublikātus ar grupēt pēc funkcija vienā kolonnā un vairākās kolonnās.
a. Skaitīt dublikātus vienā kolonnā
Pieņemsim, ka jums ir šāda datu tabula ar divām kolonnām: Produkta ID un Pasūtījumi.
Produkta ID |
Pasūtījumi |
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 |
Lai atrastu produktu ID dublikātus, varat izmantot grupēt pēc funkcija un kam klauzulu, lai filtrētu apkopotās vērtības, kā norādīts tālāk.
atlasiet ražīgs, skaitīt(ražots) kā Kopējais_skaits
no sahil.product_dups
grupa pēc produkcijas
kuru skaits (produkts) > 1
pasūtījums pēc produkcijas;
Tāpat kā ar tipisku SQL priekšrakstu, jums jāsāk ar kolonnu definēšanu, kuras vēlaties parādīt gala rezultātā. Šajā gadījumā mēs vēlamies parādīt vērtību dublikātu skaitu Produkta ID kolonna.
Pirmajā segmentā definējiet Produkta ID kolonnā atlasiet paziņojums, apgalvojums. The skaitīt funkcija seko Produkta ID atsauci, lai SQL saprastu jūsu vaicājuma mērķi.
Pēc tam definējiet avota tabulu, izmantojot no klauzula. Kopš skaitīt ir apkopošanas funkcija, jums ir jāizmanto grupēt pēc funkciju, lai grupētu visas līdzīgās vērtības.
Atcerieties, ka ideja ir uzskaitīt dublētās vērtības Produkta ID kolonna. Lai to izdarītu, kolonnā ir jāfiltrē skaits un jāparāda vērtības, kas parādās vairāk nekā vienu reizi. The kam klauzula filtrē apkopotos datus; jūs varat izmantot nosacījumu, t.i., skaits (produkts) >1, lai parādītu vēlamos rezultātus.
Visbeidzot, sakārtot pēc klauzula sakārto gala rezultātus augošā secībā.
Izvade ir šāda:
b. Skaitīt dublikātus vairākās kolonnās
Ja vēlaties skaitīt dublikātus vairākās kolonnās, bet nevēlaties rakstīt vairākus SQL vaicājumus, varat paplašināt iepriekš minēto kodu, veicot dažus pielāgojumus. Piemēram, ja vēlaties parādīt dublētās rindas vairākās kolonnās, varat izmantot šādu kodu:
atlasiet produkcija, pasūtījumi, skaitīt(*) kā Kopējais_skaits
no sahil.product_dups
grupa pēc produkcijas, pasūtījumiem
kuru skaits (produkts) > 1
pasūtījums pēc produkcijas;
Izvadē pamanīsit, ka tiek parādītas tikai divas rindas. Kad pielāgojat vaicājumu un pievienojat atsauces uz abām kolonnām atlasiet paziņojumu, jūs saņemat atbilstošo rindu skaitu ar dublētām vērtībām.
Tā vietā, skaits (kolonna) funkcija, jums ir jānokārto skaits (*) funkcija, lai iegūtu dublētās rindas. The * funkcija pārslēdz visas rindas un meklē rindu dublikātus, nevis atsevišķas dublētās vērtības.
Izvade ir parādīta zemāk:
Tiek parādītas atbilstošās rindas ar produkta ID 14 un 47, jo pasūtījuma vērtības ir vienādas.
2. Dublikātu atzīmēšana ar row_number() funkciju
Kamēr grupēt pēc un kam kombinācija ir vienkāršākais veids, kā atrast un atzīmēt dublikātus tabulā, ir alternatīvs veids, kā atrast dublikātus, izmantojot rindas_skaitlis() funkciju. The rindas_skaitlis() funkcija ir daļa no SQL loga funkcijas kategorija un ir būtiska jūsu vaicājumu efektīvai apstrādei.
Lūk, kā jūs varat atzīmēt dublikātus, izmantojot rindas_skaitlis() funkcija:
atlasiet produkcija, pasūtījumi,
rindas_numurs() over (sadaļa pēc produkta identifikācijas secība pēc produkta identifikācijas numura) kā sno
no sahil.product_dups;
The rindas_skaitlis() funkcija ķemmē katru produkta ID vērtību un pielīdzina katra ID atkārtojumu skaitu. The nodalījums atslēgvārds atdala dublētās vērtības un piešķir vērtības hronoloģiski, piemēram, 1, 2, 3 un tā tālāk.
Ja jūs neizmantojat nodalījums atslēgvārdu, jums būs unikāls sērijas numurs visiem produktu ID, kas neatbilst jūsu mērķim.
The sakārtot pēc klauzula nodalījuma sadaļā ir funkcionāla, definējot kārtošanas secību. Varat izvēlēties starp augošu (noklusējuma) un dilstošu secību.
Visbeidzot, kolonnai varat piešķirt aizstājvārdu, lai vēlāk būtu vieglāk filtrēt (ja nepieciešams).
3. Dublētu rindu dzēšana no SQL tabulas
Tā kā dublētās vērtības tabulā var izkropļot jūsu analīzi, bieži vien ir obligāti nepieciešams tos novērst datu tīrīšanas posmā. SQL ir vērtīga valoda, kas piedāvā veidus, kā efektīvi izsekot un dzēst dublētās vērtības.
a. Izmantojot atsevišķu atslēgvārdu
The atšķiras atslēgvārds, iespējams, ir visizplatītākā un visbiežāk izmantotā SQL funkcija, lai noņemtu dublētās vērtības tabulā. Varat vienā piegājienā noņemt dublikātus no vienas kolonnas vai pat rindu dublikātus.
Tālāk ir norādīts, kā no vienas kolonnas varat noņemt dublikātus.
atlasietatšķiras ražīgs no sahil.product_dups;
Izvade atgriež visu unikālo produktu ID sarakstu no tabulas.
Lai noņemtu dublētās rindas, iepriekš norādīto kodu varat pielāgot šādi:
atlasietatšķiras * no sahil.product_dups;
Izvade atgriež visu unikālo rindu sarakstu no tabulas. Aplūkojot rezultātu, jūs ievērosiet, ka produktu ID 14 un 47 gala rezultātu tabulā tiek parādīti tikai vienu reizi.
b. Izmantojot kopējo tabulas izteiksmes (CTE) metodi
Common Table Expression (CTE) metode nedaudz atšķiras no galvenā SQL koda. CTE ir līdzīgi SQL pagaidu tabulas, ar vienīgo atšķirību, ka tie ir virtuāli, uz kuriem varat atsaukties tikai vaicājuma izpildes laikā.
Lielākais ieguvums ir tas, ka jums nav jānodod atsevišķs vaicājums, lai vēlāk atmestu šīs tabulas, jo tās pārstāj pastāvēt, tiklīdz vaicājums tiek izpildīts. Izmantojot CTE metodi, varat izmantot tālāk norādīto kodu, lai atrastu un dzēstu dublikātus.
ar cteproducts kā
(atlasiet produkcija, pasūtījumi,
rindas_numurs() over (sadaļa pēc produkta identifikācijas secība pēc produkta identifikācijas numura) kā sno
no sahil.product_dups)
atlasiet * no cteproducts
kur sno = 1;
Varat izsaukt CTE funkciju, izmantojot ar atslēgvārds; definējiet pagaidu virtuālās tabulas nosaukumu pēc ar atslēgvārds. CTE tabulas atsauce ir noderīga, filtrējot tabulas vērtības.
Nākamajā daļā piešķiriet rindu numurus saviem produktu ID, izmantojot rindas_skaitlis() funkciju. Tā kā jūs atsaucat uz katru produkta ID ar a nodalījums funkcijai, katram atkārtotajam ID ir noteikta vērtība.
Visbeidzot, filtrējiet jaunizveidoto sno kolonnu pēdējā segmentā ar citu atlasiet paziņojums, apgalvojums. Iestatiet šo filtru uz 1, lai gala izvadē iegūtu unikālas vērtības.
Iemācieties lietot SQL vienkāršā veidā
SQL un tā varianti ir kļuvuši par populārākajiem, ar tā iedzimto spēju veikt vaicājumus un izmantot relāciju datu bāzes. No vienkāršu vaicājumu rakstīšanas līdz sarežģītas analīzes veikšanai ar apakšvaicājumiem – šajā valodā ir nedaudz no visa.
Tomēr pirms vaicājumu rakstīšanas jums ir jāuzlabo savas prasmes un jāiegūst kodi, lai kļūtu par lietpratīgu kodētāju. Jūs varat apgūt SQL jautrā veidā, ieviešot savas zināšanas spēlēs. Uzziniet dažas izdomātas kodēšanas nianses, pievienojot savam kodam mazliet jautrības.