mysql> SELECT * FROM koolid LIMIT 5; +----+----------------------------------+--------------+---------------+---------+ | id | koolinimi | vald | maakond | opilasi | +----+----------------------------------+--------------+---------------+---------+ | 1 | Viimsi Keskkool | Viimsi vald | Harju maakond | 1599 | | 2 | Tartu Kivilinna Gümnaasium | Tartu linn | Tartu maakond | 1439 | | 3 | Tallinna 21. Kool | Tallinn linn | Harju maakond | 1167 | | 4 | Keila Kool | Keila linn | Harju maakond | 1133 | | 5 | Tallinna Linnamäe Vene Lütseum | Tallinn linn | Harju maakond | 1035 | +----+----------------------------------+--------------+---------------+---------+ 5 rows in set (0.00 sec) -- näidake iga maakonna kohta, mitu kooli on SELECT maakond, COUNT(*) FROM koolid GROUP BY maakond; mysql> SELECT maakond, COUNT(*) FROM koolid GROUP BY maakond; +----------------------+----------+ | maakond | COUNT(*) | +----------------------+----------+ | Harju maakond | 138 | | Hiiu maakond | 7 | | Ida-Viru maakond | 42 | | Jõgeva maakond | 25 | | Järva maakond | 21 | | Lääne maakond | 24 | | Lääne-Viru maakond | 40 | | Põlva maakond | 20 | | Pärnu maakond | 47 | | Rapla maakond | 21 | | Saare maakond | 19 | | Tartu maakond | 54 | | Valga maakond | 21 | | Viljandi maakond | 34 | | Võru maakond | 22 | +----------------------+----------+ 15 rows in set (0.00 sec) -- näidake iga maakonna kohta õpilaste arv SELECT SUM(opilasi), maakond FROM koolid GROUP BY maakond; +--------------+----------------------+ | SUM(opilasi) | maakond | +--------------+----------------------+ | 55056 | Harju maakond | | 918 | Hiiu maakond | | 14138 | Ida-Viru maakond | | 3394 | Jõgeva maakond | | 3296 | Järva maakond | | 2815 | Lääne maakond | | 6843 | Lääne-Viru maakond | | 2804 | Põlva maakond | | 9111 | Pärnu maakond | | 3672 | Rapla maakond | | 3187 | Saare maakond | | 17648 | Tartu maakond | | 3310 | Valga maakond | | 5089 | Viljandi maakond | | 3694 | Võru maakond | +--------------+----------------------+ -- SELECT opilasi, maakond FROM koolid GROUP BY maakond; - annab ühe suvalise kooli õpilased maakonnas -- Grupeerimise korral võib ilma agregaatfunktsioonita olla tulpade loetelus vaid grupeeritav tulp (maakond) +---------+----------------------+ | opilasi | maakond | -- siin vaid ühe kooli õpilaste arv +---------+----------------------+ | 1599 | Harju maakond | -- Parem mitte kasutada | 429 | Hiiu maakond | | 926 | Ida-Viru maakond | | 686 | Jõgeva maakond | | 569 | Järva maakond | | 559 | Lääne maakond | | 871 | Lääne-Viru maakond | | 716 | Põlva maakond | | 972 | Pärnu maakond | | 725 | Rapla maakond | | 886 | Saare maakond | | 1439 | Tartu maakond | | 850 | Valga maakond | | 727 | Viljandi maakond | | 845 | Võru maakond | +---------+----------------------+ -- Näidake iga maakonna kohta keskmine õpilaste arv koolis SELECT AVG(opilasi), maakond FROM koolid GROUP BY maakond; +--------------+----------------------+ | AVG(opilasi) | maakond | +--------------+----------------------+ | 398.9565 | Harju maakond | | 131.1429 | Hiiu maakond | | 336.6190 | Ida-Viru maakond | | 135.7600 | Jõgeva maakond | | 156.9524 | Järva maakond | | 117.2917 | Lääne maakond | | 171.0750 | Lääne-Viru maakond | | 140.2000 | Põlva maakond | | 193.8511 | Pärnu maakond | | 174.8571 | Rapla maakond | | 167.7368 | Saare maakond | | 326.8148 | Tartu maakond | | 157.6190 | Valga maakond | | 149.6765 | Viljandi maakond | | 167.9091 | Võru maakond | +--------------+----------------------+ SELECT SUM(opilasi) / COUNT(*) as keskmine, maakond FROM koolid GROUP BY maakond; +----------+----------------------+ | keskmine | maakond | +----------+----------------------+ | 398.9565 | Harju maakond | | 131.1429 | Hiiu maakond | | 336.6190 | Ida-Viru maakond | | 135.7600 | Jõgeva maakond | | 156.9524 | Järva maakond | | 117.2917 | Lääne maakond | | 171.0750 | Lääne-Viru maakond | | 140.2000 | Põlva maakond | | 193.8511 | Pärnu maakond | | 174.8571 | Rapla maakond | | 167.7368 | Saare maakond | | 326.8148 | Tartu maakond | | 157.6190 | Valga maakond | | 149.6765 | Viljandi maakond | | 167.9091 | Võru maakond | +----------+----------------------+ SELECT ROUND(SUM(opilasi) / COUNT(*), 1) as keskmine, maakond FROM koolid GROUP BY maakond; +----------+----------------------+ | keskmine | maakond | +----------+----------------------+ | 399.0 | Harju maakond | | 131.1 | Hiiu maakond | | 336.6 | Ida-Viru maakond | | 135.8 | Jõgeva maakond | | 157.0 | Järva maakond | | 117.3 | Lääne maakond | | 171.1 | Lääne-Viru maakond | | 140.2 | Põlva maakond | | 193.9 | Pärnu maakond | | 174.9 | Rapla maakond | | 167.7 | Saare maakond | | 326.8 | Tartu maakond | | 157.6 | Valga maakond | | 149.7 | Viljandi maakond | | 167.9 | Võru maakond | +----------+----------------------+ SELECT SUM(opilasi), maakond FROM koolid GROUP BY maakond ORDER BY SUM(opilasi); +--------------+----------------------+ | SUM(opilasi) | maakond | +--------------+----------------------+ | 918 | Hiiu maakond | | 2804 | Põlva maakond | | 2815 | Lääne maakond | | 3187 | Saare maakond | | 3296 | Järva maakond | | 3310 | Valga maakond | | 3394 | Jõgeva maakond | | 3672 | Rapla maakond | | 3694 | Võru maakond | | 5089 | Viljandi maakond | | 6843 | Lääne-Viru maakond | | 9111 | Pärnu maakond | | 14138 | Ida-Viru maakond | | 17648 | Tartu maakond | | 55056 | Harju maakond | +--------------+----------------------+ -- Järjestage maakonnad õpilaste arvu järgi kahanevas järjestuses SELECT SUM(opilasi), maakond FROM koolid GROUP BY maakond ORDER BY SUM(opilasi) DESC; +--------------+----------------------+ | SUM(opilasi) | maakond | +--------------+----------------------+ | 55056 | Harju maakond | | 17648 | Tartu maakond | | 14138 | Ida-Viru maakond | | 9111 | Pärnu maakond | | 6843 | Lääne-Viru maakond | | 5089 | Viljandi maakond | | 3694 | Võru maakond | | 3672 | Rapla maakond | | 3394 | Jõgeva maakond | | 3310 | Valga maakond | | 3296 | Järva maakond | | 3187 | Saare maakond | | 2815 | Lääne maakond | | 2804 | Põlva maakond | | 918 | Hiiu maakond | +--------------+----------------------+ -- Järjestage maakonnad õpilaste keskmise arvu järgi koolis kahanevas järjestuses SELECT AVG(opilasi), maakond FROM koolid GROUP BY maakond ORDER BY AVG(opilasi) DESC; +--------------+----------------------+ | AVG(opilasi) | maakond | +--------------+----------------------+ | 398.9565 | Harju maakond | | 336.6190 | Ida-Viru maakond | | 326.8148 | Tartu maakond | | 193.8511 | Pärnu maakond | | 174.8571 | Rapla maakond | | 171.0750 | Lääne-Viru maakond | | 167.9091 | Võru maakond | | 167.7368 | Saare maakond | | 157.6190 | Valga maakond | | 156.9524 | Järva maakond | | 149.6765 | Viljandi maakond | | 140.2000 | Põlva maakond | | 135.7600 | Jõgeva maakond | | 131.1429 | Hiiu maakond | | 117.2917 | Lääne maakond | +--------------+----------------------+ --- Koolid ja vallad SHOW TABLES; +-------------------------+ | Tables_in_if16_jaagup_3 | +-------------------------+ | koolid | | korstnapyhkimine | | seened | +-------------------------+ EXPLAIN koolid; mysql> EXPLAIN koolid; +-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | koolinimi | varchar(50) | YES | | NULL | | | vald | varchar(50) | YES | | NULL | | | maakond | varchar(50) | YES | | NULL | | | opilasi | int(11) | YES | | NULL | | +-----------+-------------+------+-----+---------+----------------+ SELECT vald, COUNT(*) FROM koolid GROUP BY vald ORDER BY COUNT(*) DESC LIMIT 5; +--------------------+----------+ | vald | COUNT(*) | +--------------------+----------+ | Tallinn linn | 80 | | Tartu linn | 26 | | Pärnu linn | 12 | | Narva linn | 11 | | Kohtla-Järve linn | 9 | +--------------------+----------+ CREATE TABLE koolevallas AS SELECT vald, COUNT(*) FROM koolid GROUP BY vald; mysql> CREATE TABLE koolevallas AS -> SELECT vald, COUNT(*) FROM koolid GROUP BY vald; Query OK, 219 rows affected (0.05 sec) Records: 219 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM koolevallas; +---------------------+----------+ | vald | COUNT(*) | +---------------------+----------+ | Abja vald | 1 | | Aegviidu vald | 1 | | Ahja vald | 1 | | Alatskivi vald | 1 | | Albu vald | 2 | | Ambla vald | 2 | DROP TABLE koolevallas; mysql> DROP TABLE koolevallas; Query OK, 0 rows affected (0.00 sec) DROP TABLE IF EXISTS koolevallas; CREATE TABLE koolevallas AS SELECT vald, COUNT(*) AS kogus FROM koolid GROUP BY vald; -- näidake, millise koolide arvuga vallas on kui mitu valda SELECT kogus AS koole_valla_kohta, COUNT(*) AS valdade_arv FROM koolevallas GROUP BY koole_valla_kohta; +-------------------+-------------+ | koole_valla_kohta | valdade_arv | +-------------------+-------------+ | 1 | 111 | | 2 | 58 | | 3 | 25 | | 4 | 12 | | 5 | 3 | | 6 | 4 | | 8 | 1 | | 9 | 1 | | 11 | 1 | | 12 | 1 | | 26 | 1 | | 80 | 1 | +-------------------+-------------+ -- Ühe päringuga, ilma vahetabelita SELECT vald, koole_valla_kohta FROM (SELECT vald, COUNT(*) AS koole_valla_kohta FROM koolid GROUP BY vald) AS vahetabel WHERE koole_valla_kohta > 10; +--------------+-------------------+ | vald | koole_valla_kohta | +--------------+-------------------+ | Narva linn | 11 | | Pärnu linn | 12 | | Tallinn linn | 80 | | Tartu linn | 26 | +--------------+-------------------+ SELECT koole_valla_kohta, COUNT(*) AS valdade_arv FROM (SELECT vald, COUNT(*) AS koole_valla_kohta FROM koolid GROUP BY vald) AS vahetabel GROUP BY koole_valla_kohta; +-------------------+-------------+ | koole_valla_kohta | valdade_arv | +-------------------+-------------+ | 1 | 111 | | 2 | 58 | | 3 | 25 | | 4 | 12 | | 5 | 3 | | 6 | 4 | | 8 | 1 | | 9 | 1 | | 11 | 1 | | 12 | 1 | | 26 | 1 | | 80 | 1 | +-------------------+-------------+ SELECT SUM(opilasi), maakond FROM koolid GROUP BY maakond ORDER BY SUM(opilasi); +--------------+----------------------+ | SUM(opilasi) | maakond | +--------------+----------------------+ | 918 | Hiiu maakond | | 2804 | Põlva maakond | | 2815 | Lääne maakond | | 3187 | Saare maakond | | 3296 | Järva maakond | | 3310 | Valga maakond | | 3394 | Jõgeva maakond | | 3672 | Rapla maakond | | 3694 | Võru maakond | | 5089 | Viljandi maakond | | 6843 | Lääne-Viru maakond | | 9111 | Pärnu maakond | | 14138 | Ida-Viru maakond | | 17648 | Tartu maakond | | 55056 | Harju maakond | +--------------+----------------------+ CREATE TABLE opilasi_maakonnas AS SELECT ROUND(SUM(opilasi)/10000)*10000 AS opilasi_kymmetuhat, maakond FROM koolid GROUP BY maakond ORDER BY opilasi_kymmetuhat DESC; +--------------------+----------------------+ | opilasi_kymmetuhat | maakond | +--------------------+----------------------+ | 60000 | Harju maakond | | 20000 | Tartu maakond | | 10000 | Viljandi maakond | | 10000 | Lääne-Viru maakond | | 10000 | Pärnu maakond | | 10000 | Ida-Viru maakond | | 0 | Hiiu maakond | | 0 | Võru maakond | | 0 | Jõgeva maakond | | 0 | Saare maakond | | 0 | Järva maakond | | 0 | Rapla maakond | | 0 | Lääne maakond | | 0 | Valga maakond | | 0 | Põlva maakond | +--------------------+----------------------+ -- näidake kümne tuhande õpilase kaupa ümardatult, mitu vastava õpilaste kogusega maakonda on SELECT opilasi_kymmetuhat, COUNT(*) AS maakondi_ymardatud_kogusega FROM (SELECT ROUND(SUM(opilasi)/10000)*10000 AS opilasi_kymmetuhat, maakond FROM koolid GROUP BY maakond ) AS vahetabel GROUP BY opilasi_kymmetuhat; +--------------------+-----------------------------+ | opilasi_kymmetuhat | maakondi_ymardatud_kogusega | +--------------------+-----------------------------+ | 0 | 9 | | 10000 | 4 | | 20000 | 1 | | 60000 | 1 | +--------------------+-----------------------------+ --- ilmaandmed http://www.tlu.ee/~jaagup/andmed/ilm/harkutund.txt CREATE TABLE harkuilm ( kuu INT, paev INT, kell TIME, sademedmm FLOAT, niiskus INT, tempkesk FLOAT, tempmin FLOAT, tempmax FLOAT, tuulesuund INT, tuulekiirus FLOAT, tuulemaxkiirus FLOAT );