Informatica CL Fisioterapisti Informatica Medica Sistemi per la...

69
Prof. Mauro Gaspari [email protected] Informatica CL Fisioterapisti Informatica Medica Sistemi per la gestione di basi di Dati 1

Transcript of Informatica CL Fisioterapisti Informatica Medica Sistemi per la...

Page 1: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Prof. Mauro [email protected]

InformaticaCL Fisioterapisti

Informatica MedicaSistemi per la gestione

di basi di Dati

1

Page 2: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

2

Informatica Medica

La scienza che si occupa della gestione dell’informazione e dei programmi basati su calcolatore in sanità 

L’informatica medica è la logica della sanità. Studio razionale del modo in cui:

i pazienti vengono pensati i trattamenti sono definiti, selezionati ed ottimizzati la conoscenza medica viene creata, formata, condivisa ed applicata la sanità è organizzata per fornire i suoi servizi

Page 3: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

3

Alcuni Obiettivi

Garantire costo­efficacia dei servizi sanitari aumentandone la qualità.

Favorire la collaborazione tra i membri di un team di specialisti coinvolti nella gestione di un paziente.

Usare in modo efficiente ed efficace le soluzioni tecnologiche.

Il fine è l’innovazione e l’ottimizzazione del processo di cura dei pazienti.

Page 4: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

4

Alcune applicazioni

Studio dei sistemi biologici (Fisiologia ­ Fisiopatologia) Prevenzione dello stato di malattia (Epidemiologia ­ Statistica) Cura della malattia (Gestione delle terapie – Dispositivi medici 

terapeutici) Valutazione della disabilita (EDSS nella Sclerosi Multipla) Riabilitazione: apparati di supporto alla riabilitazione  (stimolatori, 

sistemi per isocinetica) Riabilitazione cognitiva.

Page 5: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

5

Come?

Gestione e comunicazione di dati ed informazione. Reti di personal computer. Sistemi informativi in campo medico. Programmi applicativi specifici:

Sistemi per la classificazione e codifica Sistemi di comunicazioni ed information retrieval  Sistemi per la definizione di linee guida e protocolli Sistemi per l’analisi dei dati Sistemi di supporto alle decisioni

Page 6: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

6

Cosa tratteremo

Organizzazione delle informazioni – sistemi informativi. Sistemi per la Gestione di Basi di Dati. Il linguaggio SQL (Structured Query Language). Elaborazione statistica dei dati sanitari.

Page 7: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

7

Sistema Informativo

Insieme degli strumenti, risorse e procedure che consentono la gestione delle informazioni aziendali

• è essenziale per il funzionamento dell'azienda

• è fortemente integrato con il sistema organizzativo

• comprende risorse umane

Insieme dei sistemi hardware e software presenti in una azienda 

• permette la generazione, l'elaborazione, la circolazione e la memorizzazione delle informazioni su supporti informatici

Page 8: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

8

Esempi di Sistemi Informativi

applicazioni gestionali classiche

• gestione ordini, personale, magazzino

applicazioni finanziarie

• banche, borsa, carte di credito

 sistemi di prenotazione

• treni, aerei, alberghi, autonoleggi

nuove applicazioni

• gestione dei progetti, del territorio

• commercio elettronico

Page 9: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

9

Sistemi Informativi nella Sanità

Gestione delle informazioni utili alla misura ed alla valutazione dei processi gestionali e clinici al fine di ottimizzare le risorse impegnate nel conseguimento degli obiettivi istituzionali ed ottimizzare le modalità di comunicazione.

Esempi: Cartella clinica elettronica. Gestione di linee guida cliniche

Page 10: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

10

Dati vs Informazione

Dato: unita' elementare (grezza) di informazione

Informazione: elaborazione dei dati per rispondere a esigenze specifiche 

dell'impresa Conoscenza?

Page 11: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

11

Dati vs Processi

PROCESSO :

procedura

aziendale che

risponde ad un

particolare compito

applicativo

Database

Processi

Utenti

Page 12: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?
Page 13: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

13

Architettura Sistema Informativo

Database

Processi

Data BaseManagement System

Page 14: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Sistemi per la Gestione di Basi di Dati

Modello concettuale dei Dati (Modello dei dati) Meccanismi per garantire l'integrità Un linguaggio di interrogazione Supporto per programmi applicativi 

Esistono sul mercato alcune centinaia di prodotti diversi

• per uso personale

• per server in una rete

• per mainframe

Page 15: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Principali Caratteristiche

Condivisione dei dati

• assenza di replicazione nei file

• possibilità di accesso concorrente

Qualità dei dati

• vincoli di integrità

Efficienza

• caricamento, query ottimizzate, ordinamenti automatici

Controllo dell'accesso

• Sicurezza

• Possibilità dati privati

Robustezza (si evita la perdita di dati)

Page 16: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

16

Il modello dei dati relazionale Una base di dati e' organizzata in relazioni dette anche tabelle. Si tratta del modello attualmente più utilizzato. Buoni meccanismi di ottimizzazione (forme normali). Interrogazioni espresse tramite un algebra relazionale. Linguaggio di interrogazione SQL (Structured Query Language)

Supporto per transazioni: sequenze di operazioni sui dati che devono essere eseguite completamente per avere effetto, se una transazione non viene eseguita completamente l'effetto delle operazioni eseguite viene annullato.

Page 17: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

DB-Persone

Persone Maternita

Paternita

Page 18: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Interrogazione semplice

Nome e Reddito delle persone con meno di 30 anni

Page 19: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Elementi dell’interrogazione

Nome e Reddito delle persone con meno di30 anni.

Tabella/e da utilizzare

Page 20: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Elementi dell’interrogazione

Nome e Reddito delle persone con meno di30 anni.

Tabella/e da utilizzare

Condizione

Page 21: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Elementi dell’interrogazione

Nome e Reddito delle persone con meno di30 anni.

Tabella/e da utilizzare

Condizione

Attributi su cui proiettareil risultato

Page 22: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Interrogazione semplice in SQL

SELECT Nome, RedditoFROM PersoneWHERE Eta < 30

Target listClausola FromClausola Where

Page 23: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Semantica di una query SELECT/FROM/WHERE

• Si  esegue  il  prodotto  cartesiano  delle  tabelle  coinvolte  (in  questo caso,  essendoci  una  sola  tabella,  il  prodotto  cartesiano  non  viene effettuato)

• Si selezionano le righe (tuple) sulla base del predicato della clausola Where

• Si proietta sugli attributi della target list

SELECT Nome, RedditoFROM PersoneWHERE Eta < 30

Target listClausola FromClausola Where

Page 24: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

SELECT Nome, RedditoFROM PersoneWHERE Eta < 30

(1) Prodotto cartesiano (1 tabella)

Page 25: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

(1b) Prodotto cartesiano (2 tabelle)

Page 26: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

(2) Selezione

SELECT Nome, RedditoFROM PersoneWHERE Eta < 30

Page 27: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

(3) Proiezione

SELECT Nome, RedditoFROM PersoneWHERE Eta < 30

Page 28: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Risultato

SELECT Nome, RedditoFROM PersoneWHERE Eta < 30

Page 29: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

DB-Impiegati

Impiegato

Dipartimento

Page 30: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Target list: selezione senza proiezione

SELECT *FROM ImpiegatoWHERE Cognome = ‘Rossi’

Page 31: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Target list: selezione con proiezione

SELECT Nome, Cognome, StipendioFROM ImpiegatoWHERE Cognome = ‘Rossi’

Page 32: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Target list: proiezione senza selezione

SELECT Nome, CognomeFROM Impiegato

Page 33: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Target list: proiezione con/senza duplicati

SELECT CognomeFROM Impiegato

SELECT DISTINCT CognomeFROM Impiegato

Page 34: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Target list: espressioni

SELECT Stipendio/12 As StipendioMensileFROM ImpiegatoWHERE Cognome = ‘Bianchi’

StipendioMensile

3.00

Page 35: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Clausola WHERE: disgiunzione

SELECT Nome, CognomeFROM ImpiegatoWHERE Dipart = ‘Amministrazione’ ORWHERE Dipart = ‘Produzione’

Page 36: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Clausola WHERE: condizione complessa

SELECT NomeFROM ImpiegatoWHERE Cognome = ‘Rossi’ ANDWHERE (Dipart = ‘Amministrazione’ ORWHERE Dipart = ‘Produzione’)

Nome

Mario

Page 37: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Clausola WHERE: operatore IN

SELECT NomeFROM ImpiegatoWHERE Cognome = ‘Rossi’ ANDWHERE Dipart IN (‘Amministrazione’,WHERE ‘Produzione’)

Nome

Mario

Page 38: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Clausola WHERE: operatore LIKE

SELECT *FROM ImpiegatoWHERE Cognome LIKE ‘_o%i’

_ Un carattere qualsiasi

% Un stringa qualsiasi

Page 39: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Clausola WHERE: operatore BETWEEN

SELECT *FROM ImpiegatoWHERE Stipendio BETWEEN 40 AND 45

Page 40: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Clausola WHERE: valori nulli“Impiegati che hanno o potrebbero avere uno stipendio minore

di 50”

•N.B.: Vogliamo anche gli stipendi “nulli”

Page 41: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Clausola WHERE: valori nulli

SELECT *FROM Impiegati_con_nulliWHERE Stipendio < 50 or Stipendio IS NULL

Page 42: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Ordinamento del risultato

• A  differenza  del  modello  relazionale,  in  cui  le  tuple  non  sono ordinate,  le  righe di  una  tabella possono esserlo  ­  anche  se  solo  al momento della presentazione all’utente.

• Talvolta  la possibilità di ordinare  il  risultato di un’interrogazione  è importante.  Ad  esempio,  se  si  voglio  gli  stipendi  in  ordine  dal minore al maggiore.

• SQL mette a disposizione la clausola ORDER BY

Page 43: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Ordinamento del risultato: esempio

SELECT Cognome, Nome, StipendioFROM ImpiegatoWHERE Dipartimento LIKE ‘Amm%’ORDER BY Stipendio DESC, Cognome ASC

discendente ascendente (default)

Page 44: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

JOIN Implicito

• Il  JOIN  è  un  operatore  fondamentale,  in  quanto  permette  di utilizzare congiuntamente le informazioni contenute in più tabelle

• Un  JOIN  corrisponde  a  un  prodotto  cartesiano  seguito  da  una selezione

• E’  quindi  possibile  realizzare  un  JOIN  tramite  gli  statement  SQL visti  finora,  cioè  FROM  e  WHERE,  che  permettono  di  compiere prodotti cartesiani e selezioni

• Esistono anche operatori specifici, ma non li vedremo

Page 45: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Prodotto cartesiano

• Il  prodotto  cartesiano  di  due  o  più  tabelle  si  ottiene  riportando  le tabelle nella clausola From, senza clausola Where

Page 46: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

DB-Persone

Persone Maternita

Paternita

Page 47: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

JOIN Implicito

• Query: “Padre e madre di ogni persona”

SELECT Padre, Paternita.Figlio, MadreFROM Paternita, MaternitaWHERE Paternita.Figlio = Maternita.Figlio

Page 48: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Esempio: Selezione, Proiezione e JOIN

• Query: “I padri di persone che guadagnano più di venti milioni”

SELECT distinct Paternita.PadreFROM Paternita, PersoneWHERE Paternita.Figlio = Persone.Nome AND Reddito > 20

Page 49: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Self-JOIN

• Nel  JOIN  tra  una  tabella  e  se  stessa  occorre  necessariamente utilizzare dei  sinonimi  (alias) per distinguere  le diverse occorrenze della tabella

• Query:  “Le  persone  che  guadagnano  più  dei  rispettivi  padri. Mostrare nome, reddito e reddito del padre”

SELECT F.Nome, F.Reddito, P.RedditoFROM Paternita, Persone F, Persone PWHERE Figlio = F.Nome AND P.Nome = Padre AND F.Reddito > P.Reddito

Page 50: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Stessa cosa, con ridenominazione del risultato

• Query:  “Le  persone  che  guadagnano  più  dei  rispettivi  padri. Mostrare nome, reddito e reddito del padre”

SELECT Figlio, F.Reddito AS Reddito, P.Reddito AS RedditoPadre,FROM Paternita, Persone P, Persone FWHERE Figlio = F.Nome AND P.Nome = Padre AND F.Reddito > P.Reddito

Page 51: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

DB-Impiegati

Impiegato

Dipartimento

Page 52: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Necessità di operatori su tuple

• Nelle interrogazioni viste finora le condizioni di selezione (clausola Where)  venivano  valutate  su  ciascuna  riga  indipendentemente  da tutte le altre

• Si può ad esempio verificare quali dipartimenti hanno sede a Milano

• Ma non si può contarne il numero, perchè occorrerebbe valutare un insieme di righe

Page 53: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Esempio di operatore aggregato: count

SELECT count(*) AS DipMilanesi FROM DipartimentoWHERE Citta = ‘Milano’

DipMilanesi

3

Page 54: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Valutazione di un operatore aggregato

• Vediamo  come  viene  valutata  la  seguente  interrogazione  con operatore aggregato COUNT, che conta  il numero di  impiegati che lavorano in Produzione

SELECT count(*) AS numeroImpiegati FROM ImpiegatoWHERE Dipart = ‘Produzione’

Page 55: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Valutazione di un operatore aggregato (1)

• Prima si valuta la query senza operatore aggregato

SELECT *FROM ImpiegatoWHERE Dipart = ‘Produzione’

Page 56: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

• Poi si considerano le tuple come un insieme

Valutazione di un operatore aggregato (2)

SELECT count(*) AS numeroImpiegati FROM ImpiegatoWHERE Dipart = ‘Produzione’

•N.B.: Count conta il numero di righe

Page 57: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

L’operatore COUNT

• COUNT può anche riferirsi a singole colonne

SELECT count(*) AS numeroImpiegati FROM Impiegato

SELECT count(Stipendio) AS numeroStipendi FROM Impiegato

numeroStipendi

8

numeroImpiegati

8

Page 58: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

L’operatore COUNT

• La  valutazione  si  effettua  esattamente  allo  stesso  modo:  prima  la query senza COUNT...

SELECT StipendioFROM Impiegato

Page 59: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

• ... quindi il conteggio dell’insieme di righe

L’operatore COUNT

SELECT count(Stipendio) AS numeroStipendi FROM Impiegato

numeroStipendi

8

Page 60: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

COUNT e valori nulli

• Quando  si  specificano  le  colonne  su  cui  contare,  il  risultato  può variare per via dei valori nulli

• Consideriamo la seguente tabella:

Page 61: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

COUNT e valori nulli

SELECT count(*) AS numeroImpiegati FROM ImpiegatoConNulli

numeroImpiegati

6

SELECT count(Stipendio) AS numeroStipendi FROM ImpiegatoConNulli

numeroStipendi

5

Page 62: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Conteggio delle righe diverse tra loro

• Se si vogliono considerare solo righe diverse l’una dall’altra, si può utilizzare l’opzione distinct

SELECT count(Stipendio) AS numeroStipendiFROM Impiegato

numeroStipendi

8

SELECT count(distinct Stipendio) AS stipendiDiversiFROM Impiegato

stipendiDiversi

6

Page 63: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Conteggio delle righe diverse tra loro

• Questo equivale (come al solito) alla valutazione della query senza operatore aggregato...

SELECT distinct StipendioFROM Impiegato

•... e al successivo conteggio delle righe

SELECT count (distinct Stipendio)FROM Impiegato

Page 64: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Altri operatori

• Quanto detto per COUNT vale anche per gli operatori: SUM, MAX, MIN, AVG

• Questi operatori escludono opportunamente i valori nulli

• L’opzione distinct può ancora essere utilizzata

• Esistono  altri  operatori  (varianza,  mediano  ...),  ma  non  sono standard. Controllare il manuale del sistema che si vuole utilizzare

Page 65: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Esempi di altri operatori

SELECT max(Stipendio) AS stipendioMaxFROM Impiegato

stipendioMax

80

SELECT min(Stipendio) AS stipendioMinFROM Impiegato

stipendioMin

36

Page 66: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Altri operatori

SELECT sum(Stipendio) AS sommaStipendiFROM Impiegato

sommaStipendi

405

SELECT avg(Stipendio) AS mediaStipendiFROM Impiegato

mediaStipendi

50.625

Page 67: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Operatori aggregati e JOIN

• Gli operatori aggregati si possono utilizzare anche in concomitanza con i JOIN

SELECT max(Stipendio) AS stipendioMassimoFROM Impiegato, Dipartimento Dwhere Dipart = D.Nome AND Citta = ‘Milano’

stipendioMassimo

80

Page 68: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

Operatori aggregati e ridenominazione

• Se non utilizziamo la AS, il risultato non ha nome

SELECT max(Stipendio) FROM Impiegato, Dipartimento Dwhere Dipart = D.Nome AND Citta = ‘Milano’

max(Stipendio)

80

Page 69: Informatica CL Fisioterapisti Informatica Medica Sistemi per la …gaspari/www/teaching/newfisio9.pdf · 2015-10-28 · Cartella clinica elettronica. ... dell'impresa Conoscenza?

• Non è  lecita  la presenza contemporanea nella  target  list di  nomi di campi e operatori aggregati

• Ad esempio, la seguente interrogazione non è corretta:

Operatori aggregati e target list

SELECT Cognome, Nome, min(Stipendio) FROM Impiegatowhere Dipart = ‘Amministrazione’