0% encontró este documento útil (0 votos)
22 vistas83 páginas

DB - SQL Select & SQL For Analytics

El documento es una introducción a SQL, enfocándose en la sentencia SELECT y sus variaciones, incluyendo cómo seleccionar, ordenar y filtrar datos de una base de datos. Se explican conceptos como operadores de comparación, lógicos, y el uso de cláusulas como WHERE, ORDER BY, y JOIN. Además, se presentan ejemplos prácticos de consultas SQL y cómo manejar datos nulos y alias.

Cargado por

sofiaechegoy
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas83 páginas

DB - SQL Select & SQL For Analytics

El documento es una introducción a SQL, enfocándose en la sentencia SELECT y sus variaciones, incluyendo cómo seleccionar, ordenar y filtrar datos de una base de datos. Se explican conceptos como operadores de comparación, lógicos, y el uso de cláusulas como WHERE, ORDER BY, y JOIN. Además, se presentan ejemplos prácticos de consultas SQL y cómo manejar datos nulos y alias.

Cargado por

sofiaechegoy
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Instroducción a SQL

SELECT
[Link]
Tooling de ejercitación

1. Instalar java ([Link])


2. Descargar el tooling de ejercitación
3. Ejecutar el archivo descargado
4. Abrir el navegador e ir al sitio [Link]
[Link]

[Link]
SENTENCIA SELECT
❏ La sentencia SELECT se
utiliza para seleccionar datos
de una base de datos.
❏ Los datos devueltos se
almacenan en una tabla de
resultados, denominada
[Link]

result-set.
TABLAS DE EJEMPLO

Empleado Departamento

Nro_Emp Nombre Puesto Nro_Depto Nro_Depto Nombre Locación

1 Alicia Presidente 10 10 Contabilidad Buenos Aires

2 Bernardo Director 30 20 I+D Cordoba

3 Carlos Director 10 30 Ventas San Luis

4 Miguel Líder 20 40 Operaciones Mendoza


[Link]
SELECT
BÁSICO
SELECT [<nombre_columna>]
FROM <nombre_tabla>

❏ Luego de la cláusula SELECT especificamos las columnas que


deseamos obtener.
❏ Luego de la cláusula FROM especificamos la tabla de la cual
obtendremos dichas columnas

SELECT nro_emp, nombre, puesto, nro_depto


FROM empleado
[Link]
SELECT
BÁSICO
SELECT [<nombre_columna>]
FROM <nombre_tabla>

❏ Luego de la cláusula SELECT especificamos las columnas que


deseamos obtener.
❏ Luego de la cláusula FROM especificamos la tabla de la cual
obtendremos dichas columnas
❏ En caso de desear retornar todas las columnas de la tabla, podemos
reemplazar los nombres de las columnas por el símbolo *
[Link]
SELECT
BÁSICO
SELECT nro_emp, nombre, puesto, nro_depto
FROM empleado;

SELECT *
FROM empleado;

SELECT nro_emp
, nombre
, puesto
FROM empleado;
[Link]
SELECT
ORDER BY
❏ Cuando utilizamos la sentencia SELECT el orden en que aparecen
las filas resultantes puede no ser el esperado.
❏ En algunos casos, las filas que aparecen en el resultado están en el
orden en que se almacenan físicamente en la tabla. Sin embargo,
en caso de que el optimizador de consultas utilice un índice para
procesar la consulta, las filas aparecerán tal como están
almacenadas en el orden de la clave del índice. Por esta razón, el
orden de las filas en el conjunto de resultados es indeterminado o
impredecible.
❏ Para especificar exactamente el orden de las filas en el conjunto de
resultados, agregue una cláusula ORDER BY.
[Link]
SELECT
ORDER BY
SELECT [<nombre_columna>]
FROM <nombre_tabla>
ORDER BY [<nombre_columna> ASC|DESC]

❏ Para ordenar el conjunto de resultados, se especifican las


columnas en la que desea ordenar y el tipo de orden de
clasificación:
❏ Ascendente (ASC)
❏ Descendente (DESC)
❏ Si no especifica el orden de clasificación, el sistema de base de
[Link]

datos normalmente clasifica el resultado en orden ascendente


(ASC) de manera predeterminada.
SELECT
ORDER BY
SELECT nro_emp, nombre, puesto, nro_depto
FROM empleado
ORDER BY nombre, nro_emp;

SELECT *
FROM empleado
ORDER BY nombre, nro_emp;

SELECT nro_emp
, nombre
, puesto
FROM empleado
[Link]

ORDER BY nro_depto, nombre;


SELECT
DISTINCT
❏ El operador DISTINCT se utiliza para eliminar duplicados de un
conjunto de resultados.

SELECT DISTINCT [<nombre_columna>]


FROM <nombre_tabla>

SELECT DISTINCT nombre


FROM empleado
ORDER BY nombre;
[Link]
SELECT
LIMIT
❏ Para recuperar una parte de las filas devueltas por una consulta , se
utilizan las cláusulas LIMIT y OFFSET.
❏ La <cantidad_de_filas> determina el número de filas que se
devolverán.
❏ La cláusula OFFSET omite las <filas_a_omitir> filas antes de
comenzar a devolver las filas. La cláusula OFFSET es opcional, por
lo que puede ser omitida.

SELECT [<nombre_columna>]
FROM <nombre_tabla>
LIMIT <cantidad_de_filas> OFFSET <filas_a_omitir>
[Link]
SELECT * FROM tabla
LIMIT 4 OFFSET 3;
OFFSET 3 LIMIT 4

1

7
SELECT * FROM tabla;
SELECT
LIMIT
[Link]
SELECT
LIMIT
SELECT *
FROM empleado
LIMIT 3;

SELECT *
FROM empleado
ORDER BY nombre
LIMIT 3;

SELECT *
FROM empleado
[Link]

ORDER BY nombre, nro_emp


LIMIT 3 OFFSET 3;
SELECT
WHERE
❏ Para seleccionar ciertas filas de una tabla, se utiliza la
cláusula WHERE que aparece inmediatamente después de
la cláusula FROM.
❏ La cláusula WHERE contiene una o más expresiones
lógicas que evalúan cada fila de la tabla. Si una fila evalúa
la condición como verdadera, se incluirá en el resultado; de
lo contrario, será excluida.

SELECT [<nombre_columna>]
FROM <nombre_tabla>
WHERE <condicion>
[Link]
SELECT
OPERADORES DE COMPARACIÓN
❏ La forma más básica de filtrar datos es utilizar operadores
de comparación

Operador Significado

= Igual

!= Distinto

> Mayor

>= Mayor o igual


[Link]

< Menor

<= Menor o igual


SELECT
OPERADORES DE COMPARACIÓN
❏ Para formar una expresión simple, puede utilizar uno de los
operadores anteriores, anteponiendo el nombre de la columna y
luego un valor literal.
❏ O puede utilizar nombre de columna de ambos lados.

<nombre_columna> <operador> <valor>

<nombre_columna> <operador> <nombre_columna>


[Link]
SELECT
WHERE - OPERADORES DE COMPARACIÓN
SELECT *
FROM empleado
WHERE nro_emp = 1

SELECT *
FROM empleado
WHERE nombre != ‘Carlos’

SELECT *
FROM empleado
WHERE nro_emp != nro_depto
[Link]
SELECT
OPERADORES LÓGICOS
❏ Los operadores de comparación permiten filtrar datos según una
condición, aunque es probable que también queramos filtrar datos
mediante varias condiciones, posiblemente con más frecuencia de
la que desea filtrar por una sola condición. Los operadores lógicos
le permiten utilizar varios operadores de comparación en una
consulta.

Operador Significado

Muestra un registro sí tanto la primera como la segunda


AND
condición es verdadera.
[Link]

Muestra un registro sí la primera o la segunda condición


OR
es verdadera.
SELECT
OPERADORES LÓGICOS

AND VERDADERO FALSO NULL

VERDADERO VERDADERO FALSO NULL

FALSO FALSO FALSO FALSO

NULL NULL FALSO NULL

OR VERDADERO FALSO NULL

VERDADERO VERDADERO VERDADERO VERDADERO

FALSO VERDADERO FALSO NULL

NULL VERDADERO NULL NULL


[Link]
SELECT
OPERADORES LÓGICOS
<condicion> <operador_logico> <condicion>

❏ El operador AND tiene prioridad sobre el operador OR, por lo que


ante la combinación de ambos, el AND actúa como la
multiplicación y la división, y el OR actúa como la suma y la resta
en una operación matemática.

<condicion> AND <condicion> OR <condicion>



<condicion> AND (<condicion> OR <condicion>)
[Link]
SELECT
WHERE - OPERADORES LÓGICOS
SELECT *
FROM empleado
WHERE nro_emp > 1 AND nombre != ‘Carlos’

SELECT *
FROM empleado
WHERE nro_emp = 1 OR nombre != ‘Carlos’

SELECT *
FROM empleado
WHERE nro_emp = 1 OR nombre != ‘Carlos’ AND nombre != ‘Miguel’
[Link]
SELECT
BETWEEN
❏ El operador BETWEEN le permite seleccionar solo filas dentro de un
cierto rango, retornando verdadero si el valor está dentro del rango,
incluyendo los extremos.
❏ Los valores pueden ser números o fechas

<nombre_columna> BETWEEN <valor> AND <valor>

SELECT *
FROM empleado
WHERE nro_emp BETWEEN 2 AND 6
[Link]
SELECT
IN
❏ El operador IN permite comparar un valor con un conjunto de
valores, retornando verdadero si el valor está dentro del conjunto de
valores.

<nombre_columna> IN ([<valor>])

SELECT *
FROM empleado
WHERE nro_depto IN (10, 20, 30)
[Link]
SELECT
LIKE
❏ El operador LIKE prueba si una expresión coincide con un patrón
específico.
❏ Si la expresión coincide con el patrón, el operador LIKE devuelve
verdadero. De lo contrario, devuelve falso.
❏ Para construir un patrón, usa dos caracteres comodín SQL:
❏ % el signo de porcentaje coincide con cero, uno o más
caracteres
❏ _ El signo de subrayado coincide con un solo carácter.

<nombre_columna> LIKE <patron>


[Link]
SELECT
LIKE

Expresión Sentido

LIKE 'Kim%' Comienza con 'Kim'

LIKE '%er' Termina con 'er'

LIKE '%ch%' Contiene 'ch'

LIKE 'Le_' Comienza con 'Le' y le sigue sólo un carácter

LIKE '_uy' Termina con 'uy' y comienza con un solo carácter

LIKE '%are_' Contiene 'are', comienza con cualquier número de caracteres y termina con un
carácter
[Link]

LIKE '_are%' Contiene 'are', comienza con un carácter y termina con cualquier número de
caracteres
SELECT
WHERE - LIKE
SELECT *
FROM empleado
WHERE nombre LIKE ‘C%’

SELECT *
FROM empleado
WHERE nombre LIKE ‘%s’

SELECT *
FROM empleado
WHERE nombre LIKE ‘%_ar%’
[Link]
SELECT
NOT
❏ Para invertir el resultado de cualquier expresión booleana, utilice el
operador NOT.

NOT <expresion>

SELECT *
FROM empleado
WHERE nombre NOT LIKE ‘C%’

SELECT *
[Link]

FROM empleado
WHERE nro_depto NOT IN (10, 20, 30)
SELECT
IS NULL / IS NOT NULL
❏ Los valores nulos se tratan de forma diferente a otros valores. Null
se utiliza como marcador de valores desconocidos o inaplicables.
❏ Null != Null o Null != X? ⟹ Desconocido.
❏ Null = Null o Null = X? ⟹ Desconocido.
❏ Dado que los operadores devuelven desconocido al comparar
cualquier cosa con Nulo, SQL proporciona dos predicados de
comparación específicos de nulo: IS NULL y IS NOT NULL prueba si
los datos son o no nulos.

<nombre_columna> IS NULL
[Link]

<nombre_columna> IS NOT NULL


SELECT
ALIAS
❏ El alias SQL le permite asignar un nombre temporal a una tabla o
columna durante la ejecución de una consulta.
❏ Hay dos tipos de alias: alias de tabla y alias de columna.

SELECT <nombre_columna> alias_columna


FROM <nombre_tabla> alias_tabla

SELECT e.num_emp legajo_empleado


FROM empleado e
[Link]
SELECT
PRODUCTO CARTESIANO
❏ Para hacer un producto de cartesiano, lo único que se debe hacer
es agregar más de una tabla en la instrucción FROM, generando de
esta forma la combinatoria de todos los valores de las tablas.

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>, <nombre_tabla>

SELECT empleado.nro_emp, departamento.nro_dept


FROM empleado, departamento
[Link]

SELECT e.*, d.*


FROM empleado e, departamento d
Result set

SELECT Nro_Emp

1
Nro_Depto

10

PRODUCTO CARTESIANO 1 20

1 30

1 40

SELECT empleado.nro_emp 2 10

, departamento.nro_depto 2 20

FROM empleado, departamento 2 30

2 40

3 10
Empleado Departamento
3 20
Nro_Emp … Nro_Depto …

1 ... 10 ... ⟹ 3

3
30

40

2 ... 20 ...
4 10

3 ... 30 ...
[Link]

4 20

4 ... 40 ...
4 30

4 40
SELECT
JOIN
❏ La palabra clave JOIN se usa en una instrucción SQL para consultar
datos de dos o más tablas, en función de una relación entre ciertas
columnas de estas tablas.
❏ INNER JOIN: Devuelve filas cuando hay al menos una coincidencia
en ambos tablas
❏ OUTER JOIN: Devuelve filas cuando hay una coincidencia en una de
las tablas
❏ LEFT OUTER JOIN: Devuelve todas las filas de la tabla de la izquierda,
incluso si no hay coincidencias en la tabla de la derecha.
❏ RIGHT OUTER JOIN: Devuelve todas las filas de la tabla derecha,
incluso si no hay coincidencias en la tabla de la izquierda.

[Link]

FULL OUTER JOIN: Devuelve filas cuando hay una coincidencia en una
de las tablas.
SELECT
INNER JOIN
❏ La cláusula INNER JOIN aparece después de la cláusula FROM. La
condición para coincidir entre la tabla A y la tabla B se especifica
después de la palabra clave ON. Esta condición se llama condición
de unión, es decir, B.n = A.n
❏ La cláusula INNER JOIN puede unir tres o más tablas siempre que
tengan relaciones.

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
JOIN <nombre_tabla> ON <condicion_de_union>
[Link]
SELECT
INNER JOIN
[Link]

[Link]
SELECT
INNER JOIN

SELECT [Link] nombre_emp


, [Link] nombre_depto
FROM empleado e
JOIN departamento d ON e.nro_depto = d.nro_depto

Empleado Departamento Result set


Nro_emp Nombre … Nro_Depto Nro_Depto Nombre … nombre_emp nombre_depto

1 Alicia ... 10 10 Contabilidad … Alicia Contabilidad

3
Bernardo

Carlos
...

...
30

10
20

30
I+D

Ventas


⟹ Bernardo

Carlos
Ventas

Contabilidad
[Link]

4 Miguel ... 20 40 Operaciones … Miguel I+D


SELECT
OUTER JOIN
❏ Las combinaciones externas (outer join) son combinaciones que
devuelven valores coincidentes y valores no coincidentes de una o
ambas tablas. Hay algunos tipos de combinaciones externas: LEFT
JOIN devuelve solo filas no coincidentes de la tabla de la izquierda,
así como filas coincidentes en ambas tablas (cuando decimos
coincidentes, son aquellas filas que cumplen la condición de
unión).
❏ La cláusula OUTER JOIN aparece después de la cláusula FROM. La
condición para coincidir entre la tabla A y la tabla B se especifica
después de la palabra clave ON. Esta condición se llama condición
de unión, es decir, B.n = A.n.
[Link]
SELECT
OUTER JOIN

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
LEFT JOIN <nombre_tabla> ON <condicion_de_union>

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
RIGHT JOIN <nombre_tabla> ON <condicion_de_union>

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
[Link]

FULL JOIN <nombre_tabla> ON <condicion_de_union>


SELECT
OUTER JOIN - LEFT JOIN
[Link]

[Link]
SELECT
OUTER JOIN - FULL JOIN
[Link]

[Link]
SELECT
OUTER JOIN
SELECT [Link] nombre_depto
, [Link] nombre_emp
FROM departamento d
LEFT JOIN empleado e ON d.nro_depto = e.nro_depto
ORDER BY [Link], [Link]

Result set
Departamento Empleado
nombre_depto nombre_emp
Nro_Depto Nombre … Nro_emp Nombre … Nro_Depto

Contabilidad Alicia
10 Contabilidad … 1 Alicia ... 10

20

30
I+D

Ventas


2

3
Bernardo

Carlos
...

...
30

10
⟹ Contabilidad

I+D
Carlos

Miguel
[Link]

Operaciones NULL
40 Operaciones … 4 Miguel ... 20

Ventas Bernardo
SELECT
OUTER JOIN
SELECT [Link] nombre_depto
, [Link] nombre_emp
FROM empleado e
RIGHT JOIN departamento d ON e.nro_depto = d.nro_depto
ORDER BY [Link], [Link]

Result set
Empleado Departamento
nombre_depto nombre_emp
Nro_emp Nombre … Nro_Depto Nro_Depto Nombre …

Contabilidad Alicia
1 Alicia ... 10 10 Contabilidad …

3
Bernardo

Carlos
...

...
30

10
20

30
I+D

Ventas


⟹ Contabilidad

I+D
Carlos

Miguel
[Link]

Operaciones NULL
4 Miguel ... 20 40 Operaciones …

Ventas Bernardo
SELECT
CROSS JOIN

❏ La combinación cruzada no busca coincidencias entre ningún


valor en los dos conjuntos de datos. En cambio, para cada fila en la
primera tabla, cada fila de la segunda tabla se adjuntará y se
agrega a la tabla final una por una.
❏ El CROSS JOIN funciona de manera similar al producto cartesiano.

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
CROSS JOIN <nombre_tabla>
[Link]
SELECT
CROSS JOIN
[Link]

[Link]
SELECT
UNION
❏ El operador UNION combina conjuntos de resultados de dos o más
sentencias SELECT en un único conjunto de resultados, sin
repeticiones.
❏ Cada instrucción SELECT dentro de UNION debe tener el mismo
número de columnas. Las columnas también deben tener tipos de
datos similares. Además, las columnas de cada instrucción
SELECT deben estar en el mismo orden.

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
UNION
[Link]

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
SELECT
UNION
[Link]

[Link]
SELECT
INTERSECT
❏ El operador INTERSECT combina dos declaraciones de selección y
devuelve solo el conjunto de datos que es común en ambas
declaraciones. En pocas palabras, actúa como una intersección
matemática.
❏ Cada instrucción SELECT dentro de INTERSECT debe tener el
mismo número de columnas. Las columnas también deben tener
tipos de datos similares. Además, las columnas de cada
instrucción SELECT deben estar en el mismo orden.

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
INTERSECT
[Link]

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
SELECT
INTERSECT
[Link]
SELECT
EXCEPT
❏ El operador EXCEPT devuelve las distintas filas que están
presentes en el conjunto de resultados de la primera consulta pero
no en el conjunto de resultados de la segunda consulta. También se
le conoce como operador de diferencia de conjuntos.
❏ Cada instrucción SELECT dentro de EXCEPT debe tener el mismo
número de columnas. Las columnas también deben tener tipos de
datos similares. Además, las columnas de cada instrucción
SELECT deben estar en el mismo orden.

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
EXCEPT
[Link]

SELECT [<nombre_tabla>.<nombre_columna>]
FROM <nombre_tabla>
SELECT
FUNCIONES DE AGREGACIÓN
❏ Las funciones agregadas de SQL devuelve un solo valor,
calculado a partir de los valores en una columna.
❏ Las funciones de agregación más utilizadas son:
❏ AVG(): devuelve el valor promedio
❏ COUNT(): devuelve el número de filas
❏ MAX(): devuelve el valor más grande
❏ MIN(): devuelve el valor más pequeño
❏ SUM(): devuelve la suma de los valores

SELECT <funcion_agregacion>(<nombre_columna>)
FROM <nombre_tabla>
[Link]

SELECT COUNT(nro_emp) cantidad_empleados


FROM empleado
SELECT
FUNCIONES DE AGREGACIÓN
[Link]

[Link]
SELECT
AGRUPACIÓN - GROUP BY
❏ GROUP BY permite separar los datos en grupos, permitiendo
agregar independientemente unos de otros
❏ Por tanto, un conjunto de agrupación es un conjunto de columnas
por las que se agrupa mediante la cláusula GROUP BY.

SELECT <nombre_columna>, <funcion_agregacion>(<nombre_columna>)


FROM <nombre_tabla>
GROUP BY <nombre_columna_agregacion>

SELECT nro_depto, count(nro_emp)


FROM empleado
[Link]

GROUP BY nro_depto
SELECT
AGRUPACIÓN - GROUP BY
[Link]

[Link]
SELECT
AGRUPACIÓN - GROUP BY + HAVING
❏ Para agregar condiciones a las agrupaciones se agregó la cláusula
HAVING, la cual nos permite generar condiciones sobre la
agrupación utilizando funciones de agregación.

SELECT <nombre_columna>, <funcion_agregacion>(<nombre_columna>)


FROM <nombre_tabla>
GROUP BY [<nombre_columna_agregacion>]
HAVING <funcion_agregacion>(<nombre_columna>) <comparador> <valor>

SELECT nro_depto, count(nro_emp)


FROM empleado
[Link]

GROUP BY nro_depto
HAVING count(nro_emp) = 1
SELECT
AGRUPACIÓN - GROUP BY CUBE
❏ GROUP BY CUBE es similar al GROUP BY, pero nos permite obtener
los resultados agregados por cada columna de agrupación

SELECT <nombre_columna>, <funcion_agregacion>(<nombre_columna>)


FROM <nombre_tabla>
GROUP BY CUBE <nombre_columna_agregacion>

SELECT nro_depto, puesto, count(nro_emp)


FROM empleado
GROUP BY CUBE nro_depto, puesto


[Link]

El resultado nos traerá el total de empleados por cada departamento y puesto de trabajo, el total de
empleados por cada departamento, el total por cada puesto de trabajo, y el total de empleados.
SELECT
AGRUPACIÓN - GROUP BY ROLLUP
❏ GROUP BY ROLLUP es similar al GROUP BY, pero nos permite
obtener los resultados agregados por cada columna de agrupación
jerárquicamente.

SELECT <nombre_columna>, <funcion_agregacion>(<nombre_columna>)


FROM <nombre_tabla>
GROUP BY ROLLUP <nombre_columna_agregacion>

SELECT nro_depto, puesto, count(nro_emp)


FROM empleado
GROUP BY ROLLUP nro_depto, puesto


[Link]

El resultado nos traerá el total de empleados por cada departamento y puesto de trabajo, el total de
empleados por cada departamento, y el total de empleados.
SUBCONSULTA

❏ Por definición, una subconsulta es una consulta anidada dentro


de otra consulta como SELECT, INSERT, UPDATE, o DELETE.
❏ La subconsulta se conoce como consulta interna o selección
interna, y la consulta que contiene la subconsulta se denomina
consulta externa o selección externa.
❏ Para ejecutar la consulta, primero, el sistema de base de datos
tiene que ejecutar la consulta interna y sustituirla con su resultado,
y luego ejecutar la consulta externa.
[Link]
SELECT
SUBCONSULTA
❏ Podemos utilizar una subconsulta en:
❏ Con el operador IN - NOT IN
❏ Con operadores de comparación [=, !=, >, >=, <, <=]
❏ Con el operador EXISTS - NOT EXISTS
❏ Como cláusula en el FROM
❏ Como cláusula en el SELECT
[Link]
SELECT
SUBCONSULTA - FROM
[Link]

[Link]
SELECT
SUBCONSULTA - COMPARACIÓN
[Link]

[Link]
SELECT
SUBCONSULTA - IN
[Link]

[Link]
SELECT
WITH
❏ La cláusula SQL WITH le permite dar un nombre a una subconsulta (un proceso
también llamado refactorización de subconsulta), al que se puede hacer
referencia en varios lugares dentro de la consulta SQL principal.
❏ La cláusula se utiliza para definir una relación temporal de modo que la salida
de esta relación temporal esté disponible y la utilice la consulta asociada a la
cláusula WITH.
❏ Las consultas que tienen una cláusula WITH asociada también se pueden
escribir mediante subconsultas anidadas, pero al hacerlo agrega más
complejidad para leer/depurar la consulta SQL.

WITH <nombre_subconsulta> AS (<subconsulta>)


[Link]
SELECT
WITH

SELECT [Link] nombre_empleado, [Link] nombre_departamento


FROM employee e
JOIN (SELECT nro_depto, nombre
FROM departamento) d ON e.nro_depto = [Link]

WITH departamento_nombre AS (
SELECT nro_depto, nombre
FROM departamento
)
SELECT [Link] nombre_empleado, [Link] nombre_departamento
FROM employee e
[Link]

JOIN departamento_nombre d ON e.nro_depto = [Link]


SELECT
EXISTS - NOT EXISTS
❏ El operador EXISTS le permite especificar una subconsulta para
probar la existencia de filas. En consecuencia, el operador EXISTS
retorna verdadero si existe resultado en la subconsulta,
independientemente del resultado en sí mismo. Y retorna falso en
caso que el resultado sea vacío.
❏ El operador EXISTS finaliza el procesamiento de la consulta
inmediatamente una vez que encuentra una fila, por lo tanto, puede
aprovechar esta función del operador EXISTS para mejorar el
rendimiento de la consulta.
[Link]
SELECT
EXISTS - NOT EXISTS

SELECT [<nombre_columna>]
FROM <nombre_tabla>
WHERE EXISTS <subconsulta>

SELECT e.*
FROM empleado e
WHERE EXISTS (SELECT 1
FROM departamento d
WHERE e.nro_depto = d.nro_depto)
[Link]
SELECT
CASE
❏ La declaración CASE es la forma en que SQL maneja la lógica si /
entonces (IF/THEN). La declaración CASE es seguida por al menos
un par de declaraciones WHEN y THEN.
❏ Puede utilizar la expresión CASE en instrucciones como SELECT ,
DELETE y UPDATE o en cláusulas como SELECT, ORDER BY y
HAVING.

CASE [WHEN <condicion> THEN <valor-columna>]


ELSE <valor-columna>
END
[Link]
SELECT
CASE

CASE [WHEN <condicion> THEN <valor-columna>]


ELSE <valor-columna>
END

SELECT [Link] nombre_emp


, CASE WHEN e.nro_depto is null THEN ‘Sin asignar’
ELSE [Link] END nombre_depto
FROM empleado e
LEFT JOIN departamento d ON e.nro_depto = d.nro_depto
[Link]
SELECT
FUNCIONES DE VENTANA
❏ Similar a una función agregada, una función de ventana calcula en
un conjunto de filas. Sin embargo, una función de ventana no hace
que las filas se agrupen en una sola fila de salida.

Función de agregación Función de ventana

∑ ∑
[Link]
SELECT
FUNCIONES DE VENTANA
<funcion_de_agregacion>(<expresion>)
OVER (PARTITION BY <nombre_columna>
ORDER BY <nombre_columna>
ROWS/RANGE <rango>)

❏ La cláusula OVER define las particiones de las ventanas para formar los grupos de
filas y especifica el orden de las filas en una partición.
❏ La cláusula PARTITION BY especifica cómo se dividen las filas en las que se
aplica la función de ventana (simil group by).
❏ La cláusula ORDER BY especifica el órden de las filas en una partición en la que
opera la función de ventana.
❏ La cláusula ROWS especifica el rango de filas (frame) en la que se aplicará la
función de ventana.
[Link]

❏ La cláusula RANGE especifica el rango de valores (frame) en el que se aplicará la


función de ventana, la columna de valores a utilizar será la definida en el ORDER
BY
SELECT
FUNCIONES DE VENTANA
❏ La cláusula ROWS define el intervalo de filas a ser consideradas en la ventana.
❏ La cláusula RANGE define el intervalo de valores a ser considerado en la ventana, la
columna de valores a utilizar será la definida en el ORDER BY

Partición
Unbounded preceding

N preceding

N filas ROWS BETWEEN <primera_fila> AND <ultima_fila>


/valores

Current row

M filas
/valores RANGE BETWEEN <primera_valor> AND <ultimo_valor>
M following
[Link]

Unbounded following
SELECT
FUNCIONES DE VENTANA
SELECT 'Day'
, 'Mile Driving'
, SUM('Miles Driving') OVER (ORDER BY 'Day') 'Running Total'
FROM 'Running total mileage visual';
[Link]

[Link]
SELECT
FUNCIONES DE VENTANA
SELECT 'Day'
, 'Daily Revenue'
, AVG('Daily Revenue') OVER (ORDER BY 'Day' ROWS 2 PRECEDING) '3 Day Average'
FROM 'Running Average Example';
[Link]

[Link]
SELECT
FUNCIONES DE VENTANA
SELECT 'Day'
, 'Weekend'
, 'Daily Revenue'
, SUM('Daily Revenue') OVER (PARTITION BY 'Weekend') 'Total'
FROM 'Partitioned Total Example';
[Link]

[Link]
SELECT
FUNCIONES DE VENTANA
❏ FIRST_VALUE(): devuelve el primer valor en un conjunto ordenado de valores
❏ LAG(): proporciona acceso a una fila en un desplazamiento físico específico
que viene antes de la fila actual
❏ LAST_VALUE(): devuelve el último valor en un conjunto ordenado de valores.
❏ LEAD(): proporciona acceso a una fila en un desplazamiento físico específico
que sigue a la fila actual.
❏ CUME_DIST(): calcula la distribución acumulada de valor dentro de un conjunto
de valores. Es decir, calcula la posición relativa de un valor en un grupo de
valores
❏ DENSE_RANK(): asigna filas a las filas de las particiones sin huecos en los
valores de clasificación. Si dos o más filas en cada partición tienen los mismos
valores, reciben el mismo rango. La siguiente fila tiene el rango aumentado en
[Link]

uno.
SELECT
FUNCIONES DE VENTANA
❏ NTILE(): permite dividir el conjunto de resultados en un número específico de
grupos aproximadamente iguales o buckets. Asigna a cada grupo un número de
bucket empezando por uno. Para cada fila de un grupo, la función NTILE()
asigna un número de bucket que representa el grupo al que pertenece la fila.
❏ PERCENT_RANK(): calcula el percentil rango de filas de un conjunto de
resultados.
❏ RANK(): asigna un ranking a cada fila en la partición de un conjunto de
resultados. El ranking de una fila está determinado por uno más el número de
ranking anteriores.
❏ ROW_NUMBER(): asigna un número entero secuencial para cada fila de
conjunto de resultados de la consulta.
[Link]
SELECT
FUNCIONES DE SQL - Character

❏ UPPER: convierte un texto a mayúscula - UPPER(<texto>)


❏ LOWER: convierte un texto a minúscula - LOWER(<texto>)
❏ TRIM: elimina los espacios vacíos en los extremos de un texto - TRIM(<texto>)
❏ CONCAT: concatena los textos de una lista - CONCAT(<texto>, <texto>, …)
❏ LENGTH: retorna la cantidad de caracteres de un texto - LENGTH(<texto>)
❏ SUBSTR: retorna una parte de un texto - SUBSTR(<texto>, <punto_de_inicio>, <cantidad>)
❏ COALESCE: retorna el primer valor no vacío de una lista - COALESCE(..., …)
❏ LISTAGG: agrega textos de columnas en un único texto -
LISTAGG(<nombre_columna>, <delimitador>) WITHIN GROUP (ORDER BY <nombre_columna>)
[Link]
SELECT
FUNCIONES DE SQL - Numbers

❏ ROUND: redondea un número flotante - ROUND(<valor>, <cantidad_decimales>)


❏ CEILING: toma el primer número entero superior a partir de un número flotante
- CEILING(<expresion>)
❏ FLOOR: toma el primer número entero inferior a partir de un número flotante
- FLOOR(<expresion>)
[Link]
SELECT
FUNCIONES DE SQL - DateTime

❏ NOW / CURRENT_TIMESTAMP: retorna el timestamp corriente - now() /


CURRENT_TIMESTAMP()
❏ DATEADD: agrega a la fecha el intervalo definido - dateadd(<column>, INTERVAL x
<date_type>) / dateadd(<date_type>, <interval>, <column>)
❏ DATEDIFF: retorna el intervalo de diferencia entre dos fechas - datediff(<datetime>,
<datetime>) / datediff(<date_type>, <column>, <column>)
[Link]
SELECT
FUNCIONES DE SQL - DateTime
❏ EXTRACT: SQL extract proporciona acceso a los componentes de los tipos de
datos temporales, es decir, fecha, hora, marca de tiempo e intervalo.

Significado Campo
EXTRACT (<campo> FROM <expresion>)
Año YEAR

Mes MONTH

EXTRACT (YEAR FROM fecha_nacimiento) Día del mes DAY

Hora HOUR

Minutos MINUTE

Segundos SECOND
[Link]

Hora de la zona horaria TIMEZONE_HOUR

Minutos de la zona horaria TIMEZONE_MINUTE


SELECT
FUNCIONES DE SQL - DateTime
❏ DATE_TRUNC: es una función que se usa para redondear o truncar una marca
de tiempo al intervalo que necesita. Cuando se usa para agregar datos, le
permite encontrar tendencias basadas en el tiempo, como compras diarias o
mensajes por segundo.
Intervalo

DATE_TRUNC (<intervalo>, <expresion>) milenium day

century hour

decade minute
DATE_TRUNC (‘day’, fecha_nacimiento)
year second

quarter millisecond
[Link]

month microsendond

week
SELECT
FUNCIONES DE SQL - Data type
❏ CAST: la función convierte un valor (de cualquier tipo) en un tipo de datos
especificado

CAST (<expresion> AS <tipo_de_dato>)

CAST (nro_emp AS NVARCHAR(25))


[Link]
SELECT
SQL execution order
[Link]
[Link]

También podría gustarte