{"id":15,"date":"2024-04-04T06:16:28","date_gmt":"2024-04-04T03:16:28","guid":{"rendered":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/keerulisemad-mitut-tabelit-uhendavad-paringud\/"},"modified":"2024-04-04T06:16:44","modified_gmt":"2024-04-04T03:16:44","slug":"keerulisemad-mitut-tabelit-uhendavad-paringud","status":"publish","type":"page","link":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/keerulisemad-mitut-tabelit-uhendavad-paringud\/","title":{"rendered":"Keerulisemad p\u00e4ringud koos harjutustega"},"content":{"rendered":"<p>\n\t\u00a0\n<\/p>\n<p>\n\t<span>J\u00e4rgneva materjaliga t\u00f6\u00f6tamiseks on vaja, et oleks l\u00f5puni valmis tehtud andmebaas Randaja (vt Mitmetabelilise andmebaasi loomine), seal peavad olema k\u00f5ik andmed, samuti lisatud v\u00e4lisv\u00f5tmed. P\u00e4ringute tegemisel on abiks DB Designeris tehtud <\/span><a data-fid=\"55607\" href=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/randaj_mudel_uuem.png\">andmemudel<\/a><span>, mille abil saab kiirelt \u00fclevaate, millised v\u00e4ljad, millises tabelis on ja milliste v\u00e4ljade kaudu on tabelid omavahel seotud. <\/span>\n<\/p>\n<p>\n\t<b>Kuidas korraga mitmest tabelist andmeid p\u00e4rida?<\/b>\n<\/p>\n<p>\n\t\u00dchest tabelist saame k\u00f5ik tabelis olevad andmed k\u00e4tte nii (Isiku tabeli n\u00e4itel):\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">SELECT<\/span><\/strong> * <span style=\"color:#800080\"><strong>FROM<\/strong><\/span> \u201cIsik\u201d;\n<\/p>\n<p>\n\tProovime samamoodi korraga kahest tabelist andmei p\u00e4rida:\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT <\/strong><\/span>* <span style=\"color:#800080\"><strong>FROM <\/strong><\/span>\u201cIsik\u201d, \u201cLeibkond\u201d;\n<\/p>\n<p>\n\tSiis pannakse kahe tabeli veerud k\u00f5rvuti ja korratakse esimese tabeli sisu iga veeru korral teisest tabelist. See ei ole k\u00f5ige m\u00f5ttekam p\u00e4ring. \u00a0\n<\/p>\n<p>\n\tLisaks tabelite nimetamisele FROM lauses on vaja ka \u00f6elda, millised tabelite v\u00e4ljad peavad omavahel vastavuses olema. Seda saab teha WHERE tingimuslauses, kus filtreeritakse read, mis vastavad tingimustele. Siin ongi abi andmemudelist, kust saame meelde tuletada, et tabeli Leibkond tunnus leibkond_id on v\u00e4lisv\u00f5tmeks tabelis Isik, kus samu v\u00e4\u00e4rtusi sisaldava tunnuse nimeks on leibkond. Nende kaudu saamegi tabelid siduda.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT <\/strong><\/span>* <span style=\"color:#800080\"><strong>FROM<\/strong><\/span> \u201cIsik\u201d, \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong><\/span> \u201cIsik\u201d.leibkond = \u201cLeibkond\u201d.leibkond_id;\n<\/p>\n<p>\n\t\u00dcle mitme tabeli p\u00e4ringuid tehes tuleb tabelid omavahel siduda \u00f6eldes, millised kahe tabeli v\u00e4ljad on vastavuses (sisaldavad samu v\u00e4\u00e4rtusi). Nn v\u00f5tmev\u00e4ljad, mille v\u00e4lisv\u00f5tmeid lisades \u00e4ra sidusime.\n<\/p>\n<p>\n\tProovi need kaks eelmist p\u00e4ringut l\u00e4bi. Viimase p\u00e4ringu tulemusena v\u00e4ljastatakse k\u00f5ik andmed, mis on tabelites \u201cIsik\u201d ja \u201cLeibkond\u201d, aga andmed on omavahel korrektselt seotud. Tuleb t\u00e4hele panna vaid seda, et kui vara v\u00e4\u00e4rtus on meie andmetes antud leibkonna kohta summeeritult, siis selles suures tabelis kuvatakse leibkonna vara v\u00e4\u00e4rtust iga leibkonna liikme juures, seda aga tuleb t\u00f5lgendada kui selle leibkonna vara koguv\u00e4\u00e4rtust, kuhu isik kuulub, mitte isikliku varanduse v\u00e4\u00e4rtusena.\u00a0\n<\/p>\n<p>\n\t\u00dclds\u00fcntaks:\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong><\/span> tabel1.veerunimi1, tabel1.veerunimi2, tabel2.veerunimi3 <span style=\"color:#800080\"><strong>FROM <\/strong><\/span>tabel1, tabel2\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong><\/span> tabel1.veerunimi = tabel2.veerunimi;\n<\/p>\n<p>\n\tWHERE lauses veerunimi t\u00e4histab omavahel v\u00e4lisv\u00f5tmetega seotud v\u00e4lju. \u00dche tabeli puhul on tegu primaarv\u00f5tmega, teise tabeli puhul v\u00e4lisv\u00f5tmega.\n<\/p>\n<p>\n\t<i>SQL keeles on tabelite \u00fchendamiseks olemas ka JOIN konstruktsioon. JOIN lausete abil saab erinevaid tabeleid kombineerida suhteliselt sarnaselt nagu FROM \u2026 WHERE konstruktsiooniga. FROM konstruktsiooni nimetatakse ka vaikimisi JOIN (implicit JOIN), see on lihtsaim viis andmeid \u00fchendada ja t\u00e4iesti piisav ka palju suuremate tabelite puhul kui meie oma. On erinevaid arvamusi, kas FROM\u2026WHERE laused on loetavamad v\u00f5i on JOIN laused loetavamad. <\/i>\n<\/p>\n<p>\n\t<i>On ka rida v\u00e4ljendatud JOIN (explicit JOIN) variante, nagu CROSS JOIN, INNER JOIN (kui ei ole t\u00e4psustatud, t\u00e4hendab JOIN INNER JOIN), LEFT OUTER JOIN, RIGHT OUTER JOIN,<br>FULL OUTER JOIN.<\/i>\n<\/p>\n<p>\n\t<em>\u00dclds\u00fcntaks:<\/em>\n<\/p>\n<p>\n\t<em><span style=\"color:#800080\"><strong>SELECT<\/strong><\/span> table1.column1, table2.column2\u2026<\/em>\n<\/p>\n<p>\n\t<em><span style=\"color:#800080\"><strong>FROM<\/strong><\/span> table1<\/em>\n<\/p>\n<p>\n\t<em><span style=\"color:#800080\"><strong>JOIN<\/strong><\/span> table2<\/em>\n<\/p>\n<p>\n\t<em><span style=\"color:#800080\"><strong>ON<\/strong><\/span> table1.common_filed = table2.common_field;<\/em>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tL\u00e4heme oma andmebaasiga edasi. V\u00f5tame n\u00fc\u00fcd andmebaasist v\u00e4lja iga leibkonna vara v\u00e4\u00e4rtuse koos leibkonnapea nimega.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong><\/span> eesnimi, perenimi, vara_vaartus<span style=\"color:#800080\"><strong> FROM<\/strong><\/span> \u201cIsik\u201d, \u201cLeibkond\u201d <span style=\"color:#800080\"><strong>WHERE<\/strong><\/span> suhe_leibkonnapeaga= \u2018leibkonnapea\u2019\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">AND <\/span><\/strong>\u201cLeibkond\u201d.leibkond_id = \u201cIsik\u201d.leibkond;\n<\/p>\n<p>\n\tKui me selles p\u00e4ringus ei m\u00e4rgiks \u00e4ra, et suhe_leibkonnapeaga = \u2019leibkonnapea\u2019, saaksime tulemuseks taas k\u00f5ik leibkonna liikmed ja k\u00f5igi nende juures kuvataks leibkonna vara v\u00e4\u00e4rtust.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<img loading=\"lazy\" decoding=\"async\" width=\"492\" height=\"465\" class=\"alignnone wp-image-75\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem1.png\" title=\"keerulisem1.png\" alt=\"keerulisem1.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem1.png 492w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem1-300x284.png 300w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\">\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<img loading=\"lazy\" decoding=\"async\" width=\"115\" height=\"126\" class=\"alignnone wp-image-98\" style=\"width: 61px;height: 61px;margin-left: 5px;margin-right: 5px;float: left\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall.png\" title=\"pall.png\" alt=\"\u00dclesanne 1\"><strong><span style=\"color:#4472c4\">\u00dc<\/span><span style=\"color:#4472c4\">LESANNE 1<\/span><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL p\u00e4ring, mis leiab ainult perepea Henrik Kartofeli vara v\u00e4\u00e4rtuse ja kuvab ka tema eesnime ja perenime. <i>Siin ja j\u00e4rgmiste \u00fclesannete juures on \u00e4ra toodud tabel, mille PostgreSQL v\u00e4ljastab \u00f5ige SQL lause abil. Veergude j\u00e4rjekord ei pea lahenduses sama olema.<\/i> \u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<img loading=\"lazy\" decoding=\"async\" width=\"485\" height=\"64\" class=\"alignnone wp-image-77\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem2.png\" title=\"keerulisem2.png\" alt=\"keerulisem2.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem2.png 485w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem2-300x40.png 300w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\">\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<b>V\u00e4ljar\u00e4ndajate keskmine vanus<\/b>\n<\/p>\n<p>\n\tLeiame v\u00e4ljar\u00e4ndajate keskmise vanuse. Tabelis \u201cIsik\u201d on v\u00e4ljad vanus ja s\u00fcnniaeg. Erinevatest allikatest andmeid lisades peab arvestama, et need v\u00f5ivad olla erineval kujul, n\u00e4iteks v\u00f5ivad inimeste kohta olla sisestatud s\u00fcnniajad v\u00f5i vanused, nagu praegusel juhul ongi.\u00a0 Andmebaasi disainima asudes peab otsustama, kas andmed \u00fchtlustada juba sisestamise k\u00e4igus, siis tulnuks k\u00f5igi puhul, kellel oli teada s\u00fcnniaeg, mitte vanus, arvutada vanus ja lisada see andmebaasi ja piirduda ainult \u00fche, vanuse lahtriga. Samas on s\u00fcnniaeg t\u00e4psem ja sellest infost oleks kahju loobuda, kui see on meil olemas ja v\u00f5iksime selle h\u00f5lpsalt lisada. Seep\u00e4rast on m\u00f5istlik teha alguses kaks erinevat v\u00e4lja.\n<\/p>\n<p>\n\tAga kui tahame leida keskmist vanust v\u00f5i leibkonna keskmist vanust, siis oleks meil j\u00e4lle vaja, et see info oleks esitatud \u00fchetaoliselt.\n<\/p>\n<p>\n\tSaame luua oma andmebaasis uue v\u00e4lja ja seal andmed \u00fchtlustada, alles j\u00e4\u00e4vad ka m\u00f5lemad algsed v\u00e4ljad. Nii on lihtsam sisestada ja olenevalt andmetest, v\u00f5ib olla lihtsam p\u00e4rast kasutada samu andmeid uute k\u00fcsimuste k\u00fcsimiseks, kui andmed ei ole vastavalt esialgsetele k\u00fcsimustele liigselt normaliseeritud.\n<\/p>\n<p>\n\tSelleks, et saaksime leida v\u00e4ljar\u00e4ndajate keskmise vanuse, peame k\u00f5igepealt arvutama vanused ka nende isikute jaoks, kelle kohta on andmebaasis olemas s\u00fcnniaeg.\n<\/p>\n<p>\n\tVaatame k\u00f5igepealt olemasolevad andmed \u00fcle, toome tabelitest \u201cIsik\u201d ja \u201cLeibkond\u201d kokku v\u00e4ljad, millega edasi toimetama peame ja sorteerime tabeli algusesse v\u00e4ljad, kus on teada synniaeg, aga pole vanust.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong><\/span> perenimi, vanus, synniaeg, ymberkirjutus <span style=\"color:#800080\"><strong>FROM<\/strong><\/span> \u201cIsik\u201d, \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong><\/span> \u201cIsik\u201d.leibkond = \u201cLeibkond\u201d.leibkond_id\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>ORDER BY<\/strong> <\/span>synniaeg;\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<img loading=\"lazy\" decoding=\"async\" width=\"506\" height=\"317\" class=\"alignnone wp-image-76\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem3.png\" title=\"keerulisem3.png\" alt=\"keerulisem3.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem3.png 506w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem3-300x188.png 300w\" sizes=\"auto, (max-width: 506px) 100vw, 506px\">\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tSiit on h\u00e4sti n\u00e4ha, et k\u00fcsimus on teisis\u00f5nu leida, kui vanad olid v\u00e4ljar\u00e4ndajad \u00fcmberkirjutamise ajal. Tabelis \u201cLeibkond\u201d on v\u00e4li ymberkirjutus, sellest tuleks lahutada tabelis \u201cIsik\u201d asuval v\u00e4ljal synniaeg olev info. Kuna meie andmetes ei ole kirjas, mis kuus on \u00fcmberkirjutamine toimunud, siis v\u00f5tame vanuse arvutamiseks s\u00fcnniajast v\u00e4lja ainult aasta ja teeme lahutustehte. Saadud vanuseid l\u00e4heb vaja keskmise vanuse arvutamiseks, seep\u00e4rast teeme uue v\u00e4lja arvutatud_vanused ja paneme arvutatava info sinna.\n<\/p>\n<p>\n\tTeeme uue v\u00e4lja:\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">ALTER TABLE<\/span><\/strong> \u201cIsik\u201d <span style=\"color:#800080\"><strong>ADD COLUMN<\/strong><\/span> arvutatud_vanused numeric;\n<\/p>\n<p>\n\tN\u00fc\u00fcd v\u00f5tame Leibkonna tabelist \u00fcmberkirjutusaja, lahutame sellest s\u00fcnniaja (v\u00f5tame synniaja v\u00e4ljalt ainult aasta k\u00e4suga <span style=\"color:#800080\"><strong>SELECT<\/strong><\/span> date_part(\u2018year\u2019, synniaeg) ja paneme leitud vanused uuele vastloodud v\u00e4ljale arvutatud_vanused\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">UPDATE<\/span><\/strong> \u201cIsik\u201d\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">SET<\/span><\/strong> arvutatud_vanused = ymberkirjutus \u2013 (<strong><span style=\"color:#800080\">SELECT<\/span><\/strong> date_part (\u2018year\u2019, synniaeg))\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">FROM<\/span><\/strong> \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">WHERE<\/span><\/strong> \u201cIsik\u201d.leibkond=\u201dLeibkond\u201d.leibkond_id;\n<\/p>\n<p>\n\tKontrollime, kas sai nii nagu tahtsime.\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">SELECT<\/span><\/strong> perenimi, eesnimi, vanus, synniaeg, ymberkirjutus, arvutatud_vanused FROM \u201cIsik\u201d, \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">WHERE<\/span><\/strong> \u201cIsik\u201d.leibkond=\u201dLeibkond\u201d.leibkond_id\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">ORDER BY <\/span><\/strong>arvutatud_vanused;\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<img loading=\"lazy\" decoding=\"async\" width=\"830\" height=\"314\" class=\"alignnone wp-image-79\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem4.png\" title=\"keerulisem4.png\" alt=\"keerulisem4.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem4.png 830w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem4-300x113.png 300w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem4-768x291.png 768w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\">\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tTerviklikkuse jaoks kopeerime v\u00e4ljale arvutatud_vanused ka \u00fclej\u00e4\u00e4nud vanused v\u00e4ljalt vanused, et seda veergu siis\u00a0 kasutada keskmise vanuse arutamiseks.\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">UPDATE <\/span><\/strong>\u201cIsik\u201d\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">SET <\/span><\/strong> arvutatud_vanused= vanus\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">FROM <\/span><\/strong>\u201cLeibkond\u201d\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">WHERE<\/span><\/strong> arvutatud_vanused<strong> <\/strong>is null <span style=\"color:#800080\"><strong>AND<\/strong><\/span> \u201cIsik\u201d.leibkond = \u201cLeibkond\u201d.leibkond_id;\n<\/p>\n<p>\n\t\u00c4ra seda praegu j\u00e4rele proovi, aga kui midagi l\u00e4heb valesti, saab veergu, nt veergu arvutatud_vanused kustutada nii:\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">ALTER TABLE<\/span><\/strong> \u201cIsik\u201d <strong><span style=\"color:#800080\">DROP COLUMN <\/span><\/strong> arvutatud_vanused;\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tKontrollime, kas k\u00f5igil isikutel on v\u00e4ljal arvutatud_vanused vanus olemas ja kui ei ole, siis miks see nii olla v\u00f5ib, ehk p\u00e4rime andmebaasist k\u00f5ik asjasse puutuvad v\u00e4ljad tabelitest Isik ja Leibkond ja inimese nime, kellel vanust pole:\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">SELECT<\/span><\/strong><strong><span style=\"color:#800080\"> <\/span><\/strong>perenimi, eesnimi, vanus, synniaeg, ymberkirjutus, arvutatud_vanused <strong><span style=\"color:#800080\">FROM<\/span><\/strong> \u201cIsik\u201d, \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span>arvutatud_vanused is null <span style=\"color:#800080\"><strong>AND<\/strong><\/span> \u201cIsik\u201d.leibkond = \u201cLeibkond\u201d.leibkond_id\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"67\" class=\"alignnone wp-image-78\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem5.png\" title=\"keerulisem5.png\" alt=\"keerulisem5.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem5.png 820w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem5-300x25.png 300w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem5-768x63.png 768w\" sizes=\"auto, (max-width: 820px) 100vw, 820px\"><\/strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tSelgub, et Jevdokia Tilanil pole m\u00e4rgitud ei vanust ega synniaega ja seep\u00e4rast ei ole tal ka vanust lahtris arvutatud_vanused.\n<\/p>\n<p>\n\tTahame allikast j\u00e4rele vaadata, kas tal ikka t\u00f5esti ei olnud vanust ega s\u00fcnniaega v\u00f5i on j\u00e4\u00e4nud see lihtsalt v\u00e4lja m\u00e4rkimata. Otsime viite, see t\u00e4hendab, et meil l\u00e4heb vaja lisaks tabelitele Isik ja Leibkond andmeid veel tabelitest Leidumine ja Arhiiviallikas:\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><span style=\"color:#800080\">SELECT <\/span><\/strong><\/strong><\/strong><\/strong><\/strong>perenimi, eesnimi, nimetus, viide, lehed<strong><strong><strong><strong><strong><span style=\"color:#800080\"> <strong><span style=\"color:#800080\">FROM <\/span><\/strong><\/span><\/strong><\/strong><\/strong><\/strong><\/strong>\u201cIsik\u201d, \u201cLeibkond\u201d, \u201cLeidumine\u201d, \u201cArhiiviallikas\u201d<strong><strong><strong><strong><strong><span style=\"color:#800080\"><strong><span style=\"color:#800080\"> <\/span><\/strong><\/span><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">WHERE <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>perenimi = \u2018Tilan\u2019<strong><strong><strong><strong><strong><strong><strong> <span style=\"color:#800080\"><strong><span style=\"color:#800080\"> AND <\/span><\/strong><\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>eesnimi = \u2018Jevdokia\u2019\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">AND <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\u201cIsik\u201d.leibkond = \u201cLeibkond\u201d.leibkond_id\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">AND <\/span><\/strong>\u201cLeibkond\u201d.leibkond_id = \u201cLeidumine\u201d.leibkond\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">AND <\/span><\/strong>\u201cLeidumine\u201d.allikas = \u201cArhiiviallikas\u201d.allikas_id;\n<\/p>\n<p>\n\tSelgituseks: me ei kuva siin andmeid tabelist Leibkond, aga p\u00e4ringu peab kirjutama selle kaudu, sest tabelid Isik ja Arhiiviallikas on omavahel seotud tabelite Leidumine ja Leibkond kaudu. \u00dchtlasi tasub siin meelde j\u00e4tta, et kui on tabelid A, B ja C, siis kui v\u00e4lisv\u00f5tmega on seotud A ja B ja B ja C, siis on seotud ka A ja C. Mudelit tehes ei pea seega k\u00f5iki tabeleid omavahel vahetult siduma.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><img loading=\"lazy\" decoding=\"async\" width=\"898\" height=\"64\" class=\"alignnone wp-image-80\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem6.png\" title=\"keerulisem6.png\" alt=\"keerulisem6.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem6.png 898w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem6-300x21.png 300w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem6-768x55.png 768w\" sizes=\"auto, (max-width: 898px) 100vw, 898px\"> <\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tSaime viite ja kontrollime \u00fcle, s\u00e4iliku EAA.68.1.124 lehelt 3 selgub, et vanus on tegelikult t\u00e4itsa olemas, Jevdokia on 35-aastane.\n<\/p>\n<p>\n\tLisame selle info nii v\u00e4ljale vanus kui arvutatud_vanused.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>UPDATE<\/strong> <\/span>\u201cIsik\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SET<\/strong> <\/span>vanus=35\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span>perenimi = \u2019Tilan<span style=\"color:#800080\">\u2019 <span style=\"color:#800080\"><strong>AND<\/strong> <\/span><\/span>eesnimi = \u2019Jevdokia\u2019;\n<\/p>\n<p>\n\tSamamoodi saab ka andmeid parandada, kui seda on vaja, eelmine v\u00e4\u00e4rtus kirjutatakse \u00fcle. Meil ongi vaja parandada Jaan J\u00f5ggi suhe_leibkonnapeaga, seal on kirjaviga.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>UPDATE<\/strong> <\/span>\u201cIsik\u201d\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">SET <\/span><\/strong>suhe_leibkonnapeaga = \u2018leibkonnapea\u2019\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span>perenimi = \u2018J\u00f5ggi\u2019 <span style=\"color:#800080\"><span style=\"color:#800080\"><strong> AND<\/strong> <\/span><\/span>eesnimi = \u2018Jaan\u2019;\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"111\" height=\"110\" class=\"alignnone wp-image-99\" style=\"width: 61px;height: 61px;float: left;margin-left: 5px;margin-right: 5px\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall2.png\" title=\"pall2.png\" alt=\"pall2.png\"><strong><span style=\"color:#4472c4\">\u00dcLESANNE 2 <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL lause, mis lisaks Jevdokia vanuse ka veergu arvutatud_vanused, sest selle p\u00f5hjal arvutame keskmise vanuse.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tJ\u00f5uame n\u00fc\u00fcd tagasi keskmise vanuse arvutamise juurde.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"95\" height=\"99\" class=\"alignnone wp-image-103\" style=\"width: 61px;margin-left: 5px;margin-right: 5px;height: 61px;float: left\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall3.png\" title=\"pall3.png\" alt=\"pall3.png\"><strong><span style=\"color:#4472c4\">\u00dcLESANNE 3 <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL lause, mis arvutaks k\u00f5igi v\u00e4ljar\u00e4ndajate keskmise vanuse.\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <img loading=\"lazy\" decoding=\"async\" width=\"161\" height=\"61\" class=\"alignnone wp-image-81\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem7.png\" title=\"keerulisem7.png\" alt=\"keerulisem7.png\"> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"89\" height=\"88\" class=\"alignnone wp-image-102\" style=\"width: 61px;height: 61px;float: left;margin-left: 5px;margin-right: 5px\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall4.png\" title=\"pall4.png\" alt=\"pall4.png\"><strong><span style=\"color:#4472c4\">\u00dcLESANNE 4<\/span> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL lause, mis \u00fcmardaks eelmise tulemuse t\u00e4isarvuks.\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"162\" height=\"65\" class=\"alignnone wp-image-83\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem8.png\" title=\"keerulisem8.png\" alt=\"keerulisem8.png\"> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0 N\u00fc\u00fcd tahaksime leida ka iga leibkonna liikmete keskmise vanuse. Selleks saab kasutada mingi tunnuse asemel grupeerimise lauset.\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<span style=\"font-size:16px\"><strong>GROUP by laused<\/strong><\/span><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\"> <\/span><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tGROUP BY lauset saab kasutada p\u00e4rast FROM v\u00f5i WHERE osa. GROUP BY saab toimuda kas SQL lausele v\u00f5i m\u00f5nele veerule. Ei kasutata alati agregeeriva funktsiooniga v\u00f5ib ka lihtsalt kasutada esitamaks k\u00f5iki ridu \u00fchekordselt, sarnane DISTINCT lausega.\n<\/p>\n<p>\n\tNt kui tahame teada, milliseid vara v\u00e4\u00e4rtusi \u00fcldse esineb, siis\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">SELECT<\/span> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>vara_vaartus<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <span style=\"color:#800080\">FROM<\/span> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\u201cLeibkond\u201d\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">GROUP by <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>vara_vaartus; <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"151\" height=\"462\" class=\"alignnone wp-image-82\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem9.png\" title=\"keerulisem9.png\" alt=\"keerulisem9.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem9.png 151w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem9-98x300.png 98w\" sizes=\"auto, (max-width: 151px) 100vw, 151px\"> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tAga rohkem on GROUP BY lausest kasu kui kasutada koos agregeerivate matemaatiliste funktsioonidega (Vt lihtsamate SQL p\u00e4ringute materjali). <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"90\" height=\"89\" class=\"alignnone wp-image-101\" style=\"width: 61px;height: 61px;margin-left: 5px;margin-right: 5px;float: left\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall5.png\" title=\"pall5.png\" alt=\"pall5.png\"><strong><span style=\"color:#4472c4\">\u00dcLESANNE 5<\/span><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL lause, <span>mis leiab leibkondade suurused ja reastab leibkonnad suuruse j\u00e4rgi. Vihje: teame, et tabeli Isik veerus leibkond sisaldub iga leibkonna id ja saame leida kui mitmel inimesel on sama leibkonna id ja sorteerime suuremast v\u00e4iksema suunas.<\/span><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"279\" height=\"464\" class=\"alignnone wp-image-85\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem10.png\" title=\"keerulisem10.png\" alt=\"keerulisem10.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem10.png 279w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem10-180x300.png 180w\" sizes=\"auto, (max-width: 279px) 100vw, 279px\"> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00dcldistatult s\u00fcntaks:\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong><\/span> veerg1, veerg2, agregeeriv funktsioon(veerg3)\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>FROM <\/strong><\/span>tabel\n<\/p>\n<p>\n\t<strong><span style=\"color:#800080\">GROUP BY<\/span><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>veerg1, veerg2;\n<\/p>\n<p>\n\tKoos GROUP BY lausega kasutatakse sageli HAVING lauset, et filtreerida grupeeritud ridu, mis ei vasta tingimusele. WHERE lausest eristab HAVING lauset see, et WHERE seab tingimused \u00fcksikutele ridadele enne GROUP BY-d.\n<\/p>\n<p>\n\tLeiame leibkonnad, mis on suuremad kui viis liiget. Oluline on j\u00e4rjekord, sorteerimisk\u00e4sk peab olema k\u00f5ige viimane.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">SELECT <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>perenimi,<span style=\"color:#800080\"> <\/span><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">COUNT <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>(leibkond) <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">FROM <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\u201cIsik\u201d <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">GROUP <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>by perenimi, leibkond <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">HAVING COUNT <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>(leibkond) &gt; 5 <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\">ORDER BY COUNT <\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>(leibkond) <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><span style=\"color:#800080\"><strong><span style=\"color:#800080\">DESC; <\/span><\/strong><\/span> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"268\" height=\"138\" class=\"alignnone wp-image-84\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem11.png\" title=\"keerulisem11.png\" alt=\"keerulisem11.png\"> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<span>HAVING lauset saab kasutada ka ilma GROUP by lauseta<\/span>.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"94\" height=\"89\" class=\"alignnone wp-image-100\" style=\"width: 64px;height: 61px;margin-left: 5px;margin-right: 5px;float: left\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall6.png\" title=\"pall6.png\" alt=\"pall6.png\"><span style=\"color:#4472c4\">\u00dc<\/span><span style=\"color:#4472c4\">LESANNE 6<\/span> <\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL k\u00e4sk, mis leiab \u00fcmardatud keskmise vanus igas leibkonnas, ja kuvab keskmise vanuse koos leibkonna perenimega (meie andmetes leibkonnaliikmete perenimed kattuvad leibkonnapea nimega): <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"460\" class=\"alignnone wp-image-86\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem12.png\" title=\"keerulisem12.png\" alt=\"keerulisem12.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem12.png 342w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem12-223x300.png 223w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tVihje: veeru nimi \u201ckeskmine vanus\u201d on saadud veeru aliast kasutades. PostgreSQL lubab kuvatavates tulemustes veeru nimetusi muuta, kasutades jutum\u00e4rke v\u00f5ib alias olla ka kaheosaline.\n<\/p>\n<p>\n\t\u00dcLDS\u00dcNTAKS veeru \u00fcmbernimetamiseks ehk aliase kasutamiseks:\n<\/p>\n<p>\n\t<span><span>SELECT veerg1, veerg2, veerg3 AS <span style=\"color:#0066cc\">alias<\/span><\/span><\/span>\n<\/p>\n<p>\n\t<span><span>FROM tabel<\/span><\/span>\n<\/p>\n<p>\n\t<span><span>WHERE [tingimused];<\/span><\/span>\n<\/p>\n<p>\n\tAliast saab kasutada ka agregeerivate funktsioonidega.\n<\/p>\n<p>\n\tSELECT veerg1, veerg2, agregeeriv funktsioon(veerg3) AS <span style=\"color:#0066ff\">uus veeru nimi<\/span>\n<\/p>\n<p>\n\tFROM tabel\n<\/p>\n<p>\n\tGROUP BY veerg1, veerg2;\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><b>Elukohad<\/b> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tLeiame k\u00f5igi isikute elukohad. See on taas p\u00e4ring \u00fcle kolme tabeli, sest tabelid Isik ja Elukoht on seotud l\u00e4bi Leibkonna tabeli.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong> <\/span> perenimi, eesnimi, nimi <span style=\"color:#800080\"><strong>FROM<\/strong> <\/span> \u201cIsik\u201d, \u201cElukoht\u201d, \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span> \u201cIsik\u201d.leibkond=\u201dLeibkond\u201d.leibkond_id\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>AND<\/strong> <\/span> \u201cLeibkond\u201d.elukoht=\u201dElukoht\u201d.elukoht_id;\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"558\" height=\"542\" class=\"alignnone wp-image-87\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem13.png\" title=\"keerulisem13.png\" alt=\"keerulisem13.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem13.png 558w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem13-300x291.png 300w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tAga tegelikult tahaksime pigem teada, kui palju \u00fchest vallast inimesi v\u00e4lja r\u00e4ndas sorteeritult alates vallast, kust oli k\u00f5ige rohkem v\u00e4ljar\u00e4ndajaid. See on GROUP BY p\u00e4ring \u00fcle rohkem kui \u00fche tabeli.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong> <\/span> nimi as elukoht, <span style=\"color:#800080\"><strong>COUNT<\/strong> <\/span> (leibkond) as inimesi\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>FROM<\/strong> <\/span> \u201cIsik\u201d, \u201cElukoht\u201d, \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span> \u201cIsik\u201d.leibkond=\u201dLeibkond\u201d.leibkond_id\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>AND<\/strong> <\/span> \u201cLeibkond\u201d.elukoht=\u201dElukoht\u201d.elukoht_id\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>GROUP BY<\/strong> <\/span> elukoht, nimi\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>ORDER BY COUNT<\/strong> <\/span> (leibkond) DESC; <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tOluline on silmas pidada, et WHERE, kus m\u00e4rgitakse, millised tabelid tuleb omavahel siduda, oleks enne GROUP BY osa.\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"295\" height=\"339\" class=\"alignnone wp-image-89\" style=\"width: 284px;height: 327px;float: left;margin-left: 10px;margin-right: 10px\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem14.png\" title=\"keerulisem14.png\" alt=\"keerulisem14.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem14.png 295w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem14-261x300.png 261w\" sizes=\"auto, (max-width: 295px) 100vw, 295px\"><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tSelles p\u00e4ringus v\u00f5ib tunduda, et tabelit Isik ei ole vaja siduda. See on siiski vajalik sest tabelist Leibkond ei saa me k\u00e4tte leibkonda kuuluvate inimeste arvu. Kui tahaksime \u00fchest v\u00f5i teisest vallast v\u00e4ljar\u00e4nnanud leibkondade arvu, piisaks ainult kahe tabeli sidumisest. Siis tuleks tulemus selline:\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"307\" height=\"341\" class=\"alignnone wp-image-88\" style=\"width: 284px;height: 313px;float: left\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem15.png\" title=\"keerulisem15.png\" alt=\"keerulisem15.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem15.png 307w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem15-270x300.png 270w\" sizes=\"auto, (max-width: 307px) 100vw, 307px\"><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"93\" height=\"93\" class=\"alignnone wp-image-104\" style=\"width: 61px;height: 61px;float: left;margin-left: 5px;margin-right: 5px\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall7.png\" title=\"pall7.png\" alt=\"pall7.png\"><strong><span style=\"color:#4472c4\">\u00dcLESANNE 7<\/span><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL p\u00e4ring, millega saab eelmise tabeli. Veeru nime leibkondi saamiseks on kasutatud aliast (AS), samuti veeru nime elukoht saamiseks, sest tabelis Elukoht on valla nimi veerus nimi. Pane t\u00e4hele, et Leibkond tabelis on leibkonna tunnus v\u00e4ljal leibkond_id.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tSaab veel k\u00fcsida, kuhu r\u00e4nnati?\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"89\" height=\"93\" class=\"alignnone wp-image-105\" style=\"width: 61px;height: 64px;margin-left: 5px;margin-right: 5px;float: left\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall8.png\" title=\"pall8.png\" alt=\"pall8.png\"><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><span style=\"color:#4472c4\">\u00dcLESANNE 8<\/span><\/strong>\n<\/p>\n<p>\n\tEespoolsete n\u00e4idete varal kirjuta SQL p\u00e4ring, mis kuvab iga inimese perenime, eesnime, elukoha ja sihtkoha kubermangu, maakonna, kyla, asunduse, valla ja linna. Siduda tuleks neli tabelit. Tulemuses on elukoha p\u00e4ise nimeks kasutamiseks kasutatud aliast, sest v\u00e4lja nimeks on Elukoht tabelis nimi.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"1585\" height=\"691\" class=\"alignnone wp-image-90\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem16.png\" title=\"keerulisem16.png\" alt=\"keerulisem16.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem16.png 1585w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem16-300x131.png 300w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem16-1024x446.png 1024w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem16-768x335.png 768w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem16-1536x670.png 1536w\" sizes=\"auto, (max-width: 1585px) 100vw, 1585px\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tLeiame leibkonna keskmise suuruse (isikute keskmine arv leibkonnas) v\u00e4ljar\u00e4nde sihtkubermangude kaupa. Andmeid on andmebaasis v\u00e4he, seep\u00e4rast ei ole tulemus v\u00e4ga informatiivne.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong> <\/span> kubermang, <span style=\"color:#800080\"><strong>ROUND<\/strong> <\/span> (avg (<span style=\"color:#4472c4\">arv<\/span>))\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>FROM<\/strong> <\/span> (<span style=\"color:#800080\"><strong>SELECT<\/strong> <\/span> leibkond, <span style=\"color:#800080\"><strong>COUNT<\/strong> <\/span>(*) as <span style=\"color:#4472c4\">arv<\/span> FROM \u201cIsik\u201d<span style=\"color:#800080\"><strong> GROUP BY<\/strong> <\/span> leibkond) as <span style=\"color:#0066cc\">a<\/span>, \u201cSihtkoht\u201d, \u201cIsik\u201d, \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span> \u201cLeibkond\u201d.leibkond_id=<span style=\"color:#0066cc\">a<\/span>.leibkond\u00a0\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>AND<\/strong> <\/span> \u201cSihtkoht\u201d.sihtkoht_Id=\u201dLeibkond\u201d.sihtkoht\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>GROUP BY<\/strong> <\/span> kubermang;\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"297\" height=\"191\" class=\"alignnone wp-image-91\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem17.png\" title=\"keerulisem17.png\" alt=\"keerulisem17.png\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tSelgituseks:\n<\/p>\n<p>\n\talamp\u00e4ring\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong> <\/span> leibkond, <span style=\"color:#800080\"><strong>COUNT<\/strong> <\/span> (*) as arv <span style=\"color:#800080\"><strong>FROM<\/strong> <\/span> \u201cIsik\u201d\n<\/p>\n<p>\n\t\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<span style=\"color:#800080\"><strong>GROUP BY<\/strong> <\/span> leibkond;\n<\/p>\n<p>\n\ttagastab tulemuseks tabeli, kus on Isiku tabelist leibkonna id ja iga leibkonna suurus. PostgreSQL tahab, et alamp\u00e4ringul oleks FROM lauses alias (FROM (SELECT \u2026) [AS] ALIAS), et alamp\u00e4ringu tulemust saaks kasutada alamp\u00e4ringut \u00fcmbritsevas p\u00e4ringus, vt \u00fcmbritseva p\u00e4ringu SELECT lauset ja aliase arv kasutamist seal.\n<\/p>\n<p>\n\tSelle n\u00e4ite \u00fcmbritsevas p\u00e4ringus arvutatakse \u00fcmardatud leibkondade keskmine suurus iga kubermangu kohta.\u00a0 Ufaasse l\u00e4ks ainult Kartofelite 14 liikmeline leibkond. Tobolskisse aga l\u00e4ksid perekond V\u00e4hi (5), Uibo (7) ja Roop (3). Nende leibkondade keskmine suurus on 5.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tVeel saab k\u00fcsida, kui palju v\u00e4ljar\u00e4nnanuid millisest maakonnast oli.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong> <\/span> \u201cMaakond\u201d.nimi as \u201cKust maakonnast\u201d, <span style=\"color:#800080\"><strong>COUNT<\/strong> <\/span> (perenimi) as v\u00e4ljar\u00e4ndajaid <span style=\"color:#800080\"><strong>FROM<\/strong> <\/span> \u201cIsik\u201d, \u201cLeibkond\u201d, \u201cKihelkond\u201d, \u201cMaakond\u201d, \u201cElukoht\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span> \u201cIsik\u201d.leibkond=\u201dLeibkond\u201d.leibkond_id AND\n<\/p>\n<p>\n\t\u201cLeibkond\u201d.elukoht=\u201dElukoht\u201d.elukoht_id <span style=\"color:#800080\"><strong>AND<\/strong> <\/span>\n<\/p>\n<p>\n\t\u201cElukoht\u201d.kihelkond=\u201dKihelkond\u201d.kihelkond_id <span style=\"color:#800080\"><strong>AND<\/strong> <\/span>\n<\/p>\n<p>\n\t\u201cKihelkond\u201d.maakond_id=\u201dMaakond\u201d.maakond_id\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>GROUP BY<\/strong> <\/span> \u201cKust maakonnast\u201d;\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"318\" height=\"167\" class=\"alignnone wp-image-92\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem18.png\" title=\"keerulisem18.png\" alt=\"keerulisem18.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem18.png 318w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem18-300x158.png 300w\" sizes=\"auto, (max-width: 318px) 100vw, 318px\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tMilliseid asundusi on mainitud?\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT DISTINCT<\/strong> <\/span> asundus from \u201cSihtkoht\u201d;\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"195\" height=\"119\" class=\"alignnone wp-image-95\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem19.png\" title=\"keerulisem19.png\" alt=\"keerulisem19.png\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"100\" height=\"88\" class=\"alignnone wp-image-107\" style=\"width: 61px;height: 54px;float: left;margin-left: 5px;margin-right: 5px\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall9.png\" title=\"pall9.png\" alt=\"pall9.png\"><strong><span style=\"color:#4472c4\">\u00dc<\/span><span style=\"color:#4472c4\">LESANNE 9<\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL lause, mis annaks tulemuseks, kes mis vallast (alias elukoht enne) l\u00e4ksid linna elama ja kuhu? <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"715\" height=\"87\" class=\"alignnone wp-image-93\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem20.png\" title=\"keerulisem20.png\" alt=\"keerulisem20.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem20.png 715w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem20-300x37.png 300w\" sizes=\"auto, (max-width: 715px) 100vw, 715px\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tVihje: Siin peab \u00fcks WHERE lause tingimuse olema linn is NOT NULL. Kui seda ei pane, kuvatakse k\u00f5ik isikud, ka need, kes linna ei l\u00e4inud, sest linna v\u00e4li on nende puhul olemas, lihtsalt t\u00fchi. PostgreSQLis esindab NULL puuduvat v\u00e4\u00e4rtust. Puuduv v\u00e4\u00e4rtus v\u00f5ib p\u00f5hjustada probleeme, sest v\u00f5rreldes puuduvat teadmata v\u00e4\u00e4rtust teiste v\u00e4\u00e4rtustega on tulemus samuti teadmata.\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tMis j\u00e4rjekorras leibkonnad v\u00e4lja r\u00e4ndasid? J\u00e4rjesta leibkonnad (perenimed) v\u00e4ljar\u00e4ndamisaasta j\u00e4rgi alates varaseimast.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong> <\/span> perenimi, ymberkirjutus <span style=\"color:#800080\"><strong>FROM<\/strong> <\/span> \u201cIsik\u201d, \u201cLeibkond\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span> \u201cIsik\u201d.leibkond=\u201dLeibkond\u201d.leibkond_id\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>GROUP BY<\/strong> <\/span> perenimi, ymberkirjutus\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>ORDER BY<\/strong> <\/span> ymberkirjutus ASC;\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"324\" height=\"461\" class=\"alignnone wp-image-94\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem21.png\" title=\"keerulisem21.png\" alt=\"keerulisem21.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem21.png 324w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem21-211x300.png 211w\" sizes=\"auto, (max-width: 324px) 100vw, 324px\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"94\" height=\"98\" class=\"alignnone wp-image-106\" style=\"width: 61px;height: 64px;margin-left: 5px;margin-right: 5px;float: left\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/pall10.png\" title=\"pall10.png\" alt=\"pall10.png\"><strong><span style=\"color:#0070c0\">\u00dcLESANNE 10<\/span><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\tKirjuta SQL lause, mille tulemusest saab teada, kuhu kubermangu l\u00e4ksid k\u00f5ige j\u00f5ukamad leibkonnad. P\u00e4ring peab vastuseks andma leibkonna (perenimi), vara v\u00e4\u00e4rtuse sorteerituna langevas joones (vara_vaartus) ja iga leibkonna sihtkohaks olnud kubermangu. <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"410\" height=\"467\" class=\"alignnone wp-image-96\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem22.png\" title=\"keerulisem22.png\" alt=\"keerulisem22.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem22.png 410w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem22-263x300.png 263w\" sizes=\"auto, (max-width: 410px) 100vw, 410px\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0\n<\/p>\n<p>\n\tLeiame ka igasse kubermangu r\u00e4nnanud leibkondade vara keskmise v\u00e4\u00e4rtuse.\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>SELECT<\/strong> <\/span> kubermang, <span style=\"color:#800080\"><strong>AVG<\/strong> <\/span> (vara_vaartus) <span style=\"color:#800080\"><strong>FROM<\/strong> <\/span> \u201cLeibkond\u201d, \u201cSihtkoht\u201d\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>WHERE<\/strong> <\/span> \u201cLeibkond\u201d.sihtkoht=\u201dSihtkoht\u201d.sihtkoht_id\n<\/p>\n<p>\n\t<span style=\"color:#800080\"><strong>GROUP BY<\/strong> <\/span> kubermang;\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>\u00a0\u00a0 <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><img loading=\"lazy\" decoding=\"async\" width=\"373\" height=\"191\" class=\"alignnone wp-image-97\" src=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem23.png\" title=\"keerulisem23.png\" alt=\"keerulisem23.png\" srcset=\"https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem23.png 373w, https:\/\/sisu.ut.ee\/wp-content\/uploads\/sites\/444\/keerulisem23-300x154.png 300w\" sizes=\"auto, (max-width: 373px) 100vw, 373px\"> <\/strong><\/strong><\/strong><\/strong><\/strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>\n<\/p>\n<p>\n\t\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0 J\u00e4rgneva materjaliga t\u00f6\u00f6tamiseks on vaja, et oleks l\u00f5puni valmis tehtud andmebaas Randaja (vt Mitmetabelilise andmebaasi loomine), seal peavad olema k\u00f5ik andmed, samuti lisatud v\u00e4lisv\u00f5tmed. P\u00e4ringute tegemisel on abiks DB Designeris tehtud andmemudel, mille abil saab kiirelt \u00fclevaate, millised v\u00e4ljad, &#8230;<\/p>\n","protected":false},"author":231,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/wp-json\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/wp-json\/wp\/v2\/users\/231"}],"replies":[{"embeddable":true,"href":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":1,"href":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":136,"href":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/wp-json\/wp\/v2\/pages\/15\/revisions\/136"}],"wp:attachment":[{"href":"https:\/\/sisu.ut.ee\/ajalooandmebaasid\/wp-json\/wp\/v2\/media?parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}