La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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.

Presentazioni simili


Presentazione sul tema: "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."— Transcript della presentazione:

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%; MEDIAMASSIMOMINIMOSOMMA

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) FROM employees; 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)) FROM employees; La funzione NVL forza la funzione di gruppo a considerare i valori nulli.

9 FUNZIONI DI GRUPPO Creazione di un gruppo di dati Occorre creare piccoli gruppi di dati allinterno 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 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; Lesempio visualizza il numero di dipartimento e per ciascuno la media dei salari. Non è possibile usare ALIAS nella clausola GROUP BY

11 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 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 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 allinterno 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 SELECT department_id, COUNT(last_name) 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) > ORDER BY SUM(salary); SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary) > 10000;


Scaricare ppt "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."

Presentazioni simili


Annunci Google