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