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

Podobne dokumenty
SQL do zaawansowanych analiz danych część 1.

Klasyczna Analiza Danych

Ćwiczenie 3 funkcje agregujące

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

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

Język SQL. Rozdział 8. Język manipulowania danymi DML zadania

Bazy Danych i Usługi Sieciowe

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

Podstawy SQL. 1. Wyświetl całość informacji z relacji ZESPOLY. 2. Wyświetl całość informacji z relacji PRACOWNICY

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Przestrzenne bazy danych Podstawy języka SQL

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

Wprowadzenie do języka SQL

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

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Rozdział 14 Funkcje analityczne

Podstawy języka SQL cz. 2

Laboratorium Bazy danych SQL 3 1

Język SQL. Rozdział 8. Język manipulowania danymi DML

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

Język SQL. Rozdział 2. Proste zapytania

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

SQL praca z tabelami 4. Wykład 7

SQL (ang. Structured Query Language)

Ćwiczenie 5 podzapytania

Struktura bazy danych

ACESS- zadania z wykorzystaniem poleceń SQL

Wymagania: Konstrukcja prostych zapytań w języku SQL, umiejętność wykorzystania funkcji wierszowych i agregujących.

Autor: Joanna Karwowska

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

Autor: Joanna Karwowska

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Ćwiczenie 6 - DML. Tworzenie, modyfikacja i usuwanie krotek. Podstawy poleceń COMMIT i ROLLBACK. Ćwiczenie 6 DML. Wymagania: Bazy Danych

W y k ł a d SELECT. Polecenie wyświetlające zawartość tabeli. Składnia uproszczona: Temat: Polecenie SELECT. Plan wykładu:

Ćwiczenie zapytań języka bazy danych PostgreSQL

Systemy GIS Tworzenie zapytań w bazach danych

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

Relacyjne bazy danych. Podstawy SQL

Relacyjny model danych. Relacyjny model danych

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

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

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

MongoDB. mini przewodnik. Instytut Informatyki, Politechnika Poznańska. v

Optymalizacja poleceń SQL Metody dostępu do danych

MongoDB. mini przewodnik. Instytut Informatyki, Politechnika Poznańska. v

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

Konstruowanie Baz Danych DQL agregacja danych

Relacyjne bazy danych. Podstawy SQL

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

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

Technologie baz danych

Bazy danych - Materiały do laboratoriów IV

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

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

Podstawowe zapytania SELECT (na jednej tabeli)

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

SQL do zaawansowanych analiz danych część 2.

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

1. Język T SQL wprowadzenie do tworzenia zapytań i modyfikowania bazy danych

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

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

Laboratorium Bazy danych SQL 2

Zadania z SQLa (MS SQL Server)

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

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Bazy Danych. SQL Podstawy języka II: zapytania. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

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

Bazy danych SQL Server 2005

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

Grupowanie i funkcje agregujące

PODZAPYTANIE (SUBSELECT)

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

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

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Ćwiczenie 4 - połączenia

Ćwiczenie 1 podstawy

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

Język PL/SQL. Rozdział 2. Kursory

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

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Bazy danych wykład trzeci. Konrad Zdanowski

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

188 Funkcje analityczne

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

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

SQL: zadania + odpowiedzi, wszystkie podstawowe schematy.

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

Bazy danych. dr inż. Arkadiusz Mirakowski

WPROWADZENIE DO JĘZYKA SQL

Zajęcia 2 podstawy języka SQL

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

Podyplomowe Studia Systemy informatyczne w logistyce

Język SQL. Rozdział 3. Funkcje wierszowe

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Autor: Joanna Karwowska

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

Grupowanie danych klauzula GROUP BY

Transkrypt:

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

Funkcje grupowe (agregujące) (1) Działają na zbiorach rekordów, nazywanych grupami. Rekordy należą do tej samej grupy jeśli posiadają tą samą wartość wyrażenia grupującego. Funkcja grupowa dla każdej grupy wylicza pojedynczą wartość na podstawie wyrażenia, będącego jej parametrem. 2

Funkcje grupowe (agregujące) (2) Problem: znajdź sumaryczną płacę pracowników w każdej grupie etatowej. wyrażenie grupujące: etat ETAT ADIUNKT ADIUNKT ASYSTENT ASYSTENT ASYSTENT ASYSTENT PROFESOR PROFESOR PROFESOR PROFESOR PLACA_POD 590 645,5 439,7 480 371 480 1350 830 960 1070 grupa dla etatu = 'ADIUNKT' grupa dla etatu = 'ASYSTENT' grupa dla etatu = 'PROFESOR' ETAT ADIUNKT ASYSTENT PROFESOR SUMA 1235,5 1770,7 4210 3

Rodzaje funkcji grupowych Funkcje: AVG średnia, SUM suma, COUNT liczba wystąpień, VARIANCE wariancja, MAX maksimum, STDDEV odchylenie stand. MIN minimum, Składnia: nazwa_funkcji(all distinct wyrażenie) Szczególny przypadek funkcja COUNT: COUNT(*) liczba rekordów, COUNT(all distinctwyrażenie) liczba niepustych wartości wyrażenia. Uwaga! Funkcje grupowe eliminują wartości puste. 4

Zapytania z jedną grupą (1) Wszystkie rekordy, przetwarzane przez zapytanie, tworzą jedną grupę. Wynikiem zapytania jest co najwyżej jeden rekord. Znajdź sumaryczną płacę podstawową wszystkich pracowników. SELECT SUM(placa_pod) FROM pracownicy; PLACA_POD... 200... 340... null... 456... 120 SUM 5

Zapytania z jedną grupą (2) Znajdź średnią płacę podstawową wśród pracowników zespołu 20. SELECT AVG(placa_pod) FROM pracownicy WHERE id_zesp = 20; Znajdź maksymalną wartość dodatku oraz liczbę pracowników na etacie ASYSTENT. SELECT COUNT(*), MAX(placa_dod) FROM pracownicy WHERE etat = 'ASYSTENT'; 6

Zapytania z wieloma grupami (1) Klauzula GROUP BY wyrażenie definiuje wyrażenie grupujące. Wynikiem zapytania jest jeden rekord dla każdej grupy. SELECT id_zesp, SUM(placa_pod) FROM pracownicy GROUP BY id_zesp; NAZWISKO... ID_Z PLACA WEGLARZ... 10 1730 BLAZEWICZ... 40 1350 SLOWINSKI... 30 1070 BRZEZINSKI... 20 960 MORZY... 20 830 KOSZLAJDA... 20 590 ZAKRZEWICZ... 30 208 BIALY... 30 250 NAZWISKO... ID_Z PLACA WEGLARZ... 10 1730 BRZEZINSKI... 20 960 MORZY... 20 830 KOSZLAJDA... 20 590 SLOWINSKI... 30 1070 BIALY... 30 250 ZAKRZEWICZ... 30 208 BLAZEWICZ... 40 1350 SUM SUM SUM SUM 7

Zapytania z wieloma grupami (2) Wylicz najwyższą płacę wśród pracowników zatrudnionych na każdym etacie SELECT etat, MAX(placa_pod) FROM pracownicy GROUP BY etat; Podział grup na podgrupy W ramach każdego zespołu dla każdego etatu występującego w zespole oblicz najwyższą płacę SELECT id_zesp, etat, MAX(placa_pod) FROM pracownicy GROUP BY id_zesp, etat; 8

Klauzula HAVING Pozwala na wybór grup spełniających określone warunki, działa dla grup analogicznie jak klauzula WHERE dla pojedynczych krotek wyświetl grupy etatowe, których maksymalna płaca podstawowa przekracza 1000 złotych SELECT etat, SUM(placa_pod) FROM pracownicy GROUP BY etat HAVING MAX(placa_pod) > 1000; wyświetl nazwy etatów i liczbę zatrudnionych na danym etacie, uwzględnij tylko etaty, na których jest zatrudnionych co najmniej 2 pracowników otrzymujących płacę dodatkową SELECT etat, COUNT(*) FROM pracownicy WHERE placa_dod IS NOT NULL GROUP BY etat HAVING COUNT(*) >= 2; 9

Sortowanie po grupowaniu W klauzuli ORDER BY, zastosowanej w zapytaniu z grupowaniem, możemy umieścić jedynie atrybuty grupujące i/lub funkcje grupowe SELECT id_zesp, AVG(placa_pod) FROM pracownicy GROUP BY id_zesp HAVING SUM(placa_pod) > 3000 ORDER BY MAX(placa_pod) DESC; 10

Konstrukcje zaawansowane Użycie funkcji agregującej jako parametru innej funkcji agregującej; przykład: znajdź maksymalną sumę płac pracowników zatrudnionych na poszczególnych etatach. SELECT MAX(SUM(placa_pod)) FROM pracownicy GROUP BY etat; Zapytanie z jedną grupą i klauzulą HAVING; przykład: podaj wartość maksymalnej płacy pracowników zespołów 10 i 20, ale tylko wtedy, jeśli liczba pracowników w tych zespołach przekracza 12 SELECT MAX(placa_pod) FROM pracownicy WHERE id_zesp in (10,20) HAVING COUNT(*) > 12; 11

Najczęściej popełniane błędy (1) Umieszczenie w klauzuli SELECT zapytania z jedną grupą wyrażenia nie będącego funkcją grupową. SELECT etat, SUM (placa_pod) FROM pracownicy WHERE etat = 'PROFESOR'; Umieszczenie w klauzuli SELECT zapytania z wieloma grupami wyrażenia nie będącego wyrażeniem grupującym lub funkcją grupową. SELECT id_zesp, nazwisko, SUM(placa_pod) FROM pracownicy GROUP BY id_zesp; 12

Najczęściej popełniane błędy (2) Umieszczenie funkcji grupowej w warunku w klauzuli WHERE. SELECT id_zesp FROM pracownicy WHERE COUNT(*) > 3 GROUP BY id_zesp; Umieszczenie w warunku w klauzuli HAVING wyrażenia nie będącego funkcją grupową lub wyrażeniem grupującym. SELECT id_zesp, COUNT(distinct placa_dod) FROM pracownicy GROUP BY id_zesp HAVING etat = 'PROFESOR'; 13

Najczęściej popełniane błędy (3) Porządkowanie wyników zapytania z wieloma grupami według wartości wyrażenia nie będącego wyrażeniem grupującym lub funkcją grupową. SELECT id_zesp, COUNT(distinct placa_dod) FROM pracownicy GROUP BY id_zesp ORDER BY nazwisko; 14

Funkcja LISTAGG Umożliwia dodanie do rekordu wynikowego dla grupy listy wartości z atrybutów rekordów, należących do grupy. SELECT etat, SUM(placa_pod) AS suma, LISTAGG(nazwisko, ',') WITHIN GROUP (ORDER BY nazwisko) AS pracownicy FROM pracownicy GROUP BY etat ORDER BY etat; ETAT SUMA PRACOWNICY ---------- ---------- ---------------------------------------- ADIUNKT 1235,5 KOSZLAJDA,KROLIKOWSKI ASYSTENT 1770,7 HAPKE,JEZIERSKI,KONOPKA,MATYSIAK DYREKTOR 1730 WEGLARZ PROFESOR 4210 BLAZEWICZ,BRZEZINSKI,MORZY,SLOWINSKI SEKRETARKA 410,2 MAREK STAZYSTA 458 BIALY,ZAKRZEWICZ 15