Documente Academic
Documente Profesional
Documente Cultură
luni intre data curenta si data introducerii; -urmatoarea zi de vineri 13 dupa data introducerii; -ultima zi din luna din care face parte data introducerii; -data corespunzatoare dupa 2 luni de la data introducerii produselor.
SELECT data_introducerii, ROUND MONTHS_BETWEEN(sysdate,data_introducerii) nr_luni, NEXT_DAY(data_introducerii,'FRIDAY')urm_vineri, LAST_DAY(data_introducerii) ultima_zi, ADD_MONTHS (data_introducerii,2)"data+2l" FROM produse;
1.Sa se afiseze toate produsele cumparate iarna. SELECT denumire, data_cumpararii FROM produse p , arhiva a WHERE p.cod_produs=a.cod_produs AND EXTRACT(month FROM data_cumpararii) IN (1,2,12);
Functia compara valoarea campului cu valoarea de comparat 1. Daca gaseste egalitate returneaza valoare de afisat 1, daca nu, compara cu valoare de cimparat 2. Daca nu a gasit nicio egalitate returneaza NULL sau valoarea default daca aceasta exista.
CASE camp WHEN val_de_comp1 THEN val_de_afis1 WHEN val_de_comp2 THEN val_de_afis2 ..... WHEN val_de_compn THEN val_de_afisn [ELSE val_default] END
Cele 2 variante de mai sus sunt valabile doar pt conditia de egalitate. Pt oricare alte conditii (eventual combinate) se foloseste urmatoarea varianta de CASE.
CASE WHEN camp cond1 val_de_comp1 THEN val_de_afis1 WHEN camp cond2 val_de_comp2 THEN val_de_afis2 ..... WHEN camp condn val_de_compn THEN val_de_afisn [ELSE val_default] END
3.Sa se afle tara de provenienta a clientilor in functie de email-ul acestora. Astfel daca domeniul este .ro->Romania, .uk->Anglia, .fr->franta, pentru altele restul lumii
Varianta 1: SELECT email, DECODE (upper(substr(email,length(email)-2,3)), '.RO', 'Romania', '.UK','Anglia','.FR','Franta','Restul lumii') tara FROM Clienti;
Varianta 2: SELECT email, CASE WHEN UPPER(email) LIKE '%.RO' THEN 'Romania' WHEN UPPER(email) LIKE '%UK' THEN 'Anglia' WHEN UPPER(email) LIKE '%FR' THEN 'Franta' ELSE 'Restul lumii' END tara FROM clienti;
Varianta 3: SELECT email, CASE UPPER(substr(email,length(email)-2,3))WHEN 'UK' THEN 'Anglia' WHEN 'FR' THEN 'Franta' WHEN 'RO' THEN 'Romania' ELSE 'Restul lumii' END tara FROM clienti;
4. Sa se stabileasca ce fel de produse are firma in gestiune in functie de denumirea lor. 'pix' -> 'p.ieftin' 'stilou' -> 'p.mediu' 'tus' ->'p.scump'
Utilizarea comenzii SELECT impreuna cu alte comenzi SQL: 1.Realizarea subcecerilor/Cereri imbricate (SELECT+SELECT)
Ex: Sa se afiseze clientii care au acelsi nume cu clientul cu CNP-ul "1920516796756". SELECT * FROM clienti WHERE nume=(SELECT nume FROM clienti WHERE cnp='1920516796756');
SELECT * FROM clienti WHERE nume=(SELECT nume FROM clienti );->EROARE Obs: Subcererea trebuie sa returneze o singura inregistrare pentru operatori de tip single row(=.<,>...). Poate returna mai multe inregistrari daca operatorii sunt IN, ANY,ALL.
Ex: Sa se afiseze clientii al caror prenume se gaseste in lista de nume al clientilor. SELECT * FROM clienti WHERE prenume IN (SELECT nume FROM clienti);
Obs: Tipul de date obtinute din subcereretrebuie sa coincida cu tipul de date din interogarea initiala pe care se face comparatia