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