-
Notifications
You must be signed in to change notification settings - Fork 0
/
zestaw2(funkcje_Oracle).sql
112 lines (108 loc) · 4.05 KB
/
zestaw2(funkcje_Oracle).sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
--1 Wyświetlic imię i nazwisko (tylko malymi literami), identyfikator uzytkownika (pierwsza litera wielka, pozostałe male) oraz stanowisko (wielkie litery) dla wszystkich zastepcow prezesa
SELECT
LOWER(FIRST_NAME),
LOWER(LAST_NAME),
INITCAP(USERID),
UPPER(TITLE)
FROM
EMP
WHERE
TITLE LIKE 'VP%';
--2 Wyswietlic imie i nazwisko wszystkich pracownikow,ktorzy nosza nazwisko Patel.
SELECT
FIRST_NAME,LAST_NAME
FROM
EMP
WHERE
UPPER(LAST_NAME) LIKE 'PATEL';
--3 Wyswietlic nazwę oraz panstwo dla wszystkich klientów (tabela customer), którzy maja zdolnosc kredytowa (credit_rating) na poziomie dobrym(GOOD). Skonkatenowac ze soba nazwe oraz panstwo.
SELECT
NAME || ' - ' || COUNTRY
FROM
CUSTOMER
WHERE
CREDIT_RATING LIKE 'GOOD';
--4 Wyswietlic nazwe i jej dlugosc dla wszystkich produktow, ktorych pierwsze trzy litery nazwy są równe ‘Ace’
SELECT
NAME,LENGTH(NAME)
FROM
PRODUCT
WHERE
NAME LIKE 'Ace%';
--5 Wyswietlic wartosc 41.5843 zaokrąglona do setnych czesci ulamkowych, do wartosci calkowitych oraz do calych dziesiatek.
SELECT
ROUND(41.5843,2),
ROUND(41.5843),
ROUND(41.5843,-1)
FROM
DUAL;
--6 Wyswietlic wartość 41.5843 obcieta do czesci setnych, wartosci calkowitych oraz do calych dziesiatek.
SELECT
TRUNC(41.5843,2),
TRUNC(41.5843),
TRUNC(41.5843,-1)
FROM
DUAL;
--7 Obliczyć reszte z dzielenia pensji przez prowizje (commission_pct) dla wszystkich pracownikow, ktorych pobory sa wieksze niz 1380. Podac nazwiska tych pracownikow
SELECT
LAST_NAME,MOD(SALARY,(COMMISSION_PCT))
FROM
EMP
WHERE
SALARY > 1380 AND MOD(SALARY,(COMMISSION_PCT)) IS NOT NULL;
--8 Wyswietlic aktualna date
SELECT TO_DATE(SYSDATE, 'DD-MM-YYYY') "AKTUALNA DATA"
FROM DUAL;
--9 Dla pracowników z departamentu 43 wyświetlić nazwisko oraz liczbę tygodni zatrudnienia w firmie
SELECT
LAST_NAME,
TRUNC(MONTHS_BETWEEN(TO_DATE(SYSDATE,'DD-MM-YYYY'),TO_DATE(START_DATE,'DD-MM-YYYY'))*4.345)
FROM
EMP
WHERE
DEPT_ID = 43;
--10 Dla pracowników zatrudnionych mniej niż 332 miesiące wyświetlić identyfikator pracownika, liczbę pełnych miesięcy pracy oraz datę zakończenia 3-miesięcznego okresu próbnego
SELECT
ID,
TRUNC(MONTHS_BETWEEN(TO_DATE(SYSDATE,'DD-MM-YYYY'),
TO_DATE(START_DATE,'DD-MM-YYYY'))),ADD_MONTHS(TO_DATE(START_DATE,'DD-MM-YYYY'),3)
FROM
EMP
WHERE
TRUNC(MONTHS_BETWEEN(TO_DATE(SYSDATE,'DD-MM-YYYY'),TO_DATE(START_DATE,'DD-MM-YYYY'))) < 332;
--11 Na potrzeby inwentaryzacji dostaw wyświetlić chronologicznie numery zamawianych ponownie produktów, dzień dostawy, pierwszy po nim piątek oraz ostatni dzień miesiąca,w którym dostawa została przyjęta
SELECT
PRODUCT_ID,
RESTOCK_DATE,NEXT_DAY(RESTOCK_DATE,'friday'),
LAST_DAY(TO_DATE(RESTOCK_DATE,'DD-MM-YYYY'))
FROM
INVENTORY
WHERE
RESTOCK_DATE IS NOT NULL
ORDER BY
RESTOCK_DATE;
--12 Zestawić daty zatrudnienia dla pracowników, którzy zostali przyjęci do pracyw 1991 roku.Pokazać numer pracownika, datę rozpoczęcia pracy oraz tylko miesiąc rozpoczęcia pracy.
SELECT
ID,
START_DATE,
EXTRACT(MONTH FROM START_DATE)
FROM
EMP
WHERE
TO_CHAR(START_DATE,'DD-MM-YYYY') LIKE '%91';
--13 Z tabeli ord wyświetlić numer (id) oraz datę (date_ordered) wszystkich zamówień złożonych przez przedstawiciela (sales_rep_id)o numerze 11.Datę przeformatować tak,żeby była wyświetlana w postaci analogicznej do „08/92”.
SELECT
ID,
TO_CHAR(DATE_ORDERED,'MM/RR')
FROM
ORD
WHERE
SALES_REP_ID =11;
--14 Wyświetlić nazwiska i daty zatrudnienia pracowników,którzy pracują od 1991 roku. Data powinna być wyświetlana w następujący sposób:17 Czerwiec 1991 roku
SELECT
LAST_NAME,
TO_CHAR(TO_DATE(START_DATE,'DD-MM-YYYY'),'DD MON YYYY ')||'roku'
FROM
EMP
WHERE
TO_CHAR(TO_DATE(START_DATE,'DD-MM-YYYY'),'YYYY') >1990;