Funcţii SQL Server – Sintaxa şi Exemple

Click here to load reader

description

Funcţii SQL Server – Sintaxa şi Exemple

Transcript of Funcţii SQL Server – Sintaxa şi Exemple

Funcii SQL Server Sintaxa i Exemple www.cartiaz.ro Carti si articole online gratuite de la A la Z

1

Funcii utilizate pentru rotunjiri: CEILING, FLOOR si ROUND Exemplu:SELECT CEILING (23.1) AS EX1, CEILING(23.8) AS EX2, FLOOR(23.1) AS EX3, FLOOR(23.8) AS EX4, ROUND(23.1,0) AS EX5, ROUND(23.8,0) AS EX5

Alte funcii matematice: numeric , exponent ) (RIDICAREA LA PUTERE) Exemplu: POWER ( expresie

SELECT POWER(2,3) as [ 2 LA PUTEREA 3]

ABS (expresie numerica)Functia ABS returneaz valoarea absoluta a unei expresii numerice.Exemplu: SELECT ABS (123) AS [Ex1], ABS(-23) AS [Ex2]

SIGN (expresie numeric)Returneaz una dintre valorile: -1 dac expresia este negativ 0 dac expresia este zero +1 dac expresia este pozitiv

Exemplu:

SELECT SIGN(-10) AS EX1, SIGN(0) AS EX2 , SIGN(100) AS EX3

Funcii SQL Server Sintaxa i Exemple www.cartiaz.ro Carti si articole online gratuite de la A la Z

2

Funcii de tip agregatFunciile de tip agregat pot fi utilizate in cadrul unor expresii n:

Instruciunii SELECT Clauzei COMPUTE Clauzei HAVING

Observaii: 1. Dac sunt utilizate n cadrul instruciunii SELECT, celelalte cmpuri din lista instruciunii SELECT se vor regsi drept cmpuri de grupare n cadrul instruciunii GROUP BY. 2. Clauza HAVING permite specificarea de condiii la nivelul grupurilor de nregistrri 3. Instruciunea COMPUTE permite calcularea de totaluri generale sau subtotaluri i este specificat la sfritul instriciunii de selecie (dup ORDER BY). AVG ( [ DISTINCT ] expression ) COUNT ([ DISTINCT ] expression | * } ) SUM ( [DISTINCT ] expression ) MAX (expression ) MIN (expression ) Specificarea opiunii DISTINCT n cazul funciilor AVG, SUM sau COUNT permite ca valorile identice s fie considerate o singur dat n momentul efecturii calculelor. Specificarea simbolului * ntre parantezele funciei COUNT va conduce la numrarea tuturor valorilor domeniului pe care se aplic funcia, inclusiv a valorilor nule.

Exemple: Se d tabelul:

1. Calculati cte coduri de departamente sunt in tabelul Angajati:

Funcii SQL Server Sintaxa i Exemple www.cartiaz.ro Carti si articole online gratuite de la A la Z SELECT COUNT(CODDEPARTAMENT) As EX1, COUNT(DISTINCT CodDepartament) AS Ex2, COUNT(*) AS Ex3 FROM ANGAJATI

3

*Observaii: Clauza Group By nu este necesar ntruct funcia Count se aplic ntregului domeniu, iar n instrucia SELECT nu figureaz i alte cmpuri inafara funciilor. Cele trei funcii Count returneaz rezultate diferite deoarece al doilea exemplu utilizeaz opiunea Distinct iar al 3-lea va numra i valoarea Null prezent la unul dintre anngajai pe cmpul CodDepartament.

2. Calculai salariul minim si salariul maxim pe fiecare compartment unde sunt mai mult de doi angajati.SELECT CodDepartament, MIN(salariu) as SalariuMinim, MAX(salariu) as SalariuMaxim FROM ANGAJATI GROUP BY CodDepartament HAVING COUNT(CNP) > 2

Se va observa utilizarea clauzei HAVING care acioneaz la nivelul grupurilor de nregistri. 3. Lista alfabetica a salariatilor din departamentul IT si total general salarii. Intruct se dorete utilizarea unei funcii de grupare mreun cu o list de selecie ce conine nregistrri negrupate se va utiliza clauza COMPUTESELECT NUME, SALARIU FROM ANGAJATI WHERE CodDepartament='IT' ORDER BY NUME COMPUTE SUM(SALARIU)

Rezultatul este prezentat n figura urmtoare:

Funcii SQL Server Sintaxa i Exemple www.cartiaz.ro Carti si articole online gratuite de la A la Z

4

Observaie:Clauza COMPUTE se plaseaz ntotdeauna la sfritul instruciunii de selecie . 4. Lista salariatilor ordonat alfabetic, pe departamente i salariul mediu pe fiecare departament:SELECT NUME, SALARIU, CodDepartament FROM ANGAJATI ORDER BY CodDepartament, NUME COMPUTE AVG(SALARIU) BY CodDepartament

Observaie n acest caz, clauza COMPUTE permite specificarea cmpului pe baza crora se vor realiza subtotaluri utiliznd sintaxa COMPUTE BY nume_camp Important! Utilizarea clauzei COMPUTE BY necesit ca rezultatele seleciei s fie ordonate dup cmpul precizat n instruciunea BY (n cazul de fa CodDepartament) Rezultatele exemplului precedent sunt prezentate n figura urmtoare:

Funcii SQL Server Sintaxa i Exemple www.cartiaz.ro Carti si articole online gratuite de la A la Z

5

Funcii de clasificareROW_NUMBER ( ) OVER ( )

Atribuie un numr de ordine fiecrei inregistrari in funcie de un criteriu de ordonare specificat n clauza OVER.RANK ( ) OVER ( )

Atribuie un rang fiecrei inregistrari in funcie de un criteriu de ordonare. Inregistrarile cu aceleai valori pe cmpul dup care se face ordonarea vor avea acelai rang. NTILE (N) OVER (order_by_clause > )

Permite distribuirea nregistrrilor dintr-un set de rezultate pe N intervale funcie de un criteriu de ordonnare. EXEMPLE 1. Sa es enumeroteze salariaii n ordine descresctoare a salariilor. 2. Utiliznd funcia RANK s se atribuie un rang angajailor dup salariu. 3. S se mpart angajaii n trei grupe salariale, n ordine descresctoare a salariilor.SELECT Nume, Salariu, ROW_NUMBER() OVER (ORDER BY SALARIU DESC) AS Ex1, RANK() OVER (ORDER BY SALARIU DESC) AS Ex2, NTILE(3) OVER (ORDER BY SALARIU DESC) AS Ex3 FROM ANGAJATI ORDER BY SALARIU DESC

Observatie: Clauza ORDER BY a instruciunii SELECT poate sa difere de cea din clauza OVER utilizat n cadrul funciilor ROW_NUMBER, RANK sau NTILE.

Funcii SQL Server Sintaxa i Exemple www.cartiaz.ro Carti si articole online gratuite de la A la Z

6

Alte funciiISNULL ( expresie , valoare de inlocuit ) Funcia ISNULL evalueaz dac o expresie conine valoarea NULL i, n cazul n care condiia este ndeplinit, nlocuiete expresia cu valoarea specificat ca al doilea argument .ISDATE (expresie )

Funcia ISDATE evalueaz dac o expresie poate fi evaluat ca o dat calendaristic valid. n cazul n care condiia este ndeplinit returnez valoarea 1, n caz contrar 0.ISNUMERIC(expresie)

Funcia ISNUMERIC evalueaz dac o expresie poate fi evaluat ca valoare numeric. n cazul n care condiia este ndeplinit returnez valoarea 1, n caz contrar 0.

Cautarea n cadrul irurilor de caractere pe baza abloanelor definite prin operatorul de comparare LIKEPe lng funciile ce permit manipularea irurilor de caractere despre care am discutat n cursul precedent (LEFT, RIGHT, SUBSTRING), SQL Server permite cutarea n cadrul irurilor de caractere pe baza unor abloane specifice operatorului LIKE.

Sintaxa: [NOT] LIKE poate fi un nume de cmp dintr-un tabel sau View sau orice alt expresie SQL valid ce poate fi evaluat drept ir de caractere reprezint irul sau modelul de ir de caractere ce urmeaz a fi regsit n cadrul expresiei pe care se efectueaz cutarea Pentru a crea modele de iruri de caractere in vederea efecturii de cutri se pot utiliza urmtoarele caractere speciale: % tine locul unui ir de 0 sau mai multe caractere _ tine locul unui caracter [ ] orice caracter din enumerarea sau intervalul cuprins intre paranteze [^ ] - orice caracter inafara de cele din numerarea sau intervalul specificat dupa simbolul ^ intre paranteze.

Funcii SQL Server Sintaxa i Exemple www.cartiaz.ro Carti si articole online gratuite de la A la Z

7

Exemple:Exemplele urmtoare se bazeaz pe cutarea unor abloane n cadrul cmpului cod numeric personal (CNP)1. Selectati angajatii de sex masculin nascuti in luna noiembrie (11) a caror nume incep cu litera I.

SELECT CNP, NUME FROM ANGAJATI WHERE NUME LIKE 'I%' And cnp like '[13]__11%'2. Selectati angajatii nascuti intre amii 1971 - 1979 in lunile februarie(2), iunie(6) sau august(8)

SELECT CNP, NUME FROM ANGAJATI WHERE CNP LIKE '_7[1-9]0[268]%'3. Selectati toti angajatii nascuti in anii 80, fr cei nascuti in 84,85 si 87.

SELECT CNP, NUME FROM ANGAJATI WHERE CNP LIKE '_8[^457]%'