Mode Blog

Hier bij Mode leggen we veel nadruk op het schrijven van goede, schone SQL. Als samenwerkingsteam is het belangrijk dat onze vragen gemakkelijk kunnen worden gelezen en begrepen door onze teamgenoten. Een conventie die we hebben aangenomen is het gebruik van common table expressions (CTE ‘ s).

Wat zijn veelvoorkomende tabeluitdrukkingen?

gemeenschappelijke tabeluitdrukkingen zijn tijdelijke named result sets die bestaan voor slechts één query. Ze beginnen met een WITH , gevolgd door een expressienaam en een query die de resultaatset definieert., Met deze conventie kunt u meerdere uitdrukkingen definiëren binnen een query. Eenmaal gedefinieerd, kunnen deze expressies herhaaldelijk worden gerefereerd gedurende de rest van uw query (net zoals u zou verwijzen naar permanente database tabellen of weergaven).,

hoewel veelgebruikte tabeluitdrukkingen op dezelfde manier werken als subqueries, hebben ze verschillende voordelen, waaronder:

  • de mogelijkheid om herhaaldelijk naar dezelfde tijdelijke resultaatset te verwijzen in de query
  • verbeterde leesbaarheid voor samenwerking en debuggen
  • betere zichtbaarheid in veelgebruikte resultaatsets die goede kandidaten zijn om permanente tabellen/weergaven te worden

een praktisch voorbeeld

laten we een voorbeeld nemen met behulp van gegevens in de demo schema van mode ‘ s public Warehouse, waarbij een hypothetisch papier bedrijf., Stel dat u voor dit bedrijf werkt en u wilt bereiken grote klanten die slechte verzendervaringen hebben gehad. Na het praten met het sales team, je besluit om te definiëren “grote klanten” als een account met $ 100k of meer in lifetime omzet, en je definiëren slechte scheepvaart ervaringen als een account dat meerdere bestellingen met mislukte zendingen heeft gehad.

een gestroomlijnde aanpak voor het identificeren van rekeningen die aan beide criteria voldoen, is het gebruik van een gemeenschappelijke tabeluitdrukking, zoals in dit voorbeeld.,

het afbreken

  • Met: aWITH is noodzakelijk om uw algemene tabeluitdrukkingsquery te starten.
 WITH 
  • expressie 1: account_failed_shipments. Onze eerste uitdrukking geeft de telling van mislukte zendingen voor alle accounts die ten minste één hebben gehad. Syntactisch beginnen we met het benoemen van de uitdrukking in het formaat expression_name as (. We zullen nu in staat zijn om te verwijzen naar deze naam alsof het een tabel in onze database gedurende de rest van de query., Wat volgt is een typische query, die, in dit voorbeeld, is het groeperen van mislukte zendingen op rekening. Tot slot sluiten we de uitdrukking af met een gesloten haakje. Merk op dat aangezien dit niet de laatste uitdrukking in onze query is, het gesloten haakje wordt gevolgd door een komma.
  • expressie 2: account_lifetime_revenue. Onze tweede uitdrukking geeft de totale som van de inkomsten per rekening. Het is identiek in structuur aan uitdrukking 1, met één uitzondering— aangezien het de uiteindelijke uitdrukking is in onze query, wordt het gesloten haakje niet gevolgd door een komma.,
 account_lifetime_revenue as ( SELECT o.account_id, SUM(o.total_amt_usd) as amount FROM demo.orders o GROUP BY 1 )
  • Final query: tot slot hebben we de final query zelf die ons resultaat zal teruggeven. Dit ziet er ongeveer hetzelfde uit als elke traditionele query, met uitzondering van de laatste twee JOINs die referentie-expressies die we eerder hebben gedefinieerd, in tegenstelling tot tabellen in onze database.

gemeenschappelijke tabeluitdrukkingen helpen ons efficiënter te werken

gemeenschappelijke tabeluitdrukkingen zijn zeer waardevolle methode voor het compartimenteren van complexe query ‘ s, vooral wanneer ze combinaties van meerdere concepten omvatten., Omdat elke expressie duidelijk benoemd en gedefinieerd is, is debuggen veel gemakkelijker (vooral als u highlight-to-run in modus gebruikt).

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *