Está en la página 1de 12

Operador LIKE - SQL Server

Regresar al índice

Veamos este interesante tema, de frente al punto como dicen algunos.

Like utiliza los siguientes comodines para un determinado fin :

% Cualquier número de caracteres


_ Para un carácter individual
[ ] Para un conjunto de caracteres que esté dentro del corchete
[ ^ ] Que el carácter individual que no esté dentro del corchete

EJEMPLO: LIKE ‘%een’ Muestra todos los caracteres que acaben con een
EJEMPLO: LIKE ‘%een%’ Muestra todos los caracteres que contengan een en ese orden
EJEMPLO: LIKE ‘_en’ Muestra todos los caracteres que contenga tres letras y acaben en en
EJEMPLO: LIKE ‘[CK% ]’ Muestra todos los caracteres que empiecen por C o K
EJEMPLO: LIKE ‘[S-V]ing’ Nombre de 4 letras cuya primera letra estuviera entre S o V y acabe en ing
EJEMPLO: LIKE ‘M[^c]%’ Todos los que empiecen por M y segunda letra no sea una c. No hay limite de
caracteres.

Ahora veamos todo esto en la práctica.

1. Seleccionar todos los empleados cuyo apellido comience por M

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE 'M%'

2. Seleccionar todos los empleados cuyo apellido termine con la letra Z

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE '%z'
3. Seleccionar todos los empleados que contengan en su apellido ER.

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE '%er%'

4. Mostrar todos los empleados cuyo nombre sea de 4 letras y su apellido termine con la
letra a

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE '___a'

5. Mostrar todos los empleados cuyo apellido comience entre las letras E y F.

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE '[E-F]%'

6. Mostrar todos los empleados cuyo apellido comience por la letra A, contenga dentro de
su apellido de la letra A a la M y que terminen en O.

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE 'A%[a-m]%o'
7. Mostrar todos los empleados cuyo apellido comience por la letra M y la segunda letra no
sea una A.

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE 'M[^A]%'

8. Mostrar todos los empleados cuyo apellido sea de 5 letras y su tercera letra sea entra la A
y la S terminando en Z.

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE '__[a-ñ]_z'

9. Mostrar todos los empleados cuyo apellido sea de 6 letras y no comience entre la A y la
D.

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE '[^a-d]_____'

10. Mostrar todos los que empiecen por la A y cuya cuarta letra no esté comprendida entre
A–G

?
1 SELECT * FROM EMP WHERE APELLIDO LIKE 'A__[^a-g]%'
FUNCIONES
Funciones de agregado - Parte 1

Regresar al índice

Hola nuevamente!! Te recuerdo que para esta serie de ejercicios estamos utilizando la
base de datos Hospital, la cual puedes descargarla desde el indice. Sin más que decir
vayamos al punto.

Las funciones de agregado son funciones que se utilizan para calcular valores en las
tablas. Si queremos usarlas combinándolas junto con otros campos debemos
utilizar Group by y agrupar los datos que no son funciones.

Con la sentencia group by no se utiliza la clausula where, se utilizara una clausula propia
de la expresión: HAVING. Equivalente a where

 COUNT: Cuenta los registros que hay en la consulta.


Si pongo un valor dentro de la expresión devolverá la cuenta de todos los registros no
nulos.
Si pongo un asterisco contará todos los registros aunque tengan valores nulos.
?

1 select count(*) from emp

: Valores con Nulos

1 select count(oficio) from emp

: Valores sin nulos

 AVG: Realiza la media sobre la expresión dada, debe ser un tipo de dato Int.
?
1 select avg(salario) from emp

 MAX: Saca el valor máximo de una consulta.


?
1 select max(fecha_alt) from emp

 MIN: Devuelve el valor mínimo de una consulta.


?
1 select min(fecha_alt) from emp

 SUM: Devuelve la suma de los salarios


?
1 select sum(salario) from emp

Empecemos con los ejercicios :

1. Encontrar el salario medio de los analistas, mostrando el número de los empleados con
oficio analista.

?
1 SELECT COUNT(*) AS [NUMERO DE EMPLEADOS], OFICIO,

2 AVG(SALARIO) AS [SALARIO MEDIO] FROM

3 EMP GROUP BY OFICIO HAVING OFICIO ='ANALISTA'

2. Encontrar el salario mas alto, mas bajo y la diferencia entre ambos de todos los
empleados con oficio EMPLEADO.
?
1 SELECT OFICIO, MAX(SALARIO) AS [SALARIO MAS ALTO]

2 , MIN(SALARIO) AS [SALARIO MAS BAJO]

3 , MAX(SALARIO) - MIN(SALARIO) AS [DIFERENCIA ENTRE AMBOS]

4 FROM EMP GROUP BY OFICIO HAVING OFICIO = 'EMPLEADO'

3. Visualizar los salarios mayores para cada oficio.

?
1 SELECT OFICIO, MAX(SALARIO) AS [SALARIO MÁXIMO] FROM EMP GROUP BY OFICIO

4. Visualizar el número de personas que realizan cada oficio en cada departamento.

?
1 SELECT DEPT_NO AS [Nº DE DEPARTAMENTO],

2 COUNT(*) AS [Nº DE PERSONAS], OFICIO

3 FROM EMP GROUP BY DEPT_NO, OFICIO

4 ORDER BY 1
5. Buscar aquellos departamentos con cuatro o mas personas trabajando.

?
1 SELECT DEPT_NO AS [Nº DE DEPARTAMENTO]

2 , COUNT(*) AS [Nº DE PERSONAS] FROM EMP

3 GROUP BY DEPT_NO HAVING COUNT(*) > 3

6. Mostrar el número de directores que existen por departamento.

?
1 SELECT COUNT(*) AS [NUMERO EMPLEADOS], DEPT_NO FROM EMP

2 WHERE OFICIO = 'DIRECTOR'

3 GROUP BY DEPT_NO
7. Visualizar el número de enfermeros, enfermeras e interinos que hay en la plantilla,
ordenados por la función.

?
1 SELECT COUNT(*) AS [Nº DE PERSONAS], FUNCION FROM PLANTILLA

2 GROUP BY FUNCION

3 HAVING FUNCION IN ('ENFERMERO','ENFERMERA','INTERINO')

4 ORDER BY FUNCION

Espero haber ayudado en algo. Hasta la próxima oportunidad!

8. Visualizar departamentos, oficios y número de personas, para aquellos


departamentosque tengan dos o más personas trabajando en el mismo oficio.

?
1 SELECT DEPT_NO AS [Nº DE DEPARTAMENTO],COUNT(*) AS [Nº DE PERSONAS],
2 OFICIO FROM EMP GROUP BY DEPT_NO,OFICIO HAVING COUNT(*) > 1

9. Calcular el salario medio, Diferencia, Máximo y Mínimo de cada oficio.


Indicando el oficio y el número de empleados de cada oficio.

?
1 SELECT OFICIO, COUNT(*) AS [Nº DE EMPLEADOS], MIN(SALARIO) AS [SALARIO MÍNIMO]
2 , MAX(SALARIO) AS [SALARIO MÁXIMO], MAX(SALARIO) - MIN(SALARIO) AS [DIFERENCIA]
3 , AVG(SALARIO) AS [MEDIA] FROM EMP GROUP BY OFICIO

10. Calcular el valor medio de las camas que existen para cada nombre de sala.
Indicar el nombre de cada sala y el número de cada una de ellas.

?
1 SELECT SALA_COD AS [SALA], NOMBRE
2 , AVG(NUM_CAMA) AS [MEDIA DE CAMAS]
3 FROM SALA GROUP BY NOMBRE, SALA_COD

11. Calcular el salario medio de la plantilla de la sala 6, según la función que


realizan. Indicar la función y el número de empleados.

?
1 SELECT COUNT(*) AS [Nº DE EMPLEADOS], FUNCION, AVG(SALARIO) AS [SALARIO MEDIO]
2 FROM PLANTILLA GROUP BY FUNCION, SALA_COD HAVING SALA_COD = 6

12. Averiguar los últimos empleados que se dieron de alta en la empresa en cada
uno de los oficios, ordenados por la fecha.
?
1 SELECT MAX(FECHA_ALT) AS [FECHA], OFICIO FROM EMP
2 GROUP BY OFICIO
3 ORDER BY 1

13. Mostrar el número de hombres y el número de mujeres que hay entre los
enfermos.

?
1 SELECT COUNT(*) AS [NÚMERO], S AS [SEXO] FROM ENFERMO GROUP BY S

14. Mostrar la suma total del salario que cobran los empleados de la plantilla para
cada función y turno.

?
1 SELECT FUNCION, T AS [TURNO], SUM(SALARIO) AS [SUMA DE SALARIOS]
2 FROM PLANTILLA GROUP BY FUNCION, T
15. Calcular el número de salas que existen en cada hospital.

?
1 SELECT COUNT(*) AS [Nº SALAS], HOSPITAL_COD FROM SALA
2 GROUP BY HOSPITAL_COD

16. Mostrar el número de enfermeras que existan por cada sala.

?
1 SELECT COUNT(*) AS [Nº PERSONAS], SALA_COD, FUNCION FROM PLANTILLA
2 WHERE FUNCION='ENFERMERA'
3 GROUP BY SALA_COD, FUNCION
4 ORDER BY 1

También podría gustarte