Skillbook Logo
foto profilo

Skill Factory

Lista post > Ricominciamo ... dal linguaggio SQL Lezione 11

Ricominciamo ... dal linguaggio SQL Lezione 11

Gino Visciano | Skill Factory - 25/04/2016 22:59:46 | in Tutorials

Benvenuti all'undicesima lezione, in questa nuova lezione vedrete le funzioni statistiche del comando Select.

Le funzioni statistiche sono molto utili perché forniscono informazioni di aggregazione rispetto a tutti i dati presenti nelle colonne numeriche indicate.

Le principali  funzioni statistiche sono le seguenti:

 

  • SUM(NomeColonna)    Somma i valori della colonna indicata, si può applicare solo a colonne numeriche;
  • AVG(NomeColonna)     Calcola la Media dei valori della colonna indicata, si può applicare solo a colonne numeriche;
  • MIN(NomeColonna)     Restituisce il valore Minimo della colonna indicata, si può applicare solo a colonne numeriche;
  • MAX(NomeColonna)     Restituisce il valore Massimo della colonna indicata, si può applicare solo a colonne numeriche;
  • COUNT(NomeColonna)    Si usa per contareil numero di righe della tabella, si può applicare a qualunque tipo di colonna, spesso si usa nella forma COUNT(*).

 

Ad esempio per conoscere il numero di dipendenti inserito nella tabella Dipendenti, su può usare il comando seguente:

Select count(*) from Dipendenti;

10

Per vedere praticamente come si usano le funzioni statistiche eseguite prima gli step seguenti, nel Database azienda:

STEP 1: Creare la tabella Clienti.

use azienda;

create table clienti (
id int auto_increment Primary Key,
nominativo varchar(100),
piva char(11) unique,
indirizzo varchar(100),
localita varchar(50),
provincia char(2));
 

STEP 2: Creare la tabella Fatture.

use azienda;

create table fatture (
id int auto_increment Primary Key,
num_fat varchar(20) unique,
data date,
id_cliente int,
imponibile decimal(9,2),
id_tipo_scadenza int);

use azienda;

create table tipo_scadenza (
id int auto_increment Primary Key,
tipo_scadenza varchar(100));

STEP 3: Inserimento Clienti.

use azienda;

insert into clienti (nominativo, localita, provincia) values ('Morgan & C.', 'Roma','RM');

insert into clienti (nominativo, localita, provincia) values ('Fiorini & Figli', 'Napoli','NA');

insert into clienti (nominativo, localita, provincia) values ('Aldebran', 'Milano','MI');

insert into clienti (nominativo, localita, provincia) values ('Cassandra', 'Roma','RM');

insert into clienti (nominativo, localita, provincia) values ('Pedretti', 'Napoli','NA');

insert into clienti (nominativo, localita, provincia) values ('Staiano', 'Milano','MI');


STEP 4: Inserimento Tipo_scadenza.

use azienda;

insert into tipo_scadenza (tipo_scadenza) values ('Rimessa diretta');

insert into tipo_scadenza (tipo_scadenza) values ('30 gg DF');

insert into tipo_scadenza (tipo_scadenza) values ('30 DFFM');

insert into tipo_scadenza (tipo_scadenza) values ('60 gg DF');

insert into tipo_scadenza (tipo_scadenza) values ('60 DFFM');

insert into tipo_scadenza (tipo_scadenza) values ('90 gg DF');

insert into tipo_scadenza (tipo_scadenza) values ('90 DFFM');


STEP 5: Inserimento Fatture.

use azienda;

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0001/16', '2016/01/15', 1,1000.00,2);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0002/16', '2016/01/15', 2,2000.00,2);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0003/16', '2016/01/15', 3,1500.00,3);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0004/16', '2016/01/15', 4,500.00,3);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0005/16', '2016/01/15', 5,1800.00,4);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0006/16', '2016/01/29', 6,800.00,5);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0007/16', '2016/02/29', 1,1500.00,2);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0008/16', '2016/02/29', 2,2100.00,2);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0009/16', '2016/02/29', 3,1800.00,3);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0010/16', '2016/02/29', 4,600.00,3);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0011/16', '2016/02/29', 5,1900.00,4);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0012/16', '2016/02/29', 6,900.00,5);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0013/16', '2016/03/31', 1,1900.00,2);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0014/16', '2016/03/31', 2,900.00,2);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0015/16', '2016/03/31', 3,800.00,3);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0016/16', '2016/03/31', 4,1600.00,3);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0017/16', '2016/03/31', 5,2000.00,4);

insert into fatture (num_fat, data, id_cliente, imponibile, id_tipo_scadenza) values ('0018/16', '2016/03/31', 6,1000.00,5);


Dopo che avete completato i 5 step,  potete  usare le tabelle create e popolate per vedere come si usano le funzioni statistiche del comando Select, di seguito vediamo alcuni esempi:

La query seguente mette in relazione tutte le tabelle create e ne visualizza il contenuto:

select fat.num_fat, fat.data, cli.nominativo, fat.imponibile, ts.tipo_scadenza  from fatture as fat join clienti as cli on(fat.id_cliente=cli.id) join tipo_scadenza as ts on(fat.id_tipo_scadenza=ts.id) order by cli.nominativo;

 

num_fat data nominativo imponibile tipo_scadenza
0015/16 2016-03-31 Aldebran 800.00 30 DFFM
0009/16 2016-02-29 Aldebran 1800.00 30 DFFM
0003/16 2016-01-15 Aldebran 1500.00 30 DFFM
0016/16 2016-03-31 Cassandra 1600.00 30 DFFM
0010/16 2016-02-29 Cassandra 600.00 30 DFFM
0004/16 2016-01-15 Cassandra 500.00 30 DFFM
0008/16 2016-02-29 Fiorini & Figli 2100.00 30 gg DF
0002/16 2016-01-15 Fiorini & Figli 2000.00 30 gg DF
0014/16 2016-03-31 Fiorini & Figli 900.00 30 gg DF
0013/16 2016-03-31 Morgan & C. 1900.00 30 gg DF
0007/16 2016-02-29 Morgan & C. 1500.00 30 gg DF
0001/16 2016-01-15 Morgan & C. 1000.00 30 gg DF
0017/16 2016-03-31 Pedretti 2000.00 60 gg DF
0011/16 2016-02-29 Pedretti 1900.00 60 gg DF
0005/16 2016-01-15 Pedretti 1800.00 60 gg DF
0018/16 2016-03-31 Staiano 1000.00 60 DFFM
0012/16 2016-02-29 Staiano 900.00 60 DFFM
0006/16 2016-01-29 Staiano 800.00 60 DFFM

 

Partendo da questa tabella, usando le funzioni statistiche, potete rispondere alle domande seguenti:

1) Quante fatture sono state inserite nella tabella fatture?

use azienda;
select count(*) from fatture;
18

2) Qual è il valore totale del fatturato inserito nella tabella fatture?

use azienda;
select sum(imponibile) from fatture;
24600.00

3) Qual è il valore medio del fatturato inserito nella tabella fatture?

use azienda;
select avg(imponibile) from fatture;
1366.66

4) Qual è il fatturato minimo inserito nella tabella fatture?

use azienda;
select min(imponibile) from fatture;
500.00

5) Qual è il fatturato massimo inserito nella tabella fatture?

use azienda;
select max(imponibile) from fatture;
2100.00

6) Quante fatture sono state inserite nella tabella fatture nel il mese di gennaio?

use azienda;
select count(*) from fatture where data>='2016-01-01' and data<='2016-01-31'; 
6

7) Qual è il fatturato totale inserito nella tabella fatture nel mese di gennaio?

use azienda;
select sum(imponibile) from fatture where data>='2016-01-01' and data<='2016-01-31'; 
7600.00

8) Qual è il fatturato totale del cliente Cassandra inserito nella tabella fatture?

use azienda;
select clienti.nominativo, sum(fatture.imponibile) from fatture  join clienti on (fatture.id_cliente=clienti.id) where clienti.nominativo='Cassandra';
Cassandra   2700.00

9) Qual è il fatturato totale dei clienti di Roma inserito nella tabella fatture?

use azienda;
select clienti.localita, sum(fatture.imponibile) from fatture join clienti on (fatture.id_cliente=clienti.id) where clienti.localita='Roma';
Roma  7100,00

10)  Qual è il fatturato totale dei clienti di Roma inserito nella tabella fatture nel mese di gennaio?

use azienda;
select clienti.localita, sum(fatture.imponibile) from fatture join clienti on (fatture.id_cliente=clienti.id) where clienti.localita='Roma' and data>='2016-01-01' and data<='2016-01-31';
Roma  1500.00

 


<< Lezione precedente           Lezione successiva >>


T U T O R I A L S    S U G G E R I T I


Share Button
TOP