Język SQL – przypomnienie Bazy i hurtownie danych, TWO1, 2010 https://ophelia.cs.put.poznan.pl/webdav/dbdw/students/ dbdw-winter_2010-11/
Bazy i hurtownie danych Tworzenie tabel Uruchomić SQL Management Studio SQL Server Authentication User: student (sa) Password: student Utworzyć nową bazę danych (np. bihd) Uruchomić skrypt CreateDB.sql Uwaga: jako aktywną należy wybrać bazę danych utworzoną w kroku 2 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Utworzone tabele 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Utworzone tabele 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 1 Wyświetl nazwy etatów i sumaryczne zarobki (z uwzględnieniem płacy dodatkowej) pracowników zatrudnionych na tych etatach. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 1 - Rozwiązanie COALESCE zapewnia taką samą funkcjonalność jak ISNULL, jednak jest zgodna ze standardem ANSI (tzn. będzie działała w innych bazach danych), podczas gdy ISNULL jest specyficzne dla T-SQL (MS SQL). SELECT ETAT, SUM(PLACA_POD + COALESCE(PLACA_DOD, 0)) AS MIESIECZNE_ZAROBKI FROM PRACOWNICY GROUP BY ETAT 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 2 Wyświetl według malejącej płacy podstawowej nazwiska i daty zatrudnienia wszystkich asystentów zatrudnionych w Instytucie. Jeśli kilku pracowników ma te same zarobki, to niech będą oni wyświetlani w porządku alfabetycznym. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 2 - Rozwiązanie SELECT NAZWISKO, ZATRUDNIONY, PLACA_POD FROM PRACOWNICY WHERE ETAT = 'ASYSTENT' ORDER BY PLACA_POD DESC, NAZWISKO 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 3 Wyświetl nazwiska i identyfikatory pracowników zatrudnionych w zespole nr 20, których nazwiska zaczynają się na literę 'M' lub kończą się na 'SKI'. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 3 - Rozwiązanie SELECT NAZWISKO, ID_PRAC, ID_ZESP FROM PRACOWNICY WHERE ID_ZESP = 20 AND (NAZWISKO LIKE 'M%' OR NAZWISKO LIKE '%SKI') 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 4 Wyświetl liczbę wszystkich profesorów zatrudnionych w Instytucie. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 4 - Rozwiązanie SELECT COUNT(ID_PRAC) AS LICZBA_PROFESOROW FROM PRACOWNICY WHERE ETAT = 'PROFESOR' 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 5 Dla każdego pracownika wyświetl pensję (płaca podstawowa) najgorzej zarabiającego podwładnego. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 5 - Rozwiązanie SELECT ID_SZEFA, MIN(PLACA_POD) AS PLACA_MINIMALNA FROM PRACOWNICY WHERE ID_SZEFA IS NOT NULL GROUP BY ID_SZEFA 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 6 Wyświetl średnie pensje wypłacane w ramach poszczególnych etatów i liczbę pracowników zatrudnionych na danym etacie. Pomiń pracowników zatrudnionych po 1.01.1990. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 6 - Rozwiązanie SELECT ETAT, AVG(PLACA_POD) AS SREDNIA_PLACA, COUNT(ID_PRAC) AS LICZBA_PRACOWNIKOW FROM PRACOWNICY WHERE ZATRUDNIONY < '1990-01-01' GROUP BY ETAT 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 7 Wyświetl w porządku alfabetycznym nazwiska wszystkich pracowników z ulicy PIOTROWO 3A. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 7 - Rozwiązanie SELECT P.NAZWISKO, Z.ADRES FROM PRACOWNICY P INNER JOIN ZESPOLY Z ON P.ID_ZESP = Z.ID_ZESP WHERE Z.ADRES = 'PIOTROWO 3A' ORDER BY P.NAZWISKO 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 8 Wyświetl nazwiska, etaty i pensje podstawowe pracowników, których rzeczywiste zarobki (pensje podstawowe) odpowiadają widełkom płacowym przewidzianym dla sekretarek. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 8 - Rozwiązanie SELECT P.NAZWISKO, P.ETAT, P.PLACA_POD, E.NAZWA, E.PLACA_MIN, E.PLACA_MAX FROM PRACOWNICY P, ETATY E WHERE E.NAZWA = 'SEKRETARKA' AND P.PLACA_POD BETWEEN E.PLACA_MIN AND E.PLACA_MAX 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 9 Wyświetl numer zespołu, który nie zatrudnia żadnych pracowników. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 9 - Rozwiązanie SELECT Z.ID_ZESP FROM ZESPOLY Z WHERE NOT EXISTS ( SELECT P.ID_PRAC FROM PRACOWNICY P WHERE P.ID_ZESP = Z.ID_ZESP ) 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 10 Wyświetl nazwy i numery zespołów (oraz łączną liczbę pracowników), które zatrudniają więcej niż 3 pracowników. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 10 - Rozwiązanie SELECT Z.NAZWA, Z.ID_ZESP, COUNT(P.ID_PRAC) AS LICZBA_PRACOWNIKOW FROM ZESPOLY Z INNER JOIN PRACOWNICY P ON P.ID_ZESP = Z.ID_ZESP GROUP BY Z.NAZWA, Z.ID_ZESP HAVING COUNT(P.ID_PRAC) > 3 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 11 Wyświetl w odwrotnej alfabetycznej kolejności nazwiska i etaty pracowników pracujących w tym samym zespole, co pracownik o nazwisku Brzezinski. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 11 - Rozwiązanie SELECT P1.NAZWISKO, P1.ETAT FROM PRACOWNICY P1 WHERE P1.ID_ZESP IN ( SELECT P2.ID_ZESP FROM PRACOWNICY P2 WHERE P2.NAZWISKO = 'BRZEZINSKI') ORDER BY P1.NAZWISKO DESC 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 12 W ramach każdego zespołu, dla każdego etatu wyświetl najwyższą płacę podstawową. 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 12 - Rozwiązanie SELECT ID_ZESP, ETAT, MAX(PLACA_POD) AS MAKSYMALNA_PLACA FROM PRACOWNICY GROUP BY ID_ZESP, ETAT ORDER BY ID_ZESP, ETAT 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 13 Wyświetl numer zespołu, którego pracownicy sumarycznie zarabiają najwięcej (weź pod uwagę tylko placę podstawową). 21/11/2010 Bazy i hurtownie danych
Bazy i hurtownie danych Zadanie 13 - Rozwiązanie SELECT TOP 1 ID_ZESP, SUM(PLACA_POD) AS LACZNA_PLACA FROM PRACOWNICY GROUP BY ID_ZESP ORDER BY LACZNA_PLACA DESC SELECT P1.ID_ZESP, SUM(P1.PLACA_POD) AS LACZNA_PLACA FROM PRACOWNICY P1 HAVING NOT EXISTS ( SELECT P2.ID_ZESP FROM PRACOWNICY P2 GROUP BY P2.ID_ZESP HAVING SUM(P2.PLACA_POD) > SUM(P1.PLACA_POD)) 21/11/2010 Bazy i hurtownie danych