Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoCrocifisso Pucci Modificato 10 anni fa
1
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori nulli COUNT ({* | [DISTINCT|ALL]} espr) MAX ([DISTINCT|ALL] espr) MIN ([DISTINCT|ALL] espr) STDDEV([DISTINCT|ALL] x) deviazione standard SUM ([DISTINCT|ALL] n) VARIANCE ([DISTINCT|ALL] x) varianza DISTINCT non considera i valori duplicati. ALL considera i duplicati, essendo il default non deve essere specificato.
2
FUNZIONI DI GRUPPO DISTINCT non considera i valori duplicati. ALL considera i duplicati, essendo il default non deve essere specificato. tutte le funzioni di gruppo ignorano i valori nulli. Per sostituire i valori nulli con un valore finito utilizzare NVL, NVL2, COALESCE Oracle server implicitamente ordina il result set in ordine ASCENDENTE in presenza di GRUOP BY. Per cambiare ordine, specificare DESC nella clausola ORDER BY
3
FUNZIONI DI GRUPPO SELECT AVG (salary) media, MAX(salary) massimo,
MIN(salary) minimo, SUM(salary) somma FROM employees WHERE job_id LIKE ‘%REP%’; MEDIA MASSIMO MINIMO SOMMA 8272 11500 6000 273000
4
FUNZIONI DI GRUPPO Le funzioni MIN e MAX si possono usare con tutti i data type SELECT MIN(hire_date) , SUM(hire_date) FROM employees; SELECT MIN(last_name) , SUM(last_name) AGV, SUM, VARIANCE, STDDEV possono essere usate solo con valori numerici.
5
FUNZIONI DI GRUPPO COUNT(*) conta il numero di record di una tabella
SELECT COUNT(*) FROM employees WHERE department_id = 50; Conta anche i valori duplicati e le righe che contengono i valori nulli.
6
FUNZIONI DI GRUPPO La funzione COUNT si può trovare anche nel formato:
COUNT(espr) COUNT(DISTINCT espr) COUNT(espr) ritorna il numero di valori non nulli di espr COUNT(DISTINCT espr) ritorna il numero di valori non nulli e unique di espr
7
FUNZIONI DI GRUPPO SELECT COUNT(commission_pct) FROM employees
WHERE department_id = 80; Conta il numero di record del dipartimento 80 con commissione non nulla. SELECT COUNT(DISTINCT department_id) FROM employees; Conta il numero di dipartimenti distinti e non nulli della tabella employees
8
FUNZIONI DI GRUPPO SELECT AVG(commission_pct) FROM employees;
La media è calcolata sui valori “validi” (non nulli) della colonna commission_pct. SELECT AVG(NVL(commission_pct,0)) La funzione NVL forza la funzione di gruppo a considerare i valori nulli.
9
Creazione di un gruppo di dati
FUNZIONI DI GRUPPO Creazione di un gruppo di dati Occorre creare piccoli gruppi di dati all’interno di una tabella che contiene grosse quantità di informazioni. SELECT colonna, group_function(colonna) FROM tabella [WHERE condizione] [GROUP BY group_by_espr] [ORDER BY colonna];
10
Creazione di un gruppo di dati
FUNZIONI DI GRUPPO Creazione di un gruppo di dati Tutte le colonne nella SELECT list che non sono in una funzione di gruppo devono comparire nella clausola GROUP BY SELECT department_id, AVG(salary) FROM employees GROUP BY department_id; L’esempio visualizza il numero di dipartimento e per ciascuno la media dei salari. Non è possibile usare ALIAS nella clausola GROUP BY
11
Creazione di un gruppo di dati
FUNZIONI DI GRUPPO Creazione di un gruppo di dati La colonna della clausola GROUP BY non deve essere necessariamente nella SELECT list. SELECT AVG(salary) FROM employees GROUP BY department_id; Anche se il record set della query non è molto comprensibile.
12
Creazione di un gruppo di dati
FUNZIONI DI GRUPPO Creazione di un gruppo di dati E’ possibile usare le funzioni di gruppo nella ORDER BY SELECT department_id , AVG(salary) FROM employees GROUP BY department_id ORDER BY AVG(salary);
13
Raggruppamento su più colonne
FUNZIONI DI GRUPPO Raggruppamento su più colonne SELECT department_id , job_id, SUM(salary) FROM employees GROUP BY department_id, job_id ORDER BY department_id, job_id; La tabella employees è raggruppata prima per il numero di dipartimento e all’interno di questo gruppo è raggruppato per job_id
14
FUNZIONI DI GRUPPO Ogni colonna che nella SELECT list non è in una funzione di aggregazione deve comparire nella clausola GROUP BY SELECT department_id , COUNT(last_name) FROM employees; ERROR at line 1: ORA-00937: not a single-group group function FROM employees GROUP BY department_id;
15
FUNZIONI DI GRUPPO Non è possibile usare la clausola WHERE per raggruppare. Non è possibile usare funzioni di gruppo nella clausola WHERE. SELECT department_id, AVG(salary) FROM employees WHERE AVG(salary) > 8000 GROUP BY department_id; ERROR at line 1: ORA-00934: group function is not allowed here
16
FUNZIONI DI GRUPPO Per introdurre una condizione di gruppo su un gruppo occorre usare la clausola HAVING SELECT colonna, group_function(colonna) FROM tabella [WHERE condizione] [GROUP BY group_by_espr] [HAVING group_condition] [ORDER BY colonna];
17
FUNZIONI DI GRUPPO SELECT job_id, SUM(salary) FROM employees
WHERE job_id NOT LIKE ‘%REP’ GROUP BY job_id HAVING SUM(salary) > 13000 ORDER BY SUM(salary); SELECT department_id, MAX(salary) GROUP BY department_id HAVING MAX(salary) > 10000;
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.