Henter data ...

SQL Programmering Videregående med SQL og Dataanalyse. 2 moduler. 6 dage i alt

Kort navn:

Varighed:


RING 70 23 26 50 eller send en mail og få uforpligtende informationer om, hvor kurset udbydes, datoer, priser og en status på, om kurset har deltagere nok til at det bliver gennemført.

Udbydes kurset ikke i oversigten til højre, så kontakt os endelig for ny dato.

Moduler - 3 + 3 dage over en periode

FORENINGSMÆNGDEN ( UNION / UNION ALL )

Foreningsmængder optræder, når du ønsker at samle/forene rækker fra to datakilder, ved at sætte rækkerne ”ovenpå hinanden”. Dette optræder f.eks. hvis man har to forskellige datagrundlag, som man ønsker at behandle under ét -- eller inden for samme datagrundlag ønsker at håndtere brøkdele af rækkerne på forskellige måder, for til sidst at forene resultatsættene.

COMMON TABLE EXPRESSIONS ( CTE )

CTE findes i to varianter: De almindelige samt rekursive. gennemgår de almindelige CTE’er, som i høj grad kan gøre din kode læsbar, når komplekse løsninger kan brydes ned i mere håndgribelige brøkdele. CTE kan være et godt valg, når du implementerer din kode-strategi, og bagefter til vedligeholdelse af koden.

EKSOTISKE JOINS

Elegante løsninger ved at joine på andet end ’=’ (fx kategorisere dine data i intervaller)

OUTER JOIN

Få alle kunder med i Rapporten, også dem som ikke købte noget

CROSS JOIN

Danne et udgangspunkt for de ”manglende værdier” i dine rapporter (fx alle kombinationer af { Kunder , Årstal } i dine rapporter)

HAVING

Stort emne på kurset - mange demoer og øvelser

Håndterer grupperede betingelser (fx finde kunder som købte mere end 3 gange / for mere end 500.000 etc.)

Lige så vigtig som Where-klausulen …

CORRELATED SUBQUERIES

Correlated DELETE -- hvordan slettes rækker i én tabel, ud fra værdier i en anden tabel? -- f.eks. en fejlliste, som ønskes benyttet til at slette rækker i en hovedtabel.

Correlated UPDATE -- hvordan opdateres felter i rækker i én tabel, ud fra værdier i en anden tabel? -- f.eks. en liste med transaktioner, som ønskes benyttet til at opdatere den samlede Saldo i en hovedtabel -- eller en fejlliste, som benyttes til at opdatere forkerte værdier i en hovedtabel.

Snedig syntax -- kan løse problemstillinger, hvor behandlede data er afhængig af rækkens/gruppens indhold

Beregne relative summer til rapporter (fx %-fordelingen af kundens varekøb)

Maximere/minimere inden for gruppering (fx angive hver kundes mindste enkeltkøb)


EXISTS

Man kan opnå høj performance, hvis man kan nøjes med at få bekræftet tilstedeværelsen af data frem for at få returneret data

Slette/opdatere rækker i én tabel, afhængigt af værdier i en anden tabel (fx opdatere saldi/salgskatalog afhængigt af tidligere års køb)

CASE

Byg logik ind i dine SQL statements

Hvornår kan man med fordel benytte CASE i SELECT , WHERE , GROUP BY , HAVING , ORDER BY - mange eksempler og opgaver

Undgå ”Division by Zero”-errors, så dine rapporter ikke blokerer

Metoder til ”Data vask” (Data Cleansing)


COALESCE

Behandle NULL-værdier i dine rapporter

Erstat NULL med en valgt værdi i rapporten (fx 0)

Prioritér din søgerækkefølge gennem flere kolonner og/eller tabeller, hvis der optræder NULL-værdier (fx Hvis kundens mobiltlf. ikke er registreret, returnér da kundens fastnetnr.)

Mængdeoperationer

SQL hviler på mængdelære. Blandt SQL-sprogets berømte attraktioner hører dets elegante håndtering af mængdeoperationer, som kan løse avancerede rapportønsker. Pointen er, at genkendes mængdeoperationen ud fra rapportønsket, har man en god retningsgiver for en mulig strategi til at skrive en passende SQL-kode. På kurset 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.

Disjunkte mængder

    • Tom 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 ?

Grupperede data

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. Kan derfor give en performance-gevinst fremfor at gruppere på alle niveauer og samle aggregater senere

MERGE-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. Kurset præsenterer mulighederne, herunder nogle af udvidelserne til standarden, som enkelte database-producenter har tilføjet.

Med udgangspunkt i upsert vha. correlated UPDATE hhv. INSERT præsenteres merge-kommandoen og dens anvendelser.

Rekursive CTE

CTE blev introduceret i SQL:1999. Herunder valgte man at placere rekursive forespørgsler i CTE syntaxen. Kurset introducerer kort disse konstruktioner, fordi de kan anvendes i views og inline table-valued functions og derved give performance! Sammenligning med Oracle syntax

Window-funktioner

Definition. Hvad er pointen? Hvori består ”vinduet”? Gennemgås detaljeret med fokus på opbygning samt relation til strategier for rapportering. Mange eksempler.

Typer af Window Functions:

    • Aggregate

    • Ranking

    • Distribution

    • Offset

    • Hver af disse typer præsenteres med eksempler på anvendelse.

OVER-klausulen og dens elementer:

    • Partitioning

    • Ordering

    • Framing

    • Hvert af disse elementer gennemgås grundigt med eksempler på anvendelse i forespørgsler.

Sekvenser af key values:

    • Tildele unikke, sekventielle værdier, f.eks. surrogate keys i et Data Warehouse.

    • Slette duplikat-rækker

    • Top-N pr. gruppering -- f.eks. angiv de tre seneste afgivne ordrer pr. kunde.

Window Functions til at returnere nogle statistiske deskriptorer:

    • Typetal

    • Median

Løbende aggregater -- ”running values”.

    • Angiv løbende 7-døgns gennemsnitlige indbetaling pr. kunde

Ranking functions

ROW_NUMBER() , RANK() og DENSE_RANK()

    • Der fokuseres specielt på denne type Window Function -- herunder hvilke typer rapportønsker eller Data Warehouse-forespørgsler den kan løse

Intervaller

Intervaller optræder flere steder:

    • Et lån har en given restgæld og rente i et givet tidsrum.

    • En medarbejder udlånes til et projekt i et givet tidsrum.

    • En bil har en leasingperiode.

    • En mobilsamtale har en varighed.

Overlappende intervaller

    • Maximale antal overlappende intervaller.

    • Hvad var det maximale antal samtidige biler, der var udlejet.

    • Hvis et interval er tilskrevet en værdi -- hvad var det maximale udlån?

Huller i intervaller

    • Hvilke intervaller af løbenumre er ikke i brug?

    • Angiv sammenhængende intervaller af løbenumre, som er i brug

Forbehold for ændringer efter publisering


Kursusdatoer