Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Smecheri vs populime

La multi ani @Lieutenant!

La multi ani @xmanyacs77!

Tableta office
 Comanda Mobexpert - o zi inainte ...

Ocolirea limitatoarelor de viteza...

Recomandare adeziv - pt pervaz PVC

Sfat achizitie, Xiaomi 14 Ultra s...
 Priza contorizare consum energie

Cat timp purtați o pereche d...

Problema Makita PLM 4628n

Nelamurire sunet navigatie auto
 Ma bate gandul la primul bmw

Cum rezolv o incompatibilitate in...

Despre instaurarea normalitã...

De cate ori purtati o pereche de ...
 

Clauza GROUP BY

- - - - -
  • Please log in to reply
3 replies to this topic

#1
mavroiani

mavroiani

    New Member

  • Grup: Members
  • Posts: 20
  • Înscris: 22.09.2005
salut

ce face clauza group by in interogarea de mai jos (lucrez un SQL*Plus)?

cum realizeaza SQL*Plus interogarea? Mai intai selecteaza job-urile si dupa aceea? Cum stie el sa faca media salariilor pe fiecare job in parte?


SELECT JOB, AVG(SAL)
FROM EMP
GROUP BY JOB;

JOB AVG(SAL)
------- -----------
ANALYST 3000
CLERK 1037.5
MANAGER 2758.33333
PRESIDENT 5000
SALESMAN 1400

#2
Bogdan

Bogdan

    Moderator

  • Grup: Senior Members
  • Posts: 829
  • Înscris: 15.02.2002
Permite functiei AVG() sa faca media valorilor din campul SAL pentru fiecare valoare distincta existenta in campul JOB.

Obtii o inregistrare (tuplu) pentru fiecare valoare distincta din campul JOB si un camp cu media lui SAL pentru toate valorile identice din JOB.

#3
Marmota

Marmota

    Member

  • Grup: Members
  • Posts: 381
  • Înscris: 24.09.2005
"cum realizeaza SQL*Plus interogarea"  ?
Cum realizeaza ce , ... cine ?

Executia interogarii cade in sarcina "motorului realational al sistemului de gestiune a bazelor de date" ("Relational Database Engine" la SQL Server).
Daca vrei sa stii cum ste executata interogarea la nivel fizic ("de implementare" a motorului) cauta in help.

Conceptul vorbind lucrurile stau astfel:
1) daca avem o tabela Salariat cu structura
Salariat(Marca - cheie primara, Nume, Functie, Salariu) cu urmatoarele inregistrari:

Marca - Nume - Functie                       - Salariu

1000  - Ion     - mutător_de_biți_în_C  - 100
1001  - Vasi    - frecționist_de_clase     - 110
1002  - Negro  - mutător_de_biți_în_C  - 90
1003  - Geo    - frecționist_de_clase     - 120
1004  - Alex    - mutător_de_biți_în_C  - 95

#4
Marmota

Marmota

    Member

  • Grup: Members
  • Posts: 381
  • Înscris: 24.09.2005
2) si dorim sa calcul salariul mediu pentru fiecare functie folosim o interogare de tipul

SELECT Functie , AVG(Salariu) As SalMediu
FROM Salariat
GROUP BY Functie

Deci datele din tabela Salariat (FROM Salariat) trebuiesc grupate (GROUP BY) in functie de valorile din campul Functie (GROUP BY Functie).
Pentru a simplifica gruparea dupa câmpul Functie, motorul relational va ordona datele din tabela după valorile din câmpul Funcție astfel:

Marca - Nume    - Functie                 - Salariu

1001  - Vasi    - frecționist_de_clase    - 110
1003  - Geo     - frecționist_de_clase    - 120
1000  - Ion     - mutător_de_biți_în_C    - 100
1002  - Negro   - mutător_de_biți_în_C    - 90
1004  - Alex    - mutător_de_biți_în_C    - 95

Dupa ordonare/sortare se grupeaza datele după valorile din cîmpul Funcție care luate distinct sunt
frecționist_de_clase
si
mutător_de_biți_în_C.
Deci com obtine doua grupuri de inregistrari astfel:

Marca - Nume - Functie - Salariu

-------------------I-grup---------------------------------
/////////////////// frecționist_de_clase    - 110
/////////////////// frecționist_de_clase    - 120
-------------------II-grup--------------------------------
/////////////////// mutător_de_biți_în_C    - 100
/////////////////// mutător_de_biți_în_C    - 90
/////////////////// mutător_de_biți_în_C    - 95
-----------------------------------------------------------

Pentru fiecare grup de inregistrari (avem 2 grupuri) motorul relational va trebui sa afiseze functia si media (SELECT Functie, AVG(Salariu) AS SalMediu).
Obs: Functia AVG reprezinta abrevierea de la AVERAGE (en. medie) , fiind o functie agregata care are rolul de a calcula media valorilor numerice dintr-o lista.
In cazul nostru pentru fiecare grup de inegistrari se va afisa (atentie la SELECT Functie, AVG(Salariu)):
a) pentru primul grup de inregistrari se va calcula media valorilor DIN ACEST GRUP din campul Salariu astfel:
-------------------I-grup---------------------------------
/////////////////// frecționist_de_clase    - 115 (media valorilor 110 si 120)
B) pentru al doilea grup se va calcula media valorilor DOAR DIN ACEST GRUP din campul Salariu astfel:
-------------------II-grup--------------------------------
/////////////////// mutător_de_biți_în_C    - 95 (media valorilor 100,90,95)

Deci in final motorul relational va returna la destinatie setul de 2 inregistrari (pentru ca practic avem doar 2 grupuri de inregistrari dupa valorile din campul Functie):
Functie              - SalMediu
frecționist_de_clase    - 115
mutător_de_biți_în_C    - 95

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate