
SQL og Dataanalyse
Beskrivelse
Dette er et avanceret SQL-kursus, der bygger på SQL-standarden og derfor er relevant uanset om du arbejder med Oracle, IBM Db2, Microsoft SQL Server, PostgreSQL eller Teradata.
Formålet med kurset er at udvide dit repertoire med avancerede SQL-teknikker, så du får endnu flere tangenter at spille på og bliver mere kreativ i omsætningen af strategi til effektiv SQL-kode. Dette er samtidig en vigtig forudsætning for at kunne performance tune SQL-statements.
Kurset er bygget op omkring tre hovedtemaer og supplerende emner, som inddrages, afhængig af deltagerønsker og tid.
- Første hovedtema er klassiske mængdesammenligninger. Vi dykker ned i SQL’s kerne med solide mængdeoperationer, som løser en lang række praktiske rapporteringsopgaver. Der er fokus på at analysere det konkrete rapportønske, så den rette mængdeoperation kan identificeres og omsættes til SQL-kode.
- Andet hovedtema er window functions, som løser mange klassiske problemstillinger på en elegant, letlæselig og ofte mere performancevenlig måde. Window functions er hovedtemaet på kurset og gennemgås grundigt med mange eksempler og praktiske øvelser, så du bliver fortrolig med både syntaks og anvendelse.
- Det tredje hovedtema er SQL-forespørgsler på intervaller, herunder betingelser for overlappende perioder og tilskrivning af intervaller med værdier som rentesats, hovedstol, anciennitet og restperiode. Denne type intervallogik er særlig relevant i finansiel SQL, f.eks. i forbindelse med værdipapirer, ind- og udlån samt leasingperioder.
Afhængigt af tempo og deltagerønsker kan vi desuden nå en række supplerende temaer.
Det gælder f.eks. udvidelserne af GROUP BY med GROUPING SETS, CUBE og ROLLUP, som især er relevante i statistiske rapporter, Data Warehousing og OLAP-analyser – og som ved korrekt brug kan forbedre performance.
Vi ser også på correlated DELETE og UPDATE, hvor data i én tabel ændres med udgangspunkt i data fra en anden. Her starter vi med en UPSERT og introducerer dernæst MERGE-kommandoen. MERGE benyttes ofte i Data Warehousing-sammenhænge.
Endelig kigger vi på rekursive forespørgsler, som i SQL-standarden håndteres med rekursive Common Table Expressions (CTE), og som gør det muligt at løse opgaver, der ellers kræver loops eller procedurer.
Certificeringspakker
Moduloversigt
- Modul 1Mængdesammenligninger
SQL hviler på mængdelære. Blandt SQL-sprogets berømte attraktioner hører dets elegante håndtering af mængdesammenligninger, som kan løse avancerede rapportønsker.
Genkendes mængdeoperationen ud fra rapportønsket, har man en god retningsgiver for en mulig strategi til at skrive en passende SQL-kode
I modulet præsenteres klassiske mængdeoperationer - både grafisk i Venn-diagrammer samt smukke, korrelerede HAVING- og/eller EXISTS-konstruktioner til at løse dem. SQL er bygget til at kunne gøre dette med god performance.
Eksempler på mængdesammenligninger:
Disjunkte mængder – den tomme fællesmængde
- Hvilke købende Kunder X har ikke købt nogen af de Varer, som Kunde A har købt ?
- Hvilke Kunder X har kun købt noget i de år, som Kunde A ikke har købt i ?
Supermængde
- Hvilke Kunder X har mindst købt de samme Varer som Kunde A ?
Delmængde
- Hvilke Kunder X har købt blandt Varer købt af Kunde A - hvor Kunde A har købt alle Varer, som Kunde X har købt ?
Identiske mængder
- Hvilke Kunder X har købt præcis de samme Varer som Kunde A ?
- Modul 2Grouping sets
SQL:1999-standardens udvidelse af GROUP BY med GROUPING SETS, CUBE og ROLLUP. Implementeret til håndtering af data i statistiske rapporter og Data Warehouses
Et stærkt supplement i rapportering, idet man specifikt udvælger niveauer at gruppere data i. Det kan give en performance gevinst fremfor at gruppere på alle niveauer og samle aggregater senere.
- Modul 3Window Functions
Definition - hvori består ”vinduet” ?
4 typer Window Functions
- Aggregate / Ranking / ( Distribution ) / Offset
- Hver af disse typer præsenteres med eksempler på anvendelse
OVER-klausulen og dens levels
- Partitioning / Ordering / Framing
- Hvert af disse levels gennemgås grundigt med eksempler på anvendelse
Partitioning
- Beregning af brøkdele – f.eks % beregninger
Ordering
- Ranking functions
- ROW_NUMBER() - RANK() - DENSE_RANK()
- Top-N pr. gruppering - med/uden WITH TIES
Framing
- ROWS vs RANGE
- Running values – løbende gennemsnit , Year-to-Date
- Løbende aggregater -- ”running values”
- F.eks løbende 7-døgns gennemsnitlige indbetalinger, Year-To-Date
Analytic functions
- LEAD() – LAG() – FIRST_VALUE() – LAST_VALUE()
- RESPECT NULLS vs IGNORE NULLS
- ( Relative ) tilvækster
Intervaller ud fra enkelt-værdier
- Intervaller fortløbende uden manglende værdier
- Intervaller mellem intervallerne ( "huller" )
- Returnere listen af manglende værdier – hvilke løbenr / måneder er ikke i brug
- Beregning af anciennitet, kundeloyalitet etc
- Modul 4Intervaller
Statistikker på intervaller
Overlappende intervaller
- Betingelsen for overlap
- Overlap mellem enkelte intervaller vs grupperede intervaller
- Returnere overlap
- Tælle antal overlappende intervaller
- Tilskrive intervaller en værdi – returnere aggregater
- Maximale antal overlappende intervaller ( højeste antal samtidige kunder )
- Maximale sum af værdier tilskrevet intervallerne ( maximale ind-/udlån )
- Ikke-overlappende intervaller
- Returnere foreningsmængden af intervaller – kundes samlede engagement
- Modul 5MERGE-kommandoen
Defineret i SQL:2003 og SQL:2008-standarden og svarer til en UPSERT ( update + insert )
Merge indgår ofte i befolkning af tabeller i Data Warehouses
Modulet præsenterer mulighederne, herunder nogle af udvidelserne til standarden, som de respektive database-producenter har tilføjet
- Modul 6Rekursive CTE (Common Table Expression)
CTE blev introduceret i SQL:1999. Herunder valgte man at placere rekursive forespørgsler i CTE syntaxen
Modulet her introducerer kort disse konstruktioner, som bl.a. kan anvendes i views og f.eks Microsoft SQL Server inline table-valued functions og derved give performance
Er du i tvivl?
Det ligger os meget på sinde, at du finder det kursusforløb, der skaber størst værdi for dig og din arbejdsplads. Tag fat i vores kursusrådgivere, de sidder klar til at hjælpe dig!
