1 / 17

FUNZIONI DI GRUPPO

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)

elu
Download Presentation

FUNZIONI DI GRUPPO

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

More Related