Está en la página 1de 10

5ta Sesión Práctica

GROUP BY y DISTINC

HAVING

CONCEPTOS: CLAVE PRIMARIA Y FORÁNEA, TIPOS DE RELACIONES

RELACIONAR VARIAS TABLAS

CONSULTAS ANIDADAS
Cláusulas SQL
TABLA EMPLEADOS

Cláusula DISTINC Cláusula GROUP BY

Ejemplo
Ejemplo: select 
select distinct SEXO SEXO , count(*) as EMPLEADOS
  from EMPLEADOS from  EMPLEADOS
group by  SEXO

2
Cláusulas SQL

Cláusula DISTINC Cláusula GROUP BY

Sirve para encontrar los distintos Sirve para obtener totales agrupados
valores existentes en un determinado según los distintos valores existentes
campo en un determinado campo.

Se usa en conjunto con las funciones


de agregación o totalización:

COUNT, SUM, MIN, MAX, AVG

3
Cláusulas SQL
Cláusula HAVING
Sirve para filtrar cálculos de totalización
Siempre debe ir acompañado de GROUP BY
Ejemplo:
select  UBICACION , count(*) as EJEMPLARES
    from  MASCOTAS
   where  ESTADO = 'A’
group by UBICACION

having count(*) = 1

4
Consultas SQL
Tabla de relación:
se crea por que hay una
relación N a M entre Conceptos previos
Productos y Pedidos

• Clave Primaria
• Clave Foránea
• Tipos de Relaciones
• 1a1
• 1aN
• NaM

La clave primaria identifica un registro


único de una tabla

La clave foránea relaciona los datos de


un registro de una tabla con los de otra
Consultas SQL
Tabla de relación
TABLA ALUMNOS
TABLA CURSOS

TABLA ALUMNOS_CURSOS
1 1 N

N N

El TRUCO PARA VARIAS TABLAS: TABLA PROFESORES


“Relaciona la clave foránea”
Ejemplo:
where PROFESORES.ID_PROFE = CURSOS.ID_PROFE 1

Los más avezados podrían averiguar sobre el


JOIN
Consultas SQL

Producto cartesiano

Relacionando claves
Ejemplo:
select titulo, nombre
select titulo, nombre, from profesores, cursos
from profesores, cursos where profesores.id_profe = cursos.id_profe

Para abreviar podemos darles alias a las tablas:


select titulo, nombre
from profesores P, cursos C
where P.id_profe = C.id_profe
Consultas SQL
Ejemplos:
• Cuantos cursos tiene el profesor Federico. • Los nombres que terminen en “o” de los alumnos de la
profesora Rosa.
SELECT COUNT(*) AS CANTIDAD_CURSOS_FEDERICO
FROM PROFESORES P, CURSOS C SELECT A.NOMBRE
WHERE P. NOMBRE = "FEDERICO" AND FROM ALUMNOS A, CURSOS C, ALUMNOS_CURSOS AC, PROFESORES P
P.ID_PROFE = C.ID_PROFE WHERE P.NOMBRE = "ROSA" AND
A.NOMBRE LIKE "%O" AND
• Los apellidos de los alumnos que llevan el curso de AC.ID_CURSO = C.ID_CURSO AND
“SQL desde cero”. AC.ID_ALUMNO = A.ID_ALUMNO AND
P.ID_PROFE = C.ID_PROFE
SELECT APELLIDOS
FROM ALUMNOS A, CURSOS C, ALUMNOS_CURSOS AC
WHERE C.TITULO = "SQL DESDE CERO" AND
AC.ID_CURSO = C.ID_CURSO AND
AC.ID_ALUMNO = A.ID_ALUMNO

Link para practicar:


http://deletesql.com/viewtopic.php?f=9&t=7&p=10&query=emp2
Consultas anidadas SQL

• Los nombres de los alumnos que llevan cursos con Jeremías ¿Para que sirven las
anidadas?
SELECT A.NOMBRE Idea no tengo…
FROM ALUMNOS A, ALUMNOS_CURSOS AC Cuando un dato en la
WHERE AC.ID_ALUMNO = A.ID_ALUMNO AND condición WHERE te haga
AC.ID_CURSO = (SELECT AC.ID_CURSO
falta, parece ser …
FROM ALUMNOS_CURSOS AC, ALUMNOS
A
WHERE AC.ID_ALUMNO = A.ID_ALUMNO
AND
A.NOMBRE = "JEREMIAS")
AND A.NOMBRE <> "JEREMIAS"

…que mediante una


sub-consulta encontrar
solo podrías …
Cláusulas básicas SQL

Para reforzar sobre cláusulas de SQL, revisar las siguientes páginas:

• Link1: http://deletesql.com/viewforum.php?f=5&sid=0ff84cf0549d55ff42d99453f36f0509

• Esta página me parece muy buena para prácticar SQL, contiene bastante teoría pero explicada de forma sencilla (pueden
obviar la lección 7y 8).
• Revisar especialmente la lección 12 y 13 les ayudará a entender con hacer consultas a dos o más tablas diferentes y la
utilidad de comparar las claves primaria y secundarias.
• Tiene un su propio banco de pruebas: http://deletesql.com/viewtopic.php?f=9&t=7&p=10&query=emp2
 
• Link2: http://www.sql-easy.com/ 

• El easy class también es una página que ofrece varios ejercicios de SQL , para pasar de lección (boton next lesson) en la
parte superior.

También podría gustarte