Hae kaikkien elokuvien nimet.
Taulut
Elokuvat
|
Haluttu tulos
Lumikki |
Fantasia |
Pinocchio |
Dumbo |
Bambi |
SELECT nimi FROM Elokuvat;
SELECT nimi FROM Elokuvat;
Hae kaikkien elokuvien nimet ja julkaisuvuodet.
Taulut
Elokuvat
|
Haluttu tulos
Lumikki | 1937 |
Fantasia | 1940 |
Pinocchio | 1940 |
Dumbo | 1941 |
Bambi | 1942 |
SELECT nimi,vuosi FROM Elokuvat;
SELECT nimi, vuosi FROM Elokuvat;
Hae kaikkien vuonna 1940 julkaistujen elokuvien nimet.
Taulut
Elokuvat
|
Haluttu tulos
Fantasia |
Pinocchio |
SELECT nimi FROM Elokuvat WHERE vuosi=1940;
SELECT nimi FROM Elokuvat WHERE vuosi=1940;
Hae ennen vuotta 1950 julkaistujen elokuvien nimet.
Taulut
Elokuvat
|
Haluttu tulos
Lumikki |
Fantasia |
Bambi |
SELECT nimi FROM Elokuvat WHERE vuosi<1950;
SELECT nimi FROM Elokuvat WHERE vuosi<1950;
Hae vuosina 1940–1950 julkaistujen elokuvien nimet.
Taulut
Elokuvat
|
Haluttu tulos
Fantasia |
Bambi |
SELECT nimi FROM Elokuvat WHERE vuosi>=1940 AND vuosi<=1950;
SELECT nimi FROM Elokuvat WHERE vuosi BETWEEN 1940 AND 1950;
Hae ennen vuotta 1950 tai vuoden 1980 jälkeen julkaistujen elokuvien nimet.
Taulut
Elokuvat
|
Haluttu tulos
Lumikki |
Fantasia |
Bambi |
Hiidenpata |
SELECT nimi FROM Elokuvat WHERE vuosi < 1950 OR vuosi > 1980;
SELECT nimi FROM Elokuvat WHERE vuosi<1950 OR vuosi>1980;
Hae kaikkien elokuvien nimet, joita ei ole julkaistu vuonna 1940.
Taulut
Elokuvat
|
Haluttu tulos
Lumikki |
Dumbo |
Bambi |
SELECT nimi FROM Elokuvat WHERE vuosi IS NOT 1940;
SELECT nimi FROM Elokuvat WHERE vuosi<>1940;
Hae kaikkien elokuvien nimet aakkosjärjestyksessä.
Taulut
Elokuvat
|
Haluttu tulos
Bambi |
Dumbo |
Fantasia |
Lumikki |
Pinocchio |
SELECT nimi FROM Elokuvat ORDER BY nimi;
SELECT nimi FROM Elokuvat ORDER BY nimi;
Hae kaikkien elokuvien nimet käänteisessä aakkosjärjestyksessä.
Taulut
Elokuvat
|
Haluttu tulos
Pinocchio |
Lumikki |
Fantasia |
Dumbo |
Bambi |
SELECT nimi FROM Elokuvat ORDER BY nimi DESC;
SELECT nimi FROM Elokuvat ORDER BY nimi DESC;
Hae elokuvien nimet ja julkaisuvuodet ensisijaisesti käänteisessä järjestyksessä julkaisuvuoden mukaan, toissijaisesti aakkosjärjestyksessä.
Taulut
Elokuvat
|
Haluttu tulos
Bambi | 1942 |
Dumbo | 1941 |
Fantasia | 1940 |
Pinocchio | 1940 |
Lumikki | 1937 |
SELECT nimi,vuosi FROM Elokuvat ORDER BY vuosi DESC, nimi;
SELECT nimi, vuosi FROM Elokuvat ORDER BY vuosi DESC, nimi;
Hae kaikki eri etunimet.
Taulut
Nimet
|
Haluttu tulos
Anna |
Pekka |
SELECT DISTINCT etunimi FROM Nimet;
SELECT DISTINCT etunimi FROM Nimet;
Hae kaikki eri nimet.
Taulut
Nimet
|
Haluttu tulos
Anna | Korhonen |
Pekka | Korhonen |
Pekka | Virtanen |
SELECT DISTINCT etunimi, sukunimi FROM Nimet;
SELECT DISTINCT etunimi, sukunimi FROM Nimet;
Hae työntekijöiden määrä.
Taulut
Tyontekijat
|
Haluttu tulos
4 |
SELECT COUNT(*) FROM Tyontekijat;
SELECT COUNT(*) FROM Tyontekijat;
Hae niiden työntekijöiden määrä, joiden palkka on yli 2000.
Taulut
Tyontekijat
|
Haluttu tulos
3 |
SELECT COUNT(*) FROM Tyontekijat WHERE palkka > 2000;
SELECT COUNT(*) FROM Tyontekijat WHERE palkka>2000;
Hae työntekijöiden yhteispalkka.
Taulut
Tyontekijat
|
Haluttu tulos
12000 |
SELECT SUM(palkka) FROM Tyontekijat;
SELECT SUM(palkka) FROM Tyontekijat;
Hae suurin työntekijän palkka.
Taulut
Tyontekijat
|
Haluttu tulos
5000 |
SELECT MAX(palkka) FROM Tyontekijat;
SELECT MAX(palkka) FROM Tyontekijat;
Hae eri yritysten määrä.
Taulut
Tyontekijat
|
Haluttu tulos
3 |
SELECT COUNT(DISTINCT yritys) FROM Tyontekijat;
SELECT COUNT(DISTINCT yritys) FROM Tyontekijat;
Hae jokaisen yrityksen työntekijöiden määrä.
SELECT yritys, COUNT(*) FROM Tyontekijat GROUP BY yritys;
SELECT yritys, COUNT(*) FROM Tyontekijat GROUP BY yritys;
Hae jokaisesta yrityksestä suurin työntekijän palkka.
Taulut
Tyontekijat
|
Haluttu tulos
6000 | |
Amazon | 2000 |
Microsoft | 7500 |
SELECT yritys, MAX(palkka) FROM Tyontekijat GROUP BY yritys;
SELECT yritys, MAX(palkka) FROM Tyontekijat GROUP BY yritys;
Näytä suurin työntekijän palkka yrityksistä, joissa se on ainakin 5000.
Taulut
Tyontekijat
|
Haluttu tulos
6000 | |
Microsoft | 7500 |
SELECT yritys, MAX(palkka) FROM Tyontekijat WHERE palkka >= 5000 GROUP BY yritys;
SELECT yritys, MAX(palkka) FROM Tyontekijat GROUP BY yritys HAVING MAX(palkka)>=5000;
Muodosta tuloslista, jossa näkyvät kaikki tulokset.
Taulut
Pelaajat
| Tulokset
|
Haluttu tulos
Uolevi | 250 |
Uolevi | 300 |
Maija | 100 |
Maija | 350 |
Kaaleppi | 500 |
SELECT Pelaajat.nimi, Tulokset.tulos FROM Pelaajat, Tulokset WHERE Tulokset.pelaaja_id = Pelaajat.id;
SELECT P.nimi, T.tulos FROM Pelaajat P, Tulokset T WHERE P.id=T.pelaaja_id;
Muodosta tuloslista, jossa näkyvät Uolevin tulokset.
Taulut
Pelaajat
| Tulokset
|
Haluttu tulos
Uolevi | 250 |
Uolevi | 300 |
SELECT Pelaajat.nimi, Tulokset.tulos FROM Pelaajat, Tulokset WHERE Tulokset.pelaaja_id = Pelaajat.id AND Pelaajat.nimi='Uolevi';
SELECT P.nimi, T.tulos FROM Pelaajat P, Tulokset T WHERE P.id=T.pelaaja_id AND P.nimi='Uolevi';
Muodosta tuloslista, jossa näkyvät tulokset, jotka ovat parempia kuin 250.
Taulut
Pelaajat
| Tulokset
|
Haluttu tulos
Uolevi | 300 |
Maija | 350 |
Kaaleppi | 400 |
Kaaleppi | 500 |
SELECT Pelaajat.nimi, Tulokset.tulos FROM Pelaajat, Tulokset WHERE Tulokset.pelaaja_id = Pelaajat.id AND Tulokset.tulos > 250;
SELECT P.nimi, T.tulos FROM Pelaajat P, Tulokset T WHERE P.id=T.pelaaja_id AND T.tulos>250;
Muodosta tuloslista, jossa näkyy kaikki tulokset järjestettynä ensisijaisesti käänteisesti pistemäärän mukaan ja toissijaisesti nimen mukaan.
Taulut
Pelaajat
| Tulokset
|
Haluttu tulos
Kaaleppi | 500 |
Maija | 350 |
Uolevi | 350 |
Uolevi | 250 |
Maija | 100 |
SELECT Pelaajat.nimi, Tulokset.tulos FROM Pelaajat, Tulokset WHERE Tulokset.pelaaja_id = Pelaajat.id ORDER BY Tulokset.tulos DESC, Pelaajat.nimi;
SELECT P.nimi, T.tulos FROM Pelaajat P, Tulokset T WHERE P.id=T.pelaaja_id ORDER BY T.tulos DESC, P.nimi;
Ilmoita jokaisesta pelaajasta, mikä on hänen paras tuloksensa. Voit olettaa, että jokaisella pelaajalla on ainakin yksi tulos.
Taulut
Pelaajat
| Tulokset
|
Haluttu tulos
Uolevi | 300 |
Maija | 350 |
Kaaleppi | 500 |
SELECT Pelaajat.nimi, MAX(Tulokset.tulos) FROM Pelaajat, Tulokset WHERE Tulokset.pelaaja_id = Pelaajat.id GROUP BY nimi;
SELECT P.nimi, MAX(T.tulos) FROM Pelaajat P, Tulokset T WHERE P.id=T.pelaaja_id GROUP BY P.id;
Ilmoita jokaisesta pelaajasta, montako tulosta hänellä on. Voit olettaa, että jokaisella pelaajalla on ainakin yksi tulos.
Taulut
Pelaajat
| Tulokset
|
Haluttu tulos
Uolevi | 2 |
Maija | 2 |
Kaaleppi | 1 |
SELECT nimi, COUNT(*) FROM Pelaajat, Tulokset WHERE pelaaja_id = Pelaajat.id GROUP BY nimi;
SELECT P.nimi, COUNT(T.tulos) FROM Pelaajat P, Tulokset T WHERE P.id=T.pelaaja_id GROUP BY P.id;
Hae kaikista suorituksista opiskelijan nimi, kurssin nimi ja arvosana.
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Uolevi | Ohpe | 3 |
Uolevi | Ohja | 4 |
Maija | Ohpe | 2 |
Maija | Lama | 5 |
Kaaleppi | Tira | 4 |
SELECT Opiskelijat.nimi, Kurssit.nimi, arvosana FROM Opiskelijat, Kurssit, Suoritukset WHERE Suoritukset.kurssi_id = Kurssit.id AND Suoritukset.opiskelija_id = Opiskelijat.id;
SELECT O.nimi, K.nimi, S.arvosana FROM Opiskelijat O, Kurssit K, Suoritukset S WHERE O.id=S.opiskelija_id AND K.id=S.kurssi_id;
Hae kaikista Uolevin suorituksista kurssin nimi ja arvosana.
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Ohpe | 3 |
Ohja | 4 |
SELECT Kurssit.nimi, arvosana FROM Opiskelijat, Kurssit, Suoritukset WHERE Suoritukset.kurssi_id = Kurssit.id AND Suoritukset.opiskelija_id = Opiskelijat.id AND Opiskelijat.nimi = 'Uolevi';
SELECT K.nimi, S.arvosana FROM Opiskelijat O, Kurssit K, Suoritukset S WHERE O.id=S.opiskelija_id AND K.id=S.kurssi_id AND O.nimi='Uolevi';
Hae kaikista Ohpen suorituksista opiskelijan nimi ja arvosana.
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Uolevi | 3 |
Maija | 2 |
SELECT Opiskelijat.nimi, arvosana FROM Opiskelijat, Kurssit, Suoritukset WHERE Suoritukset.kurssi_id = Kurssit.id AND Suoritukset.opiskelija_id = Opiskelijat.id AND Kurssit.nimi = 'Ohpe';
SELECT O.nimi, S.arvosana FROM Opiskelijat O, Kurssit K, Suoritukset S WHERE O.id=S.opiskelija_id AND K.id=S.kurssi_id AND K.nimi='Ohpe';
Hae kaikki suoritukset, joissa arvosana on 4 tai 5.
SELECT Opiskelijat.nimi, Kurssit.nimi, arvosana FROM Opiskelijat, Kurssit, Suoritukset WHERE Suoritukset.kurssi_id = Kurssit.id AND Suoritukset.opiskelija_id = Opiskelijat.id AND (Suoritukset.arvosana = 4 OR Suoritukset.arvosana = 5);;
SELECT O.nimi, K.nimi, S.arvosana FROM Opiskelijat O, Kurssit K, Suoritukset S WHERE O.id=S.opiskelija_id AND K.id=S.kurssi_id AND S.arvosana BETWEEN 4 AND 5;
Hae jokaisesta opiskelijasta suoritusten määrä. Voit olettaa, että jokaisella opiskelijalla on ainakin yksi suoritus.
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Uolevi | 2 |
Maija | 2 |
Kaaleppi | 1 |
SELECT Opiskelijat.nimi, COUNT(*) FROM Opiskelijat, Kurssit, Suoritukset WHERE Suoritukset.opiskelija_id = Opiskelijat.id AND Suoritukset.kurssi_id = Kurssit.id GROUP BY Opiskelijat.nimi;
SELECT O.nimi, COUNT(*) FROM Opiskelijat O, Suoritukset S WHERE O.id=S.opiskelija_id GROUP BY O.id;
Hae jokaisesta opiskelijasta paras suorituksen arvosana. Voit olettaa, että jokaisella opiskelijalla on ainakin yksi suoritus.
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Uolevi | 4 |
Maija | 5 |
Kaaleppi | 4 |
SELECT Opiskelijat.nimi, MAX(Suoritukset.arvosana) FROM Opiskelijat, Kurssit, Suoritukset WHERE Suoritukset.opiskelija_id = Opiskelijat.id AND Suoritukset.kurssi_id = Kurssit.id GROUP BY Opiskelijat.nimi;
SELECT O.nimi, MAX(S.arvosana) FROM Opiskelijat O, Suoritukset S WHERE O.id=S.opiskelija_id GROUP BY O.id;
Hae tiedot kaikista lentoyhteyksistä.
Taulut
Kaupungit
| Lennot
|
Haluttu tulos
Helsinki | Tukholma |
Helsinki | Oslo |
Tukholma | Oslo |
Tukholma | Turku |
SELECT mista.nimi, minne.nimi FROM Kaupungit mista, Kaupungit minne, Lennot WHERE Lennot.mista_id = mista.id AND Lennot.minne_id = minne.id;
SELECT A.nimi, B.nimi FROM Kaupungit A, Kaupungit B, Lennot L WHERE L.mista_id=A.id AND L.minne_id=B.id;
Hae kohteet kaikista lennoista, jotka lähtevät Helsingistä.
Taulut
Kaupungit
| Lennot
|
Haluttu tulos
Tukholma |
Oslo |
SELECT k2.nimi AS minne
FROM Lennot, Kaupungit AS k1, Kaupungit AS k2
WHERE Lennot.mista_id = k1.id
AND Lennot.minne_id = k2.id AND k1.nimi = 'Helsinki'
ORDER BY Lennot.mista_id;
SELECT B.nimi FROM Kaupungit A, Kaupungit B, Lennot L WHERE L.mista_id=A.id AND L.minne_id=B.id AND A.nimi='Helsinki';
Ilmoita jokaisesta pelaajasta, montako tulosta hänellä on (myös vaikka ei olisi tuloksia).
Taulut
Pelaajat
| Tulokset
|
Haluttu tulos
Uolevi | 2 |
Maija | 3 |
Kaaleppi | 0 |
SELECT Pelaajat.nimi, (SELECT COUNT(*) FROM Tulokset
WHERE Pelaajat.id = Tulokset.pelaaja_id)
FROM Pelaajat;
SELECT P.nimi, COUNT(T.tulos) FROM Pelaajat P LEFT JOIN Tulokset T ON P.id=T.pelaaja_id GROUP BY P.id;
Hae jokaisesta opiskelijasta suoritusten määrä (myös vaikka ei olisi suorituksia).
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Uolevi | 2 |
Maija | 3 |
Kaaleppi | 0 |
SELECT Opiskelijat.nimi, (SELECT COUNT(*) FROM Suoritukset
WHERE Opiskelijat.id = Suoritukset.opiskelija_id)
FROM Opiskelijat;
SELECT O.nimi, COUNT(S.arvosana) FROM Opiskelijat O LEFT JOIN Suoritukset S ON O.id=S.opiskelija_id GROUP BY O.id;
Hae jokaisesta kurssista suorittajien määrä (myös vaikka ei olisi suorituksia).
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Ohpe | 2 |
Ohja | 2 |
Tira | 0 |
Lama | 1 |
SELECT Kurssit.nimi, (SELECT COUNT(*) FROM Suoritukset
WHERE Kurssit.id = Suoritukset.kurssi_id)
FROM Kurssit;
SELECT K.nimi, COUNT(S.arvosana) FROM Kurssit K LEFT JOIN Suoritukset S ON K.id=S.kurssi_id GROUP BY K.id;
Hae nimet kaikista kursseista, joita on suoritettu ainakin kerran.
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Ohpe |
Ohja |
Lama |
SELECT DISTINCT Kurssit.nimi
FROM Opiskelijat, Kurssit, Suoritukset
WHERE Opiskelijat.id = Suoritukset.opiskelija_id
AND Kurssit.id = Suoritukset.kurssi_id
ORDER BY Suoritukset.arvosana;
SELECT DISTINCT K.nimi FROM Kurssit K, Suoritukset S WHERE K.id=S.kurssi_id;
Hae nimet kaikista kursseista, joita ei ole suoritettu kertaakaan.
Taulut
Opiskelijat
| Kurssit
| Suoritukset
|
Haluttu tulos
Tira |
SELECT Kurssit.nimi FROM Kurssit
LEFT JOIN Suoritukset ON Kurssit.id = Suoritukset.kurssi_id
WHERE Suoritukset.kurssi_id IS NULL;
SELECT K.nimi FROM Kurssit K LEFT JOIN Suoritukset S ON K.id=S.kurssi_id GROUP BY K.id HAVING COUNT(S.arvosana)=0;
Hae jokaisesta kaupungista, montako lentoa sieltä lähtee (myös vaikka ei olisi lentoja).
Taulut
Kaupungit
| Lennot
|
Haluttu tulos
Helsinki | 2 |
Tukholma | 1 |
Oslo | 1 |
Turku | 0 |
SELECT Kaupungit.nimi, (SELECT COUNT(*) FROM Lennot
WHERE Kaupungit.id = Lennot.mista_id)
FROM Kaupungit;
SELECT K.nimi, COUNT(L.minne_id) FROM Kaupungit K LEFT JOIN Lennot L ON K.id=L.mista_id GROUP BY K.id;
Hae jokaisen tuotteen hinta kaksinkertaisena.
Taulut
Tuotteet
|
Haluttu tulos
selleri | 10 |
lanttu | 16 |
nauris | 12 |
porkkana | 4 |
SELECT Tuotteet.nimi, (Tuotteet.hinta * 2) FROM Tuotteet;
SELECT nimi, hinta*2 FROM Tuotteet;
Hae kaikki tuotteet, joiden hinta on parillinen.
Taulut
Tuotteet
|
Haluttu tulos
lanttu | 8 |
porkkana | 2 |
SELECT Tuotteet.nimi, Tuotteet.hinta
FROM Tuotteet WHERE (Tuotteet.hinta % 2 == 0);
SELECT nimi, hinta FROM Tuotteet WHERE hinta%2=0;
Hae jokaisen sanan pituus merkkeinä.
Taulut
Sanat
|
Haluttu tulos
apina | 5 |
banaani | 7 |
cembalo | 7 |
SELECT sana, LENGTH(sana) FROM Sanat;
SELECT sana, LENGTH(sana) FROM Sanat;
Hae kaikki sanat, joiden pituus on alle 6 merkkiä.
Taulut
Sanat
|
Haluttu tulos
apina |
SELECT Sanat.sana FROM Sanat WHERE LENGTH(sana) < 6;
SELECT sana FROM Sanat WHERE LENGTH(sana)<6;
Hae sanat järjestettynä ensisijaisesti pituuden mukaan ja toissijaisesti aakkosjärjestyksen mukaan.
SELECT Sanat.sana FROM Sanat ORDER BY LENGTH(Sanat.sana), Sanat.sana;
SELECT sana FROM Sanat ORDER BY LENGTH(sana), sana;
Hae käyttäjien koko nimet yhtenä sarakkeena.
Taulut
Kayttajat
|
Haluttu tulos
Liisa Virtanen |
Anna Korhonen |
Kalle Ojala |
SELECT etunimi || ' ' || sukunimi FROM Kayttajat;
SELECT etunimi || ' ' || sukunimi FROM Kayttajat;
Hae kaikkien sanojen yhteispituus.
Taulut
Sanat
|
Haluttu tulos
19 |
SELECT SUM(LENGTH(sana)) FROM Sanat;
SELECT SUM(LENGTH(sana)) FROM Sanat;
Laske jokaisen tilauksen yhteishinta.
Taulut
Tilaukset
|
Haluttu tulos
lanttu | 40 |
selleri | 140 |
nauris | 75 |
SELECT Tilaukset.tuote,
(Tilaukset.hinta * Tilaukset.maara)
FROM Tilaukset;
SELECT tuote, hinta*maara FROM Tilaukset;
Laske kaikkien tilausten yhteishintojen summa.
Taulut
Tilaukset
|
Haluttu tulos
255 |
SELECT SUM(hinta *maara) FROM Tilaukset;
SELECT SUM(hinta*maara) FROM Tilaukset;
Hae kaikkien elokuvien nimet, jotka on julkaistu karkausvuonna. (Vuosi on karkausvuosi, jos se on jaollinen 4:llä. Jos vuosi on jaollinen 100:lla, se on karkausvuosi vain, jos se on myös jaollinen 400:lla.)
Taulut
Elokuvat
|
Haluttu tulos
Fantasia |
Pinocchio |
SELECT Elokuvat.nimi FROM Elokuvat WHERE (Elokuvat.vuosi % 4 == 0 AND Elokuvat.vuosi % 100
IS NOT 0 OR Elokuvat.vuosi % 400 == 0);
SELECT nimi FROM Elokuvat WHERE vuosi%4=0 AND (vuosi%100<>0 OR vuosi%400=0);
Hae kaikki tuotteet, joiden hinta on halvin hinta.
Taulut
Tuotteet
|
Haluttu tulos
lanttu |
nauris |
SELECT Tuotteet.nimi FROM Tuotteet
WHERE Tuotteet.hinta IN (SELECT MIN(Tuotteet.hinta) FROM Tuotteet);
SELECT nimi FROM Tuotteet WHERE hinta=(SELECT MIN(hinta) FROM Tuotteet);
Hae kaikki tuotteet, joiden hinta on enintään kaksinkertainen halvimpaan hintaan verrattuna.
Taulut
Tuotteet
|
Haluttu tulos
lanttu |
retiisi |
nauris |
SELECT Tuotteet.nimi FROM Tuotteet
WHERE Tuotteet.hinta <=
((SELECT MIN(Tuotteet.hinta) FROM Tuotteet) * 2);
SELECT nimi FROM Tuotteet WHERE hinta <= 2*(SELECT MIN(hinta) FROM Tuotteet);
Hae kaikki tuotteet, joiden hintaa ei ole millään muulla tuotteella.
Taulut
Tuotteet
|
Haluttu tulos
lanttu |
nauris |
SELECT t1.nimi
FROM Tuotteet t1
WHERE t1.hinta
NOT IN (SELECT t2.hinta
FROM Tuotteet t2
WHERE t2.id <> t1.id);
SELECT nimi FROM Tuotteet WHERE hinta IN (SELECT hinta FROM Tuotteet GROUP BY hinta HAVING COUNT(*)=1);
Hae aakkosjärjestyksessä ensimmäinen sana.
Taulut
Sanat
|
Haluttu tulos
apina |
SELECT sana FROM Sanat ORDER BY sana LIMIT 1;
SELECT MIN(sana) FROM Sanat;
Hae aakkosjärjestyksessä toinen sana. Voit olettaa, että taulussa ei ole kahta samaa sanaa.
SELECT sana FROM Sanat ORDER BY sana LIMIT 1 OFFSET 1;
SELECT sana FROM Sanat ORDER BY sana LIMIT 1 OFFSET 1;
Hae kaikki sanat paitsi aakkosjärjestyksessä ensimmäinen. Voit olettaa, että taulussa ei ole kahta samaa sanaa.
Taulut
Sanat
|
Haluttu tulos
banaani |
cembalo |
SELECT sana FROM Sanat ORDER BY sana LIMIT 10 OFFSET 1;
SELECT sana FROM Sanat ORDER BY sana LIMIT (SELECT COUNT(*)-1 FROM Sanat) OFFSET 1;
Hae kaikki sanat, joissa esiintyy i-kirjain.
SELECT sana FROM Sanat WHERE sana LIKE '%i%';
SELECT sana FROM Sanat WHERE sana LIKE '%i%';
Hae kaikki sanat, jotka alkavat a-kirjaimella.
Taulut
Sanat
|
Haluttu tulos
apina |
SELECT sana FROM Sanat WHERE sana LIKE 'a%';
SELECT sana FROM Sanat WHERE sana LIKE 'a%';
Hae kaikki sanat, joissa on tasan viisi kirjainta ja toinen kirjain on p.
Taulut
Sanat
|
Haluttu tulos
apina |
SELECT Sanat.sana
FROM Sanat
WHERE LENGTH(Sanat.sana) = 5
AND Sanat.sana LIKE '%p%%%';
SELECT sana FROM Sanat WHERE sana LIKE '_p___';
Hae kaikki sanat, joissa on tasan kaksi a-kirjainta.
SELECT Sanat.sana FROM Sanat WHERE (LENGTH(Sanat.sana) - LENGTH(REPLACE(Sanat.sana, 'a', '')) = 2);
SELECT sana FROM Sanat WHERE sana LIKE '%a%a%' AND sana NOT LIKE '%a%a%a%';
Hae jokaisesta käyttäjästä tieto, monessako ryhmässä hän on.
Taulut
Kayttajat
| Ryhmat
| Oikeudet
|
Haluttu tulos
uolevi | 1 |
maija | 1 |
kaaleppi | 2 |
liisa | 0 |
SELECT Kayttajat.tunnus, (SELECT COUNT(*)
FROM Oikeudet, Ryhmat
WHERE Kayttajat.id = Oikeudet.kayttaja_id
AND Oikeudet.ryhma_id = Ryhmat.id)
FROM Kayttajat
SELECT K.tunnus, COUNT(O.ryhma_id) FROM Kayttajat K LEFT JOIN Oikeudet O ON K.id=O.kayttaja_id GROUP BY K.id;
Hae jokaisesta ryhmästä tieto, montako käyttäjää siihen kuuluu.
SELECT Ryhmat.nimi, (SELECT COUNT(Oikeudet.ryhma_id)
FROM Oikeudet WHERE Oikeudet.ryhma_id = Ryhmat.id) FROM Ryhmat;
SELECT R.nimi, COUNT(O.kayttaja_id) FROM Ryhmat R LEFT JOIN Oikeudet O ON R.id=O.ryhma_id GROUP BY R.id;
Hae kaikki käyttäjät, jotka kuuluvat yli yhteen ryhmään.
Taulut
Kayttajat
| Ryhmat
| Oikeudet
|
Haluttu tulos
kaaleppi |
SELECT Kayttajat.tunnus
FROM Kayttajat
WHERE ((SELECT COUNT(Oikeudet.kayttaja_id)
FROM Oikeudet WHERE Oikeudet.kayttaja_id = Kayttajat.id) >= 2);
SELECT K.tunnus FROM Kayttajat K LEFT JOIN Oikeudet O ON K.id=O.kayttaja_id GROUP BY K.id HAVING COUNT(O.ryhma_id) > 1;
Hae kaikki käyttäjät, jotka kuuluvat ainakin yhteen samaan ryhmään käyttäjän "uolevi" kanssa.
Taulut
Kayttajat
| Ryhmat
| Oikeudet
|
Haluttu tulos
uolevi |
maija |
liisa |
SELECT Kayttajat.tunnus
FROM Kayttajat WHERE Kayttajat.id
IN (SELECT Oikeudet.kayttaja_id FROM Oikeudet WHERE Oikeudet.ryhma_id
IN (SELECT Oikeudet.ryhma_id FROM Oikeudet WHERE Oikeudet.kayttaja_id = 1));
SELECT DISTINCT A.tunnus FROM Kayttajat A, Kayttajat B, Oikeudet X, Oikeudet Y WHERE A.id=X.kayttaja_id AND B.id=Y.kayttaja_id AND X.ryhma_id=Y.ryhma_id AND B.tunnus='uolevi';
Hae kaikki käyttäjät, jotka eivät kuulu mihinkään samaan ryhmään käyttäjän "uolevi" kanssa.
Taulut
Kayttajat
| Ryhmat
| Oikeudet
|
Haluttu tulos
kaaleppi |
SELECT Kayttajat.tunnus FROM Kayttajat WHERE Kayttajat.id
NOT IN (SELECT Oikeudet.kayttaja_id FROM Oikeudet WHERE Oikeudet.ryhma_id
IN (SELECT Oikeudet.ryhma_id FROM Oikeudet, Kayttajat WHERE Oikeudet.kayttaja_id == 1));
SELECT tunnus FROM Kayttajat WHERE tunnus NOT IN (SELECT A.tunnus FROM Kayttajat A, Kayttajat B, Oikeudet X, Oikeudet Y WHERE A.id=X.kayttaja_id AND B.id=Y.kayttaja_id AND X.ryhma_id=Y.ryhma_id AND B.tunnus='uolevi');
Hae sanat järjestettynä niin, että kirjainkoolla ei ole merkitystä. Jokainen sana muodostuu kirjaimista a–z ja A–Z.
Taulut
Sanat
|
Haluttu tulos
apina |
Liisa |
Maija |
omena |
Uolevi |
SELECT sana FROM Sanat ORDER BY LOWER(sana);
SELECT sana FROM Sanat ORDER BY LOWER(sana);
Hae tuote, jonka hinta on halvin (jos halvimpia tuotteita on useita, valitse aakkosjärjestyksessä ensimmäinen).
Taulut
Tuotteet
|
Haluttu tulos
lanttu | 5 |
SELECT Tuotteet.nimi, Tuotteet.hinta
FROM Tuotteet
WHERE Tuotteet.hinta =
(SELECT MIN
(Tuotteet.hinta)
FROM Tuotteet
GROUP BY hinta)
ORDER BY nimi
LIMIT 1;
SELECT nimi, hinta FROM Tuotteet ORDER BY hinta, nimi LIMIT 1;
Hae jokaisesta tuotteesta tieto, monenko tuotteen hinta eroaa enintään yhdellä (tässä lasketaan mukaan myös tuote itse).
Taulut
Tuotteet
|
Haluttu tulos
selleri | 3 |
lanttu | 1 |
retiisi | 2 |
nauris | 2 |
SELECT Tuotteet.nimi, COUNT(*)
FROM Tuotteet, Tuotteet t3
WHERE Tuotteet.id IN (SELECT t2.id
FROM Tuotteet t2 WHERE ABS(Tuotteet.hinta-t3.hinta) <=1)
GROUP BY Tuotteet.nimi;
SELECT A.nimi, COUNT(*) FROM Tuotteet A, Tuotteet B WHERE ABS(A.hinta-B.hinta) <= 1 GROUP BY A.id;
Laske, monellako tavalla voit valita kaksi tuotetta niin, että yhteishinta on tasan 10.
Huom! Yhdistelmässä voi olla kaksi samaa tuotetta ja halutaan laskea erilaiset yhdistelmät. Esimerkissä yhdistelmät ovat selleri+selleri ja lanttu+nauris (eli nauris+lanttu ei ole mukana).
Taulut
Tuotteet
|
Haluttu tulos
2 |
SELECT COUNT(n1)
FROM
(
SELECT t1.nimi n1, t2.nimi n2
FROM Tuotteet t1, Tuotteet t2
WHERE t1.hinta + t2.hinta == 10
AND t1.nimi <= t2.nimi
);
SELECT COUNT(*) FROM Tuotteet A, Tuotteet B WHERE A.hinta+B.hinta=10 AND A.id <= B.id;
Laske, mikä on pienin ero kahden tuotteen hinnassa.
Taulut
Tuotteet
|
Haluttu tulos
1 |
SELECT MIN(ABS(hinta1 - hinta2))
FROM (SELECT t1.id AS id1, t2.id AS id2, t1.hinta AS hinta1, t2.hinta AS hinta2
FROM Tuotteet t1, Tuotteet t2
WHERE id1!=id2);
SELECT MIN(ABS(A.hinta-B.hinta)) FROM Tuotteet A, Tuotteet B WHERE A.id<>B.id;
Laske jokaisen tilin saldo tapahtumien perusteella (jokaisen tilin saldo on aluksi 0).
Taulut
Tilit
| Tapahtumat
|
Haluttu tulos
Uolevi | 400 |
Maija | 100 |
Kaaleppi | 0 |
SELECT haltija, COALESCE(tilisumma, 0) FROM (SELECT Tilit.haltija, tilisumma FROM (Tilit LEFT JOIN (SELECT t1.tili_id AS tili1, SUM(t1.muutos) AS tilisumma FROM Tapahtumat t1 GROUP BY t1.tili_id) ON Tilit.id = tili1) GROUP BY Tilit.id);
SELECT A.haltija, IFNULL(SUM(B.muutos),0) FROM Tilit A LEFT JOIN Tapahtumat B ON A.id=B.tili_id GROUP BY A.id;
Laske Uolevin tilin saldon historia. Tapahtumat ovat järjestyksessä id:n mukaisesti.
SELECT SUM(Tapahmtos)
OVER ( ORDER BY TapahID )
FROM (SELECT Tapahtumat.id AS tapahID, Tapahtumat.muutos AS Tapahmtos
FROM Tapahtumat, Tilit
WHERE Tilit.id = Tapahtumat.tili_id
AND Tilit.haltija = 'Uolevi');
SELECT SUM(B.muutos) FROM Tilit T, Tapahtumat A, Tapahtumat B WHERE A.tili_id=T.id AND B.tili_id=T.id AND T.haltija="Uolevi" AND B.id<=A.id GROUP BY A.id;
Laske jokaisen tilin suurin saldo historian aikana (jokaisen tilin saldo on aluksi 0).
Taulut
Tilit
| Tapahtumat
|
Haluttu tulos
Uolevi | 500 |
Maija | 400 |
Kaaleppi | 0 |
SELECT haltija, MAX(tili) FROM (SELECT Tilit.haltija haltija, COALESCE(SUM(taph2.muutos),0) tili
FROM Tilit LEFT JOIN Tapahtumat taph1 ON Tilit.id = taph1.tili_id
LEFT JOIN Tapahtumat taph2 ON taph2.id <= taph1.id AND Tilit.id = taph2.tili_id GROUP BY taph1.id, haltija ORDER BY tili DESC) GROUP BY haltija ORDER BY tili DESC;
SELECT haltija, IFNULL((SELECT MAX((SELECT SUM(muutos) FROM Tapahtumat WHERE tili_id=B.id AND id <= A.id)) FROM Tapahtumat A),0) FROM Tilit B;
Laske, montako eri tehtävää kukin opiskelija on ratkaissut oikein (lähetyksen tila on 0 = väärin tai 1 = oikein).
Taulut
Opiskelijat
| Tehtavat
| Lahetykset
|
Haluttu tulos
Uolevi | 2 |
Maija | 2 |
Kaaleppi | 0 |
SELECT Opiskelijat.nimi, COUNT(DISTINCT Lahetykset.tehtava_id)
FROM Opiskelijat LEFT JOIN Lahetykset ON (Opiskelijat.id = Lahetykset.opiskelija_id
AND Lahetykset.tila=1) GROUP BY Opiskelijat.id;
SELECT O.nimi, COUNT(DISTINCT L.tehtava_id) FROM Opiskelijat O LEFT JOIN Lahetykset L ON O.id=L.opiskelija_id AND L.tila=1 GROUP BY O.id;
Laske jokaiselle opiskelijalle, montako lähetystä enimmillään hän on lähettänyt samaan tehtävään.
Taulut
Opiskelijat
| Tehtavat
| Lahetykset
|
Haluttu tulos
Uolevi | 2 |
Maija | 3 |
Kaaleppi | 0 |
SELECT Opiskelijat.nimi, COALESCE((SELECT COUNT(Lahetykset.tehtava_id) tulos FROM Lahetykset, Tehtavat WHERE
Lahetykset.opiskelija_id = Opiskelijat.id AND Lahetykset.tehtava_id = Tehtavat.id GROUP BY Lahetykset.tehtava_id ORDER BY tulos DESC), 0) FROM Opiskelijat;
SELECT nimi, IFNULL((SELECT MAX(maara) FROM (SELECT COUNT(*) maara FROM Lahetykset WHERE opiskelija_id=O.id GROUP BY tehtava_id)),0) FROM Opiskelijat O;
Laske tulosten moodi (eli yleisin tulos). Jos vaihtoehtoja on useita, valitse niistä pienin.
Taulut
Tulokset
|
Haluttu tulos
5 |
SELECT tulos
FROM Tulokset
GROUP BY Tulokset.tulos
ORDER BY COUNT(*) DESC, tulos ASC LIMIT 1;
SELECT tulos FROM Tulokset GROUP BY tulos ORDER BY COUNT(*) DESC, tulos LIMIT 1;
Laske tulosten mediaani (eli keskimmäinen tulos, kun tulokset on järjestetty pienimmästä suurimpaan). Voit olettaa, että tulosten määrä on pariton.
Taulut
Tulokset
|
Haluttu tulos
5 |
SELECT Tulokset.tulos FROM Tulokset ORDER BY tulos LIMIT 1
OFFSET (SELECT COUNT(*) FROM Tulokset) / 2;
SELECT tulos FROM Tulokset ORDER BY tulos LIMIT 1 OFFSET (SELECT COUNT(*)/2 FROM Tulokset);
Laske tulosten mediaani (eli keskimmäinen tulos, kun tulokset on järjestetty pienimmästä suurimpaan). Jos tulosten määrä on parillinen, tulosta keskikohdan vasemmalla puolella oleva tulos.
Taulut
Tulokset
|
Haluttu tulos
3 |
SELECT x.tulos FROM (SELECT tulos, COUNT(1) OVER (partition BY 'A') AS TotalRows, Row_number()
OVER (ORDER BY Tulos aSC) AS AmountOrder FROM Tulokset ft) x
WHERE x.AmountOrder = ROUND(x.TotalRows / 2.0, 0);
SELECT tulos FROM Tulokset ORDER BY tulos LIMIT 1 OFFSET (SELECT (COUNT(*)-1)/2 FROM Tulokset);
Ilmoita jokaisesta junan vaunusta, montako matkustajaa siellä on.
Taulut
Vaunut
| Matkustajat
|
Haluttu tulos
vaunu1 | 2 |
vaunu2 | 1 |
vaunu3 | 0 |
vaunu4 | 3 |
SELECT Vaunut.nimi,
(
SELECT COUNT(Matkustajat.vaunu_id)
FROM Matkustajat
WHERE Matkustajat.vaunu_id = Vaunut.id
)
FROM Vaunut;
SELECT V.nimi, COUNT(M.id) FROM Vaunut V LEFT JOIN Matkustajat M ON V.id=M.vaunu_id GROUP BY V.id;
Ilmoita jokaisesta junan vaunusta, montako tyhjää paikkaa siellä on.
Taulut
Vaunut
| Matkustajat
|
Haluttu tulos
vaunu1 | 8 |
vaunu2 | 9 |
vaunu3 | 10 |
vaunu4 | 7 |
SELECT Vaunut.nimi, (Vaunut.paikat - (SELECT COUNT(Matkustajat.vaunu_id) FROM Matkustajat
WHERE Matkustajat.vaunu_id = Vaunut.id)) FROM Vaunut;
SELECT V.nimi, V.paikat-COUNT(M.id) FROM Vaunut V LEFT JOIN Matkustajat M ON V.id=M.vaunu_id GROUP BY V.id;
Laske, montako tyhjää paikkaa junassa on kaikkiaan.
Taulut
Vaunut
| Matkustajat
|
Haluttu tulos
34 |
SELECT SUM(Vaunut.paikat - (SELECT COUNT(Matkustajat.vaunu_id) FROM Matkustajat
WHERE Matkustajat.vaunu_id = Vaunut.id)) FROM Vaunut;
SELECT (SELECT SUM(paikat) FROM vaunut)-(SELECT COUNT(*) FROM Matkustajat);
Hae jokaisesta matkustajasta tieto, montako muuta matkustajaa on samassa vaunussa.
Taulut
Vaunut
| Matkustajat
|
Haluttu tulos
Uolevi | 1 |
Maija | 1 |
Kaaleppi | 0 |
Kotivalo | 2 |
Justiina | 2 |
Vihtori | 2 |
SELECT nimi, COUNT(n1) FROM Matkustajat LEFT JOIN (SELECT m1.nimi AS n1, m2.nimi AS n2
FROM Matkustajat m1, Matkustajat m2 WHERE (m1.vaunu_id=m2.vaunu_id AND m1.nimi != m2.nimi)) ON nimi=n1 GROUP BY n1 ORDER BY id;
SELECT A.nimi, COUNT(*)-1 FROM Matkustajat A, Matkustajat B WHERE A.vaunu_id=B.vaunu_id GROUP BY A.id;
Hae kaikki matkustajat, jotka ovat yksin vaunussaan.
Taulut
Vaunut
| Matkustajat
|
Haluttu tulos
Kaaleppi |
SELECT A.nimi FROM Matkustajat A, Matkustajat B WHERE A.vaunu_id=B.vaunu_id GROUP BY A.id HAVING COUNT(*)-1 = 0;
SELECT A.nimi FROM Matkustajat A, Matkustajat B WHERE A.vaunu_id=B.vaunu_id GROUP BY A.id HAVING COUNT(*)=1;
Hae kaikki vaunut, joissa ei ole yhtään matkustajaa.
Taulut
Vaunut
| Matkustajat
|
Haluttu tulos
vaunu3 |
SELECT Vaunut.nimi FROM Vaunut WHERE((SELECT COUNT(*) FROM Matkustajat
WHERE Vaunut.id = Matkustajat.vaunu_id) == 0);
SELECT V.nimi FROM Vaunut V LEFT JOIN Matkustajat M ON V.id=M.vaunu_id GROUP BY V.id HAVING COUNT(M.id)=0;
Laske, monellako tavalla voidaan valita kaksi matkustajaa, jotka ovat samassa vaunussa.
Taulut
Vaunut
| Matkustajat
|
Haluttu tulos
4 |
SELECT COUNT(*)/2 FROM (SELECT M1.nimi, M2.nimi FROM Matkustajat M1, Matkustajat
M2 WHERE M1.vaunu_id = M2.vaunu_id AND M1.nimi != M2.nimi);
SELECT COUNT(*) FROM Matkustajat A, Matkustajat B WHERE A.id<B.id AND A.vaunu_id=B.vaunu_id;
Hae jokaisesta paketista tuotteiden määrä ja eri tuotteiden määrä.
Taulut
Tuotteet
| Paketit
| Sisallot
|
Haluttu tulos
Mummon herkut | 2 | 2 |
Kolmikko | 3 | 1 |
SELECT asetelma.nimi, COUNT(asetelma.tuote_id), COUNT(DISTINCT asetelma.tuote_id)
FROM (Paketit
LEFT JOIN Sisallot
ON Paketit.id = Sisallot.paketti_id) asetelma
GROUP BY asetelma.nimi;
SELECT P.nimi, COUNT(S.tuote_id), COUNT(DISTINCT S.tuote_id) FROM Paketit P LEFT JOIN Sisallot S ON P.id=S.paketti_id GROUP BY P.id;
Hae jokaisesta tuotteesta tieto, montako kertaa se esiintyy enimmillään samassa paketissa.
Taulut
Tuotteet
| Paketit
| Sisallot
|
Haluttu tulos
selleri | 1 |
lanttu | 0 |
retiisi | 2 |
nauris | 1 |
SELECT Tuotteet.nimi, COALESCE((SELECT COUNT(*) tulos FROM Sisallot, Paketit WHERE
Sisallot.paketti_id = Paketit.id AND Sisallot.tuote_id = Tuotteet.id GROUP BY Sisallot.paketti_id ORDER BY Sisallot.paketti_id DESC), 0) FROM Tuotteet;
SELECT nimi, IFNULL((SELECT MAX(maara) FROM (SELECT COUNT(*) maara FROM Sisallot WHERE tuote_id=T.id GROUP BY paketti_id)),0) FROM Tuotteet T;
Muodosta tuloslista, jossa on sijaluku, pelaajan nimi ja paras tulos. Jos kahdella pelaajalla on sama tulos, nimet järjestetään aakkosjärjestykseen. Jokaisella pelaajalla on eri nimi ja ainakin yksi tulos.
Taulut
Pelaajat
| Tulokset
|
Haluttu tulos
1 | Kaaleppi | 500 |
2 | Maija | 350 |
3 | Uolevi | 350 |
SELECT RANK() OVER (ORDER BY Pelaajat.nimi ASC), Pelaajat.nimi, MAX(tulos) FROM Tulokset, Pelaajat WHERE pelaaja_id=Pelaajat.id GROUP BY Pelaajat.id;
SELECT ROW_NUMBER() OVER (ORDER BY MAX(T.tulos) DESC, P.nimi), P.nimi, MAX(T.tulos) FROM Pelaajat P, Tulokset T WHERE P.id=T.pelaaja_id GROUP BY P.id;
Pelaajat jaetaan joukkueisiin niin, että aakkosjärjestyksessä joka toinen pelaaja kuuluu joukkueeseen 1 ja 2. Ilmoita joukkuejako annetuille pelaajille.
Taulut
Pelaajat
|
Haluttu tulos
Kaaleppi | 1 |
Liisa | 2 |
Maija | 1 |
Uolevi | 2 |
SELECT nimi, ((ROW_NUMBER() OVER (ORDER BY nimi)) - 1) % 2 +1 AS rivi FROM Pelaajat ORDER BY nimi;
SELECT nimi, 2-(ROW_NUMBER() OVER (ORDER BY nimi))%2 FROM Pelaajat;
Pelaajat jaetaan joukkueisiin niin, että aakkosjärjestyksessä joka toinen pelaaja kuuluu joukkueeseen "Puput" ja "Kilit". Ilmoita joukkuejako annetuille pelaajille.
Taulut
Pelaajat
|
Haluttu tulos
Kaaleppi | Puput |
Liisa | Kilit |
Maija | Puput |
Uolevi | Kilit |
SELECT nimi, CASE ((ROW_NUMBER() OVER (ORDER BY nimi)) - 1) % 2 +1 WHEN 1 THEN 'Puput' WHEN 2 THEN 'Kilit' END FROM Pelaajat ORDER BY nimi;
SELECT nimi, CASE WHEN (ROW_NUMBER() OVER (ORDER BY nimi))%2=1 THEN 'Puput' ELSE 'Kilit' END FROM Pelaajat;