SQL-harjoittelun tehtävät

Ratkaisut löytyvät kurssin harjoitussivulta.

Era 1: SQL:n perusteet 

K01 Listaa asiakastiedot kaikista asiakkaista. Malli
K02 Hae tunnus, nimi ja osoite alueella A03 asuvista luottokelpoisista asiakkaista nimen mukaan järjestettynä. Malli
K03 Laadi alueen ja nimen mukaan järjestetty luettelo asiakkaista, joilla ei ole puhelinnumeroa. Malli
K04 Laadi luettelo tilauksista, joiden kokonaishinta on alle 12 euroa. Ota luetteloon tilauspäivä (ilman kellonaikaa, suomalaisessa muodossa)sarakkeena DAY, tilausnumero, hinta ja maksutapa. Järjestä saman päivän tilaukset peräkkäin. Malli
K05 Hae lisukkeina tilattujen materiaalien suomenkieliset nimet. Malli
K06 Tilaukseen 3012 kuuluvien varsinaisten (ei lisukkeita)tuotteiden englanninkieliset nimet, mallit ja lukumäärät. Malli
K07 Laadi suomenkielinen luettelo tuotetyyppiin Pizza kuuluvista tuotteista. Anna tuotenimet järjestettyinä sarakkeena TUOTE. Malli
K08 Laadi englanninkielinen selvitys siitä, mitä aineita kuuluu Äyriäispizzaan (Seafood pizza). Anna vastauksesi sarakkeena Ingredient. Malli
K09 Laadi raportti, josta käyvät selville toimitusten kestoajat toisaalta tilausajasta ja toisaalta lähetin toimeksiannosta laskettuna. Anna ajat sarakkeissa DELAY_ORD ja DELAY_ASSN minuutteina. Ota mukaan tarpeelliseksi katsomasi määrä tilaustietoa. Järjestä tulos kokonaistoimitusajan perusteella siten, että kauimmin kestäneet ovat listan alussa. Vinkki: muunto minuuteiksi tehdään kertomalla erotus vuorokauden minuuttien määrällä, round pyöristää tuloksen kokonaisluvuksi. Malli
K10 Laadi luettelo tilauksista, joille ei ole vielä määritelty toimittajaa. Ota mukaan tilausnumero, tilausaika ja tilaajan alue. Järjestä tulos ikäjärjestykseen. Malli
K11 Laadi luettelo tilauksista, joille on määritelty toimittaja, mutta joita ei ole vielä kirjattu toimitetuiksi. Ota mukaan tilausnumero, tilausaika ja tilaajan alue. Järjestä tulos ikäjärjestykseen Malli
K12 Mitä raaka-aineita ei ole käytetty yhdessäkään tuotteessa. Hae tuotteen koodi ja nimi. Voit valita kielen vapaasti. Malli
K13 Selvitä, ketkä lähetit ovat vieneet toimituksia vain omalle päätoiminta-alueelleen. Anna lähettien nimi ja päätoiminta-alue. Malli
K14 Hinnastossa tuotteet luetellaan tuoteryhmittäin. Laadi kysely, joka tuottaa tiedot suomenkielisen hinnaston laatimiseksi. Ota tässä vaiheessa mukaan vain varsinaiset tuotteet. Ota tuotteen nimi tulokseen sarakkeena PRD. Malli
K15 Hinnastossa tuotteet luetellaan tuoteryhmittäin. Laadi kysely, joka tuottaa tiedot suomenkielisen hinnaston laatimiseksi. Ota mukaan tuotteiden lisäksi myös lisukkeet. Ota tuotteen ja lisukkeen nimi tulokseen sarakkeena PRD. Lisukkeen annos (modelID) olkoon ANNOS. Lisukkeiden rymätunnus on A00. Kaikkia materiaaleja ei saa lisukkeina. Malli
K16 Selvitä tilauksen 3019 sisältö kokonaishinnan määräämistä varten. Tuloksessa pitää näkyä tuotteet ja lisukkeet, niiden tilatut määrät ja yksikköhinnat. Lisukkeita ei tarvitse kytkeä tuotteeseen. Tuotteista ja lisukkeista riittää tunniste, mutta nimenkin voi hakea. Malli

Erä 2: Yhteenvetokyselyt 

Y1 Anna asiakkaiden lukumäärä sarakkeessa CUSTOMERS. Malli
Y2 Kuinka monella asiakkaalla on sähköpostiosoite. Anna vastaus sarakkeena EM Malli
Y3 Anna sähköpostiosoitteen ja toisaalta puhelinnumeron omistavien asiakkaiden prosenttiosuudet (kokonaisluvuksi pyöristettynä) sarakkeissa EPROS, PPROS. Vihje: Pyöristys round-funktiolla. Malli
Y4 Mikä on kallein tuote. Anna tuotteen suomenkielinen nimi, tunnus, malli ja hinta. Malli
Y5 Paljonko pizzoja on tilattu yhteensä. Anna tulos sarakkeessa PIZZACOUNT. Malli
Y6 Anna tilausten lyhin, pisin, ja keskimääräonen toimitusaika laskettuna tilausksen tekohetkestä. Anna tulokset sarakkeissa SHORTEST, LONGEST, MID. Vihje: Keston minuutteina saat kertomalla aikaeron vuorokauden minuuttien määrällä ja pyöristämällä sen round-funktiolla. Malli
Y7 Miten monia erilaisia tuotteita on tilattu? Anna vastaus sarakkeessa ITEMS. Vihje: Yhteenvetofunktioiden argumenttina voi käyttää lauseketta Malli
Y8 Listaa kunkin asiakkaan tekemien tilausten määrät siten, että eniten tilannut asiakas on listalla ensimmäisenä. Asiakkaasta pitää esittää ainakin nimi ja riittävästi muuta tietoa asiakkaan yksilöimiseksi. Anna määrä sarakkeessa ORDS. Malli
Y9 Listaa alueet kokonaismyynnin arvon mukaisessa järjestyksessä parhaasta huonoimpaan. Anna myös alueen kokonaismyynti sarakkeessa TOTAL Malli
Y10 Listaa asiakkaat, joiden tilausten yhteisarvo ylittää 20 euroa. Anna myös tilausten yhteisarvo sarakkeessa VALUE. Malli
Y11 Listaa lähettien keikkojen määrät. Ota kaikki lähetit mukaan. Anna määrät sarakkeessa TASKS. Vähiten keikkaillut ensimmäisenä. Malli
Y12 Mikä tuote on ollut eniten ostettu määrällisesti. Anna ostojen kokonaismäärä sarakkeessa VOLUME. Tuotteesta halutaan koodi, malli ja englanninkielinen nimi. Malli
Y13 Anna niiden lähettien tunnus, nimi ja päätoiminta-alue ja keikkojen määrä (sarakkeessa TASKS), joilla on ollut alle 3 keikkaa. Järjestä tulos keikkojen määrän perusteella. Malli
Y14 Selvitä kuinka suuri osuus ostojen rahallisesta kokonaisarvosta on maksettu luotolla. Anna tulos sarakkeessa CPROS. Vihje: from osaan upotetut kyselyt Malli
Y15 Selvitä kuinka suureen osaan kunkin tuotetyyppin tilauksista on liitetty lisukkeita. Anna tuotetyypin suomenkielinen nimi ja lisukkeiden suhteellinen osuus. Anna osuus pyöristettynä kokonaisluvuksi sarakkeessa EPROS. Järjestä tulos alenevan osuuden mukaisesti. Lisukkeettomia tuotteita ei ole tarpeen listata. Vihje: Kannattaa käyttää from-osaan upotettuja alikyselyitä. Huomioi tilatut tuotemäärät, sen sijaan lisukkeiden määrät voi jättää huomioimatta. Malli
Y16 Selvitä mikä on kunkin alueen asiakasmäärä ja kuinka monta asiakasta kullakin alueella on yhtä alueelle erikoistunutta lähettiä kohden. Anna asiakasmäärä sarakkeessa CUST ja määrä lähettiä kohden sarakkeessa C_PER_BOY. Malli

Erä 3: Ylläpito

U1 Yritys on palkannut uuden lähetin. Hänen nimensä on Pick Upp. Hänen pääasiallinen toiminta-alueensa on A03. Hänen tunnisteekseen on valittu PICK. Kirjaa tiedot kantaan. Malli
U2 Patty P ryhtyy yrityksen asiakkaaksi. Hänen osoitteensa on Rocky Road 5E ja hänen puhelinnumeronsa on 234987. Sähköpostia hänellä ei ole. Hänelle myydään vain käteisellä. Rocky Road sijaitsee alueella A01. Asiakastunnukseksi hänelle annetaan nykyistä suurinta tunnusta yhtä suurempi numero. Lisää hänen tietonsa tietokantaan. Malli
U3 Asiakas Frank S muuttaa osoitteeseen Market Square 6, 122. Samalla hänen asuinalueensa muuttuu alueeksi A02. Päivitä tietokanta Malli
U4 Kaikkien tuotteiden hintaa korotetaan 10 prosentia. Hinta pyöristetään kuitenkin yhden desimaalin tarkkuuteen (funktio: round(arvo,desimaalit)). Kirjaa korotus kantaan. Malli
U5 Aiemmin erillisenä peritty 2 euron toimituslisä päätetään lisätä tilauksen kokonaishintaan. Tee muutos niiden tilausten tietoihin, joille ei ole vielä kiinnitetty toimitusta. Malli
U6 Aktiivisessa käytössä olevat taulut halutaan pitää pienenä. Kaikki ennen 2.1.2002 hoidetut toimitukset on jo kopioitu historiatauluihin. Poista kopioidut toimitusrivit (delivery) tietokannasta. Malli
U7 Poista tuotevalikoimasta tuoteyksiköt, joita kukaan ei ole tilannut. Malli
U8 Tilauksen 3023 sisällössä on tapahtunut muutos. Päivitä tilauksen kokonaishinta (Ota laskennassa mukaan vain varsinaiset tuotteet. Lisukkeiden hinnan saisi helposti lisättyä suorittamalla perään toisen ylläpito-operaation, mutta se ei ole mahdollista tällä välineellä). Operaatiossa tarvitaan Oraclen erityissyntaksia.) Malli