Вы находитесь на странице: 1из 2

-- SEMINAR MIERCURI

desc utilizatori;

select FROM USEr_CONSTRAiNTS where table_name not like 'BIN%' order by table_name;

SELECT TABLE_NAME,CONSTRAINT_TYPE,COUNT() FROM USER_CONSTRAINTS


where table_name not like 'BIN%'
GROUP BY ROLLUP (TABLE_NAME,CONSTRAINT_TYPE) ORDER BY 1;

select FROM USEr_CONSTRAiNTS where table_name = 'SALARIATI' order by table_name;


CREATE SEQUENCE GET_USER_ID_S START WITH 2021 INCREMENT BY 1;
INSERT INTO UTILIZATORI

VALUES(GET_USER_ID_S.NEXTVAL,'vlad.diaconita',SYSDATE,NULL,'centrala','activ');
commit;
SELECT FROM SALARIATI ORDER BY SALARIUL;
ALTER TABLE SALARIATI ADD CONSTRAINT SALARIATI_SAL_CHECK CHECK (SALARIUL2000)
NOVALIDATE;

UPDATE SALARIATI SET SALARIUL=2900 WHERE MARCA_SALARIAT=5009;

-- SA SE ADAUGE O RESTR CA PERS CU FCTIA Sef Agentie sa aiba salariul=4000

ALTER TABLE SALARIATI ADD CONSTRAINT


SAL_CH_SAL_SEF CHECK (FUNCTIE'Sef Agentie' or SALARIUL=4000);

ALTER TABLE SALARIATI ADD CONSTRAINT


SAL_CH_SAL_SEF2 CHECK ((FUNCTIE='Sef Agentie' and SALARIUL=4000) or
FUNCTIE'Sef Agentie');

SELECT FROM UTILIZATORI;

-- SA SE CONSTRUIASCA O SECVENTA SI CU AJUTORUL EI SA SE ADAUGE UN RAND IN


UTILIZATORI

SELECT FROM SALARIATI;

-- SA SE ADAUGE O RESTRICTIEINDEX CARE SA NU PERMITA DECAT MAXIM 1 SALARIAT CU


ID_MANAGER=NULL

CREATE UNIQUE INDEX MAX_UN_SAL ON SALARIATI(CASE WHEN ID_MANAGER IS NULL THEN 'ABC'
ELSE NULL END);

UPDATE SALARIATI SET id_manager=NULL WHERE MARCA_SALARIAT=5000;

NR_DE_SAL NR_UTILIZ NR_CLIENTILOR


21 15 30

SELECT (SELECT COUNT() FROM SALARIATI) NRSAL,


(SELECT COUNT() FROM UTILIZATORI) NRUTILIZ,
(SELECT COUNT() FROM CLIENTI) NRCLIENTI
FROM DUAL;

SELECT FROM SALARIATI ORDER BY FUNCTIE;

-- SA SE AFISEZE FUNCTIILE PENTRU CARE TOTI SAL AU SALARIILE MAI MARE DECAT 4500

SELECT FUNCTIE FROM SALARIATI GROUP BY FUNCTIE HAVING MIN(SALARIUL)4500;


select from
(SELECT NUME,PRENUME,FUNCTIE,SALARIUL,
ROW_NUMBER() OVER (ORDER BY SALARIUL DESC) RANG FROM SALARIATI) where RANG
BETWEEN 3 AND 10;
Update salariati set salariul=5400 where nume='Croitoru';

SELECT NUME,PRENUME,FUNCTIE,SALARIUL,
RANK() OVER (ORDER BY SALARIUL DESC) RANG FROM SALARIATI;
SELECT FROM
(SELECT NUME,PRENUME,FUNCTIE,SALARIUL,
DENSE_RANK() OVER (ORDER BY SALARIUL DESC) RANG FROM SALARIATI)
WHERE RANG=5;
SELECT FROM (
SELECT NUME,PRENUME,FUNCTIE,SALARIUL,
RANK() OVER (PARTITION BY FUNCTIE ORDER BY SALARIUL DESC) RANG FROM
SALARIATI)
WHERE RANG3;

SELECT NUME,PRENUME,FUNCTIE,SALARIUL,
MIN(SALARIUL) KEEP(DENSE_RANK FIRST ORDER BY SALARIUL) OVER (PARTITION BY FUNCTIE)
SAL_MIN,
MAX(SALARIUL) KEEP(DENSE_RANK LAST ORDER BY SALARIUL) OVER (PARTITION BY FUNCTIE)
SAL_MAX
FROM SALARIATI;

-- SA SE AFISEZE CATE PERSOANE SUNT IN FIECARE DEPARTAMENT


DEN_DEP NR_ANG
JKFHDKFJSD 5
FSDFSD 7

SELECT DEN_DEPARTAMENT,COUNT(S.MARCA_SALARIAT) NR_ANG FROM


SALARIATI S RIGHT JOIN DEPARTAMENTE D ON S.ID_DEPARTAMENT=D.ID_DEPARTAMENT
GROUP BY DEN_DEPARTAMENT;

Вам также может понравиться