Tietovarastot ja SQL Virpi Myllylahti

Samankaltaiset tiedostot
TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Kyselyn yleisrakenne:

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

SELECT-lauseen perusmuoto

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL - STRUCTURED QUERY LANGUAGE

HELIA 1 (14) Outi Virkki Tiedonhallinta

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

SQL:N PERUSTEET MARKKU SUNI

HELIA 1 (14) Outi Virkki Tiedonhallinta

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

TIETOVARASTOJEN SUUNNITTELU

Tietovarastojen suunnittelu

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Relaation tyhjyyden testaaminen

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

OLAP-tekniikoiden käyttömahdollisuudet teollisuusprosessien analysoinnissa

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Action Request System

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

ASTERI-OHJELMIEN SQL-ERIKOISKURSSI LUENTOKALVOT

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

A TIETOKANNAT, 3 op Syksy TI07. Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

MySQL ja PostgreSQL Seminaarityö

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

TIETOKANNAT JOHDANTO

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

Kuva 7.2 vastaustaulu harjoitukseen 7.2

HELIA 1 (11) Outi Virkki Tiedonhallinta

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

Näkymät ja tiedon suojaus

TAMPEREEN TEKNILLINEN YLIOPISTO KÄYTTÖOHJE TIETOVARASTON KUUTIOT

Tietokantakurssit / TKTL

A TIETOKANNAT, 4 op Kevät TI09

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

I. Ristiintaulukointi Excelillä / Microsoft Office 2010

CSE-A1200 Tietokannat

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

HELIA SQL-harjoituksia 1(1) atk72d Versiopvm:

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

CSE-A1200 Tietokannat

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

SISÄLTÖ. Vuokko Vanhala-Nurmi, 2013 Excel jatko

Relaatiotemporaalinen tietomalli mittaustiedon hallintaa varten

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Liitokset - haut useaan tauluun

KOOSTEFUNKTIOT. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

SPARQL(SPARQL Protocol and RDF Query Language)

3. Taulujen määrittely ja muuttaminen

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

T Testiraportti TR-3. ETL-työkalu

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

Oliotietokannat. Nääsvillen Oliopäivät Pekka Kähkipuro Kehitysjohtaja, FT

MICROSOFT EXCEL 2010

Tietokannan webbikytkentä. Janne Petäjä

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

Makrojen mystinen maailma lyhyt oppimäärä

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Tietokannat II -kurssin harjoitustyö

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Excel pivot. Sisällys

CSE-A1200 Tietokannat

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI

SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokantaohjelmointi Harri Laine 1. SQL:n käyttö ohjelmissa

Maiju Mykkänen Susanna Sällinen

TIETOKANNANHOITAJA DBA (DATABASE ADMINISTRATOR) JA TIETOKANNAN HALLINTA

Transkriptio:

Tietovarastot ja SQL Virpi Myllylahti Helsingissä 15. maaliskuuta 2003 Relaatiokannat nyt seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Sisällysluettelo 1 JOHDANTO... 2 2 SQL JA TIETOVARASTOT... 2 2.1 SQL... 2 2.2 TIETOVARASTOT... 3 2.3 SQL99 JA TIETOVARASTOT... 3 3 GROUP BY -LAAJENNUS SQL3:SSA... 4 3.1 GROUP BY... 4 3.2 GROUP BY GROUPING SETS... 5 3.3 GROUP BY ROLLUP... 6 3.4 GROUP BY CUBE... 8 4 YHTEENVETO... 10 5 LÄHTEET... 11 1

1 Johdanto Tietovarastot on voimakkaasti kasvava sovellusalue. Suuria tietovarastoja käytetään valtavan tietojoukon keräämiseen, tehokkaisiin kyselyihin, tietojen analysointiin ja raportointiin. Tietovarastot toimivat päätöksenteko- ja johtamisprosessin tukena. Tässä työssä käsittelen vuoden 1999 SQL3-standardin laajennuksia, jotka mahdollistavat tietovarastotoimintojen toteuttamisen SQL:llä. Luvussa 2 esittelen ensin lyhyesti aiheeni kannalta keskeiset käsitteet ja problematiikan. Kappaleessa 3 esittelen SQL3-standardin tarjoamat laajennukset GROUP BY-ryhmittelymääreeseen. GROUPING SETS -määrettä käytetään tulosjoukon ryhmittelyyn usean ryhmittelytekijän suhteen. ROLLUP-määreellä (suom. karkeistus) poraudutaan kyselyn tulosjoukkoon ja muodostetaan välisummauksia tulosjoukon riveistä. CUBE määreellä saadaan aikaan moniuloitteisia tulosjoukkoja. 2 SQL ja tietovarastot 2.1 SQL SQL (Structured Query Language) on IBM:n tutkimuskeskuksen kehittämä relaatiotietokantojen käsittelyyn kehitetty kyselykieli, jonka ensimmäinen standardi (SQL-86 tai SQL1) on vuodelta 1986. Standardia on kehitetty ja laajennettu ensin vuonna 1992 (SQL-92 tai SQL2) ja viimeksi vuonna 1999 (SQL-99 tai SQL3) [ElmNa]. SQL3- standardiin lisättiin vuonna 1999 mm. oliopiirteitä, joita on tarkemmin käsitelty Relaatiokannat nyt seminaarin muissa seminaaritöissä. Tässä työssä käytän vuoden 1999 SQL-standardista nimeä SQL3. SQL on tietokantakieli, jolla luodaan ja muokataan objekteja (esimerkiksi taulut, indeksit ja funktiot) sekä kysellään ja päivitetään (insert, delete, update) kannassa olevaa tietoa. SQL-kieli sisältää myös tietokannan näkymien, tietokannan käyttöoikeuksien ja viiteeheyksien määrittelyn ja transaktion hallinnan [ElmNa]. SQL:ssä ei ole tietovarastoissa tarvittavia raportointiominaisuuksia. 2

2.2 Tietovarastot Tietovarasto (a data warehouse) on yksi, täydellinen ja yhdenmukainen tiedon varastointipaikka. Tietovarastoon ladataan tietoa erilaisista lähteistä ja erilaisilta alustoilta. Talletettava tieto voi olla hyvin monenmuotoista. Tietovaraston tarkoituksena on, että peruskäyttäjät ymmärtävät tietovarastoon kerätyn tiedon helposti ja voivat käyttää tietoja perusliiketoiminnassa hyödyksi monella eri tavalla [Devlin]. Tietovarastona olevaa tietoa ei yleensä päivitetä, vaan sinne talletetaan jatkuvasti uutta tietoa. Talletettua tietoa säilytetään tietty aika, jonka jälkeen tiedot siirretään esimerkiksi nauhalle tai toiseen järjestelmään tai tiedot tuhotaan. Koska tietoja säilytetään usein tietovarastoissa pitkiäkin aikoja, tietovaraston koko kasvaa helposti hyvin suureksi [ElmNa]. Tietovarastoa käytetään talletetun tiedon analysointiin, raportointiin ja muokkaamiseen. Tietoa jalostetaan tekemällä tiedosta erilaisia summauksia ja poimintoja. Analyyseja ja raportteja käytetään erityisesti pätöksenteko- ja johtamisprosessin tukeminen. Tietovarastomarkkinat ovat kasvaneet voimakkaasti 1990-luvun loppupuolelta lähtien. Talletettujen tietojen määrä on kasvanut valtavasti sekä analysointivälineet että tekniikat ovat kehittyneet. Kaupalliset sovellukset ovat tarjonneet erilaisia välineitä yritysten tietovarastointitarpeisiin ja sekä SQL-standardia että relaatiotietokantoja on kehitetty vastaavasti [ElmNa]. 2.3 SQL99 ja tietovarastot SQL on kehitetty erityisesti kyselytarpeita varten, eikä kieli sisällä tietovarastojen analysointi- ja raportointitarpeita vastaavia toimintoja. SQL ei sovellu esimerkiksi tietojen muokkaukseen tai yhdistelyyn eikä suurien tietomäärien tehokkaaseen kyselyyn [Devlin]. SQL:llä ei ole mahdollista käsitellä kannassa olevaa tietoa moniulotteisesti eikä kyseltyyn tietoon voida porautua. Monet tietovarastotoiminnoissa käytetyt monimutkaiset kyselyt on vaikeita toteuttaa tehokkaasti SQL:llä. 3

SQL3-versiossa SQL:ää kehitettiin tietojen analysointiin ja summauksiin paremmin soveltuvaksi. SQL:n tietojen ryhmittelyyn käytettyä GROUP BY-lauseketta laajennettiin GROUPING SETS-, ROLLUP- ja CUBE-määreillä. Uusilla määreillä voidaan toteuttaa porautuvia raportteja, histogrammeja, välisummien (sub totals) ja loppusummien (grand total) laskemista sekä ristiinviittauksia (gross tabulation) [GRAY, 34]. Käsittelen GROUP BY - toimintoa laajennuksineen seuraavassa luvussa. 3 GROUP BY -laajennus SQL3:ssa 3.1 GROUP BY SQL-standardissa on viisi summausfunktiota (an aggregate function), joita käytetään kyselyssä tulosjoukon rivien muodostamiseen: COUNT(): palauttaa lukumäärän SUM(): palauttaa summa-arvon MIN(): palauttaa pienimmän arvon MAX():palauttaa suurimman arvon AVG(): palauttaa keskiarvon Kannasta kyseltyä tietoa halutaan usein ryhmitellä eri tavoilla. Summausfunktioiden lisäksi kyselyssä käytetään tällöin ryhmittelyattribuutteja, joilla tulosjoukon rivejä jaetaan ali-ryhmiin. Ryhmittelyattribuuteilla voidaan esimerkiksi kysellä yrityksen työntekijöiden keskipalkkaa osastoittain tai tietyn tavaran myynnin kehitystä kuukausittain. [ElmNa] GROUP BY on SQL-standardissa käytetty ryhmittelymääre, jolla kyselyssä ryhmitellään tulosjoukkoa taulun sarakkeiden suhteen. GROUP BY-määreen ryhmittelyattribuuttien on esiinnyttävä myös lauseen SELECT-osassa [ElmNa]. GROUP BY määreen sisältämän SQL-kyselyn syntaksi on seuraava: SELECT Column1, Column2, SUM (Column1, Column2) FROM Table GROUP BY Column1, Column2; 4

Käytän tässä työssä esimerkkinä Asukkaat-taulua, jossa on sarakkeet: Sotu, Sukupuoli, Nimi, Postinumero, Kaupunki ja Lääni. Kyselyn, jossa ryhmittelytekijänä on lääni- ja kaupunki sarakkeet, saadaan seuraava tulos: SELECT lääni, kaupunki, COUNT (*) FROM Asukkaat GROUP BY lääni, kaupunki; LÄÄNI KAUPUNKI COUNT(*) Pirkanmaa Tampere 2 TuPo Märynummi 1 TuPo Turku 1 Uusimaa Helsinki 4 Uusimaa Kauniainen 1 Kyselyn tuloksena saadaan joukko, jossa uniikit tietorivit on ryhmitelty ensin ensimmäisen ryhmittelytekijän (lääni) ja sitten toisen ryhmittelytekijän (kaupunki) mukaan. 3.2 GROUP BY GROUPING SETS SQL3:ssa GROUP BY-määrettä laajennettiin GROUPING SETS lisämääreellä, jolla tulosjoukkoa voidaan ryhmitellä usealla ryhmittelymääreellä yhdessä SQL-lauseessa. GROUP BY GROUPING SETS lauseen syntaksi on seuraava: SELECT Column1, Column2, SUM (Column3) FROM Table GROUP BY GROUPING SETS (Column1, Column2) Käyttämästäni Asukkaat-taulusta saadaan GROUPING SETS - lisämääreellä tehdyn kyselyn tuloksena on tulosjoukko, joka on ryhmitelty useiden eri joukkojen mukaan. Ensin tulosjoukon tiedot ryhmitellään (lääni, kaupunki)-tekijän, sitten läänin ja viimeiseksi kaupungin mukaan. 5

SELECT lääni, kaupunki, COUNT (*) FROM Asukkaat GROUP BY GROUPING SETS ((lääni, kaupunki), lääni, kaupunki); LÄÄNI KAUPUNKI COUNT(*) Pirkanmaa Tampere 2 TuPo Märynummi 1 TuPo Turku 1 Uusimaa Helsinki 4 Uusimaa Kauniainen 1 Pirkanmaa 2 TuPo 2 Uusimaa 5 Helsinki 4 Kauniainen 1 Märynummi 1 Tampere 2 Turku 1 Ryhmittelytekijä (lääni, kaupunki) tuo tässä tapauksessa GROUP BY lääni, kaupunki lausetta vastaavan tuloksen ryhmiteltynä tulosjoukon alkuun. Seuraavaksi tulosjoukko ryhmitellään lääni-tekijän ja viimeiseksi kaupunki-ryhmittelytekijän mukaan. Lääniryhmittelytekijä summaa (COUNT) yhteen kaikki rivit, joissa lääni-sarakkeessa on sama arvo ja kuapunki-ryhmittelytekijä puolestaan rivit, joissa kaupunkirivissä on samat arvot. 3.3 GROUP BY ROLLUP ROLLUP on GROUP BY-määreen laajennus, jolla tulosjoukon rivejä ryhmitellään monelle eri tasolle. Kyselyn tulosjoukko sisältää tavallisten rivien lisäksi myös välisummausrivit (SUB-TOTALS), joille lasketaan kumuloidut summat. ROLLUP:lla siirrytään tulosjoukossa hierarkiatasolla ylöspäin esimerkiksi siirtymällä aikadimensiossa viikosta kuukauteen tai vuoteen tai sijaintidimensiossa postinumerosta kaupunkiin tai 6

lääniin. ROLLUP:lla ryhmitellään tulosjoukkoa yhä suurempiin ryhmiin karkeammalle tasolle. ROLL UP:n vastakohtana on DRILL DOWN-määre [ElmNa]. ROLLUP määreen sisältämän kyselyn syntaksi on seuraava: SELECT Column1, Column2, SUM (Column3) FROM Table GROUP BY ROLLUP (Column1, Column2); ROLL UP -määre on oikeastaan kokoelma GROUPING SET - määreitä. Edellinen ROLLUP voidaan toteuttaa GROUPING SETS-määreillä seuraavasti: SELECT Column1, Column2, SUM (Column3) FROM Table GROUP BY GROUPING SETS ( (Column1, Column2) (Column1); ( ) ); ROLL UP määreen sisältämällä SQL-lauseella kysellään esimerkkinä olevasta Asukkaat-taulusta asukkaiden määrää ryhmiteltynä kaupungin ja läänin mukaan seuraavasti: SELECT lääni, kaupunki, COUNT (*) FROM Asukkaat GROUP BY ROLLUP (lääni, kaupunki); Kyselyn tuloksena on tulosjoukko, jossa rivit on ryhmitelty ensisijaisesti läänin ja toissijaisesti kaupungin mukaan. Tulosjoukossa on mukana myös välisummat (SUB TOTALS), jossa toinen ryhmittelytekijä on NULL sekä tulosjoukon kokonaismäärä, jossa molempien ryhmittelytekijöiden arvona on NULL. NULL tarkoittaa tässä sitä, että tieto on kyseisellä rivillä epäoleellinen. 7

LÄÄNI KAUPUNKI COUNT(*) Uusimaa Helsinki 4 Uusimaa Kauniainen 1 Uusimaa 5 TuPo Turku 1 TuPo Märynummi 1 TuPo 2 Pirkanmaa Tampere 2 Pirkanmaa 2 9 Tulosjoukko on muodostaa 4 ryhmää läänisarakkeen mukaan (Uusimaa, TuPo, Pirkanmaa, NULL= kaikki läänit). Kukin lääniryhmä ryhmitellään vielä kaupunkisarakkeen mukaan. Viimeisenä rivi, jossa sekä lääni, että kaupunkisarakkeiden arvo on NULL. 3.4 GROUP BY CUBE CUBE on SQL3-standardin summausoperaatio, jolla laajennettiin SQL:n GROUP BYmäärettä. CUBE:n esitteli ensimmäisenä John Gray vuonna 1997. CUBE-operaatio tuottaa tulosjoukon, joka sisältää sekä ROLLUP:n että ristiviittaustaulut. CUBE:lla saadaan taulusta esille sekä monitasoisia ryhmittelyjä että välisummausrivejä [GBLP]. CUBE:lla ryhmitellään tulosjoukon rivit kaikkien mahdollisten ryhmittelyjoukkojen mukaan: CUBE onkin eräänlainen laajennus ROLL UP-määreestä. CUBE-määreen sisältämän SQL-lauseen syntaksi on seuraava: SELECT Column1, Column2, SUM (Column3) FROM Table GROUP BY CUBE (Column1, Column2); Edellinen CUBE-lause voidaan toteuttaa GROUPING SETS-määreillä seuraavasti: 8

SELECT Column1, Column2, SUM (Column3) FROM Table GROUP BY GROUPING SETS ( (Column1, Column2) (Column1) (Column2) ()); Esimerkkinä käytetystä Asukkaat-taulusta saadaan seuraavalla CUBE-määreen sisältämällä SQL-lauseella tulosjoukko, jossa taulusta on haettu kaikki mahdolliset CUBE-määreessä olevien dimensioiden kombinaatiot: SELECT lääni, kaupunki, COUNT (*) FROM Asukkaat GROUP BY CUBE (lääni, kaupunki); LÄÄNI KAUPUNKI COUNT(*) 9 Turku 1 Tampere 2 Helsinki 4 Märynummi 1 Kauniainen 1 Pirkanmaa 2 Pirkanmaa Tampere 2 Tupo 2 TuPo Turku 1 TuPo Märynummi 1 Uusimaa 5 Uusimaa Helsinki 4 Uusimaa Kauniainen 1 9

Tässä tapauksessa tulosjoukon ensimmäisellä rivillä on dataa tarkasteltu lääni- ja kaupunkidimensioiden suhteen (millä tahansa arvoilla). Seuraavaksi tulosjoukko ryhmitellään läänidimension mukaan ja viimeiseksi kaupunkidimension mukaan. Lääniryhmittely jaetaan vielä kaupunkidimension mukaan aliryhmiin ja kaupunkidimensio läänidimension mukaisiin aliryhmiin. CUBE-määreellä saadaan esille myös ristiinviittaukset, joita tässä esimerkissä ei ole. 4 Yhteenveto Tässä työssä on käsitelty SQL:n GROUP BY-määreen laajennuksia SQL3-standardissa. SQL3-standardin laajennukset mahdollistavat tietovarastotoimintojen toteuttamisen SQL:llä tehtävissä kyselyissä. GROUP BY-määreellä voidaan ryhmitellä kyselyn tulosjoukkoa useiden ryhmittelytekijöiden mukaan, ja määreen laajennuksilla saadaan esille tarkempaa tietoa kannasta. GROUP BY GROUPING SETS määreellä saadaan yhdellä kyselyllä useiden ryhmittelyjen tulokset ja GROUP BY ROLLUP mahdollistaa porautumisen ja välisummausten tekemisen tulosjoukosta. GROUP BY CUBE mahdollistaa moniuloitteisten kyselyjen ja ristiinviittausten toteuttamisen SQL:llä. Kaupalliset sovellukset tarjoavat kasvaviin tietovarastotarpeisiin erilaisia uusia ratkaisuja ja sovelluksia, joita voidaan käyttää mm. yritystoiminnassa päätöksenteon ja johtamisprosessien tukemiseen. Tämä tarkoittanee myös SQL-standardin kehittämistä edelleen kohti monipuolisempaa tietojen analysointi- ja raportointitoimintoja. 10

5 Lähteet [AgChN] Agrawal, S, Chaudhuri, S, Narasayya, V: Automated selection of materialized views and indexes for SQL databases. S. 496-506. ftp://ftp.research.microsoft.com/users/autoadmin/vldb00.pdf (10.3.2003) [ChDa] Chaudhuri, S, Dayal, U: An overview of data warehousing and OLAP technology. SIGMOD Record 26(1) 1997. S. 65-74. ftp://ftp.research.microsoft.com/users/surajitc/sigrecord.pdf (9.3.2003) [Devlin] Devlin, B: Data warehouse from Archtitecture to implementation. Addison-Wesley. 1997 [ElmNa] Elmasri, R, Navathe, S: Fundamentals of database systems. Addison-Wesley.Third edition. 2000 [GBLP] Gray, J, Bosworth, A, Layman, A, Pirahesh, H: Data Cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab and Sub-Totals. ICDE USA 1995. s. 152-159. http://research.microsoft.com/~gray/datacube.doc (9.3.2003) 11