Functii SQL

7
 Alte funcţii SQL Server – Sintaxa şi Exemple 1 Funcţii 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 funcţii matematice: POWER ( expresie numerică , exponent ) (RIDICAREA LA PUTERE) Exemplu: 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

Transcript of Functii SQL

8/7/2019 Functii SQL

http://slidepdf.com/reader/full/functii-sql 1/7

 Alte funcţii SQL Server – Sintaxa şi Exemple 1

Funcţii 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 funcţii matematice:

POWER ( expresie numerică, exponent )

(RIDICAREA LA PUTERE)

Exemplu:

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

8/7/2019 Functii SQL

http://slidepdf.com/reader/full/functii-sql 2/7

 Alte funcţii SQL Server – Sintaxa şi Exemple 2

Funcţii de tip agregat

Funcţiile de tip agregat pot fi utilizate in cadrul unor expresii în:

• Instrucţiunii SELECT• Clauzei COMPUTE• Clauzei HAVING

Observaţii:1. Dacă sunt utilizate în cadrul instrucţiunii SELECT, celelalte câmpuri din listainstrucţiunii SELECT se vor regăsi drept câmpuri de grupare în cadrul instrucţiunii

GROUP BY.2. Clauza HAVING permite specificarea de condiţii la nivelul grupurilor de înregistrări3. Instrucţiunea COMPUTE permite calcularea de totaluri generale sau subtotaluri şi estespecificată la sfârşitul instricţiunii de selecţie (după ORDER BY).

 AVG ( [ DISTINCT ] expression )COUNT ([ DISTINCT ] expression | * } )SUM ( [DISTINCT ] expression ) MAX (expression ) MIN (expression )

Specificarea opţiunii DISTINCT în cazul funcţiilor AVG, SUM sau COUNT permite cavalorile identice să fie considerate o singură dată în momentul efectuării calculelor.Specificarea simbolului * între parantezele funcţiei COUNT va conduce la numărareatuturor valorilor domeniului pe care se aplică funcţia, inclusiv a valorilor nule.Exemple:Se dă tabelul:

1 . Calculati câte coduri de departamente sunt in tabelul Angajati:

8/7/2019 Functii SQL

http://slidepdf.com/reader/full/functii-sql 3/7

 Alte funcţii SQL Server – Sintaxa şi Exemple 3

SELECT COUNT(CODDEPARTAMENT) As EX1,COUNT(DISTINCT CodDepartament) AS Ex2,COUNT(*) AS Ex3

FROM ANGAJATI

*Observaţii:Clauza Group By nu este necesară întrucât funcţia Count se aplică întregului domeniu,iar în instrucţia SELECT nu figurează şi alte câmpuri inafara funcţiilor.Cele trei funcţii Count returnează rezultate diferite deoarece al doilea exemplu utilizează opţiunea Distinct iar al 3-lea va număra şi valoarea Null prezentă la unul dintreanngajaţi pe câmpul CodDepartament.

2. Calculaţi salariul minim si salariul maxim pe fiecare compartment unde sunt mai mult de doi angajati.

SELECT CodDepartament, MIN(salariu) as SalariuMinim, MAX(salariu) asSalariuMaximFROM ANGAJATIGROUP BY CodDepartamentHAVING COUNT(CNP) > 2

Se va observa utilizarea clauzei HAVING care acţionează la nivelul grupurilor deînregistări.

3. Lista alfabetica a salariatilor din departamentul IT si total general salarii. Intrucât se doreşte utilizarea unei funcţii de grupare îmreună cu o listă de selecţie ce

conţine înregistrări negrupate se va utiliza clauza COMPUTE 

SELECT NUME, SALARIUFROM ANGAJATIWHERE CodDepartament='IT'ORDER BY NUMECOMPUTE SUM(SALARIU)

 Rezultatul este prezentat în figura următoare:

8/7/2019 Functii SQL

http://slidepdf.com/reader/full/functii-sql 4/7

 Alte funcţii SQL Server – Sintaxa şi Exemple 4

Observaţie:Clauza COMPUTE se plasează întotdeauna la sfărşitul instrucţiunii de selecţie .

4. Lista salariatilor ordonată alfabetic, pe departamente şi salariul mediu pe fiecaredepartament:

SELECT NUME, SALARIU, CodDepartament

FROM ANGAJATIORDER BY CodDepartament, NUMECOMPUTE AVG(SALARIU) BY CodDepartament

Observaţie În acest caz, clauza COMPUTE permite specificarea câmpului pe bazacărora se vor realiza subtotaluri utilizând sintaxa

COMPUTE <funcţie> BY nume_camp

Important! Utilizarea clauzei COMPUTE … BY necesită carezultatele selecţiei să fie ordonate după câmpul precizatîn instrucţiunea BY (în cazul de faţă CodDepartament)

Rezultatele exemplului precedent sunt prezentate în figura următoare:

8/7/2019 Functii SQL

http://slidepdf.com/reader/full/functii-sql 5/7

 Alte funcţii SQL Server – Sintaxa şi Exemple 5

Funcţii de clasificare

ROW_NUMBER ( ) OVER (< order_by_clause > )

Atribuie un număr de ordine fiecărei inregistrari in funcţie de un criteriu de ordonarespecificat în clauza OVER.

RANK ( ) OVER  (< order_by_clause > )

Atribuie un rang fiecărei inregistrari in funcţie de un criteriu de ordonare. Inregistrarile cuaceleaşi valori pe câmpul după care se face ordonarea vor avea acelaşi rang.

  NTILE (N) OVER (order_by_clause > )

Permite distribuirea înregistrărilor dintr-un set de rezultate pe N intervale funcţie de uncriteriu de ordonnare.

 EXEMPLE 

1. Sa es enumeroteze salariaţii în ordine descrescătoare a salariilor.2. Utilizând funcţia RANK să se atribuie un rang angajaţilor după salariu.3. Să se împartă angajaţii în trei grupe salariale, în ordine descrescătoare 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 instrucţiunii SELECT poate sa difere de cea din clauzaOVER utilizată în cadrul funcţiilor ROW_NUMBER, RANK sau NTILE.

8/7/2019 Functii SQL

http://slidepdf.com/reader/full/functii-sql 6/7

 Alte funcţii SQL Server – Sintaxa şi Exemple 6

 Alte funcţii

ISNULL ( expresie , valoare de inlocuit )

Funcţia ISNULL evaluează dacă o expresie conţine valoarea NULL şi, în cazul în care

condiţia este îndeplinită, înlocuieşte expresia cu valoarea specificată ca al doileaargument .

ISDATE (expresie )

Funcţia ISDATE evaluează dacă o expresie poate fi evaluată ca o dată calendaristicăvalidă. În cazul în care condiţia este îndeplinită returneză valoarea 1, în caz contrar 0.

ISNUMERIC(expresie)

Funcţia ISNUMERIC evaluează dacă o expresie poate fi evaluată ca valoare numerică. În

cazul în care condiţia este îndeplinită returneză valoarea 1, în caz contrar 0.

Cautarea în cadrul şirurilor de caractere pe baza şabloanelor definiteprin operatorul de comparare LIKE

Pe lângă funcţiile ce permit manipularea şirurilor de caractere despre care am discutat încursul precedent (LEFT, RIGHT, SUBSTRING), SQL Server permite căutarea în cadrulşirurilor de caractere pe baza unor şabloane specifice operatorului LIKE.

Sintaxa: <expresie>[NOT] LIKE <sir de caractere>

<expresie> poate fi un nume de câmp dintr-un tabel sau View sau orice altăexpresie SQL validă ce poate fi evaluată drept şir de caractere<sir de caractere> reprezintă şirul sau modelul de şir de caractere ce urmează afi regăsit în cadrul expresiei pe care se efectuează căutarea

Pentru a crea modele de şiruri de caractere in vederea efectuării de căutări sepot utiliza următoarele 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.

8/7/2019 Functii SQL

http://slidepdf.com/reader/full/functii-sql 7/7

 Alte funcţii SQL Server – Sintaxa şi Exemple 7

Exemple:Exemplele următoare se bazează pe căutarea unor şabloane în cadrul câmpuluicod numeric personal (CNP)

1. Selectati angajatii de sex masculin nascuti in luna noiembrie (11) acaror nume incep cu litera I.

SELECT CNP, NUME FROM ANGAJATIWHERE NUME LIKE 'I%' And cnp like '[13]__11%'

2. Selectati angajatii nascuti intre amii 1971 - 1979 in lunilefebruarie(2), iunie(6) sau august(8)

SELECT CNP, NUME FROM ANGAJATIWHERE CNP LIKE '_7[1-9]0[268]%'

3. Selectati toti angajatii nascuti in anii ’80, fără cei nascuti in84,85 si 87.

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