SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
Having
Miquel Boada
25-11-2016
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 2 – Introducció . Integritat referencial
Objectius
1. Selecció de registres amb funcions d'agregat
Coneixements previs
• Instrucció select
• Funció d'agregat
Requisits previs
• Ordinador amb MySQL server instal·lat.
• Client MySQL server (MySQL Workbench per la representació gràfica).
• Connexió al servidor des del client
• Una base de dades creada.
Autor: Miquel Boada Pàgina 2 de 7
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 2 – Introducció . Integritat referencial
SQL - Having
Objectius....................................................................................................................................................2
Coneixements previs................................................................................................................................2
Requisits previs.........................................................................................................................................2
Introducció ...............................................................................................................................................6
Having........................................................................................................................................................6
Alies............................................................................................................................................................7
Sintaxis i exemples...................................................................................................................................7
Exemples having..................................................................................................................................7
Autor: Miquel Boada Pàgina 3 de 7
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 2 – Introducció . Integritat referencial
Per a realitzar les diferents consultes es partirà del següent model ER i la seva conversió al
model físic.
Superhero Planet
Les instruccions per a crear la base de dades , les taules i les dades es detallen a continuació.
Tenir en compte que la força i la intel·ligència es generen mitjançant un número aleatori i, per
tant, aquests valors diferiran dels valors mostrats en la taula anterior.
Autor: Miquel Boada Pàgina 4 de 7
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 2 – Introducció . Integritat referencial
create database if not exists dbheroes;
use dbheroes;
create table planet ( namep varchar(20), mass decimal(6,2) not null,
primary key(namep)
) engine=innodb;
create table superheroes (
nameh varchar(40),
planet varchar(20),
intelligence decimal(4,2) not null,
strong decimal(4,2) not null,
primary key(nameh)
) engine=innodb;
insert into planet values ("Mercury",0.06),("Venus",0.82),("Earth",1),("Mars",0.11),
("Jupiter",317.8),("Saturn",95.2),("Uranus",14.6),("Neptune",17.2);
alter table superheroe
add constraint fk_superhero_planet
foreign key (planet) references planet(namep)
on delete restrict
on update cascade;
insert into superhero values
("Superman","earth",round(rand()*100,2),round(rand()*100,2)),
("Batman","earth",round(rand()*100,2),round(rand()*100,2)),
("Spiderman","mars",round(rand()*100,2),round(rand()*100,2)),
("Thor","earth",round(rand()*100,2),round(rand()*100,2)),
("Hal Jordan","Venus",round(rand()*100,2),round(rand()*100,2)),
("Wonder Woman","earth",round(rand()*100,2),round(rand()*100,2)),
("Captain America","Venus",round(rand()*100,2),round(rand()*100,2)),
("Martian Manhunter","Mars",round(rand()*100,2),round(rand()*100,2));
Autor: Miquel Boada Pàgina 5 de 7
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 2 – Introducció . Integritat referencial
Introducció .
Quan es volen realitzar consultes del tipus:
✔ Quins anys s'ha facturat més que la facturació de l'any 2016?
✔ Quins articles s'han venut més que l'article X?
✔ ….
O consultes relacionades amb les taules del nostre exemple
✔ Quins planetes tenen més força que la força del planeta terra?
✔ Quins planetes tenen una intel·ligència superior a la mitjana de la intel·ligència?
✔ …....
És precís utilitzar la clausula «group by» amb «having» per a poder fer el filtre dels missatges.
Having.
La clausula «having» s'utilitzarà quan es vulguin filtrar les files d'una instrucció «select» segons
el resultat d'una funció d'agregat. Com es pot observar en el tipus de consulta realitzades a la
introducció (total facturació, total producte venut, total força, total intel·ligència) per a obtenir
cada un d'aquests valors cal aplicar una funció d'agregat (sum) en el nostre cas. Per resoldre la
consulta: Quins planetes tenen una intel·ligència superior a la mitjana de la intel·ligència?
es podria pensar en la consulta no vàlida:
Select planet, sum(intelligence) from superheroes
group by planet
where sum(intelligence)>(select avg(intelligence) from superheroes);
Tot i que es pot pensar que la consulta és vàlida, l'utilització de la clausula where amb una
funció d'agregat no és vàlida i és precís substituir-la per having.
Select planet, sum(intelligence) from superheroes
group by planet
having sum(intelligence)>(select avg(intelligence) from superheroes);
Quan s'utilitza la clausula having , podem combinar la condició o condicions amb funcions
d'agregat amb condicions relacionades amb consultes de la informació de les columnes que es
mostren en el select (en el nostre cas, planet).
Select planet, sum(intelligence) from superheroes
group by planet
having sum(intelligence)>(select avg(intelligence) from superheroes)
and planet like 'p%'; -- Planetes que comencin per la lletra P
Autor: Miquel Boada Pàgina 6 de 7
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 2 – Introducció . Integritat referencial
Alies
Una bona opció és associar un àlies a la columna que conté la funció d'agregat i utilitzar aquest
àlies en l'expressió del having. D'aquesta forma l'expressió queda més simple.
-- Quins planetes tenen una força mitjana superior a la mitjana de força de tots els planetes
Select planet, avg(strong) as averageStrong from superheroes
group by planet
having averageStrong>(select avg(strong) from superheroes);
Sintaxis i exemples
La clausula «having» va ubicada després de la clausula «group by».
Exemples having
-- Quins planetes tenen una intel·ligència superior a la mitjana d'intel·ligència de tots els planetes
Select planet, sum(intelligence) from superheroes
group by planet
having sum(intelligence)>(select avg(intelligence) from superheroes);
-- Quins planetes tenen una intel·ligència superior a la mitjana d'intel·ligència de tots els planetes
-- i el nom del planeta comença per la lletra P
Select planet, sum(intelligence) from superheroes
group by planet
having sum(intelligence)>(select avg(intelligence) from superheroes)
and planet like 'p%';
-- Quins planetes tenen una força mitjana superior a la mitjana de força de tots els planetes
Select planet, avg(strong) as averageStrong from superheroes
group by planet
having averageStrong>(select avg(strong) from superheroes);
Video exemple: Exemples utilització having
Autor: Miquel Boada Pàgina 7 de 7

Contenu connexe

En vedette

En vedette (8)

Chiers pitch deck ppt 2 18-17
Chiers pitch deck  ppt 2 18-17Chiers pitch deck  ppt 2 18-17
Chiers pitch deck ppt 2 18-17
 
Soutenance - Master 2 Recherche
Soutenance - Master 2 RechercheSoutenance - Master 2 Recherche
Soutenance - Master 2 Recherche
 
Resume
ResumeResume
Resume
 
ELMEZUGHI_FARAJ_2016_CV
ELMEZUGHI_FARAJ_2016_CVELMEZUGHI_FARAJ_2016_CV
ELMEZUGHI_FARAJ_2016_CV
 
Parent presentation
Parent presentationParent presentation
Parent presentation
 
¿Cómo tiene el pelo?
¿Cómo tiene el pelo?¿Cómo tiene el pelo?
¿Cómo tiene el pelo?
 
19th February 2017 - What is a living Sacrifice?
19th February 2017 - What is a living Sacrifice?19th February 2017 - What is a living Sacrifice?
19th February 2017 - What is a living Sacrifice?
 
End Times Doctrine
End Times DoctrineEnd Times Doctrine
End Times Doctrine
 

Plus de Miquel Boada Artigas

Configuració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerConfiguració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerMiquel Boada Artigas
 
Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Miquel Boada Artigas
 
LLenguatge SQL. Consultes amb agrupació de files.
LLenguatge SQL. Consultes amb agrupació de files. LLenguatge SQL. Consultes amb agrupació de files.
LLenguatge SQL. Consultes amb agrupació de files. Miquel Boada Artigas
 
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...Miquel Boada Artigas
 
Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Miquel Boada Artigas
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Miquel Boada Artigas
 
Tema 01 - Creació de taules amb SQL.
Tema 01 - Creació de taules amb SQL.Tema 01 - Creació de taules amb SQL.
Tema 01 - Creació de taules amb SQL.Miquel Boada Artigas
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Miquel Boada Artigas
 
Transformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalTransformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalMiquel Boada Artigas
 
Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Miquel Boada Artigas
 
Introducció bases de dades distribuides
Introducció bases de dades distribuidesIntroducció bases de dades distribuides
Introducció bases de dades distribuidesMiquel Boada Artigas
 
Introducció bases de dades centralitzades
Introducció bases de dades centralitzadesIntroducció bases de dades centralitzades
Introducció bases de dades centralitzadesMiquel Boada Artigas
 
Sistemes gestors de bases de dades
Sistemes gestors de bases de dadesSistemes gestors de bases de dades
Sistemes gestors de bases de dadesMiquel Boada Artigas
 

Plus de Miquel Boada Artigas (20)

Configuracio servei dns_linux
Configuracio servei dns_linuxConfiguracio servei dns_linux
Configuracio servei dns_linux
 
Configuracio servei dns Windows
Configuracio servei dns WindowsConfiguracio servei dns Windows
Configuracio servei dns Windows
 
Configuració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerConfiguració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows Server
 
Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.
 
LLenguatge SQL. Consultes amb agrupació de files.
LLenguatge SQL. Consultes amb agrupació de files. LLenguatge SQL. Consultes amb agrupació de files.
LLenguatge SQL. Consultes amb agrupació de files.
 
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
 
Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.
 
Tema 01 - Creació de taules amb SQL.
Tema 01 - Creació de taules amb SQL.Tema 01 - Creació de taules amb SQL.
Tema 01 - Creació de taules amb SQL.
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
 
Model relacional i normalització
Model relacional i normalitzacióModel relacional i normalització
Model relacional i normalització
 
Transformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalTransformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacional
 
Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)
 
Model entitat relació (ER)
Model entitat relació (ER)Model entitat relació (ER)
Model entitat relació (ER)
 
Introducció bases de dades distribuides
Introducció bases de dades distribuidesIntroducció bases de dades distribuides
Introducció bases de dades distribuides
 
Introducció bases de dades centralitzades
Introducció bases de dades centralitzadesIntroducció bases de dades centralitzades
Introducció bases de dades centralitzades
 
Sistemes gestors de bases de dades
Sistemes gestors de bases de dadesSistemes gestors de bases de dades
Sistemes gestors de bases de dades
 
Emmagatzematge de la informació
Emmagatzematge de la informacióEmmagatzematge de la informació
Emmagatzematge de la informació
 
Història de les bases de dades
Història de les bases de dadesHistòria de les bases de dades
Història de les bases de dades
 
Model relacional i formes normals
Model relacional i formes normalsModel relacional i formes normals
Model relacional i formes normals
 

LLenguatge SQL. Consultes utilitzant having

  • 2. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 2 – Introducció . Integritat referencial Objectius 1. Selecció de registres amb funcions d'agregat Coneixements previs • Instrucció select • Funció d'agregat Requisits previs • Ordinador amb MySQL server instal·lat. • Client MySQL server (MySQL Workbench per la representació gràfica). • Connexió al servidor des del client • Una base de dades creada. Autor: Miquel Boada Pàgina 2 de 7
  • 3. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 2 – Introducció . Integritat referencial SQL - Having Objectius....................................................................................................................................................2 Coneixements previs................................................................................................................................2 Requisits previs.........................................................................................................................................2 Introducció ...............................................................................................................................................6 Having........................................................................................................................................................6 Alies............................................................................................................................................................7 Sintaxis i exemples...................................................................................................................................7 Exemples having..................................................................................................................................7 Autor: Miquel Boada Pàgina 3 de 7
  • 4. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 2 – Introducció . Integritat referencial Per a realitzar les diferents consultes es partirà del següent model ER i la seva conversió al model físic. Superhero Planet Les instruccions per a crear la base de dades , les taules i les dades es detallen a continuació. Tenir en compte que la força i la intel·ligència es generen mitjançant un número aleatori i, per tant, aquests valors diferiran dels valors mostrats en la taula anterior. Autor: Miquel Boada Pàgina 4 de 7
  • 5. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 2 – Introducció . Integritat referencial create database if not exists dbheroes; use dbheroes; create table planet ( namep varchar(20), mass decimal(6,2) not null, primary key(namep) ) engine=innodb; create table superheroes ( nameh varchar(40), planet varchar(20), intelligence decimal(4,2) not null, strong decimal(4,2) not null, primary key(nameh) ) engine=innodb; insert into planet values ("Mercury",0.06),("Venus",0.82),("Earth",1),("Mars",0.11), ("Jupiter",317.8),("Saturn",95.2),("Uranus",14.6),("Neptune",17.2); alter table superheroe add constraint fk_superhero_planet foreign key (planet) references planet(namep) on delete restrict on update cascade; insert into superhero values ("Superman","earth",round(rand()*100,2),round(rand()*100,2)), ("Batman","earth",round(rand()*100,2),round(rand()*100,2)), ("Spiderman","mars",round(rand()*100,2),round(rand()*100,2)), ("Thor","earth",round(rand()*100,2),round(rand()*100,2)), ("Hal Jordan","Venus",round(rand()*100,2),round(rand()*100,2)), ("Wonder Woman","earth",round(rand()*100,2),round(rand()*100,2)), ("Captain America","Venus",round(rand()*100,2),round(rand()*100,2)), ("Martian Manhunter","Mars",round(rand()*100,2),round(rand()*100,2)); Autor: Miquel Boada Pàgina 5 de 7
  • 6. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 2 – Introducció . Integritat referencial Introducció . Quan es volen realitzar consultes del tipus: ✔ Quins anys s'ha facturat més que la facturació de l'any 2016? ✔ Quins articles s'han venut més que l'article X? ✔ …. O consultes relacionades amb les taules del nostre exemple ✔ Quins planetes tenen més força que la força del planeta terra? ✔ Quins planetes tenen una intel·ligència superior a la mitjana de la intel·ligència? ✔ ….... És precís utilitzar la clausula «group by» amb «having» per a poder fer el filtre dels missatges. Having. La clausula «having» s'utilitzarà quan es vulguin filtrar les files d'una instrucció «select» segons el resultat d'una funció d'agregat. Com es pot observar en el tipus de consulta realitzades a la introducció (total facturació, total producte venut, total força, total intel·ligència) per a obtenir cada un d'aquests valors cal aplicar una funció d'agregat (sum) en el nostre cas. Per resoldre la consulta: Quins planetes tenen una intel·ligència superior a la mitjana de la intel·ligència? es podria pensar en la consulta no vàlida: Select planet, sum(intelligence) from superheroes group by planet where sum(intelligence)>(select avg(intelligence) from superheroes); Tot i que es pot pensar que la consulta és vàlida, l'utilització de la clausula where amb una funció d'agregat no és vàlida i és precís substituir-la per having. Select planet, sum(intelligence) from superheroes group by planet having sum(intelligence)>(select avg(intelligence) from superheroes); Quan s'utilitza la clausula having , podem combinar la condició o condicions amb funcions d'agregat amb condicions relacionades amb consultes de la informació de les columnes que es mostren en el select (en el nostre cas, planet). Select planet, sum(intelligence) from superheroes group by planet having sum(intelligence)>(select avg(intelligence) from superheroes) and planet like 'p%'; -- Planetes que comencin per la lletra P Autor: Miquel Boada Pàgina 6 de 7
  • 7. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 2 – Introducció . Integritat referencial Alies Una bona opció és associar un àlies a la columna que conté la funció d'agregat i utilitzar aquest àlies en l'expressió del having. D'aquesta forma l'expressió queda més simple. -- Quins planetes tenen una força mitjana superior a la mitjana de força de tots els planetes Select planet, avg(strong) as averageStrong from superheroes group by planet having averageStrong>(select avg(strong) from superheroes); Sintaxis i exemples La clausula «having» va ubicada després de la clausula «group by». Exemples having -- Quins planetes tenen una intel·ligència superior a la mitjana d'intel·ligència de tots els planetes Select planet, sum(intelligence) from superheroes group by planet having sum(intelligence)>(select avg(intelligence) from superheroes); -- Quins planetes tenen una intel·ligència superior a la mitjana d'intel·ligència de tots els planetes -- i el nom del planeta comença per la lletra P Select planet, sum(intelligence) from superheroes group by planet having sum(intelligence)>(select avg(intelligence) from superheroes) and planet like 'p%'; -- Quins planetes tenen una força mitjana superior a la mitjana de força de tots els planetes Select planet, avg(strong) as averageStrong from superheroes group by planet having averageStrong>(select avg(strong) from superheroes); Video exemple: Exemples utilització having Autor: Miquel Boada Pàgina 7 de 7