DROP TABLE jooksjad; CREATE TABLE jooksjad( telefon VARCHAR(20) PRIMARY KEY, eesnimi VARCHAR(20), synniaasta INT, aegsek INT ); INSERT INTO jooksjad VALUES('5612345', 'Kati', 2000, 260); INSERT INTO jooksjad VALUES('5611343', 'Mati', 2001, 280); INSERT INTO jooksjad VALUES('5533224', 'Mari', 1999, 279); INSERT INTO jooksjad VALUES('5533225', 'Martinus', 1999, 274); INSERT INTO jooksjad VALUES('5533224', 'Mart', 1999, 270); INSERT INTO jooksjad VALUES('5533223', 'Margus', 1993, 285); INSERT INTO jooksjad VALUES('5533222', 'Martin', 1993, 283); INSERT INTO jooksjad VALUES('5533226', 'Marju', 2000, 285); SELECT * FROM jooksjad; +---------+----------+------------+--------+ | telefon | eesnimi | synniaasta | aegsek | +---------+----------+------------+--------+ | 5533222 | Martin | 1993 | 283 | | 5533223 | Margus | 1993 | 285 | | 5533224 | Mari | 1999 | 279 | | 5533225 | Martinus | 1999 | 274 | | 5533226 | Marju | 2000 | 285 | | 5611343 | Mati | 2001 | 280 | | 5612345 | Kati | 2000 | 260 | +---------+----------+------------+--------+ SELECT MAX(synniaasta) FROM jooksjad; +-----------------+ | MAX(synniaasta) | +-----------------+ | 2001 | +-----------------+ SELECT * FROM jooksjad WHERE synniaasta=2001; DELETE FROM jooksjad WHERE telefon=5611343; UPDATE jooksjad SET aegsek=283 WHERE telefon=5533226; +---------+----------+------------+--------+ | telefon | eesnimi | synniaasta | aegsek | +---------+----------+------------+--------+ | 5533222 | Martin | 1993 | 283 | | 5533223 | Margus | 1993 | 285 | | 5533224 | Mari | 1999 | 279 | | 5533225 | Martinus | 1999 | 274 | | 5533226 | Marju | 2000 | 283 | | 5612345 | Kati | 2000 | 260 | +---------+----------+------------+--------+ SELECT * FROM jooksjad WHERE synniaasta=(SELECT MIN(synniaasta) FROM jooksjad); -- Kuvage kõik isikud, kes on keskmisest kiiremad SELECT * FROM jooksjad WHERE aegsek<(SELECT AVG(aegsek) FROM jooksjad); SELECT COUNT(*) FROM jooksjad; SET @kogus=(SELECT COUNT(*) FROM jooksjad); SELECT @kogus; SET @reanr=0; SELECT eesnimi, (SELECT @reanr:=@reanr+1) FROM jooksjad; SET @reanr=0; SELECT (SELECT @reanr:=@reanr+1) AS nr, eesnimi, aegsek FROM jooksjad; SET @kogus=(SELECT COUNT(*) FROM jooksjad); SET @reanr=0; SELECT (SELECT @reanr:=@reanr+1) AS nr, eesnimi, aegsek FROM jooksjad WHERE @reanr<@kogus/2 +------+---------+--------+ | nr | eesnimi | aegsek | +------+---------+--------+ | 1 | Martin | 283 | | 2 | Margus | 285 | | 3 | Mari | 279 | +------+---------+--------+ MariaDB [if17_jaagup_2]> SELECT * FROM jooksjad WHERE synniaasta IN (1993, 1999); +---------+----------+------------+--------+ | telefon | eesnimi | synniaasta | aegsek | +---------+----------+------------+--------+ | 5533222 | Martin | 1993 | 283 | | 5533223 | Margus | 1993 | 285 | | 5533224 | Mari | 1999 | 279 | | 5533225 | Martinus | 1999 | 274 | +---------+----------+------------+--------+ MariaDB [if17_jaagup_2]> SELECT synniaasta FROM jooksjad WHERE aegsek<280; +------------+ | synniaasta | +------------+ | 1999 | | 1999 | | 2000 | +------------+ -- Alampäring loetelu asendajana -- Nimed nendest aastakäikudest, kus vähemalt üks inimene on jooksnud aja alla 280 sekundi SELECT eesnimi FROM jooksjad WHERE synniaasta IN (SELECT synniaasta FROM jooksjad WHERE aegsek<280); +----------+ | eesnimi | +----------+ | Mari | | Martinus | | Marju | | Kati | +----------+ -- inimesed aastakäikudest, kus keegi pole jooksnud alla 280 sekundi SELECT eesnimi FROM jooksjad WHERE synniaasta NOT IN (SELECT synniaasta FROM jooksjad WHERE aegsek<280); +---------+ | eesnimi | +---------+ | Martin | | Margus | +---------+ -- Rekursiivne alampäring -- Iga aastakäigu kohta kõige kiirem(ad) jooksja(d) SELECT * FROM jooksjad AS kuvatavad WHERE aegsek= (SELECT MIN(aegsek) FROM jooksjad AS arvutusandmed WHERE arvutusandmed.synniaasta=kuvatavad.synniaasta); +---------+----------+------------+--------+ | telefon | eesnimi | synniaasta | aegsek | +---------+----------+------------+--------+ | 5533222 | Martin | 1993 | 283 | | 5533225 | Martinus | 1999 | 274 | | 5612345 | Kati | 2000 | 260 | +---------+----------+------------+--------+ -- Tabelit asendav alampäring SELECT synniaasta, COUNT(*) FROM jooksjad GROUP BY synniaasta; SELECT * FROM (SELECT synniaasta, COUNT(*) as aastakogus FROM jooksjad GROUP BY synniaasta) AS aastakogused; SELECT synniaasta, ROUND(100*aastakogus/(SELECT COUNT(*) FROM jooksjad)) AS protsent FROM (SELECT synniaasta, COUNT(*) as aastakogus FROM jooksjad GROUP BY synniaasta) AS aastakogused; +------------+----------+ | synniaasta | protsent | +------------+----------+ | 1993 | 33 | | 1999 | 33 | | 2000 | 33 | +------------+----------+