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