– Modus Blogg

Her på Modus, vi legger mye vekt på å skrive god, ren SQL. Som en samarbeidende team, er det viktig at våre spørsmål kan være lett å lese og forstått av våre lagkamerater. En konvensjon vi har vedtatt er bruk av felles bord uttrykk (CTEs).

Hva er felles bord uttrykk?

Felles bord uttrykk er midlertidig heter resultatsett som eksisterer for bare ett søk. De begynner med en WITH , etterfulgt av et uttrykk navn og en spørring som definerer resultat., Ved hjelp av denne konvensjon, kan du definere flere uttrykk i en spørring. Når den er definert, vil disse uttrykkene kan være referert til flere ganger gjennom resten av søket (akkurat som du ville se til permanent database tabeller eller utsikt).,

Mens vanlige tabell uttrykk operere på samme måte som subqueries, de har flere fordeler, inkludert:

  • evne til å referere til samme midlertidig resultat sett flere ganger på tvers av spørringen
  • Bedre lesbarhet for samarbeid og debugging
  • Bedre sikt inn brukte resultatsett som er gode kandidater til å bli faste tabeller/utsikt

En praktisk eksempel på

La oss ta et eksempel bruk av data i demo-skjema av-Modus Offentlige Galleriet, som innebærer en hypotetisk papir selskapet., Anta at du har arbeidet for dette selskapet, og du ønsker å nå ut til store kunder, som har hatt dårlig frakt erfaringer. Etter å ha snakket med salgsteamet, du bestemmer deg for å definere «store kunder» som en hvilken som helst konto med $100k eller mer i løpet av inntekter, og du definere dårlig frakt erfaringer som enhver konto som har hatt flere bestillinger med mislyktes forsendelser.

En strømlinjeformet tilnærming for å identifisere kontoer som oppfyller begge disse kriteriene er å bruke et felles bord uttrykk, som i dette eksemplet.,

Bryte det ned

  • MED: EN WITH er nødvendig for å kick-starte din vanlige tabell uttrykk spørring.
 WITH 
  • Uttrykk 1: account_failed_shipments. Vår første uttrykk, returnerer antall av mislykkede forsendelser for alle kontoer som har hatt minst én. Syntaktisk, vi begynner med å navngi til uttrykk i formatet expression_name as (. Vi vil nå være i stand til å referere til dette navnet som om det var et bord i vår database gjennom resten av spørringen., Det som følger er en typisk spørring, som i dette eksemplet, er gruppering mislyktes forsendelser av konto. Til slutt, kan vi konkludere med uttrykket med en lukket parentes. Merk at siden dette ikke er den siste til uttrykk i vår spørring, lukket parentesen etterfølges av et komma.
  • Uttrykk 2: account_lifetime_revenue. Vårt andre uttrykk, returnerer den totale summen av inntekter av konto. Det er like i struktur til Uttrykk 1, med ett unntak siden det er den siste til uttrykk i vår spørring, lukket parentes er ikke etterfulgt av et komma.,
 account_lifetime_revenue as ( SELECT o.account_id, SUM(o.total_amt_usd) as amount FROM demo.orders o GROUP BY 1 )
  • Siste spørring: til Slutt, vi har det siste søket i seg selv som vil returnere vårt resultat satt. Dette skal se helt lik noen tradisjonelle søk, med unntak av de to siste Blir med som referanse uttrykk vi har definert tidligere, i motsetning til tabeller i vår database.

Felles bord uttrykk hjelpe oss til å arbeide mer effektivt

Felles bord uttrykk er svært verdifull metode for a compartmentalizing komplekse spørringer, spesielt når de involverer kombinasjoner av flere konsepter., Siden hver uttrykket er tydelig navn og definert, debugging er mye enklere (spesielt hvis du bruker høydepunkt-å-kjøre i Modus).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *