/ / Klassificering af typer af analytiske funktioner i Oracle. Analytiske funktioner i Oracle og vigtige tekniske funktioner

Klassificering af typer af analytiske funktioner i Oracle. Analytiske funktioner i Oracle og vigtige tekniske funktioner

Oracle Database Management System eren af ​​de mest populære repræsentanter for sådan software. Det tiltrækker mange brugere på grund af dets brede funktionalitet og betydelige muligheder. Og det er ikke overraskende, for hvor længe har det været udviklet! Så hvorfor er Oracle interessant? De analytiske funktioner i dette DBMS er en vigtig del af de leverede muligheder. Og vi ser på dem i denne artikel.

Generelle oplysninger

oracle analytiske funktioner
Oprindeligt skal det bemærkes, at i Oracleanalytiske funktioner har specifikke muligheder, men bruger en fælles syntaks. For at forstå dem skal du forstå, hvordan dataene:

  1. Skillevæg.
  2. Organisere.
  3. Indstil vinduer.

Bogen blev taget som en teoretisk støtteTom Kite. Materiale herfra præsenteres kort, og kun de vigtigste punkter overvejes. Hvis du har brug for detaljer, kan du anbefale at henvise til kilden. Men tro mig, alle de nødvendige oplysninger vil blive leveret inden for rammerne af artiklen.

Om funktioner

oracle analytiske funktioner
Hvordan ser de ud?I Oracle er analytiske funktioner bygget efter følgende princip: Navn (argument, ....) OVER (fragmentering, rækkefølge, vindue). Hvordan forstå, at det er præcis, hvad du har brug for? Tak til ordet OVER. Det giver dig mulighed for at identificere den introducerede funktion som analytisk. Alt, der kommer efter OVER, er en beskrivelse af datasnittet, hvormed det beregnes. Og nu et par generelle ord om klassificering. Fire typer skelnes traditionelt (afhængigt af de leverede muligheder):

  1. Rangfunktioner. De giver dig mulighed for at oprette "første N" -forespørgsler.
  2. Vinduesfunktioner. Nødvendigt til at beregne en række aggregater (gruppeoperationer).
  3. Resume funktioner. Svarende til s.2, men kan arbejde med alle linjer i en gruppe eller sektion. Hovedforskellen er manglen på ORDER BY. Denne konstruktion bruges ikke i OVER-sætningen. Hvis ikke, bruges denne funktion i forhold til hver linje i sektionen eller gruppen. Hvis det er til stede, anvendes det på vinduet, hvilket indebærer en overgang til en anden type (se punkt 2).
  4. Statistiske funktioner. Eksempler inkluderer STDEVJPOP, VAR_SAMP og andre. Giver dig mulighed for at beregne statistiske værdier for et ikke-ordnet afsnit.

Generelt kan vi sige, at de analytiske funktionerSQL Oracle er allerede dækket. Men kun generelt. Der er ikke noget ønske om at opgive sagen halvvejs, så lad os gå i detaljer. Og de analytiske funktioner i Oracle vil hjælpe med dette, hvis eksempler nu vil blive overvejet.

Sektionsdesign

sql oracle analytiske funktioner
For at gøre dette skal du bruge en forespørgsel på formularen PARTITION BYudtryk [,…]. En sådan konstruktion udfører en logisk opdeling af resultatet, der er sat i bestemte grupper, i henhold til de kriterier, der blev specificeret af partitioneringsudtrykkene. På samme tid anvendes de analytiske funktioner i Oracle uafhængigt i forhold til hvert emne for interaktion. Når behandlingen er afsluttet, nulstilles de til en ny gruppe. Hvad hvis der ikke er specificeret nogen partitioneringskonstruktion? I dette tilfælde betragtes det resulterende sæt som en gruppe.

Bestillingskonstruktion

I dette tilfælde skal du bruge en forespørgsel på formularen ORDER BYudtryk. Derudover kan DESC, ASC og NULLS FIRST / LAST anvendes. Denne konstruktion bruges til at indstille kriterier for sortering af data i en sektion eller gruppe. Brug af ORDER BY kan have en betydelig indflydelse på det resultat, Oracle præsenterer. De analytiske funktioner FIRST og LAST fokuserer for eksempel på det første og sidste element. Det vil sige, de er modsatte i betydningen! Hvad fortæller FIRST og LAST os? De angiver, hvor NULL-værdien skal være i rækkefølge, i begyndelsen af ​​et afsnit eller i slutningen. Hvis du ikke angiver tilstedeværelsen af ​​ORDER BY, beregnes gennemsnitsværdien for hele gruppen. Og det vises for hver linje. Hvorfor? Faktum er, at i dette tilfælde betragtes funktionen som en endelig. Det skal bemærkes, at bestilling udføres udelukkende inden for grupper eller sektioner.

Vindueskonstruktion

eksempler på oracle analytiske funktioner
Dens konstruktion er meget kompleks.Med sin hjælp specificeres et stift bundet eller bevægeligt vindue (interval, sæt) af data i et afsnit (gruppe), som den analytiske funktion vil interagere med. Du kan indstille de nedre og øvre grænser for aggregeringen. Med andre ord, i sådanne tilfælde beslutter vi at anvende en analytisk funktion til hver linje i sektionen (gruppe) fra nummer X til Y. Når du bruger windows, spiller ORDER BY en vigtig rolle. For hårdkodede spændvidder er standarden markeringen fra den første til den aktuelle række i gruppen.

Hvorfor har du brug for analytiske funktioner

Det tekniske mål er at holde ordlyden kortfattet og fremskynde udførelsen af ​​databaseforespørgsler. De har følgende fordele i forhold til de sædvanlige SQL-operatører:

  1. Reduktion af belastningen på netværket. Det, der tidligere krævede en række forespørgsler, kan nu hentes fra databasen i én.
  2. Kort og enkel formulering. Dette resulterer i forbedrede fejlfindings- og indsigtsfunktioner i forhold til traditionelle værktøjer.
  3. Behandlingseffektivitet. Analytiske funktioner har beregningsalgoritmer, der er optimeret til hurtigere resultater.
  4. Overførsel af arbejde til serveren. Alle beregninger udføres på serveren, hvis ressourcer normalt er mere egnede til denne opgave.

Introduktionen af ​​sådanne funktioner gjorde det også muligt at nå et sådant strategisk mål som at give et grundlæggende værktøj til opbygning af såkaldte datalager af analytisk karakter.

konklusion

oracle analytiske funktioner først
Hvad kan du sige i slutningen af ​​artiklen?Analytiske funktioner er en meget interessant løsning. For bedre at forstå deres detaljer kan du øve dig på at bruge dem på komplekse og store databaser. Som et eksempel til sammenligning kan du vælge traditionelle funktioner som SUM, MAX og lignende. Men husk, at de fungerer som et mellemliggende beregningsresultat. Derfor kan de kun bruges med SELECT eller ORDER BY. Ganske vist er dette emne meget interessant. Der er mange variationer her, og teoretisk er det problematisk at beskrive dem alle. Dette er noget at prøve at arbejde med forespørgsler.