{"id":173,"date":"2021-03-05T07:59:52","date_gmt":"2021-03-05T07:59:52","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/?post_type=chapter&#038;p=173"},"modified":"2021-05-05T13:23:42","modified_gmt":"2021-05-05T13:23:42","slug":"agregeerivad-funktsioonid-veeruavaldistena","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/agregeerivad-funktsioonid-veeruavaldistena\/","title":{"raw":"Agregeerivad funktsioonid veeruavaldistena","rendered":"Agregeerivad funktsioonid veeruavaldistena"},"content":{"raw":"<h2>Mitteagregeeriva ja agregeeriva funktsiooni definitsioonid<\/h2>\r\nEnne, kui hakkame agregeerivaid funktsioone \u00f5ppima, on hea hetk uurida, mida \u00fcldse t\u00e4hendavad SQL-i kontekstis mitteagregeeriv ja agregeeriv.\r\n\r\nMitteagregeerivad funktsioonid annavad igale funktsioonile vastava kirje kohta \u00fche tulemuse.\r\n\r\nN\u00e4iteks, j\u00e4rgneva mitteagregeerivat funktsiooni sisaldava p\u00e4ringu korral on p\u00e4ringu tulemuses sama palju kirjeid kui tabelis endas:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> id, <span style=\"color: #000080\"><strong>LEFT<\/strong><\/span>(nimi, <span style=\"color: #0000ff\">3<\/span>) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> isikud<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\r\n<\/ul>\r\nSee t\u00e4hendab seda, et mitteagregeeriva funktsiooni <code><span style=\"color: #000080\"><strong>LEFT<\/strong><\/span><\/code> kasutamine ei v\u00e4henda iseenesest tulemuses olevate kirjete arvu. Kui peale mitteagregeeriva funktsiooni kasutamise lisada ka piiranguid, siis muidugi v\u00e4heneb tulemuses olevate kirjete arv.\r\n\r\nMitteagregeeriva funktsiooni definitsiooni on ilmselt lihtsam lahti m\u00f5testada, kui vaadata ka agregeeriva funktsiooni oma.\r\n\r\nAgregeerivad funktsioonid annavad k\u00f5igi funktsioonile vastavate kirjete kohta \u00fche tulemuse. Agregeeriv funktsioon v\u00f5ib n\u00e4iteks k\u00f5ik mingi veeru v\u00e4\u00e4rtused kokku summeerida v\u00f5i arvutada nende keskmise. Nende tehete k\u00e4igus j\u00e4\u00e4bki k\u00f5igi kirjete asemel alles \u00fcksainus.\r\n<h2>Agregeerivad funktsioonid<\/h2>\r\nAlustame kirjete keskmise leidmisega, kasutades selleks agregeerivat funktsiooni <code><span style=\"color: #000080\"><strong>AVG<\/strong><\/span><\/code>. See on v\u00e4ga kasulik funktsioon, kuna see v\u00f5imaldab andmetest kiiresti (\u00fcldiseid) kokkuv\u00f5tteid teha.\r\n\r\nJooksuta j\u00e4rgnevate p\u00e4ringut:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>AVG<\/strong><\/span>(rahvastikuarv) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> riigid<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\r\n<\/ul>\r\nN\u00e4eme, et p\u00e4ringu tulemuses on vaid \u00fcks kirje, mis n\u00e4itab meile k\u00f5igi tabelis Riigid olevate riikide keskmist rahvastikuarvu.\r\n\r\nPane t\u00e4hele, et agregeeriva funktsiooni kasutamisel kaob veeru algne pealkiri nagu ka siis, kui kasutasime aritmeetilisi teheteid veeruavaldistena. Siinkohal asendatakse pealkiri funktsiooni enda nimega.\r\n\r\nKuigi pealkiri <code>avg<\/code> oli n\u00e4ite puhul enam-v\u00e4hem sobiv, j\u00e4\u00e4b p\u00e4ringu tulemust vaadates siiski segaseks, mille keskmisega on tegu. Tuleta varasemast meelde, kuidas sai pealkirju ise m\u00e4\u00e4rata ning jooksuta p\u00e4ringut uuesti nii, et pealkiri oleks sobiv.\r\n\r\n[h5p id=\"36\"]\r\n\r\nVaatame n\u00fc\u00fcd t\u00e4psemalt, miks eelnev p\u00e4ring sellise tulemuse andis.\r\n\r\nKui jagada p\u00e4ring kaheks osaks \u2013 <strong><code><span style=\"color: #970000\">SELECT<\/span><\/code><\/strong><code> nimi<\/code> ja <code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>AVG<\/strong><\/span>(rahvastikuarv)<\/code> \u2013 siis esimene osa tahab meile tagastada k\u00f5igi riikide nimed ning teine osa tahab tagastada \u00fcheainsa arvu. Seega ei saa neid niimoodi kokku panna, kuna nende \u00fchend ei ole loogiliselt t\u00e4henduslik. Lihtsamalt \u00f6eldes ei saa neid kahte v\u00e4\u00e4rtust tulemuses korraga korrektselt kuvada.\r\n\r\nSeda, kuidas siiski koostada huvitavaid p\u00e4ringuid, milles kasutatakse nii agregeerivaid kui ka mitteagregeerivaid osi, vaatame j\u00e4rgmises peat\u00fckis.\r\n\r\nErinevalt mitteagregeerivatest funktsioonidest ei ole agregeerivaid funktsioone tavap\u00e4raste andmet\u00fc\u00fcpidega tunnuste jaoks \u00fclem\u00e4\u00e4ra palju. Siiski, keskendume taaskord vaid m\u00f5nele kasulikemale neist. Soovi korral saab taaskord nende k\u00f5igi kohta t\u00e4psemalt lugeda PostgreSQL'i dokumentatsioonist, <a href=\"https:\/\/www.postgresql.org\/docs\/current\/functions-aggregate.html\">siit<\/a>.\r\n\r\nPeale kirjete keskmise, saab agregeerivate funktsioonide abil leida ka v\u00e4himaid ja suurimaid kirjeid. Selle jaoks on funktsioonid <code><span style=\"color: #000080\"><strong>MIN<\/strong><\/span><\/code> ja <code><span style=\"color: #000080\"><strong>MAX<\/strong><\/span><\/code>. Neid kasutatakse t\u00e4pselt samamoodi nagu funktsiooni <code><span style=\"color: #000080\"><strong>AVG<\/strong><\/span><\/code>.\r\n\r\n[h5p id=\"37\"]\r\n\r\nKuigi funktsiooni <code><span style=\"color: #000080\"><strong>MAX<\/strong><\/span><\/code> kasutamine s\u00f5nede peal v\u00f5ib tunduda veider, tuleta meelde, kuidas me piirasime juba varasemas peat\u00fckis p\u00e4ringut s\u00f5nelise v\u00e4\u00e4rtuse alusel, kirjutades <code>nimi &lt; <span style=\"color: #008000\">'Estonia'<\/span><\/code>.\r\n\r\nVeel \u00fcks kasulik agregeeriv funktsioon on <code><span style=\"color: #000080\"><strong>SUM<\/strong><\/span><\/code>, mis summeerib k\u00f5ik ette antavad kirjed kokku. Ka selle kasutus on samalaadne seni \u00f5pitud funktsioonidega <code><span style=\"color: #000080\"><strong>AVG<\/strong><\/span><\/code>, <code><span style=\"color: #000080\"><strong>MIN<\/strong><\/span><\/code> ja <code><span style=\"color: #000080\"><strong>MAX<\/strong><\/span><\/code>.\r\n\r\n[h5p id=\"38\"]\r\n\r\nSelleks, et veenduda eelneva vastuse korrektsuses, jooksuta ka nii-\u00f6elda \u00f5igemat p\u00e4ringut ning v\u00f5rdle tulemusi:\r\n<ul>\r\n \t<li><span style=\"color: #000000\"><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>AVG<\/strong><\/span>(pindala) <span style=\"color: #970000\"><strong>AS<\/strong><\/span> keskmine_pindala <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> riigid<\/code><strong><code><span style=\"color: #ff0000\">;<\/span><\/code>.<\/strong><\/span><\/li>\r\n<\/ul>\r\n\u00dcks olulisim, kuid kohati ka keerukaim agregeeriv funktsioon on <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span><\/code>. Selles peat\u00fckis vaatame selle lihtsamaid kasutusv\u00f5imalusi ning j\u00e4rgmises uurime juba keerukamaid.\r\n\r\nJooksuta j\u00e4rgnevaid p\u00e4ringuid, v\u00f5rdle nende tulemusi ning m\u00f5tiskle, mida funktsioon <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span><\/code> teeb:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>COUNT<\/strong><\/span>(*) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> teosed<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>COUNT<\/strong><\/span>(riigi_id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> teosed<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\r\n<\/ul>\r\nN\u00e4eme, et p\u00e4ringute tulemused erinevad. Vajadusel tuleta peat\u00fcki <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/lihtsad-paringud\/\">Lihtsad p\u00e4ringud<\/a> abil meelde, mida s\u00fcmbol * (t\u00e4rn) t\u00e4hendas.\r\n\r\nVahe p\u00e4ringute tulemustes tuleneb sellest, et <strong><code><span style=\"color: #000080\">COUNT<\/span><\/code><\/strong><code>(*)<\/code> loeb kokku, mitu kirjet on tabelis Teosed. <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span>(riigi_id)<\/code> loeb aga kokku, mitu kirjet on tabelis Teosed veerus <code>riigi_id<\/code>. Kuna veerg <code>riigi_id<\/code> lubab puuduvaid v\u00e4\u00e4rtusi <strong><code><span style=\"color: #970000\">NULL<\/span><\/code><\/strong> ning neid seal t\u00f5epoolest ka on, siis on osa <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span>(riigi_id)<\/code> sisaldava p\u00e4ringu tulemuses v\u00e4hem kirjeid.\r\n\r\n[h5p id=\"39\"]\r\n\r\nN\u00fc\u00fcd oleme \u00f5ppinud vahet eristama mitteagregeerivaid ja agregeerivaid funktsioonide ning oskame p\u00e4ringute loomisel erinevaid agregeerivaid funktsioone kasutada. Seega saame hakata \u00f5ppima agregeerivaid funktsioone kasutavate p\u00e4ringute tulemusi grupeerima, piirama ja j\u00e4rjestama.\r\n\r\n&nbsp;","rendered":"<h2>Mitteagregeeriva ja agregeeriva funktsiooni definitsioonid<\/h2>\n<p>Enne, kui hakkame agregeerivaid funktsioone \u00f5ppima, on hea hetk uurida, mida \u00fcldse t\u00e4hendavad SQL-i kontekstis mitteagregeeriv ja agregeeriv.<\/p>\n<p>Mitteagregeerivad funktsioonid annavad igale funktsioonile vastava kirje kohta \u00fche tulemuse.<\/p>\n<p>N\u00e4iteks, j\u00e4rgneva mitteagregeerivat funktsiooni sisaldava p\u00e4ringu korral on p\u00e4ringu tulemuses sama palju kirjeid kui tabelis endas:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> id, <span style=\"color: #000080\"><strong>LEFT<\/strong><\/span>(nimi, <span style=\"color: #0000ff\">3<\/span>) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> isikud<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\n<\/ul>\n<p>See t\u00e4hendab seda, et mitteagregeeriva funktsiooni <code><span style=\"color: #000080\"><strong>LEFT<\/strong><\/span><\/code> kasutamine ei v\u00e4henda iseenesest tulemuses olevate kirjete arvu. Kui peale mitteagregeeriva funktsiooni kasutamise lisada ka piiranguid, siis muidugi v\u00e4heneb tulemuses olevate kirjete arv.<\/p>\n<p>Mitteagregeeriva funktsiooni definitsiooni on ilmselt lihtsam lahti m\u00f5testada, kui vaadata ka agregeeriva funktsiooni oma.<\/p>\n<p>Agregeerivad funktsioonid annavad k\u00f5igi funktsioonile vastavate kirjete kohta \u00fche tulemuse. Agregeeriv funktsioon v\u00f5ib n\u00e4iteks k\u00f5ik mingi veeru v\u00e4\u00e4rtused kokku summeerida v\u00f5i arvutada nende keskmise. Nende tehete k\u00e4igus j\u00e4\u00e4bki k\u00f5igi kirjete asemel alles \u00fcksainus.<\/p>\n<h2>Agregeerivad funktsioonid<\/h2>\n<p>Alustame kirjete keskmise leidmisega, kasutades selleks agregeerivat funktsiooni <code><span style=\"color: #000080\"><strong>AVG<\/strong><\/span><\/code>. See on v\u00e4ga kasulik funktsioon, kuna see v\u00f5imaldab andmetest kiiresti (\u00fcldiseid) kokkuv\u00f5tteid teha.<\/p>\n<p>Jooksuta j\u00e4rgnevate p\u00e4ringut:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>AVG<\/strong><\/span>(rahvastikuarv) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> riigid<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\n<\/ul>\n<p>N\u00e4eme, et p\u00e4ringu tulemuses on vaid \u00fcks kirje, mis n\u00e4itab meile k\u00f5igi tabelis Riigid olevate riikide keskmist rahvastikuarvu.<\/p>\n<p>Pane t\u00e4hele, et agregeeriva funktsiooni kasutamisel kaob veeru algne pealkiri nagu ka siis, kui kasutasime aritmeetilisi teheteid veeruavaldistena. Siinkohal asendatakse pealkiri funktsiooni enda nimega.<\/p>\n<p>Kuigi pealkiri <code>avg<\/code> oli n\u00e4ite puhul enam-v\u00e4hem sobiv, j\u00e4\u00e4b p\u00e4ringu tulemust vaadates siiski segaseks, mille keskmisega on tegu. Tuleta varasemast meelde, kuidas sai pealkirju ise m\u00e4\u00e4rata ning jooksuta p\u00e4ringut uuesti nii, et pealkiri oleks sobiv.<\/p>\n<div id=\"h5p-36\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-36\" class=\"h5p-iframe\" data-content-id=\"36\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AP_16_kontrollk\u00fcsimus_1\"><\/iframe><\/div>\n<\/div>\n<p>Vaatame n\u00fc\u00fcd t\u00e4psemalt, miks eelnev p\u00e4ring sellise tulemuse andis.<\/p>\n<p>Kui jagada p\u00e4ring kaheks osaks \u2013 <strong><code><span style=\"color: #970000\">SELECT<\/span><\/code><\/strong><code> nimi<\/code> ja <code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>AVG<\/strong><\/span>(rahvastikuarv)<\/code> \u2013 siis esimene osa tahab meile tagastada k\u00f5igi riikide nimed ning teine osa tahab tagastada \u00fcheainsa arvu. Seega ei saa neid niimoodi kokku panna, kuna nende \u00fchend ei ole loogiliselt t\u00e4henduslik. Lihtsamalt \u00f6eldes ei saa neid kahte v\u00e4\u00e4rtust tulemuses korraga korrektselt kuvada.<\/p>\n<p>Seda, kuidas siiski koostada huvitavaid p\u00e4ringuid, milles kasutatakse nii agregeerivaid kui ka mitteagregeerivaid osi, vaatame j\u00e4rgmises peat\u00fckis.<\/p>\n<p>Erinevalt mitteagregeerivatest funktsioonidest ei ole agregeerivaid funktsioone tavap\u00e4raste andmet\u00fc\u00fcpidega tunnuste jaoks \u00fclem\u00e4\u00e4ra palju. Siiski, keskendume taaskord vaid m\u00f5nele kasulikemale neist. Soovi korral saab taaskord nende k\u00f5igi kohta t\u00e4psemalt lugeda PostgreSQL&#8217;i dokumentatsioonist, <a href=\"https:\/\/www.postgresql.org\/docs\/current\/functions-aggregate.html\">siit<\/a>.<\/p>\n<p>Peale kirjete keskmise, saab agregeerivate funktsioonide abil leida ka v\u00e4himaid ja suurimaid kirjeid. Selle jaoks on funktsioonid <code><span style=\"color: #000080\"><strong>MIN<\/strong><\/span><\/code> ja <code><span style=\"color: #000080\"><strong>MAX<\/strong><\/span><\/code>. Neid kasutatakse t\u00e4pselt samamoodi nagu funktsiooni <code><span style=\"color: #000080\"><strong>AVG<\/strong><\/span><\/code>.<\/p>\n<div id=\"h5p-37\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-37\" class=\"h5p-iframe\" data-content-id=\"37\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AP_16_kontrollk\u00fcsimus_2\"><\/iframe><\/div>\n<\/div>\n<p>Kuigi funktsiooni <code><span style=\"color: #000080\"><strong>MAX<\/strong><\/span><\/code> kasutamine s\u00f5nede peal v\u00f5ib tunduda veider, tuleta meelde, kuidas me piirasime juba varasemas peat\u00fckis p\u00e4ringut s\u00f5nelise v\u00e4\u00e4rtuse alusel, kirjutades <code>nimi &lt; <span style=\"color: #008000\">'Estonia'<\/span><\/code>.<\/p>\n<p>Veel \u00fcks kasulik agregeeriv funktsioon on <code><span style=\"color: #000080\"><strong>SUM<\/strong><\/span><\/code>, mis summeerib k\u00f5ik ette antavad kirjed kokku. Ka selle kasutus on samalaadne seni \u00f5pitud funktsioonidega <code><span style=\"color: #000080\"><strong>AVG<\/strong><\/span><\/code>, <code><span style=\"color: #000080\"><strong>MIN<\/strong><\/span><\/code> ja <code><span style=\"color: #000080\"><strong>MAX<\/strong><\/span><\/code>.<\/p>\n<div id=\"h5p-38\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-38\" class=\"h5p-iframe\" data-content-id=\"38\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AP_16_kontrollk\u00fcsimus_3\"><\/iframe><\/div>\n<\/div>\n<p>Selleks, et veenduda eelneva vastuse korrektsuses, jooksuta ka nii-\u00f6elda \u00f5igemat p\u00e4ringut ning v\u00f5rdle tulemusi:<\/p>\n<ul>\n<li><span style=\"color: #000000\"><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>AVG<\/strong><\/span>(pindala) <span style=\"color: #970000\"><strong>AS<\/strong><\/span> keskmine_pindala <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> riigid<\/code><strong><code><span style=\"color: #ff0000\">;<\/span><\/code>.<\/strong><\/span><\/li>\n<\/ul>\n<p>\u00dcks olulisim, kuid kohati ka keerukaim agregeeriv funktsioon on <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span><\/code>. Selles peat\u00fckis vaatame selle lihtsamaid kasutusv\u00f5imalusi ning j\u00e4rgmises uurime juba keerukamaid.<\/p>\n<p>Jooksuta j\u00e4rgnevaid p\u00e4ringuid, v\u00f5rdle nende tulemusi ning m\u00f5tiskle, mida funktsioon <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span><\/code> teeb:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>COUNT<\/strong><\/span>(*) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> teosed<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> <span style=\"color: #000080\"><strong>COUNT<\/strong><\/span>(riigi_id) <span style=\"color: #970000\"><strong>FROM<\/strong><\/span> teosed<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\n<\/ul>\n<p>N\u00e4eme, et p\u00e4ringute tulemused erinevad. Vajadusel tuleta peat\u00fcki <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/lihtsad-paringud\/\">Lihtsad p\u00e4ringud<\/a> abil meelde, mida s\u00fcmbol * (t\u00e4rn) t\u00e4hendas.<\/p>\n<p>Vahe p\u00e4ringute tulemustes tuleneb sellest, et <strong><code><span style=\"color: #000080\">COUNT<\/span><\/code><\/strong><code>(*)<\/code> loeb kokku, mitu kirjet on tabelis Teosed. <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span>(riigi_id)<\/code> loeb aga kokku, mitu kirjet on tabelis Teosed veerus <code>riigi_id<\/code>. Kuna veerg <code>riigi_id<\/code> lubab puuduvaid v\u00e4\u00e4rtusi <strong><code><span style=\"color: #970000\">NULL<\/span><\/code><\/strong> ning neid seal t\u00f5epoolest ka on, siis on osa <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span>(riigi_id)<\/code> sisaldava p\u00e4ringu tulemuses v\u00e4hem kirjeid.<\/p>\n<div id=\"h5p-39\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-39\" class=\"h5p-iframe\" data-content-id=\"39\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AP_16_kontrollk\u00fcsimus_4\"><\/iframe><\/div>\n<\/div>\n<p>N\u00fc\u00fcd oleme \u00f5ppinud vahet eristama mitteagregeerivaid ja agregeerivaid funktsioonide ning oskame p\u00e4ringute loomisel erinevaid agregeerivaid funktsioone kasutada. Seega saame hakata \u00f5ppima agregeerivaid funktsioone kasutavate p\u00e4ringute tulemusi grupeerima, piirama ja j\u00e4rjestama.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"author":32,"menu_order":6,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-173","chapter","type-chapter","status-publish","hentry"],"part":31,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/users\/32"}],"version-history":[{"count":56,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/173\/revisions"}],"predecessor-version":[{"id":1349,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/173\/revisions\/1349"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/parts\/31"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/173\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/media?parent=173"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapter-type?post=173"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/contributor?post=173"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/license?post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}