Konstruowanie Baz Danych DQL agregacja danych

Podobne dokumenty
Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

Podzapytania. Podzapytania nieskorelowane i skorelowane

Instrukcje DQL: SELECT. Zastosowanie SELECT, opcje i warianty

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Instrukcje DML INSERT, UPDATE, DELETE. COPY

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Przestrzenne bazy danych Podstawy języka SQL

SQL (ang. Structured Query Language)

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Autor: Joanna Karwowska

Relacyjne bazy danych. Podstawy SQL

Systemy GIS Tworzenie zapytań w bazach danych

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Autor: Joanna Karwowska

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Relacyjne bazy danych. Podstawy SQL

SQL do zaawansowanych analiz danych część 1.

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

SQL praca z tabelami 4. Wykład 7

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Wprowadzenie do języka SQL

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Wykład 05 Bazy danych

Plan. Wyświetlanie n początkowych wartości (TOP n) Użycie funkcji agregujących. Grupowanie danych - klauzula GROUP BY

Grupowanie i funkcje agregujące

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych. dr inż. Arkadiusz Mirakowski

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Zaawansowany SQL. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Wykład 6. SQL praca z tabelami 3

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Grupowanie i funkcje agregacji

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Jerzy Nawrocki, Wprowadzenie do informatyki

Podstawowe zapytania SELECT (na jednej tabeli)

Bazy danych SQL Server 2005

Wykład 5. SQL praca z tabelami 2

Paweł Rajba

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Podyplomowe Studia Systemy informatyczne w logistyce

Podstawy języka SQL cz. 2

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

LAB 3 (część 1 Projektu)

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Zadania z SQLa (MS SQL Server)

Bazy danych. Andrzej Łachwa, UJ, /15

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

P o d s t a w y j ę z y k a S Q L

Bazy danych wykład trzeci. Konrad Zdanowski

Specyfika języka SQL powoduje, że łatwiej jest najpierw wytłumaczyć, jak korzystać z funkcji grupujących, a dopiero później jak grupować dane.

Widok Connections po utworzeniu połączenia. Obszar roboczy

ORACLE. System Zarządzania Bazą Danych Oracle. Oracle Advanced SQL

PODZAPYTANIE (SUBSELECT)

Ćwiczenie 3 funkcje agregujące

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Ćwiczenie zapytań języka bazy danych PostgreSQL

Język SQL podstawy zapytań

ACESS- zadania z wykorzystaniem poleceń SQL

Język SQL. Rozdział 2. Proste zapytania

E.14 Bazy Danych cz. 13 SQL Grupowanie danych i funkcje grupujące

Język SQL, zajęcia nr 2

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Język SQL, zajęcia nr 1

Technologie baz danych

Klasyczna Analiza Danych

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

SQL w praktyce. Miłej i owocnej nauki!!!

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Wprowadzenie do baz danych

Model relacyjny. Wykład II

Zagadnienia podstawowe

SQL - Structured Query Language. strukturalny język zapytań

Bazy danych - Materiały do laboratoriów IV

Laboratorium Bazy danych SQL 3 1

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Optymalizacja poleceń SQL Metody dostępu do danych

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Autor: Joanna Karwowska

Tworzenie zapytań do Microsoft SQL Server

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Transkrypt:

Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania projektami w firmach informatycznych realizowany w ramach Programu Operacyjnego Kapitał Ludzki Konstruowanie Baz Danych DQL agregacja danych Antoni Ligęza ligeza@agh.edu.pl http://home.agh.edu.pl/~ligeza http://home.agh.edu.pl/~ligeza/wiki

Agregacja w SQL 2 Bazy Danych Wykład p.t. Agregacja i Grupowanie Danych Funkcje Agregacji. Opcje GROUP BY oraz HAVING Antoni Ligęza ligeza@agh.edu.pl http://galaxy.uci.agh.edu.pl/~ligeza Wykorzystano materiały: http://www.postgresql.org/docs/8.3/ interactive/index.html

Agregacja w SQL 3 Komendy SQL: SELECT Command: SELECT Description: retrieve rows from a table or view SELECT [ ALL DISTINCT [ ON ( expression [,...] ) ] ] * expression [ AS output_name ] [,...] [ FROM from_item [,...] ] [ WHERE condition ] [ GROUP BY expression [,...] ] [ HAVING condition [,...] ] [ { UNION INTERSECT EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC DESC USING operator ] [,...] ] [ LIMIT { count ALL } ] [ OFFSET start ] [ FOR { UPDATE SHARE } [ OF table_name [,...] ] [ NOWAIT ] [...] ] where from_item can be one of: [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [,...] ) ] ] ( select ) [ AS ] alias [ ( column_alias [,...] ) ] function_name ( [ argument [,...] ] ) [ AS ] alias [ ( column_alias [,...] column_definition [,...] ) ] function_name ( [ argument [,...] ] ) AS ( column_definition [,...] ) from_item [ NATURAL ] join_type from_item [ ON join_condition USING ( join_column [,...] ) ]

Agregacja w SQL 4 Prosta agregacja SUM suma. AVG średnia. COUNT(*) zliczanie rekordów. pracownicy=> SELECT SUM(pobory) AS suma, AVG(POBORY) as średnia, COUNT(*) as liczba FROM prac; suma średnia liczba ----------+-----------------------+-------- 19500.00 2437.5000000000000000 9 pracownicy=> SELECT SUM(pobory) AS suma, round(avg(pobory),2) as średnia, COUNT(*) as liczba FROM prac; suma średnia liczba ----------+----------+-------- 19500.00 2437.50 9

Agregacja w SQL 5 Operacje agregacji i grupowania Agregacja: łączenie danych z wielu rekordów, zwykle znacząco redukuje liczbę rekordów, możliwe zliczanie rekordów, dotyczy danych numerycznych, umożliwia wyliczanie wartości zdefiniowanych funkcji, działa również w przypadku wartości NULL, tracone są dane indywidualne. Grupowanie: możliwe jest tworzenie grup na poziomie: całej tabeli jedna grupa; grupy w tabeli jeden stopień grupowania, grupy z podgrupami grupowanie dwustopniowe, grupowanie hierarchiczne. możliwa jest eliminacja grup, możliwe jest zliczanie rekordów w grupach, możliwe jest porządkowanie wg parametrów grup, parametry definiujące grupy mogą być wyświetlane.

Agregacja w SQL 6 Funkcje agregacji AVG(<exp>) Średnia z wartości wyrażenia <exp>, COUNT(<exp>) Liczba wierszy dla których <exp> nie jest NULL, COUNT( ) Liczba wszystkich wierszy, COUNT(DISTINCT(<exp>)) Liczba wszystkich wierszydla których wartość <exp> jest różna, MAX(<exp>) Maksymalna wartość <exp>, MIN(<exp>) Minimalna wartość <exp>, STDDEV(<exp>) Odchylenie standardowe dla <exp>, SUM(<exp>) Suma wartości <exp>, VARIANCE(<exp>) Wariancja dla <exp>.

Agregacja w SQL 7 Typowe przykłady prostej agregacji pracownicy=> SELECT * FROM tpra; id nazwisko imie dzial stanowisko pobory -------+------------+----------+-------+------------+--------- 1100 Kowal Adam PD303 robotnik 1500.00 110 Kowalik Artur PD303 kierownik 1500.00 1110 Kowalewski Adam PR202 robotnik 3500.00 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 1101 Kowalski Antoni PD303 robotnik 4500.00 1011 Kowalowski Alojzy PK101 robotnik 2500.00 111 Kowalczuk Adam PR202 kierownik 2500.00 1010 Kawula Alojzy PK101 robotnik 2500.00 102 Janiak Jerzy PK101 analityk 6000.00 (9 rows) pracownicy=> SELECT AVG(pobory) FROM tpra; avg ----------------------- 2833.3333333333333333 pracownicy=> SELECT round(avg(pobory),2) FROM tpra; round --------- 2833.33

Agregacja w SQL 8 Typowe przykłady Dwa i więcej agregatów: pracownicy=> SELECT sum(pobory), round(avg(pobory),2) FROM tpra; sum round ----------+--------- 25500.00 2833.33 pracownicy=> SELECT sum(pobory), round(avg(pobory),2), count(*) FROM tpra; sum round count ----------+---------+------- 25500.00 2833.33 9 Deklaracja nazw kolumn agregatów: pracownicy=> SELECT sum(pobory) AS SUMA, round(avg(pobory),2) AS SREDNIA, count(*) AS LICZBA FROM tpra; suma srednia liczba ----------+---------+-------- 25500.00 2833.33 9

Agregacja w SQL 9 Użycie COUNT COUNT(*) wszystkie rekordy, COUNT(atrybut) wszystkie różne od NULL, COUNT(DISTINCT(atrybut)) wszystkie różne od siebie i od NULL. pracownicy=> select * from tpra; id nazwisko imie dzial stanowisko pobory -------+------------+----------+-------+------------+--------- 110 Kowalik Artur PD303 kierownik 1500.00 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 1101 Kowalski Antoni PD303 robotnik 4500.00 1011 Kowalowski Alojzy PK101 robotnik 2500.00 1010 Kawula Alojzy PK101 robotnik 2500.00 102 Janiak Jerzy PK101 analityk 6000.00 1100 Kowal PD303 robotnik 1500.00 1110 Kowalewski PR202 robotnik 3500.00 111 Kowalczuk PR202 kierownik 2500.00 (9 rows) pracownicy=> SELECT COUNT(*) FROM tpra; count ------- 9 pracownicy=> SELECT COUNT(imie) FROM tpra; count ------- 6 pracownicy=> SELECT COUNT(DISTINCT(imie)) FROM tpra; count ------- 5

Agregacja w SQL 10 Agregacja z WHERE pracownicy=> select * from tpra; id nazwisko imie dzial stanowisko pobory -------+------------+----------+-------+------------+--------- 110 Kowalik Artur PD303 kierownik 1500.00 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 1101 Kowalski Antoni PD303 robotnik 4500.00 1011 Kowalowski Alojzy PK101 robotnik 2500.00 1010 Kawula Alojzy PK101 robotnik 2500.00 102 Janiak Jerzy PK101 analityk 6000.00 1100 Kowal PD303 robotnik 1500.00 1110 Kowalewski PR202 robotnik 3500.00 111 Kowalczuk PR202 kierownik 2500.00 (9 rows) SELECT sum(pobory) AS SUMA, round(avg(pobory),2) AS SREDNIA, count(*) AS LICZBA FROM tpra WHERE stanowisko <> robotnik ; suma srednia liczba ----------+---------+-------- 11000.00 2750.00 4 pracownicy=> SELECT sum(pobory) AS SUMA, round(avg(pobory),2) AS SREDNIA, count(*) AS LICZBA FROM tpra WHERE dzial= PD303 ; suma srednia liczba ---------+---------+-------- 7500.00 2500.00 3

Agregacja w SQL 11 Grupowanie GROUP BY GROUP BY <exp> grupowanie jednostopniowe pracownicy=> SELECT * FROM tpra; id nazwisko imie dzial stanowisko pobory -------+------------+----------+-------+------------+--------- 110 Kowalik Artur PD303 kierownik 1500.00 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 1101 Kowalski Antoni PD303 robotnik 4500.00 1011 Kowalowski Alojzy PK101 robotnik 2500.00 1010 Kawula Alojzy PK101 robotnik 2500.00 102 Janiak Jerzy PK101 analityk 6000.00 1100 Kowal PD303 robotnik 1500.00 1110 Kowalewski PR202 robotnik 3500.00 111 Kowalczuk PR202 kierownik 2500.00 (9 rows) Tworzymy grupę (np. pracownicy z jednego działu) za pomocą WHERE: pracownicy=> SELECT SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra WHERE dzial= PK101 ; sum round count ----------+---------+------- 12000.00 3000.00 4

Agregacja w SQL 12 Trzy grupy trzy działy pracownicy=> SELECT DISTINCT dzial FROM tpra; dzial ------- PD303 PK101 PR202 pracownicy=> SELECT SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra WHERE dzial= PK101 ; sum round count ----------+---------+------- 12000.00 3000.00 4 pracownicy=> SELECT SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra WHERE dzial= PR202 ; sum round count ---------+---------+------- 6000.00 3000.00 2 pracownicy=> SELECT SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra WHERE dzial= PD303 ; sum round count ---------+---------+------- 7500.00 2500.00 3

Agregacja w SQL 13 Jawne grupowanie pracownicy=> SELECT SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra GROUP BY dzial; sum round count ----------+---------+------- 12000.00 3000.00 4 6000.00 3000.00 2 7500.00 2500.00 3 Można tu podać parametr grupowania jest stały w grupie. pracownicy=> SELECT dzial, SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra GROUP BY dzial; dzial sum round count -------+----------+---------+------- PK101 12000.00 3000.00 4 PR202 6000.00 3000.00 2 PD303 7500.00 2500.00 3

Agregacja w SQL 14 Grupowanie z ORDER BY pracownicy=> SELECT dzial, SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra GROUP BY dzial; dzial sum round count -------+----------+---------+------- PK101 12000.00 3000.00 4 PR202 6000.00 3000.00 2 PD303 7500.00 2500.00 3 pracownicy=> SELECT dzial, SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra GROUP BY dzial ORDER BY dzial; dzial sum round count -------+----------+---------+------- PD303 7500.00 2500.00 3 PK101 12000.00 3000.00 4 PR202 6000.00 3000.00 2 pracownicy=> SELECT dzial, SUM(pobory), ROUND(AVG(pobory),2), COUNT(*) FROM tpra GROUP BY dzial ORDER BY ROUND(AVG(pobory),2); dzial sum round count -------+----------+---------+------- PD303 7500.00 2500.00 3 PK101 12000.00 3000.00 4 PR202 6000.00 3000.00 2

Agregacja w SQL 15 Grupowanie z ORDER BY; nazwy i pozycje kolumn pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial ORDER BY srednia,suma; dzial suma srednia liczba -------+----------+---------+-------- PD303 7500.00 2500.00 3 PR202 6000.00 3000.00 2 PK101 12000.00 3000.00 4 pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial ORDER BY 3 DESC, 2 ASC; dzial suma srednia liczba -------+----------+---------+-------- PR202 6000.00 3000.00 2 PK101 12000.00 3000.00 4 PD303 7500.00 2500.00 3

Agregacja w SQL 16 HAVING selekcja grup pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial; dzial suma srednia liczba -------+----------+---------+-------- PK101 12000.00 3000.00 4 PR202 6000.00 3000.00 2 PD303 7500.00 2500.00 3 pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial HAVING COUNT(*) > 2; dzial suma srednia liczba -------+----------+---------+-------- PK101 12000.00 3000.00 4 PD303 7500.00 2500.00 3 (2 rows)

Agregacja w SQL 17 HAVING a WHERE WHERE działa na poziomie pojedynczych rekordów, HAVING działa na poziomie agregatów (grup). pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial; dzial suma srednia liczba -------+----------+---------+-------- PK101 12000.00 3000.00 4 PR202 6000.00 3000.00 2 PD303 7500.00 2500.00 3 pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra WHERE stanowisko <> kierownik GROUP BY dzial; dzial suma srednia liczba -------+----------+---------+-------- PK101 11000.00 3666.67 3 PR202 3500.00 3500.00 1 PD303 6000.00 3000.00 2

Agregacja w SQL 18 HAVING a WHERE pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial HAVING AVG(pobory) > 2500; dzial suma srednia liczba -------+----------+---------+-------- PK101 12000.00 3000.00 4 PR202 6000.00 3000.00 2 (2 rows) pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial HAVING AVG(pobory) > 3000; dzial suma srednia liczba -------+------+---------+-------- (0 rows) pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra WHERE stanowisko <> kierownik GROUP BY dzial HAVING AVG(pobory) > 3000; dzial suma srednia liczba -------+----------+---------+-------- PK101 11000.00 3666.67 3 PR202 3500.00 3500.00 1 (2 rows)

Agregacja w SQL 19 Grupowanie dwustopniowe wstęp pracownicy=> SELECT dzial, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial; dzial suma srednia liczba -------+----------+---------+-------- PK101 12000.00 3000.00 4 PR202 6000.00 3000.00 2 PD303 7500.00 2500.00 3 pracownicy=> SELECT stanowisko, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY stanowisko; stanowisko suma srednia liczba ------------+----------+---------+-------- robotnik 14500.00 2900.00 5 kierownik 5000.00 1666.67 3 analityk 6000.00 6000.00 1

Agregacja w SQL 20 Grupowanie dwustopniowe pracownicy=> SELECT dzial, stanowisko, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial, stanowisko; dzial stanowisko suma srednia liczba -------+------------+---------+---------+-------- PR202 robotnik 3500.00 3500.00 1 PK101 analityk 6000.00 6000.00 1 PK101 kierownik 1000.00 1000.00 1 PD303 kierownik 1500.00 1500.00 1 PK101 robotnik 5000.00 2500.00 2 PD303 robotnik 6000.00 3000.00 2 PR202 kierownik 2500.00 2500.00 1 (7 rows) pracownicy=> SELECT dzial, stanowisko, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY stanowisko,dzial; dzial stanowisko suma srednia liczba -------+------------+---------+---------+-------- PR202 robotnik 3500.00 3500.00 1 PK101 analityk 6000.00 6000.00 1 PK101 kierownik 1000.00 1000.00 1 PD303 robotnik 6000.00 3000.00 2 PR202 kierownik 2500.00 2500.00 1 PD303 kierownik 1500.00 1500.00 1 PK101 robotnik 5000.00 2500.00 2 (7 rows)

Agregacja w SQL 21 Grupowanie dwustopniowe z odrzucaniem grup jednostkowych pracownicy=> SELECT dzial, stanowisko, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY dzial, stanowisko HAVING COUNT(*) > 1; dzial stanowisko suma srednia liczba -------+------------+---------+---------+-------- PK101 robotnik 5000.00 2500.00 2 PD303 robotnik 6000.00 3000.00 2 (2 rows) pracownicy=> SELECT dzial, stanowisko, SUM(pobory) AS suma, ROUND(AVG(pobory),2) AS srednia, COUNT(*) AS liczba FROM tpra GROUP BY stanowisko, dzial HAVING COUNT(*) > 1; dzial stanowisko suma srednia liczba -------+------------+---------+---------+-------- PD303 robotnik 6000.00 3000.00 2 PK101 robotnik 5000.00 2500.00 2 (2 rows)

Agregacja w SQL 22 GROUP BY + NULL pracownicy=> SELECT * FROM tpra; id nazwisko imie dzial stanowisko pobory -------+------------+----------+-------+------------+--------- 110 Kowalik Artur PD303 kierownik 1500.00 101 Kowalczyk Amadeusz PK101 kierownik 1000.00 1101 Kowalski Antoni PD303 robotnik 4500.00 1011 Kowalowski Alojzy PK101 robotnik 2500.00 1010 Kawula Alojzy PK101 robotnik 2500.00 102 Janiak Jerzy PK101 analityk 6000.00 1100 Kowal PD303 robotnik 1500.00 1110 Kowalewski PR202 robotnik 3500.00 111 Kowalczuk PR202 kierownik 2500.00 (9 rows) pracownicy=> SELECT imie, count(*) FROM tpra GROUP BY imie; imie count ----------+------- 3 Alojzy 2 Jerzy 1 Antoni 1 Artur 1 Amadeusz 1 (6 rows)

Agregacja w SQL 23 Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania projektami w firmach informatycznych realizowany w ramach Programu Operacyjnego Kapitał Ludzki