funkcja floor
Transkrypt
funkcja floor
Zależności semantyczne BAZY DANYCH • Przedstawiają samoistną informację o świecie, • Używane przy opracowaniu i ulepszaniu schematów relacji i bazy danych, • Używane do kontroli danych przechowywanych w relacjach. WYKŁAD 3 Ograniczenia integralności. Funkcje tekstowe i numeryczne. Funkcje agregujące. (Wybrane materiały) Dr inż. E. Busłowska Copyright © 2014-2015 E. Busłowska. 1 • Nakładane na zakres wartości przyjmowanych przez atrybuty, • Wiążące kilka atrybutów - zależności funkcyjne, • Związki zachodzące pomiędzy atrybutami z jednej lub kilku relacji. 3 Ograniczenia dotyczące jednej relacji • Wartości wprowadzane do atrybutu są sprawdzane pod względem zgodności z typem danych i dziedziną wartości, • Obowiązkowość – wartości jednego rekordu pociągają wystąpienie innych rekordów. Copyright © 2014-2015 E. Busłowska. 4 Związki zachodzące pomiędzy atrybutami • Funkcyjne Zbiór atrybutów Y jest zależy funkcyjnie od zbioru X gdy z każdą konfiguracją wartości atrybutów z X jest związana co najwyżej jedna konfiguracja wartości z Y, X→Y, • Wielowartościowe Zbiór atrybutów Y jest zależny wielowartościowo od zbioru X gdy z każdą konfiguracją wartości atrybutów z X jest związany zbiór konfiguracji wartości z Y niezależnie od wartości pozostałych atrybutów, X→→Y. Copyright © 2014-2015 E. Busłowska. 2 Ograniczenia dotyczące atrybutu Typy zależności semantycznych Copyright © 2014-2015 E. Busłowska. Copyright © 2014-2015 E. Busłowska. 5 • Wartość w jednym atrybucie rekordu będzie zawsze zależna od wartości innego atrybutu lub atrybutów. Copyright © 2014-2015 E. Busłowska. 6 1 Przybliżenia z góry i od dołu Funkcja podmieniająca znaki • TRANSLATE(przekształcany_napis,zbiór_przeszu kiwania,zbór_podstawienia) – podmienia znaki w napisie które określa drugi argument na odpowiadające im znaki trzeciego argumentu, • REPLACE(podany_napis,jak,na_co) wystąpienie w podany_napis ciąg jak zostanie zastąpione przez ciąg na_co Copyright © 2014-2015 E. Busłowska. • FLOOR(liczba) odrzuca cyfry na prawo od kropki dziesiętnej • CEIL(liczba) zwraca najmniejszą możliwą liczbę całkowitą, większą lub równą liczbie wyjściowej • SQL> SELECT FLOOR(3.5), CEIL(3.5) FROM dual; FLOOR(3.5) CEIL(3.5) ---------- ---------3 4 7 8 Funkcje matematyczne Funkcje zaokrąglające i obcinające • ROUND(liczba,n) - zaokrągla liczbę do n-tego dziesiętnego miejsca po przecinku • TRUNC(liczba,n) - obcina wartość do n-tego dziesiętnego miejsca po przecinku SELECT ROUND(123.456,1), ROUND(123.456), ROUND(123.456,-1), TRUNC(123.456,1), TRUNC(123.456), TRUNC(123.456,-1) FROM dual; • POWER(liczba,n) - liczba do podanej potęgi, • SQRT(liczba) - pierwiastek kwadratowy z podanej liczby, • ABS(liczba) - wartość bezwzględna, • MOD(liczba1, liczba2) - reszta z dzielenia. ROUND(123.456,1) ROUND(123.456) ROUND(123.456,-1) TRUNC(123.456,1), TRUNC(123.456) TRUNC(123.456,-1) ------------------------ ------------------------ ------------------------- ------------------------- ---------------------- -------------------------123,5 123 120 123,4 123 120 9 Funkcje operujące na datach Copyright © 2014-2015 E. Busłowska. 10 Konwersja między tekstem a liczbą • SQL> SELECT SYSDATE FROM dual; SYSDATE -------14/10/13 • SQL> SELECT MONTH_BETWEEN(SYSDATE, Datazatr), ADD_MONTHS(Datazatr,6) FROM pracownicy; • TO_CHAR(wartość [,maska do formatowania]) – przekształca argument wartość na jej postać znakową. • SQL> SELECT NEXT_DAY(SYSATE,’Monday’) FROM dual; • SQL> SELECT LAST_DAY(’14/10/13’), LAST_DAY(’14/10/14’) FROM dual; Copyright © 2014-2015 E. Busłowska. 11 Copyright © 2014-2015 E. Busłowska. 12 2 Wyrażenia agregujące i funkcje grupowe Przykłady funkcji agregujących SQL> SELECT AVG(sal) • Count([distinct] wyrażenie ) – zlicza wiersze • Min([distinct] wyrażenie ) – wylicza minimalną wartość • Max([distinct] wyrażenie ) - wylicza maksymalną wartość • Avg([distinct] wyrażenie ) - wylicza średnią wartość • Sum([distinct] wyrażenie ) – wylicza sumę Copyright © 2014-2015 E. Busłowska. 2 FROM emp; AVG(SAL) ---------2133,33333 SQL> SELECT MIN(sal) Min_Wyn 2 FROM emp 3 WHERE job = 'CLERK'; MIN_WYN ---------800 13 Copyright © 2014-2015 E. Busłowska. Przykłady funkcji agregujących 14 Przykłady funkcji agregujących SQL> SELECT COUNT(*) Ile, AVG(sal) Sred, MIN(sal) Min_Wyn, MAX(sal) Maks_Wyn FROM emp; Podać sumę zarobków wszystkich pracowników z pierwszego stopnia płacowego. SQL> SELECT SUM(sal) 2 FROM emp, salgrade 3 WHERE salgrade.grade = 1 AND sal BETWEEN losal AND hisal; ILE ---------15 SRED MIN_WYN MAKS_WYN ---------- ---------- 2133,33333 800 --------- SUM(SAL) ---------- 5000 2850 Copyright © 2014-2015 E. Busłowska. 15 Podział krotek na grupy - klauzula GROUP BY • Obliczyć średnie zarobki na każdym ze stanowisk pracy SQL> SELECT job, AVG(sal) 2 FROM emp 3 GROUP BY job; 17 16 Podział krotek na grupy i podgrupy • Obliczyć średnie zarobki na każdym ze stanowisk pracy w każdym departamencie SQL> SELECT deptno, job, AVG(sal) 2 FROM emp 3 GROUP BY deptno, job; DEPTNO JOB -----------------10 CLERK 1300 10 MANAGER 10 PRESIDENT 20 ANALYST 20 CLERK 20 KEEPER 20 MANAGER 30 CLERK 950 30 MANAGER 30 SALESMAN 10 wierszy zostało wybranych. JOB AVG(SAL) --------- ---------ANALYST 3000 CLERK 1037,5 KEEPER 2975 MANAGER 2758,33333 PRESIDENT 5000 SALESMAN 1400 Copyright © 2014-2015 E. Busłowska. Copyright © 2014-2015 E. Busłowska. AVG(SAL) ---------2450 5000 3000 950 2975 2975 2850 1400 Copyright © 2014-2015 E. Busłowska. 18 3 Klauzula having Klauzula having • Podać średnie zarobki tylko tych departamentów, które zatrudniają więcej niż trzech pracowników. SQL> SELECT deptno, AVG(sal), COUNT (*) 2 FROM emp 3 GROUP BY deptno 4 HAVING COUNT (*) > 3; DEPTNO AVG(SAL) COUNT(*) ---------------------------20 2308,33333 6 30 1566,66667 6 • Podać tylko te stanowiska, na których średnie zarobki wynoszą 3000 lub więcej SQL> SELECT job, AVG(sal) 2 FROM emp 3 GROUP BY job 4 HAVING AVG (sal) > =3000; JOB AVG(SAL) -----------------ANALYST 3000 PRESIDENT 5000 Copyright © 2014-2015 E. Busłowska. 19 Copyright © 2014-2015 E. Busłowska. 20 Wyrażenia w klauzuli having Podać numery departamentów i różnice miedzy najwyższą i najniższa pensją w poszczególnych departamentach. Wyeliminować grupy z różnicą mniejszą od 2000. SQL> SELECT deptno, MAX(sal) - MIN(sal) Diff 2 FROM emp 3 GROUP BY deptno 4 HAVING MAX(sal) - MIN(sal)>=2000; DEPTNO DIFF ---------- ---------10 3700 20 2200 Copyright © 2014-2015 E. Busłowska. 21 4