Analyyttiset funktiot

analyyttiset funktiot laskevat yhteenlasketun arvon riviryhmän perusteella. Ne eroavat yhteenlasketuista funktioista siinä, että ne palauttavat kullekin ryhmälle useita rivejä. Riviryhmää kutsutaan ikkunaksi ja se määritellään analytic_clause. Kullekin riville on määritelty rivien liukuikkuna. Ikkuna määrittää rivialueen, jota käytetään nykyisen rivin laskemiseen. Ikkunakoot voivat perustua joko fyysiseen rivimäärään tai loogiseen intervalliin, kuten aikaan.

analyyttiset funktiot ovat viimeinen kyselyssä suoritettujen operaatioiden joukko lukuun ottamatta lopullista ORDERBY lauseketta. Kaikki liitokset ja kaikki WHEREGROUPBY ja HAVING lausekkeet täytetään ennen analyyttisten funktioiden käsittelyä. Siksi analyyttiset funktiot voivat esiintyä vain select-luettelossa tai ORDERBY lauseke.

analyyttisiä funktioita käytetään yleisesti kumulatiivisten, liikkuvien, keskitettyjen ja raportoivien aggregaattien laskemiseen.

analytic_function::=

Description of analytic_function.gif seuraa

kuvausta ”analytic_function.gif ”

analytic_clause::=

Description of analytic_clause.gif seuraa

kuvausta ”analytic_clause.gif ”

query_partition_clause::=

Description of query_partition_clause.gif seuraa
kuvausta ”query_partition_clause.gif ”

order_by_clause::=

Description of order_by_clause.gif seuraa

kuvausta ”order_by_clause.gif ”

ikkuna_clause::=

Ikkuna_clausen kuvaus.gif seuraa

kuvituksen kuvausta ”windowing_clause.gif ”

tämän syntaksin semantiikkaa käsitellään seuraavissa jaksoissa.

analytic_function

Määritä analyyttisen funktion nimi (Katso analyyttisten funktioiden luettelo tämän semantiikan käsittelyn jälkeen).

argumentit

analyyttiset funktiot vaativat 0-3 argumenttia. Argumentit voivat olla mitä tahansa numeerista tietotyyppiä tai mitä tahansa ei-numeerista tietotyyppiä, joka voidaan implisiittisesti muuntaa numeeriseksi tietotyypiksi. Oracle määrittää argumentin suurimmalla numeerisella etuoikeudella ja muuntaa implisiittisesti jäljellä olevat argumentit kyseiseen tietotyyppiin. Palautustyyppi on myös kyseinen tietotyyppi, ellei yksittäisestä funktiosta ole toisin mainittu.

Katso myös:

”Numeric Precedence” for information on numeric precedence and Table 3-10, ”Implicit Type Conversion Matrix” for more information on implicit conversion

analytic_clause

Use OVERanalytic_clause to indicate that the function operates on a query result set. This clause is computed after the FROMWHEREGROUPBY, and HAVING clauses. Voit määrittää analyyttiset funktiot tällä lausekkeella select-luettelossa tai ORDERBY lauseke. Jos haluat suodattaa analyyttiseen funktioon perustuvan kyselyn tulokset, peittele nämä funktiot kantakyselyyn ja suodata sitten sisäkkäisen alakerran tulokset.

huomautukset analytic_clausesta: seuraavat huomautukset koskevat analytic_clause:

  • ei voi pesiä analyyttisiä funktioita määrittämällä mitään analyyttistä funktiota missään analytic_clause. Voit kuitenkin määrittää analyyttisen funktion alikuvauksessa ja laskea toisen analyyttisen funktion sen päälle.

  • voit määrittääOVERanalytic_clausekäyttäjän määrittelemillä analyyttisillä funktioilla sekä sisäänrakennetuilla analyyttisillä funktioilla. Katso luo funktio.

query_partition_clause

käytä PARTITIONBY lauseketta kyselyn tulosjoukon jakamiseen ryhmiin, jotka perustuvat yhteen tai useampaan value_expr. Jos jätät tämän lausekkeen pois, funktio käsittelee kyselytulosjoukon kaikki rivit yhtenä ryhmänä.

käyttääksesi query_partition_clause analyyttisessä funktiossa, käytä syntaksin ylähaaraa (ilman sulkuja). Jos haluat käyttää tätä lauseketta mallikyselyssä (model_column_clauses) tai osioidussa ulommassa liitoksessa (outer_join_clause), käytä syntaksin alempaa haaraa (sulkeineen).

voit määrittää samassa kyselyssä useita analyyttisiä funktioita, joilla kaikilla on sama tai eri PARTITIONBY avaimet.

Jos kysytyillä olioilla on parallel-attribuutti, ja jos määritellään analyyttinen funktio query_partition_clause, niin myös funktiolaskennat ovat paralleloituja.

value_expr kelvollisia arvoja ovat vakiot, sarakkeet, ei -analyyttiset funktiot, funktion lausekkeet tai lausekkeet, joihin liittyy jokin näistä.

order_by_clause

käytä order_by_clause määrittääksesi, miten tiedot on järjestetty osion sisällä. Kaikille analyyttisille funktioille voidaan järjestää osion arvot useilla näppäimillä, joista jokainen on määritelty value_expr ja jokainen on hyväksytty järjestysjärjestyksellä.

kunkin funktion sisällä voit määrittää useita tilauslausekkeita. Näin toimiminen on erityisen hyödyllistä käytettäessä arvoja sijoittavia funktioita, koska toinen lauseke voi ratkaista ensimmäisen lausekkeen identtisten arvojen väliset sidokset.

aina kun order_by_clause antaa identtiset arvot useille riveille, funktio käyttäytyy seuraavasti:

    CUME_DISTDENSE_RANKNTILEPERCENT_RANK, jaRANKpalauta sama tulos jokaiselle riville.

    ROW_NUMBERantaa jokaiselle riville erillisen arvon, vaikka olisi tasapeliorder_by_clause. Arvo perustuu rivin käsittelyjärjestykseen, joka voi olla nondeterministinen, jos ORDERBY ei takaa kokonaisjärjestystä.

  • kaikkien muiden analyyttisten funktioiden osalta tulos riippuu ikkunan määrittelystä. Jos määrittelet loogisen ikkunan RANGE avainsanalla, funktio palauttaa saman tuloksen jokaiselle riville. Jos määrittelet fysikaalisen ikkunan ROWS avainsanalla, tulos on nondeterministinen.

järjestyksen rajoitukset lausekkeella seuraavat rajoitukset koskevat ORDERBY lauseketta:

  • käytettäessä analyyttisessä funktiossa order_by_clause on käytettävä lauseketta (exprSIBLINGS avainsana ei ole kelvollinen (sillä on merkitystä vain hierarkkisissa kyselyissä). Myös asema (position) ja sarakenimet (c_alias) ovat virheellisiä. Muuten tämä order_by_clause on sama kuin yleiskyselyn tai alakerran järjestämiseen käytetty.

  • An analytic function that uses the RANGE keyword can use multiple sort keys in its ORDERBY clause if it specifies any of the following windows:

    • RANGEBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW. The short form of this is RANGEUNBOUNDEDPRECEDING.

    • RANGEBETWEENCURRENTROWANDUNBOUNDEDFOLLOWING

    • RANGEBETWEENCURRENTROWANDCURRENTROW

    • RANGEBETWEENUNBOUNDEDPRECEDINGANDUNBOUNDEDFOLLOWING

    muilla kuin näillä neljällä Ikkunarajoilla voi olla vain yksi lajitteluavain ORDERBY analyyttisen funktion lauseke. Tämä rajoitus ei koske ROW avainsanalla määriteltyjä ikkunan rajoja.

  • ASC / DESC Määritä järjestysjärjestys (nouseva tai laskeva). ASC on oletusarvo.

    NULLS FIRST / NULLS LAST Määritä, tuleeko nulleja sisältävien palautettujen rivien ilmestyä ensimmäisenä vai viimeisenä tilausjärjestyksessä.

    NULLSLAST on laskevan järjestyksen oletusarvo ja NULLSFIRST on laskevan järjestyksen oletusarvo.

    analyyttiset funktiot toimivat aina riveillä, jotka on määritelty funktion order_by_clause. Funktion order_by_clause ei kuitenkaan takaa tuloksen järjestystä. Käytä kyselyn order_by_clause takaamaan lopullinen tulosjärjestys.

    Katso myös:

    ORDER_BY_CLAUSE of SELECT lisätietoja tästä lausekkeesta

    windowing_clause

    jotkut analyyttiset funktiot sallivat windowing_clause. Tämän jakson lopussa olevassa analyyttisten funktioiden luettelossa niitä funktioita, jotka mahdollistavat windowing_clause, seuraa asteriski (*).

    rivit / alue nämä avainsanat määrittelevät jokaiselle riville a-ikkunan (fyysisen tai loogisen rivijoukon), jota käytetään funktion tuloksen laskemiseen. Funktio levitetään sitten kaikille ikkunan riveille. Ikkuna liikkuu kyselyn tulosjoukon tai osion läpi ylhäältä alas.

    • ROWS määrittää ikkunan fyysisinä yksikköinä (riveinä).

    • RANGEmäärittää ikkunan loogisena siirtona.

    tätä lauseketta ei voi määritellä, ellei ole määritellyt order_by_clause. Joidenkin RANGE – lausekkeen määrittelemien ikkunarajojen avulla order_by_clausevoi määritellä vain yhden lausekkeen. KS.kohta ”järjestyksen rajoitukset Lausekkeittain”.

    analyyttisen funktion loogisella offsetilla palauttama arvo on aina deterministinen. Analyyttisen funktion, jolla on fysikaalinen offset, palauttama arvo voi kuitenkin tuottaa ei-deterministisiä tuloksia, ellei tilausilmaisu johda ainutlaatuiseen tilaukseen. Voit joutua määrittämään useita sarakkeita order_by_clause tämän ainutlaatuisen tilauksen saavuttamiseksi.

    välillä… Ja käytä BETWEEN … AND lauseke, joka määrittää ikkunan alku-ja loppupisteen. Ensimmäinen lauseke (ennen AND) määrittelee alkupisteen ja toinen lauseke (AND jälkeen) päätepisteen.

    Jos BETWEEN jätetään pois ja määritetään vain yksi päätepiste, Oracle pitää sitä alkupisteenä, ja päätepiste on oletusarvo nykyiselle riville.

    UNBOUNDED previous Specify UNBOUNDEDPRECEDING to indicate that the window starts at the first row of the osion. Tämä on alkupisteen määritys, eikä sitä voida käyttää päätepisteen määrityksenä.

    UNBOUNDED FOLLOWING Specify UNBOUNDEDFOLLOWING to indicate that the window ends at the last row of the osion. Tämä on päätepistemääritelmä, eikä sitä voida käyttää alkupisteen määrityksenä.

    nykyinen rivi aloituspisteenä, CURRENTROW määrittää, että ikkuna alkaa nykyisellä rivillä tai arvolla (riippuen siitä, onko määritelty ROW vai RANGE). Tällöin päätepiste ei voi olla value_exprPRECEDING.

    päätepisteenä CURRENTROW määrittää, että ikkuna päättyy nykyiseen riviin tai arvoon (riippuen siitä, onko määritelty ROW vai RANGE). Tällöin alkupiste ei voi olla value_exprFOLLOWING.

    value_expr edeltävä tai value_expr Seuraava RANGE tai ROW:

    • Jos value_exprFOLLOWING on lähtöpiste, niin päätepisteen on oltava value_exprFOLLOWING.

    • Josvalue_exprPRECEDINGon päätepiste, niin alkupisteen on oltavavalue_exprPRECEDING.

    Jos määrittelet aikavälin määrittelemää loogista ikkunaa numeerisessa muodossa, saatat joutua käyttämään muunnosfunktioita.

    Katso myös:

    NUMTOYMINTERVAL ja NUMTODSINTERVAL tietoa numeeristen aikojen muuntamisesta intervalleiksi

    Jos määritelty ROWS:

      value_expron fyysinen offset. Sen on oltava vakio tai lauseke ja sen on arvioitava positiiviseen numeeriseen arvoon.

      Josvalue_expron osa alkupistettä, sen on arvioitava riville ennen päätepistettä.

    Jos määritelty RANGE:

    • value_expr on looginen Siirtymä. Sen on oltava vakio tai lauseke, joka arvioi positiiviseksi numeeriseksi arvoksi tai intervalli-kirjaimeksi. Katso ”Literals” tietoja intervalli literals.

    • order_by_clause.

    • Josvalue_exprarvioi numeeriseksi arvoksi, niinORDERBYexpron oltava numeerinen taiDATEtietotyyppi.

    • If value_expr evaluates to an interval value, then the ORDERBYexpr must be a DATE data type.

    If you omit the windowing_clause entirely, then the default is RANGEBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW.

    Analytic functions are commonly used in data warehousing environments. Seuraavassa luettelossa analyyttisistä funktioista Asteriskilla (*) merkityt funktiot mahdollistavat koko syntaksin, mukaan lukien windowing_clause.

    AVG *
    CORR *
    COUNT *
    COVAR_POP *
    COVAR_SAMP *
    CUME_DIST
    DENSE_RANK
    FIRST
    FIRST_VALUE *
    LAG
    LAST
    LAST_VALUE *
    LEAD
    LISTAGG
    MAX *
    mediaani
    MIN *
    NTH_VALUE *
    NTILE
    percent_rank
    PERCENTILE_CONT
    rank
    ratio_to_report
    regr_ (lineaarinen regressio) funktiot *
    ROW_NUMBER
    STDDEV *
    stddev_samp *
    Sum *
    var_pop *
    VAR_SAMP *
    varianssi *

    Katso myös:

    Oracle Database tietovarastointi opas lisätietoa näistä toiminnoista ja niiden käyttöä kuvaavista skenaarioista

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *