


{"id":42,"date":"2010-09-27T16:20:10","date_gmt":"2010-09-27T14:20:10","guid":{"rendered":"http:\/\/lwibs01.gm.fh-koeln.de\/blogs\/sqlexpert\/?p=42"},"modified":"2010-10-14T15:53:09","modified_gmt":"2010-10-14T13:53:09","slug":"besonderheiten-bei-aggregatfunktionen","status":"publish","type":"post","link":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/2010\/09\/27\/besonderheiten-bei-aggregatfunktionen\/","title":{"rendered":"Besonderheiten bei Aggregatfunktionen"},"content":{"rendered":"<ul>\n<li>COUNT(Spalte) z\u00e4hlt die von NULL verschiedenen Werte in einer Spalte, COUNT(*) auch die Zeilen, die komplett NULL sind.<\/li>\n<li>Alle Gruppenfunktionen ignorieren NULL-Werte im Gegensatz zu den Operatoren +, &#8211; * und\u00a0 \/: 9 + NULL= NULL<\/li>\n<li>Aggregatfunktionen (Synonym: Gruppenfunktionen) k\u00f6nnen mit Single-Rowfunktionen geschachtelt werden. SELECT TRUNC(AVG(gehalt)) FROM angestellte, Tiefe der Schachtelung ist beliebig<\/li>\n<li>Zwei Gruppenfunktionen k\u00f6nnen aufeinander angewendet werden, aber nicht drei: Zul\u00e4ssig ist SELECT COUNT(AVG(Gehalt) ) FROM angestellte GROUP BY GEHALT, aber nicht SELECT COUNT(AVG(MIN(Spalte))) FROM angestellte GROUP BY GEHALT und auch nicht SELECT COUNT(AVG(Gehalt));\u00a0 ohne group BY.<\/li>\n<li>Es gibt eine zweite Mittelwertfunktion MEDIAN neben AVG, d.h. SELECT median(gehalt), avg(gehalt)\u00a0 from angestellte; ergibt zwei verschiedenen Werte. Die MEDIAN-Funktion sortiert numerische Werte in der Reihenfolge aufsteigend und nimmt bei einer ungerade Zahl den mittleren, sonst eine interpolierten Wert dazwischen<\/li>\n<li>AVG und MEDIAN arbeiten nur mit numerischen Werten..<\/li>\n<li>Die Rank -Funktion gibt aus, an wievielter Stelle ein Wert steht: SELECT RANK(4000) WITHIN GROUP (ORDER BY gehalt) FROM\u00a0 angestellte\u00a0 bedeutet, dass das Gehalt 4000 die 12. Stelle einnimmt. Der Parameter RANK(Wert) kann nur ganzzahlige Werte, ohne Nachkommastellen, aufnehmen .<\/li>\n<li>FIRST und LAST (s.u.) gibt nur den ersten bzw. den letzten Wert einer sortierten Folge von Werten aus.<\/li>\n<li>Gruppenfunktionen k\u00f6nnen nicht in der WHERE -Klausel verwendet\u00a0werden.<\/li>\n<li>having muss immer nach where stehen<\/li>\n<li>siehe auch: <a href=\"http:\/\/wikis.gm.fh-koeln.de\/wiki_db\/Datenbanken\/GROUP-BY-Klausel\">DBWiki<\/a> f\u00fcr CUBE, ROLLUP, GROUPING<\/li>\n<li>ORDER BY in Kombination mit GROUP BY hat einige Einschr\u00e4nkungen: Es kann nur ein ORDER BY geben auf Ausdr\u00fccken aus der GROUP BY-Klausel, Ausdr\u00fccken aus der SELECT-Liste, \u00fcber Aggregatfunktionen oder \u00fcber die USER, SYSDATE und UID.<\/li>\n<\/ul>\n<p class=\"lead\"><strong>Zum Ausprobieren:<\/strong><\/p>\n<p>Login advbs06.gm.fh-koeln.de, benutzer: FAHRRAD<\/p>\n<blockquote><p>SELECT RANK(4000) WITHIN GROUP (ORDER BY gehalt) from angestellte;<\/p>\n<p>SELECT MAX(gehalt) KEEP (DENSE_RANK FIRST Order BY GEHALT) FROM angestellte;<\/p>\n<p>SELECT MAX(gehalt) KEEP (DENSE_RANK LAST\u00a0 Order BY GEHALT) FROM angestellte;<\/p><\/blockquote>\n<p><a href=\"http:\/\/wikis.gm.fh-koeln.de\/wiki_db\/Datenbanken\/GROUP-BY-Klausel\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>COUNT(Spalte) z\u00e4hlt die von NULL verschiedenen Werte in einer Spalte, COUNT(*) auch die Zeilen, die komplett NULL sind. Alle Gruppenfunktionen ignorieren NULL-Werte im Gegensatz zu den Operatoren +, &#8211; * und\u00a0 \/: 9 + NULL= NULL Aggregatfunktionen (Synonym: Gruppenfunktionen) k\u00f6nnen mit Single-Rowfunktionen geschachtelt werden. SELECT TRUNC(AVG(gehalt)) FROM angestellte, Tiefe der Schachtelung ist beliebig Zwei Gruppenfunktionen&#8230;  <a href=\"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/2010\/09\/27\/besonderheiten-bei-aggregatfunktionen\/\" class=\"more-link\" title=\"Read Besonderheiten bei Aggregatfunktionen\"><?php _e(\"Read more &raquo;\",\"wpbootstrap\"); ?><\/a><\/p>\n","protected":false},"author":23,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[250],"tags":[291,290,345,294,289,347,297,295,292,266,346,273,293,296],"class_list":["post-42","post","type-post","status-publish","format-standard","hentry","category-7-group-functions","tag-avg","tag-count","tag-cube","tag-first","tag-group-by","tag-grouping","tag-having","tag-last","tag-median","tag-order-by","tag-rollup","tag-select","tag-trunc","tag-where"],"acf":[],"_links":{"self":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":36,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/42\/revisions"}],"predecessor-version":[{"id":366,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/posts\/42\/revisions\/366"}],"wp:attachment":[{"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/media?parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/categories?post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gm.fh-koeln.de\/sqlexpert\/wp-json\/wp\/v2\/tags?post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}