51 2004 © Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Access merkkijonovertailut 

Slides:



Advertisements
Samankaltaiset esitykset
@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE.
Advertisements

Esiopetuksen huoltajat 2014 Generated on :41.
AUTOMATIC DELIVERY REWARDS (ADR) (New Programme – 01 September) LifePak ® (Example) PSV 5% Discount= €51.71 (68.97 PSV) Shipping= €4.5.
ENA 11 Essay Feedback. Spelling change chance choice countries ideologies whatever cannot thought through taught though/ although choice let’s chasing.
Lineaarisia malleja.
Liikevaihdon kehitys Pirkanmaalla 2009

Ohjelman perusrakenteet
Muutamia käsitteitätMyn1 Muutamia käsitteitä •Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan,
Tietokanta.
Kökkötraktori-verkkokauppa
Location-aware applications: keyword clustering
Aggregaattifunktiot (1)
Perusopetuksen huoltajat 2014 Generated on :04.
Pasi Helasuo Työn valvoja Professori Jukka Manner
Access kyselyt luetteloinnin apuna Luetteloinnin päivä Maria Kovero
1 Sektorin nimi. 2 Reading times of magazines NRS Finland 2011.
Kuvien lähde:. Kuinka pitkä on pitkä? Subprime kriisi alkoi Yhdysvalloista elokuussa Se muuttui finanssikriisiksi lokakuussa Kreikkakriisi.
Opetus ja kansainvälisyys toimivaksi kokonaisuudeksi
Haaga-Helia Ammattikorkeakoulu
Relaatioalgebra (1) Kokoelma relaatioiden käsittelyyn tarkoitettuja operaatioita Operaatiot muuntavat relaatioita uusiksi relaatioiksi Muodostaa perustan.

Erilaiset liitokset FROM-osassa voidaan määritellä relaatio myös erilaisia liitosoperaatioita käyttäen Vasen, oikea ja täysi puoliliitos eli ulkoliitos.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Monikon lisääminen (1) Luetellaan kaikki lisättävän rivin arvot INSERT INTO Asiakas VALUES (4, ’Assi’, ’Asiakas’); Luetellaan vain osa arvoista; muut arvot.
Oulu ALO-luokka 12kyl, 4pys Tuomari: Tytti Lintenhofer Kyl:
4.1-SQL-toimintoja Teuhola Relaatioskeemaa täydentäviä piirteitä: Näkymät (views) Näkymä on johdettu relaatio, jota ei fyysisesti ole välttämättä.
© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Kantataulujen päivitys: Lisäys.
SQL Standardoitu kieli, jonka avulla voidaan
Muuttujat ja vakiottMyn1 Muuttujat ja vakiot PHP-kielen syntaksi on lainattu suurimmaksi osaksi C- kielestä. PHP on erityisesti HTML-dokumenttien sisään.


8. SQL-99 -kyselykieli: kaavan määrittely, perusrajoitukset ja kyselyt
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Tietokannat –kurssi SQL peruskyselyt
Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola.
omena banaani appelsiini tomaatti kurkku paprika
DTD Teppo Räisänen Liiketalouden yksikkö.
6. Relaatioalgebra ja relaatiokalkyyli
Suomen Lääkäriliitto | Finnish Medical AssociationLääkärit Suomessa | Physicians in Finland Tilastotietoja lääkäreistä ja terveydenhuollosta 2014 Statistics.
Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka.
DO NOT PRINT THIS DOCUMENT SQL -valintaehto CREATE TABLE opettaja ( opetunnus varchar(12) NOT NULL, nimi varchar(40) NOT NULL, puhelin varchar(12), tyohuone.
DO NOT PRINT THIS DOCUMENT SQL -valintaehto CREATE TABLE opettaja ( opetunnus varchar(12) NOT NULL, nimi varchar(40) NOT NULL, puhelin varchar(12), tyohuone.
11. Relaatiotietokannan suunnittelualgoritmit ja lisäriippuvuudet Tällä kurssilla käsitellään kirjan luvusta 11 ainoastaan algoritmi 11.1 häviöttömän liitoksen.
Yleistä Kotisivuja päivitetty Demoryhmät Luentomonisteen ensimmäiset osat Luentokalvot jaossa Demot alkavat maanantaina Selvitä oma demoryhmäsi Tutustu.
Tietokannat Tietotekniikan perusteet Pekka Orponen.
Kontrollirakenteet laajemmin
Karteesinen tulo Huomaa attribuuttien nimien tarkentaminen taulujen nimillä.
Luvussa 8.2 käsiteltiin attribuuttien määrittelyjoukkoon, puuttuviin arvoihin sekä olio- ja viite-eheyteen liittyviä rajoituksia. Edellä mainittuun ryhmään.
International pages?. Comments yhteystiedot / contact –information ei resursseja kaiken kääntämiseen – linkit vastuuhenkilöille / no enough resources.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola.
Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola.
Valintarakenne valintarakenne alkaa aina kysymyksellä eli ehdolla ehto tarkoittaa, että muuttujan sisältöä verrataan toisen muuttujan sisältöön tai vakioon.
Hakemistot Nopeuttavat hakuoperaatioita Hidastavat päivitysoperaatioita Pääavaimelle luodaan aina indeksi; päävain toimii usein hakukriteerinä Luodaan.
KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
KNX - DALI harjoitus 2 Ryhmä ECG-ohjaukset TEHTÄVÄNANTO
Reports in Apply / eAge system
SPARQL.
KNX - DALI harjoitus 2 Ryhmä ECG-ohjaukset RATKAISU
vedestä, ilmasta ja tulesta.
Muutamia käsitteitä Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan, perusluokan (superclass,
DIC and BMA in BUGS Biotieteellinen tiedekunta / Henkilön nimi / Esityksen nimi
Probability models and decision analysis
Hankalia (?) tilanteita Tammikuu 2014 Keke Tulomäki
vedestä, ilmasta ja tulesta.
vedestä, ilmasta ja tulesta.
Ohjelman perusrakenteet
vedestä, ilmasta ja tulesta.
Esityksen transkriptio:

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Access merkkijonovertailut  Character(s) in pattern matches in expression u ? or _  Any single character u * or %  Zero or more characters u #  Any single digit (0 — 9) u [charlist]  Any single character in charlist u [!charlist]  Any single character not in charlist  Vrt. SQL: _ ja %  Hae työntekijät, joiden etunimen toinen kirjain on a ja kolmas kirjain EI ole [a-g] SELECT Fname, Lname FROM EMPLOYEE WHERE Fname LIKE “?a[!a-g]*”

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto SQL-yritelmä (1/4)  Hae ”Exotic Liquids” –toimittajan tuotenimikkeet (Northwind- kannasta): SELECTCompanyName, ProductName FROMSuppliers, Products WHERECompanyName="Exotic Liquids"  Tulos: 77 riviä. Menikö oikein?  Vaikea tietää mikä on oikea vastaus, ellei: u Tarkisteta tulosta suoraan tauluista  Suurissa tietokannoissa erittäin vaivalloista u Tehdä varmistuskyselyjä u Suunnitella kyselyä huolellisesti

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto SQL-yritelmä (2/4)  Tarkistetaan tulos: 1. Katsotaan tuotetaulua suoraan. Se sisältää 77 tuotetta. Voisiko olla niin, että EL toimittaa näitä kaikkia tuotteita? Voisi, mutta tuskinpa, kun toimittajia on kaikkiaan lähes Tehdään kysely, jossa haetaan muiden toimittajien tuotteet: SELECTCompanyName, ProductName FROMSuppliers, Products WHERECompanyName<>"Exotic Liquids"

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto SQL-yritelmä (3/4)  Tulos n.2100 riviä eli selkeästi jokin mättää itse kyselyssä, tuotteitahan oli vain 77  Totuus: Oikeasti EL toimittaa vain kolmea tuotetta  Mikä meni pieleen?  Taulut liitetään toisiinsa ristitulolla, sillä liitosattribuutteja ei ole spesifioitu. Täten tulokseen saadaan kaikki mahdolliset ”Suppliers” ja ”Products” – taulujen tuplakombinaatiot. Tarkoituksenahan oli saada ainoastaan ne kombinaatiot, joissa ”Exotic Liquids” todella tuottaa ko. tuotetta.

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto SQL-yritelmä (4/4)  Oikea ratkaisu: SELECTCompanyName, ProductName FROMSuppliers, Products WHERESuppliers.SupplierID=Products.SupplierID AND CompanyName="Exotic Liquids"

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Kyselyt osa 2: Sisäkkäiset eli alikyselyt  Alikysely on SELECT-lauseke, joka sijaitsee joko ulomman kyselyn FROM- tai WHERE-osassa  Alikyselyn tulos on tilapäinen relaatio  Alikyselyitä tarvitaan mm. joukkojen vertailussa  Vertailuehdoissa on käytössä erikoisoperaattoreita

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Vertailu alikyselyn tulokseen  Attribuuttiarvon sisältyminen alikyselyn tulokseen: WHERE IN (SELECT... )  Vertailun soveltaminen joukkoon: WHERE SOME (SELECT... ) u Tulos on tosi, jos jokin alikyselyn tulosrivi toteuttaa ehdon WHERE ALL (SELECT...) u Tulos on tosi, jos ehto pätee kaikille tulosriveille

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (1/2)  Etsi niiden projektien numerot, joissa on Smith joko työntekijänä tai vastaavan osaston johtajana SELECTDISTINCT PNUMBER FROMPROJECT WHEREPNUMBER IN (SELECT PNUMBER FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND LNAME='Smith') OR PNUMBER IN (SELECT PNO FROM WORKS_ON, EMPLOYEE WHERE ESSN=SSN AND LNAME='Smith')

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (2/2)  Etsi niiden työntekijöiden nimet, jotka ansaitsevat enemmän kuin kukaan osaston 5 työntekijä SELECTLNAME, FNAME FROMEMPLOYEE WHERESALARY > ALL (SELECT SALARY FROM EMPLOYEE WHERE DNO = 5)  Huom. Sisäkkäinen kysely voi vaatia lisäyksen: AND SALARY IS NOT NULL omaan WHERE-osioonsa

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Riippuvat alikyselyt (1/2)  Alikyselyssä voi viitata ylikyselyn relaatioihin  ”Hae ne työntekijät, joiden omaisella on sama etunimi kuin työntekijällä itsellään ja lisäksi sukupuoli on sama”  (a) Yksitasoinen ratkaisu: SELECTE.FNAME, E.LNAME FROMEMPLOYEE E, DEPENDENT D WHEREE.SSN=D.ESSN AND E.SEX=D.SEX AND E.FNAME=D.DEPENDENT_NAME

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Riippuvat alikyselyt (2/2)  (b) Alikyselyä käyttävä ratkaisu: SELECTE.FNAME, E.LNAME FROMEMPLOYEE E WHEREE.SSN IN (SELECT ESSN FROM DEPENDENT WHERE ESSN=E.SSN AND E.FNAME=DEPENDENT_NAME AND SEX=E.SEX)  Evaluoidaan ulkokyselyn ”testihenkilö” sisäkyselyssä eli onko hän tilanteessa, jossa omainen löytyy ja nimi ja sukupuoli täsmäävät. Jos on, ”testihenkilö” valitaan tulosjoukkoon. Sen jälkeen testataan seuraava, jne.

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Useampitasoinen kysely  Etsi työntekijät, jotka ovat mukana jossain osaston 5 hallinnoimassa projektissa SELECT * FROM EMPLOYEE WHERE SSN IN (SELECT ESSN FROM WORKS_ON WHERE PNO IN ( SELECT PNUMBER FROM PROJECT WHERE DNO = 5 ) )

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Alikyselyt vs. liitokset  Sama kysely voidaan usein formuloida joko yksitasoiseksi SELECT-lausekkeeksi käyttäen liitosta tai monitasoiseksi alikyselyrakenteeksi  Käyttäjälle alikyselyt ovat usein selkeämpiä  HUOM! Kyselyn optimoinnin kannalta yksitasoinen on usein tehokkaampi, varsinkin jos liitosten järjestystä ei ole kiinnitetty FROM-osassa

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Alikyselyn tuloksen tyhjyystesti  EXISTS (SELECT... ) on tosi, jos alikyselyn tulos ei ole tyhjä  NOT EXISTS (SELECT... ) on tosi, jos alikyselyn tulos on tyhjä  Alikysely on tässä aina kytketty ylikyselyyn  Huom! Attribuuttiarvon tyhjyystesti: IS NULL IS NOT NULL

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Tyhjät arvot (1/2)  Katso kpl kolmiarvologiikka; attribuutin arvoa: u Ei tiedetä u Ei haluta tallentaa (vielä) u Ei ole sopiva ko. instanssille (huonoa suunnittelua vai toteutuksen tietoinen päätös)  Access: NULL-arvon käyttäytymisestä aritmeettisissa funktioissa u COUNT, AVG, SUM, MIN, MAX  NULL-arvoa ei käsitellä u Potentiaalinen ongelma tulee esille, jos esim. laskee työntekijöiden projektituntien keskiarvoa u Selvitä ennen kyselyä onko laskuperusteena olevassa kentässä NULL-arvoja ja päätä toimenpiteistä  Muutenkin hyvä suunnitteluperiaate

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Tyhjät arvot (2/2)  Handling Null values in calculations u The aggregate functions won't include records containing blank (Null) values in their calculations. For example, the Count function returns a count of all the records without Null values. If you want to find the total number of records including those with Null values, use Count with the asterisk (*) wildcard character. Example: Count(*) u To count Null values when using the other aggregate functions, use the Nz function, which converts Null values to zeroes so they are included in a calculation. Example: Sum(Nz([Subtotal], 0) u When you use an arithmetic operator (+, -, *, /) in an expression and the value of one of the fields in the expression is Null, the result of the entire expression will be Null. If some records in one of the fields you used in the expression might have a Null value, you can convert the Null value to zero using the Nz function as shown in the following example: Nz([UnitsInStock], 0) + Nz([UnitsOnOrder], 0)

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (1/3)  Hae ne työntekijät, joiden omaisella on sama etunimi ja sukupuoli kuin työntekijällä itsellään SELECTE.FNAME, E.LNAME FROMEMPLOYEE E WHEREEXISTS (SELECT * FROM DEPENDENT WHERE E.SSN=ESSN AND SEX=E.SEX AND E.FNAME=DEPENDENT_NAME)

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (2/3)  Etsi niiden työntekijöiden nimet, joilla ei ole omaisia SELECTFNAME, LNAME FROMEMPLOYEE WHERENOT EXISTS(SELECT* FROMDEPENDENT WHERESSN=ESSN)

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (3/3)  Etsi niiden työntekijöiden nimet, jotka ovat jonkin osaston johtajia ja joilla on vähintään yksi omainen SELECT FNAME, LNAME FROM EMPLOYEE WHERE EXISTS( SELECT * FROM DEPARTMENT WHERE SSN = MGRSSN) AND EXISTS( SELECT * FROM DEPENDENT WHERE SSN = ESSN )

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Jakolaskusta  Esim. ”Ketkä kaikki työskentelevät ainakin kaikissa osasto 5:n projekteissa?”  Jakolasku S1:S2 kolmella eri tavalla (s.233 ja 235) u Q3  S1 CONTAINS S2 u Q3A  S2 – S1 = NULL (eli NOT EXISTS = TRUE) u Q3B  Ei saa olla tilannetta, että on olemassa S2:n instanssi, jolle ei löydy vastaavaa edustajaa joukosta S1  Jos on ko. tilanne (eli on projekti jolle S1:stä ei löydy ”vastinparia”), sisäkysely antaa arvon tosi ja ulompi epätosi  Esim. E n sisältyy tulokseen vain jos ei ole yhtään osasto 5:n projektia, jossa tarkastelun kohteena oleva työntekijä E n ei työskentelisi Eli WORKS_ON –rivi täytyy löytyä jokaisella osasto 5:n projektinumerolle

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Kyselyt osa 3  Taulut voidaan liittää FROM-osassa WHERE-osan ehtolauseiden sijaan  Vaihtoehdot: [INNER] JOIN, NATURAL JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN ja FULL OUTER JOIN  Syntaksi: JOIN [ ON ]  NATURAL JOIN tehdään attribuuttinimien perusteella  Access: NATURAL JOIN puuttuu  WHERE-osaan jäävät muut (attribuuttikohtaiset) ehdot

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (1/5)  Etsi tutkimusosaston työntekijöiden nimet ja osoitteet 1)SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE JOIN DEPARTMENT ON DNO=DNUMBER) WHERE DNAME='Research' 1)SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE NATURAL JOIN (DEPARTMENT AS DEPT (DNAME, DNO, MSSN, MSDATE))) WHERE DNAME='Research'

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (2/5)  Etsi Staffordissa toimivien projektien numerot, vastaavat osastonumerot, ja ko. osastojen johtajien sukunimi, osoite ja syntymäaika SELECTPNUMBER, DNUM, LNAME, ADDRESS, BDATE FROM((PROJECT JOIN DEPARTMENT ON DNUM=DNUMBER) JOIN EMPLOYEE ON MGRSSN=SSN) WHEREPLOCATION='Stafford’

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (3/5)  Etsi kunkin työntekijän ja hänen esimiehensä sukunimet. Mukaan tulee ottaa myös ne työntekijät, joilla ei ole lainkaan esimiestä SELECTE.LNAME, S.LNAME FROM(EMPLOYEE E LEFT OUTER JOIN EMPLOYEE S ON E.SUPERSSN=S.SSN)

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (4/5)  Etsi kaikki työntekijät, heidän osoitteensa, ja mahdollisen puolisonsa nimi SELECT Fname, Lname, Dependent_Name, Address FROM Employee LEFT OUTER JOIN Dependent ON Employee.SSN=Dependent.ESSN WHERE (Relationship="spouse")  Väärin: Tulokseen tulee vain puolison omaavat työntekijät (WHERE-ehto), vaikka LEFT JOIN ottaakin kaikki työntekijät aluksi mukaan

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (5/5)  Oikea ratkaisu: (SELECT Fname, Lname, DependentName, Address FROM Employee, Dependent WHERE SSN=ESSN AND Relationship="spouse") UNION (SELECT Fname, Lname, NULL, Address FROM Employee WHERE NOT EXISTS (SELECT * FROM Dependent WHERE SSN=ESSN AND Relationship="spouse"))

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Koostefunktiot  Sovelletaan kyselyn tulossarakkeisiin  Voidaan soveltaa joko koko arvojoukkoon tai ryhmittelyä käyttäen osajoukkoihin  Funktiot: COUNT, SUM, AVG, MIN, MAX  COUNT voi kohdistua myös monikoihin (merk.  )  Argumentista voidaan poistaa duplikaatit ennen funktion soveltamista (DISTINCT)

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkejä (1/3)  Etsi työntekijöiden lukumäärä: SELECTCOUNT(  ) FROMEMPLOYEE  Etsi erilaisten palkkojen lukumäärä: SELECTCOUNT(DISTINCT SALARY) FROMEMPLOYEE

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkejä (2/3)  Etsi työntekijät, joilla on vähintään kaksi omaista u Omaisten määrä lasketaan alikyselyssä: SELECT FNAME, LNAME FROM EMPLOYEE WHERE (SELECT COUNT (*) FROM DEPENDENT WHERE SSN = ESSN) >= 2

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkejä (3/3)  Etsi tutkimusosaston työntekijöiden palkkojen minimi, maksimi, summa ja keskiarvo SELECTMIN(SALARY), MAX(SALARY), SUM(SALARY), AVG(SALARY) FROMEMPLOYEE, DEPARTMENT WHEREDNO = DNUMBER AND DNAME = ’Research’

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Ryhmittely (kuva 8.6)  Vastaava toiminto kuin relaatioalgebrassa  Määre: GROUP BY  Tulokseen ryhmittelykentät ja koostefunktioarvoja  Ryhmiin voidaan soveltaa valintaehtoa, joka yleensä liittyy ryhmän johonkin koostefunktioon  Valintamääre: HAVING u Valitsee kokonaisia ryhmiä

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (1/4)  Etsi työntekijöiden määrät ja keskipalkat osastoittain SELECTDNO, COUNT (*), AVG (SALARY) FROMEMPLOYEE GROUP BYDNO  Etsi projektien numerot, nimet ja työntekijämäärät u Ryhmitellään liitoksen tulosrivit: SELECTPNUMBER, PNAME, COUNT (*) FROMPROJECT, WORKS_ON WHEREPNUMBER = PNO GROUP BYPNUMBER, PNAME

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (2/4)  Etsi projektien numerot, nimet ja työntekijämäärät u Mukaan otetaan vain sellaiset projektit, joissa on enemmän kuin kaksi työntekijää SELECTPNUMBER, PNAME, COUNT (*) FROMPROJECT, WORKS_ON WHEREPNUMBER = PNO GROUP BYPNUMBER, PNAME HAVINGCOUNT (*) > 2

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (3/4)  Huomaa HAVING-määreen oikea kohdistaminen  Laske yli ansaitsevien työntekijöiden määrät osastoittain  Mukaan otetaan kuitenkin vain osastot, joilla on yli 5 työntekijää VÄÄRIN: MIETI MIKSI TULOS TÄSSÄ ON VÄÄRÄ! SELECTDNUMBER, DNAME, COUNT (*) FROMDEPARTMENT, EMPLOYEE WHEREDNUMBER = DNO AND SALARY > GROUP BYDNUMBER, DNAME HAVINGCOUNT (*) > 5

© Antti Tuomisto, 2001 © Jukka Teuhola muokattu 2005 (Tommi Tapanainen) Tietojenkäsittelytieteet, Turun yliopisto Esimerkkikyselyjä (4/4)  OIKEIN: SELECTDNUMBER, DNAME, COUNT (*) FROMDEPARTMENT, EMPLOYEE WHEREDNUMBER=DNO AND SALARY > AND DNO IN (SELECTDNO FROMEMPLOYEE GROUP BYDNO HAVINGCOUNT (*) > 5) GROUP BYDNUMBER, DNAME