Päällekkäisten arvojen käsittely SQL: ssä voi olla hankala tehtävä. Mutta älä pelkää, tämä opas on täällä keventämään taakkaasi.

Tietoa on kaikissa muodoissa ja muodoissa, mutta tietueiden kaksoiskappaleet ovat tärkeä osa jokaista tietomuotoa. Käsitteletpä verkkopohjaista dataa tai yksinkertaisesti selaat rekkakuormaa myyntitietoja, analyysisi vääristyy, jos sinulla on päällekkäisiä arvoja.

Käytätkö SQL: ää numeroiden murskaamiseen ja pitkien kyselyjen suorittamiseen tietopinoissasi? Jos kyllä, tämä opas SQL-kopioiden hallintaan on ehdoton ilo sinulle.

Tässä on muutamia eri tapoja, joilla voit hallita kaksoiskappaleita SQL: n avulla.

1. Kopioiden laskeminen funktion mukaan ryhmittelemällä

SQL on monipuolinen ohjelmointikieli, joka tarjoaa erilaisia ​​toimintoja laskutoimitusten yksinkertaistamiseksi. Jos sinulla on runsaasti kokemusta SQL: n aggregointifunktioista, saatat jo tuntea ryhmittele toiminnon mukaan ja mihin sitä voidaan käyttää.

The ryhmitellä toiminto on yksi yleisimmät SQL-komennot

instagram viewer
, joka on ihanteellinen useiden tietueiden käsittelyyn, koska voit käyttää erilaisia ​​aggregaattitoimintoja, kuten summa, Kreivi, keskiverto, ja monet muut yhdessä ryhmitellä funktiota saadaksesi erillisen rivikohtaisen arvon.

Skenaariosta riippuen voit löytää kaksoiskappaleita ryhmitellä toimii yhdessä sarakkeessa ja useissa sarakkeissa.

a. Laske kaksoiskappaleet yhdessä sarakkeessa

Oletetaan, että sinulla on seuraava tietotaulukko kahdella sarakkeella: Tuotekoodi ja Tilaukset.

Tuotekoodi

Tilaukset

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

Voit etsiä päällekkäisiä tuotetunnuksia käyttämällä ryhmitellä toiminto ja joilla on lauseke koottujen arvojen suodattamiseksi seuraavasti:

valitse Tuotetunnus, Kreivi(Tuotetunnus) kuten Lopullinen määrä

osoitteesta sahil.product_dups

ryhmä tuotteen mukaan

joiden lukumäärä (tuotemerkki) > 1

tilaus tuotteen mukaan;

Kuten tyypillisessä SQL-lauseessa, sinun on aloitettava määrittelemällä sarakkeet, jotka haluat näyttää lopputuloksessa. Tässä tapauksessa haluamme näyttää päällekkäisten arvojen määrän Tuotekoodi sarakkeessa.

Määritä ensimmäisessä segmentissä Tuotekoodi sarakkeen sisällä valitse lausunto. The Kreivi toiminto seuraa Tuotekoodi viite, jotta SQL ymmärtää kyselysi tarkoituksen.

Määritä seuraavaksi lähdetaulukko käyttämällä alkaen lauseke. Siitä asti kun Kreivi on koontifunktio, sinun on käytettävä ryhmitellä funktio ryhmittelemään kaikki samanlaiset arvot.

Muista, että ideana on luetella päällekkäiset arvot Tuotekoodi sarakkeessa. Tätä varten sinun on suodatettava sarakkeessa useammin kuin kerran esiintyvät luku- ja näyttöarvot. The joilla on lauseke suodattaa aggregoidut tiedot; voit käyttää ehtoa, ts. määrä (tuote) >1, näyttääksesi halutut tulokset.

Lopuksi, tilata mennessä lauseke lajittelee lopulliset tulokset nousevaan järjestykseen.

Tulos on seuraava:

b. Laske kopiot useissa sarakkeissa

Kun haluat laskea kaksoiskappaleet useissa sarakkeissa, mutta et halua kirjoittaa useita SQL-kyselyitä, voit laajentaa yllä olevaa koodia muutamalla säädöllä. Jos esimerkiksi haluat näyttää päällekkäisiä rivejä useissa sarakkeissa, voit käyttää seuraavaa koodia:

valitse tuote, tilaukset, Kreivi(*) kuten Lopullinen määrä

osoitteesta sahil.product_dups

ryhmä tuotteen mukaan, tilaukset

joiden lukumäärä (tuotemerkki) > 1

tilaus tuotteen mukaan;

Tulosteessa huomaat, että vain kaksi riviä näkyy. Kun säädät kyselyä ja lisäät molempien sarakkeiden viittaukset valitse lauseke, saat yhteensopivien rivien määrän päällekkäisillä arvoilla.

Sen sijaan määrä (sarake) -toiminto, sinun on läpäistävä Kreivi(*) toiminto saadaksesi päällekkäisiä rivejä. The * toiminto vaihtaa kaikkien rivien läpi ja etsii päällekkäisiä rivejä yksittäisten päällekkäisten arvojen sijaan.

Tulos näkyy alla:

Vastaavat rivit tuotetunnuksella 14 ja 47 näytetään, koska tilausarvot ovat samat.

2. Kopioiden merkitseminen rivin_numero()-funktiolla

Samalla kun ryhmitellä ja joilla on yhdistelmä on yksinkertaisin tapa etsiä ja merkitä kaksoiskappaleet taulukosta, on olemassa vaihtoehtoinen tapa löytää kaksoiskappaleet käyttämällä rivin_numero() toiminto. The rivin_numero() toiminto on osa SQL-ikkunan toiminnot luokkaan ja on välttämätöntä kyselyjesi tehokkaalle käsittelylle.

Näin voit merkitä kaksoiskappaleet käyttämällä rivin_numero() toiminto:

valitse tuote, tilaukset, 

rivin_numero() over (osio tuotetunnuksen mukaan järjestys tuotetunnuksen mukaan) sno

osoitteesta sahil.product_dups;

The rivin_numero() toiminto kampaa läpi jokaisen tuotetunnuksen arvon ja omaksuu kunkin tunnuksen toistojen määrän. The osio avainsana erottaa päällekkäiset arvot ja määrittää arvot kronologisesti, kuten 1, 2, 3 ja niin edelleen.

Jos et käytä osio avainsana, sinulla on yksilöllinen sarjanumero kaikille tuotetunnuksille, mikä ei sovi tarkoitukseesi.

The tilata mennessä osio-osiossa oleva lauseke toimii lajittelujärjestystä määritettäessä. Voit valita nousevan (oletus) ja laskevan järjestyksen välillä.

Lopuksi voit määrittää sarakkeelle aliaksen, jotta se on helpompi suodattaa myöhemmin (tarvittaessa).

3. Päällekkäisten rivien poistaminen SQL-taulukosta

Koska taulukon päällekkäiset arvot voivat vääristää analyysiäsi, niiden poistaminen tietojen puhdistusvaiheessa on usein välttämätöntä. SQL on arvokas kieli, joka tarjoaa tapoja seurata ja poistaa päällekkäisiä arvoja tehokkaasti.

a. Erillisen avainsanan käyttäminen

The erottuva avainsana on luultavasti yleisin ja useimmin käytetty SQL-funktio poistamaan päällekkäisiä arvoja taulukosta. Voit poistaa kaksoiskappaleet yhdestä sarakkeesta tai jopa kopioida rivejä yhdellä kertaa.

Näin voit poistaa kaksoiskappaleet yhdestä sarakkeesta:

valitseerottuva Tuotetunnus alkaen sahil.product_dups;

Tulos palauttaa luettelon kaikista taulukon yksilöllisistä tuotetunnuksista.

Voit poistaa päällekkäiset rivit muokkaamalla yllä olevaa koodia seuraavasti:

valitseerottuva * alkaen sahil.product_dups;

Tulos palauttaa luettelon kaikista taulukon yksilöllisistä riveistä. Kun katsot tulosta, huomaat, että tuotetunnukset 14 ja 47 näkyvät vain kerran lopputulostaulukossa.

b. CTE (Common Table Expression) -menetelmän käyttäminen

Common Table Expression (CTE) -menetelmä eroaa hieman yleisestä SQL-koodista. CTE: t ovat samanlaisia SQL: n väliaikaiset taulukot, sillä ainoa ero on, että ne ovat virtuaalisia, joihin voit viitata vain kyselyn suorittamisen aikana.

Suurin hyöty on, että sinun ei tarvitse lähettää erillistä kyselyä pudottaaksesi nämä taulukot myöhemmin, koska ne lakkaavat olemasta heti kyselyn suorittamisen jälkeen. Käyttämällä CTE-menetelmää voit käyttää alla olevaa koodia kaksoiskappaleiden etsimiseen ja poistamiseen.

kanssa cteproducts kuten

(valitse tuote, tilaukset,

rivin_numero() over (osio tuotetunnuksen mukaan järjestys tuotetunnuksen mukaan) sno

osoitteesta sahil.product_dups)

valitse * alkaen cteproducts

missä sno = 1;

Voit käynnistää CTE-toiminnon käyttämällä kanssa avainsana; määritä väliaikaisen virtuaalitaulukon nimi kanssa avainsana. CTE-taulukkoviittaus on hyödyllinen taulukon arvojen suodatuksessa.

Määritä seuraavassa osassa rivinumerot tuotetunnuksille käyttämällä rivin_numero() toiminto. Koska viittaat jokaiseen tuotetunnukseen a osio -toimintoa, jokaisella toistuvalla tunnuksella on erillinen arvo.

Suodata lopuksi juuri luotu sno sarakkeessa viimeisessä segmentissä toisen kanssa valitse lausunto. Aseta tämä suodatin arvoon 1 saadaksesi yksilölliset arvot lopullisessa lähdössä.

Opi käyttämään SQL: ää helposti

SQL: stä ja sen muunnelmista on tullut puheenaihe, sillä sen luontainen kyky tehdä kyselyitä ja käyttää relaatiotietokantoja. Tällä kielellä on vähän kaikkea yksinkertaisten kyselyjen kirjoittamisesta monimutkaisten analyysien suorittamiseen alikyselyillä.

Ennen kuin kirjoitat kyselyitä, sinun on kuitenkin hiottava taitojasi ja hankittava koodit, jotta voit tehdä itsestäsi taitavan koodaajan. Voit oppia SQL: ää hauskalla tavalla toteuttamalla tietosi peleissä. Opi hienoja koodauksen vivahteita lisäämällä koodiisi vähän hauskaa.