SQL og Dataanalyse

Formål

At give deltagere viden og færdigheder til at kunne bruge avanceret SQL-kode til at returnere statistiske data -- eksempelvis til avancerede statistiske rapportønsker og/eller befolkning af Data Warehouses.

Beskrivelse

Dette er et avanceret SQL-kursus !

Kursets indhold ligger inden for SQL-standarden og kan derfor benyttes i f.eks. Oracle, IBM DB2, Microsoft SQL Server, MySQL, MariaDB, PostgreSQL og Teradata.

Kurset udvider kursistens repertoire af avancerede SQL-teknikker, så han/hun får flere 'tangenter at spille på' og derved kan være mere kreativ i omsætningen af strategien til SQL-kode! Dette er forudsætningen for at kunne performance tune SQL-statements.

Kurset starter med klassiske mængdeoperationer -- hvor der fokuseres på strategier for løsning vha. korrelerede subqueries. Gode, gedigne teknikker, som ligger i kernen af tankegangen i SQL.

Dernæst følger SQL:1999-udvidelserne af GROUP BY med GROUPING SETS, CUBE og ROLLUP. Disse udvidelser retter sig mod statistiske rapporter og Data Warehousing. Korrekt anvendt kan dette give bedre performance.

Correlated DELETE og UPDATE kan benyttes til ændringer af data i én tabel, med udgangspunkt i data fra en anden tabel. Kurset tager udgangspunkt i en Upsert - for dernæst at introducere den vigtige MERGE-kommando, som kom i SQL:2003 og blev udvidet i SQL:2008-standarden. Benyttes ofte i Data Warehousing.

Kurset kommer kort omkring rekursive CTE -- defineret til hierarkiske forespørgsler. De finder også anvendelse i at kunne erstatte en iterativ forespørgsel ( f.eks. CURSOR eller WHILE loop ). Derved tilbydes performance gennem et view eller inline table-valued function.

Window functions ( Analytic function eller OLAP function ) blev introduceret i SQL:1999-standarden og er en radikal anderledes måde at tænke mængder på. De løser en stribe klassiske problemstillinger på en elegant og let læselig måde - tilmed ofte med god performance.

Window functions gennemgås detaljeret med mange øvelser og eksempler og er hovedemnet på kurset.

Kurset viser måder at returnere simple statistiske deskriptorer - f.eks. median, typetal og gennemsnit.

Til sidst introduceres SQL-forespørgsler på intervaller samt betingelsen for overlappende intervaller. Resultatsæt fra beregninger på intervaller, herunder overlappende intervaller, intervaller tilskrevet en værdi. Dette indgår bl.a. i økonomisk SQL.

Forudsætninger

  • SU-241 - SQL Programmering Videregående 

Materialer

  • Kursusmateriale på dansk

Tilhørende certificering

  • PS0241 - SCDP - SQL Certified Developer Professional

Tilhørende test

  • TSU-245 - SQL and Statistics 

Indhold

  • 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.