Curso Práctico de SQL

Curso Práctico de SQL

Israel Vázquez Morales

Israel Vázquez Morales

Qué es una proyección (SELECT)

4/29
Recursos

Aportes 33

Preguntas 12

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Proyección significa elegir QUE columnas (o expresiones) la consulta debe retornar.
Selección significa CUALES SON las columnas retornadas.

Supongamos la siguiente consulta:  

select *Columna1, Columna2, Columna3* from *table_1* where ***n=3***;

La proyección sería: Columna1, Columna2 y Columna3 y la parte de Selección es n*=3,* debido a esto es que denominamos a la clausula SELECT como la proyección y los filtros aplicados en la clausula WHERE como Selección.

La Consulta más Básica sería

SELECT * FROM Tabla1;

El astrisco (*) es un comodín que indica que queremos traer una proyección completa (Todos los campos o columnas existentes en la tabla)

Alias

Un alias (..AS…), es otra forma de llamar a una tabla o a una columna, y se utiliza para simplificar las sentencias SQL cuando los nombres de tablas o columnas son largos o complicados.

SELECT Columna1 AS Alias1 FROM Tabla1; (Para referirnos a la Columna1, podremos denominarla como Alias1)


.

Funciones de agregación

Las funciones de agregación en SQL nos permiten efectuar operaciones sobre un conjunto de resultados, pero devolviendo un único valor agregado para todos ellos.
Es decir, nos permiten obtener medias, máximos, etc… sobre un conjunto de valores.

Las funciones de agregación básicas que soportan todos los gestores de datos son las siguientes:

  • COUNT: devuelve el número total de filas seleccionadas por la consulta, como particularidad se puede usar COUNT()* donde contará todos los registros de la tabla incluyendo nulos.
  • MIN: devuelve el valor mínimo del campo que especifiquemos.
  • MAX: devuelve el valor máximo del campo que especifiquemos.
  • SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
  • AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
    .

Función IF()

Función que evalúa una sola expresión y retorna lo que se le especifica en el caso que sea Verdadera o Falsa

IF (expresion, resultado_true, resultado_else)

Función CASE()

Sirve para evaluar una lista de condiciones y retornar uno o múltiples posibles resultados.

Comienza con la sentencia CASE, luego evalua expresiones comenzando con WHEN y en caso que sea verdadera, devolverá el resultado especificado para esa condición luego del THEN
.
La sentencia ELSE es opcional y devolverá este valor en caso que todas las condiciones WHEN anteriores sean Falsas.

Si todas las condiciones son falsas, y no existe la clausula ELSE, se devolverá NULL.

CASE 
   WHEN eval_1 THEN resultado_1
   WHEN eval_2 THEN resultado_2
      ...
   WHEN value_n THEN resultado_n
   ELSE resultado
END AS ValorResultado;

Pueden ir probando algunos comandos con el script que ya tenemos. Aquí les dejo mi ejemplo. 😄

Que bien explicado. Aunque faltó la explicación de la función DISTINCT que sirve para dar valóres únicos y que no se repitan nada más porque sí.

Peque resumen: 😉

Puedes asignar alias con “AS” (Muy potente)

COUNT() Cuenta el número de elementos que existen en todas las tuplas de la base de datos

SUM() Toma la columna que le digas y suma sus valores de forma consecutiva

AVE() (De AVErage) Saca el valor promerdio de toda la columna

Al igual que otros lenguajes puedes hacer “IF” con un montón de posibilidades.

Todos los registros

SELECT *
  FROM PRUEBAS.ALUMNOS;

Alias

SELECT nombre as "name",
	   apellido as "last name"
  FROM PRUEBAS.ALUMNOS;

Conteo

SELECT COUNT(id)
  FROM PRUEBAS.ALUMNOS;

Sumatoria

SELECT SUM(colegiatura)
  FROM PRUEBAS.ALUMNOS;

Promedio

SELECT AVG(colegiatura)
  FROM PRUEBAS.ALUMNOS;

Minimo

SELECT MIN(colegiatura)
  FROM PRUEBAS.ALUMNOS;

Maximo

SELECT MAX(colegiatura)
  FROM PRUEBAS.ALUMNOS;

Case

SELECT nombre,
	   apellido,
	   colegiatura,
  CASE
  	WHEN (colegiatura > 4000) THEN 'Mayor a 4000'
  	WHEN (colegiatura = 2000) THEN 'Igual a 2000'
  	ELSE 'Mayor a 2000 y menor que 4000'
  END costo
FROM pruebas.alumnos;

Mis notas personales sobre SELECT:

Dice curso practico y nada de ejemplo en SQL solo pantallas y con bases de datos imaginarias.

Sufrí con este profesos en el curso básico y ahora empezamos mal con clases largas que a velocidad 2x incluso se hacen eternas.

Aparte de las licencias, cual es la diferencia aplicable en el dia a dia entre PostreSQL y SQL server?

Las funciones de agregación básicas que soportan todos los gestores de datos son las siguientes:

COUNT: devuelve el número total de filas seleccionadas por la consulta, como particularidad se puede usar COUNT()* donde contará todos los registros de la tabla incluyendo nulos.
MIN: devuelve el valor mínimo del campo que especifiquemos.
MAX: devuelve el valor máximo del campo que especifiquemos.
SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.

RECUERDA: se debe usar al final el GROUP BY para que tenga validez y sentido el query a implementar

se puede probar todo lo que menciona el profesor con los archivos que se descargo antes, sin embargo aun se me complica usar la funcion if, si alguien màs experimentado llega a realizar un ejemplo con esa función me gustaría que lo compartiera como es que lo llego a usar. Acá les dejo una muestra de lo que probé.

Una proyección es elegir las columnas o expresiones que la consulta debe retornar. Con SELECT indicas cuáles son en SQL.

SELECT *; 

La anterior expresión es un select all. Quiere decir que estás selecciondo toda tu base de datos. Algunas formas de usar SELECT son:

SELECT field AS alias;
SELECT COUNT(id), SUM(quantity), AVG(age);
SELECT MIN(date), MAX(quantity);

Y también podemos usar condicionales para hacer filtros.

SELECT IF(500 < 1000, 'YES', 'NOPE');

SELECT OrderID, Quantity,
CASE 
	WHEN Quantity > 30 THEN 'Over 30'
	WHEN Quantity = 30 THEN 'Equal 30'
	ELSE 'Under 30'
END AS QuantityText

para los que usan SQL Server

el Alias es con AS, pero igual puedes dejar un espacio y asignarle un nombre la diferencia es, que tan estricto es el lenguaje.
EX
SELECT file AS Alias; o SELECT file Alias.

si usas un alias con espacios, asegurate de ponerlo entre []
el AVE() es AVG()
SUM() es igual asi como COUNT(), MAX(),MIN()

si estas operando con una columno con nulos puedes usar ISNULL(<Columna Referencia>,<ValorDado>)

ex
ISNULL(Descuento,0)

💡Agrega un formato tus consultas SQL en 2 simples pasos

.
pgAdmin permite formatear tus consultas SQL de forma rápida de la siguiente manera permitiéndote visualizar un formato más agradable para tus consultas y evitarte estar cambiando de minúsculas a mayúsculas todo el tiempo, un simple clic y todo arreglado.
.

.

✅ Ejercicios Prácticos realizados

-- Obtener todos los registros de la tabla carreras
SELECT *
FROM PLATZI.CARRERAS;

-- Cuenta el total de registros que tiene la columna carreras
SELECT COUNT(CARRERAS) AS "Total Number of Records"
FROM PLATZI.CARRERAS;

-- Suma todos los indeitficadores y retorna una columna llamada Sum of identifiers
SELECT SUM(ID) AS "Sum of identifiers"
FROM PLATZI.CARRERAS;

-- Obten el rpomedio de la columna Id
SELECT AVG(ID) AS "Average ID"
FROM PLATZI.CARRERAS;

-- Obten del valor minimo de la columna id
SELECT MIN(ID) AS "Lower ID"
FROM PLATZI.CARRERAS;

-- Obten del valor maximo de la columna fecha_alta
SELECT MAX(FECHA_ALTA) AS "Maximum Date"
FROM PLATZI.CARRERAS;

Se puede ir practicando mucho con ideas sencillas como esta, Aquí un ejemplo:

SELECT nombre, colegiatura,
CASE
	WHEN colegiatura > 3000 THEN 'Alto'
	WHEN colegiatura <= 3000 THEN 'Bajo'
END AS Precio
FROM platzi.alumnos

![]()

Proyección (SELECT)

  • Se le llama así porque toma la información de la base de datos y la proyecta en una manera más visual
  • Se pueden utilizar alias y agregaciones
  • También estructuras de control como IF y CASE

Aquí un pequeño aporte usando CASE:

<SELECT nombre, apellido, fecha_incorporacion,
CASE
	WHEN fecha_incorporacion >= '2020-01-01' then 'NUEVO'
	ELSE 'ANTIGUO'
END AS ANTIGUEDAD
FROM platzi.alumnos> 

estructuras de control

Les dejo mi aporte xD

Ejemplo de case :

–Clase de —> Case

Select carrera_id ,
CASE
when carrera_id = 30 then 'medio’
when carrera_id > 31 then 'caro’
when carrera_id < 29 then 'barato’
else 'barato’
end as precios
from platzi.alumnos ;

Ejemplo de operaciones matematicas :

Select
sum (carrera_id) as carrera,
avg (tutor_id) as tutor,
count (nombre) as nombre
from platzi.alumnos

Notas 😄

Qué es una proyección (SELECT)

  • La proyección es el equivalente a SELECT de SQL. Nos ayuda a seleccionar que queremos que se muestre en términos de columnas 🥸

  • El mas sencillo es SELECT *; que está seleccionando todo. Pero se puede ir haciendo mas complejo:

    # Selecciona una columna y la renombra
    SELECT field AS alias FROM tabla;
    
    # Podemos aplicar funciones a columnas y seleccionarlas
    SELECT COUNT(id), SUM(quantity), AVG(age) FROM tabla;
    
    # Seleccionar minimo y máximo
    SELECT MIN(date), MAX(quantity) FROM tabla;
    
  • Unos cuantos ejemplos:

# Condicionales dentro de SQL - Condición, if, else
SELECT IF(500<1000, "YES" ,"NO") FROM tabla;

# Si tienes mas optiones, puedes usar un CASE
SELECT OrderID, Quantity,
CASE
	WHEN Quantity > 30 THEN "Over 30"
	WHEN Quantity = 30 THEN "Equal 30"
	ELSE "Under 30"
END AS QuantityText
FROM tabla;
# Este ejemplo tiene las columnas OrderID, Quantity, QuantityText

Estoy amando este curso. Yo lo haré desde mysql

Excelentes ejemplos y aplicabilidad

Mi aporte:

SELECT CONCAT_WS(" ", nombre, apellido) AS 'Nombre Completo', email,
CASE 
WHEN colegiatura = 2000 THEN 'Barato'
WHEN colegiatura BETWEEN 3000 AND 4500 THEN 'Precio Promedio'
ELSE 'Caro'
END AS 'Pago Mensual'
FROM alumnos;

Resultado:

muy buena explicacion

Mi query para ver si tiene beca o el estudiante.

SELECT colegiatura,
CASE 
    WHEN (colegiatura < 3000) THEN 'BECA' 
    WHEN (colegiatura > 3000) THEN 'SIN BECA' 
    ELSE 'MUCHA BECA'
END BecaInfo
FROM platzi.alumnos;

desde el curso de Postgresql no tuvimos que usar un schema, siempre nos ibamos por el public, y por ello al momento de hacer SELECT nunca lo teniamos que especificar.

Ahora que estamos sobre otro schema, necesariamente tenemos que poner el nombre del schema y la tabla para correr un query. Si quieres correr los queries sin tener que poner el schema, pueden correr lo siguiente:

set search_path to platzi;

PERO ANTES, noten que el valor de search_path es <"$user", public>. Esto lo hacen con el comando:

SHOW search_path;

Tomenlo como referencia. Hasta el momento me funcionó pero ignoro si esto cause algún problema en el futuro. Solo se aplica en el schema donde estemos.

SELECT

SELECT se encarga de proyectar o mostrar datos.

  • El nombre de las columnas o campos que estamos consultando puede ser cambiado utilizando AS después del nombre del campo y poniendo el nuevo que queremos tener:
SELECT titulo AS encabezado
FROM posts;
  • Existe una función de SELECT para poder contar la cantidad de registros. Esa información (un número) será el resultado del query:
SELECT COUNT(*)
FROM posts;

Aparte de la función COUNT, podemos encontrar las siguientes funciones de agregado:

  • AVG Calcula el promedio
  • COUNT Cuenta los registros de un campo
  • SUM Suma los valores de un campo
  • MAX Devuelve el maximo de un campo
  • MIN Devuelve el mínimo de un campo

count = contar
sum = sumar
avg = promedio

Ejemplos de SELECT

COMANDOS:

- SELECT *; Selecciona todas las columnas (atributos) que tiene la tabla
- SELECT  field  AS  alias; Puedes renombrar una columna para hacerla más identificable.

1. OPERACIONES MATEMATICAS:

- SELECT COUNT (id); Cuenta el número de elementos (instancias) que existen
- SELECT SUM (quantity); Suma los elementos (instancias) de la columna indicada
- SELECT AVG (age); Promedio de los elementos (instancias) de la columna indicada
- SELECT MIN (date); Toma el valor mínimo de acuerdo a los elementos que se selecciones con el comando GROUP BY
- SELECT MAX (quantity); Toma el valor máximo de acuerdo a los elementos que se selecciones con el comando GROUP BY

2. ESTRUCTURAS DE CONTROL:

- SELECT IF (500<100,"YES","NO")
- SELECT OrderID, Quantity,

CASE
WHEN Quantity > 30 THEN "Over 30"
WHEN Quantity = 30 THEN "Equal 30"
ELSE "Under 30"
END AS QuantityText

Genial lo de las condicionales