Yleiset taulukkolausekkeet (CTE) SQL:ssä

Yleiset taulukkolausekkeet (CTE) SQL:ssä

Lähdesolmu: 1998403

esittely

CTE on lyhenne sanoista Common Table Expressions. CTE on yksi SQL:n (Structured Query Language) tehokkaimmista työkaluista, ja se auttaa myös tietojen puhdistamisessa. Se on SQL:n (Structured Query Language) käsite, jota käytetään yksinkertaistamaan koodausta ja auttamaan tuloksen saamisessa mahdollisimman nopeasti. CTE on väliaikainen taulukko, jota käytetään viittaamaan alkuperäiseen taulukkoon. Jos alkuperäisessä taulukossa on liikaa sarakkeita ja tarvitsemme niistä vain muutaman, voimme tehdä CTE:n (väliaikaisen taulukon), joka sisältää vain vaaditut sarakkeet.

CTE:tä käytetään monimutkaisten ongelmien ratkaisemiseen helposti koodin hyvällä luettavuudella. Koodin tulee aina olla helpompi lukea, jotta jos viittaat siihen jonkin ajan kuluttua, saat koodin heti. Vaikka kolmas henkilö viittaa koodiisi, hän voi ymmärtää sen erittäin hyvin, jos koodisi luettavuus on helppoa ja hyvää. CTE on yksi tärkeimmistä SQL:n käsitteistä. Jos sinulla on CTE-tietoa, olet astumassa edistyneen SQL:n maailmaan. Common Table Expressions (tunnetaan yleisesti nimellä CTE) auttaa data-analyytikoita, datatieteilijöitä tai muita analyytikoita, jotka haluavat poimia tietonsa tehokkaasti ja tehokkaasti big dataa sisältävästä taulukosta.

Tämä artikkeli julkaistiin osana Data Science Blogathon.

Sisällysluettelo

CTE:n syntaksi

Seuraava on CTE:n syntaksi:

WITH CTE_NAME AS
( SELECT column_name1, column_name2,..., column_nameN FROM table_name WHERE condition
)
SELECT column_name1, column_name2,..., column_nameN FROM CTE_NAME;

Esimerkki CTE:stä

Esimerkki 1:

Alla oleva koodi suoritetaan MySQL:ssä:

-- Creating databse
CREATE DATABASE employee_details; -- Use database
USE employee_details; -- Creating table
CREATE TABLE employee
(
emp_id INT PRIMARY KEY,
emp_name VARCHAR(20),
email_id VARCHAR(30),
city VARCHAR(25),
Verification_status CHAR(3)
); -- Inserting values into the table
INSERT INTO employee VALUES (1,'Suhas','[email protected]','Mumbai','Yes');
INSERT INTO employee VALUES (2,'Yohani','[email protected]','Mumbai','No');
INSERT INTO employee VALUES (3,'Reshama','[email protected]','Pune','Yes');
INSERT INTO employee VALUES (4,'Raj','[email protected]','Bangalore','No');
INSERT INTO employee VALUES (5,'Shivani','[email protected]','Bangalore','Yes');
SELECT * FROM employee;

Tulos on alla:

Tuotos | yleisiä taulukkolausekkeita

Yllä olevassa esimerkissä olen luonut taulukon nimeltä "työntekijä", joka sisältää työntekijän tiedot.

Työntekijä-taulukon sarakkeiden kuvaus on lueteltu alla:

  • emp_id: viittaa jokaisen työntekijän yksilölliseen tunnisteeseen
  • emp_name: viittaa jokaisen työntekijän nimeen
  • email_id: viittaa jokaisen työntekijän sähköpostitunnukseen
  • kaupunki: tarkoittaa kaupunkia, jossa työntekijä sijaitsee
  • Verification_status: Jos työntekijän taustatietojen tarkistus on tehty, tämä arvo tallennetaan muodossa "Kyllä", kun taas jos työntekijän taustatietojen tarkistusta ei tehdä, tämä arvo tallennetaan arvoksi "Ei".

Oletetaan, että haluamme poimia tiettyjä tietoja työntekijöistä, niin voimme saavuttaa tämän luomalla CTE.

Jos haluamme tarkistaa työntekijöiden varmennustilan onko se varmennettu vai ei ja haluamme nähdä niiden työntekijöiden tietueet, joiden varmennusta ei ole vielä tehty. Tarvitsemme siis vain kaksi saraketta CTE:ssä (väliaikainen taulukko), ja sarakkeet ovat emp_name ja Verification_status, jotka sisältävät arvon "Ei" taulukosta "employee" .

Seuraava koodi näyttää esimerkin CTE:n luomisesta käyttämällä taulukkoa "työntekijä":

-- Creating CTE
WITH mycte AS ( SELECT emp_name , Verification_status FROM employee WHERE Verification_status = 'No'
)
SELECT * FROM mycte;

Tulos on alla:

Tuotos | yleisiä taulukkolausekkeita

Tässä "mycte" on CTE:n (väliaikainen taulukko) nimi. ” mycte ” sisältää sarakkeet emp_name ja Verification_status. Se sisältää tiedot työntekijöistä, joiden vahvistusta ei ole vielä tehty. Tämän halusimme saavuttaa.

Voimme tehdä yhden tai useamman CTE:n samasta taulukosta pilkulla erotettuna.

Kuinka välttää virheitä yleisissä taulukkolausekkeissa?

yleisiä taulukon ilmaisuja
Tämä virhe tapahtui, koska loit CTE:n, mutta et käyttänyt sitä valitsemalla mitään sarakkeita CTE:stä. Katso yllä oleva korjattu koodi CTE:n luomista varten, jossa olen luonut CTE:n ja valinnut sitten sarakkeet tästä CTE:stä. Joten CTE:tä on käytettävä valitsemalla siitä tarvittavat sarakkeet virheen välttämiseksi.Se on tärkeää. Huomaa, että voit käyttää CTE:tä kyselyssä, jossa olet sen luonut. Mutta et voi käyttää tätä CTE:tä myöhemmissä kyselyissä eli myöhemmin luotavissa kyselyissä. Esimerkki: Olen luonut CTE:n nimeltä "mycte" yllä olevassa esimerkissä. Sitten seuraava kyselyni on seuraava:

SELECT *
FROM mycte;

Tämä SQL-kysely ei kelpaa. Koska tässä SQL-kyselyssä en voi käyttää "mycte" CTE:tä.

” mycte ” CTE:tä ei ole olemassa tälle SQL-kyselylle.

” mycte ” CTE on olemassa ainoalle SQL-kyselylle, jossa se on luotu. Tästä syystä CTE (Common Table Expression) tunnetaan SQL:ssä väliaikaisena taulukkona.

Esimerkki 2:

Ymmärrämme nyt, kuinka JOIN-kyselyä käytetään CTE:ssä. Harkitse alla olevaa koodia, joka on toteutettu MySQL:ssä.

-- Creating table product
CREATE TABLE product
(
p_id INT PRIMARY KEY,
p_name VARCHAR(20),
category VARCHAR(30)
); -- Creating table sales
CREATE TABLE sales
(
p_id INT PRIMARY KEY,
p_name VARCHAR(20),
gross_sales DECIMAL
); -- Inserting values into the table 'product'
INSERT INTO product VALUES (1, 'Mobile', 'Electronics');
INSERT INTO product VALUES (2, 'TV', 'Electronics');
INSERT INTO product VALUES (3, 'Car', 'Toy');
INSERT INTO product VALUES (4, 'Video game', 'Toy');
INSERT INTO product VALUES (5, 'Earphones', 'Electronics'); -- Inserting values into the table 'sales'
INSERT INTO sales VALUES (1, 'Mobile', 50000);
INSERT INTO sales VALUES (2, 'TV', 40000);
INSERT INTO sales VALUES (3, 'Car', 50000);
INSERT INTO sales VALUES (5, 'Earphones', 500000); -- Show all columns from the table 'product'
SELECT * FROM product;
-- Show all columns from the table 'product'
SELECT * FROM sales;

Lähtö:

"tuote" -taulukko:

Lähde: Kirjoittaja

"myynti" -taulukko:

Lähde: Kirjoittaja

Yllä olevassa esimerkissä olen luonut kaksi taulukkoa "tuote" ja "myynti".

Taulukon ”tuote” sarakkeiden kuvaus:

  • p_id: viittaa tuotteen yksilölliseen tunnukseen
  • p_nimi: viittaa tuotteen nimeen
  • luokka: viittaa luokkaan, johon kukin tuote kuuluu

Taulukon ”myynti” sarakkeiden kuvaus:

  • p_id: viittaa tuotteen yksilölliseen tunnukseen
  • p_nimi: viittaa tuotteen nimeen
  • bruttomyynti: viittaa kunkin tuotteen bruttomyyntiin

Sitten lisäsin arvot taulukoihin "tuote" ja "myynti".

-- Creating CTE
WITH TEMP_CTE AS
(
SELECT p.category AS category, COUNT(*) AS No_of_products, SUM(s.gross_sales) AS Total_gross_sales
FROM product p JOIN sales s ON p.p_id=s.p_id
GROUP BY category
ORDER BY Total_gross_sales DESC
)
SELECT * FROM TEMP_CTE;

Nyt meitä pyydetään löytämään kunkin tuoteluokan bruttomyynti sekä kunkin luokan tuotteiden määrä.

Tämän saavuttamiseksi loin CTE:n nimeltä "TEMP_CTE". Tässä olen käyttänyt JOIN-toimintoa yhdistääkseni kaksi taulukkoa "tuote" ja "myynti". Halusin liittyä taulukoihin niiden tietueiden päälle, joilla on osumia molemmissa taulukoissa. Siksi INNER JOIN käytetään. INNER JOIN tunnetaan myös nimellä JOIN. Joten jos kirjoitat kyselyyn JOIN INNER JOIN sijaan, se on voimassa vain. p_id on yhteinen sarake molemmissa taulukoissa.

Löydät kokonaisbruttomyynnin ja no. tuotteiden osalta meidän on käytettävä aggregaattifunktioita sum() ja count(). Aggregaattifunktioiden käyttämiseksi GROUP BY -lauseen on oltava siellä. Joten olemme ryhmitellyt tuloksemme kategorioittain ja löydämme kunkin luokan bruttomyynnin summan tuotemäärän kanssa.

Lopuksi Kokonaisbruttomyynti on järjestetty laskevaksi, jotta voimme nähdä luokan, jolla on suurin bruttomyynti.

CTE:n edut

Seuraavat ovat CTE:n edut:

  • Common Table Expression (CTE) helpottaa koodin lukemista.
  • CTE pystyy ratkaisemaan monimutkaisia ​​kyselyitä tehokkaasti. SQL-kyselyiden parissa työskentelevänä analyytikkona monimutkaisten ongelmien ratkaiseminen on iso tehtävä ja CTE auttaa käsittelemään sitä hienosti.
  • Kyselyjen ja alikyselyiden ylläpito helpottuu CTE:n ansiosta.
  • Se tekee kyselyiden virheenkorjauksesta helpompaa kuin tavalliset kyselyt.
  • Monimutkainen kysely voi näyttää yksinkertaiselta lisäämällä sen sisään CTE.
  • CTE järjestää kyselyn siististi.

 Yhteenveto

Yhteenvetona haluaisin sanoa; Common Table Expressions on erittäin helppo toteuttaa. Jotkut tärkeimmistä takeaway-tuotteista on lueteltu alla:

  • CTE:n käyttö tekee SQL-koodista luettavan, mikä lisää koodin tehokkuutta.
  • CTE tekee analyysistä helppoa analyytikoille.
  • Virheenkorjaus, joka on yksi kyselyiden tärkeistä osista, helpottuu CTE:n ansiosta.
  • CTE on tehokkain tapa käsitellä tätä tilannetta erityistietojen (tarkemmin sanottuna sarakkeiden) poimimiseksi suuresta määrästä dataa.

Jos annat haastattelun mille tahansa analyytikko- tai datatieteilijälle, haastattelija tarkistaa SQL:n tietämyksen. Tuolloin CTE:llä on tärkeä rooli tietojesi esittelyssä ja antaa haastattelijalle ongelmanratkaisutaitosi ja -taitosi entistä monimutkaisemmin.

Toivon, että tämä yleisiä taulukkolausekkeita käsittelevä artikkeli pitää sinut oivaltavana ja auttaa sinua asiantuntevassa datamatkassasi SQL:n kanssa. Toivottavasti tietosi ruoan suolan määrästä on lisääntynyt!

Tässä artikkelissa näkyvä media ei ole Analytics Vidhyan omistuksessa, ja sitä käytetään tekijän harkinnan mukaan. 

Aikaleima:

Lisää aiheesta Analyysi Vidhya