No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso Práctico de SQL

Curso Práctico de SQL

Israel Vázquez Morales

Israel Vázquez Morales

El primero

10/29
Recursos

Aportes 526

Preguntas 34

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Estas fueron todas las que se me ocurrieron. Y eso que antes le tenía un mieeedo a SQL. Ahora lo veo tan simple y hermoso

SELECT *
FROM platzi.alumnos AS alumnos
FETCH FIRST 5 ROWS ONLY;

SELECT *
FROM platzi.alumnos
LIMIT 5;

SELECT *
FROM (
	SELECT ROW_NUMBER () OVER() AS row_id, *
	FROM platzi.alumnos
 )AS alumnos_with_row_nums
 WHERE row_id < 6
;

SELECT *
FROM (
	SELECT ROW_NUMBER () OVER() AS row_id, *
	FROM platzi.alumnos
 )AS alumnos_with_row_nums
 WHERE row_id <=5
;

SELECT *
FROM (
	SELECT ROW_NUMBER () OVER() AS row_id, *
	FROM platzi.alumnos
 )AS alumnos_with_row_nums
 WHERE row_id BETWEEN 1 and 5
;

Me parece que complicó DEMASIADO las cosas. Por qué incluir Window Functions en las primeras consultas del curso? No veo la necesidad de complicar tanto ese último query para el tema que se está explicando.

El punto bueno de esto es que lo investigué por otro lado y ya lo tengo claro. Yo lo veo como un reto, pero para alguien con poco conocimiento de SQL se puede enredar y desmotivar un montón.

Resolución del RETO
Primera forma:

Segunda forma:

Tercera forma:

SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

SELECT *
FROM platzi.alumnos
LIMIT 5;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id,*
	FROM platzi.alumnos
	-- row funcion 
) AS alumnos_with_row_num
WHERE row_id <= 5;

Para todas aquellas personas que están usando mysql el * debe estar después de select así:
SELECT *
FROM (
SELECT * , row_number() over() as row_id
FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id = 4
;

imporante separar con la coma para definir la función row_id y finalmente buscarla la 4 columna

Sugerencia: para agregar comentarios utilizar guion guion
-- Comentarios

Ahora_si_se_viene_lo_chido.jpg

Una página para practicar SQL de manera didáctica es: https://mystery.knightlab.com

Extrayendo los primeros 5 registros de la tabla

Usando FETCH

SELECT * FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY;

Usando LIMIT

SELECT * FROM platzi.alumnos LIMIT 5;

Window Function

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_id
FETCH FIRST 5 ROWS ONLY

Buenas noches, este es mi aporte para solucionar el ejercicio.

SELECT * FROM alumnos WHERE id >= 1 and id < 6;

SELECT * FROM alumnos WHERE id between 1 and 5;

SELECT TOP (5) * FROM alumnos ORDER BY id;

SELECT * FROM alumnos ORDER BY id OFFSET 0 ROWS  FETCH NEXT 5 ROWS ONLY;```

limit = top en SQL server

Para conocer las window functions.

Query en MySql

SELECT *
FROM (
	SELECT *, ROW_NUMBER() OVER() AS row_id
    FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id = 1
;

Las formas que use como respuesta al reto

--formas de llamar datos, en este caso los 5 primeros de la tabla

SELECT *
FROM platzi.alumnos
LIMIT 1;

-- aca se utiliza la forma de windows function 
SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id BETWEEN 1 AND 5;
;


SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
LIMIT 5;


SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
FETCH FIRST 5 ROWS ONLY;


SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id <6;


SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id <=5;


SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id IN (1,2,3,4,5);
Reto completado: ![](https://static.platzi.com/media/user_upload/Screenshot%202024-04-17%2012.08.53-eacf1d7f-2c43-412b-bc9e-1a215aba4c34.jpg)

Aggregate functions vs Window functions

reto

SELECT *
FROM platzi.alumnos
FETCH FIRST 20 ROWS ONLY;

SELECT *
FROM platzi.alumnos
LIMIT 30;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS lista_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE lista_id > 99;

Estas son las 12 formas distintas que pude encontrar para darle solución al problema del final de la clase:

SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

SELECT *
FROM platzi.alumnos
LIMIT 5;

SELECT *
FROM platzi.alumnos
WHERE id <= 5;

SELECT *
FROM platzi.alumnos
WHERE id < 6;

SELECT *
FROM platzi.alumnos
WHERE id IN (1,2,3,4,5);

SELECT *
FROM platzi.alumnos
WHERE id BETWEEN 1 AND 5;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id <= 5;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id < 6;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id IN (1,2,3,4,5);

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
FETCH FIRST 5 ROWS ONLY;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id BETWEEN 1 AND 5;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
LIMIT 5;

la clase empieza en el minuto 4:40

1)
SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id BETWEEN 1 AND 5;

2)
SELECT *
FROM platzi.alumnos
LIMIT 5;

3)
SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

En mi concepto entre menos código se escriba para encontrar lo que buscamos es mucho mejor. De todas las maneras la mas facil para usarla en muchas situaciones es el BETWEEN.

Resolución del primer reto

SELECT *
FROM platzi.alumnos		
WHERE id < 6;
--------------------------
SELECT *
FROM platzi.alumnos		
LIMIT 5;
--------------------------
SELECT *
FROM platzi.alumnos		
FETCH FIRST 5 ROW ONLY;
--------------------------
SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id BETWEEN 1 and 5;

Primer reto.

SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

SELECT *
FROM platzi.alumnos
LIMIT 5;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
)AS alumnos_whith_row_num
WHERE row_id < 6;

SELECT *
FROM platzi.alumnos
WHERE id <= 5;

SELECT *
FROM platzi.alumnos
WHERE id BETWEEN 1 AND 5;

#RETO DE LA CLASE: Los primeeros 5 registros usando todos los meetodos
1.
SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

SELECT *
FROM platzi. alumnos
LIMIT 5

SELECT *
FROM (
SELECT ROW_NUMBER() OVER() AS row_id, *
FROM platzi.alumnos
) AS alumnos_rows
WHERE row_id<=5
;

Mis respuestas al RETO

Primeros 5 registros de la tabla usando fetch,limit y window function:

select * from platzi.alumnos
limit 5;
-------
select * from platzi.alumnos
fetch first 5 rows only
----
select * from(
	select row_number() over() as row_id, *
	from platzi.alumnos
) as alumnos_with_row_num
where row_id in (1,2,3,4,5)

Me propuse hacer un reto algo distinto y usando las FUNCIONES VENTANAS para poder entenderlas:

  1. OVER()
  2. PARTITION BY()
    La consulta que pensé y logré ejecutar fue contar el total de estudiantes que pagan cierto precio de COLEGIATURA POR EJEMPLO si quisieramos saber cuantos ESTUDIANTES pagan 5000 en su colegiatura el resultado sería igual a 125 estudiantes en total que pagan 5000 en su colegiatura, Aqui comparto el código SQL del query anterior espero les sirva de algo salu2! :

Traer el primer registro de una tabla

  • FETCH FIRST 1 ROWS ONLY;
  • LIMIT 1;
  • Con una subtabla que utiliza una Window Function
/// RETO ///
OPCION 1: FETCH

SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;
OPCION 2: LIMIT

SELECT *
FROM platzi.alumnos
LIMIT 5;
OPCION 3: WINDOW FUNCTION

SELECT * 
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
	) AS platzi_row_numbers
WHERE row_id <= 5

Me encantó y voy a seguir metiéndole a SQL.

El primer ejercicio lo hice de la forma más sencilla y veloz que se me ocurrió:

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) 
AS alumnos_with_row_number LIMIT 10;

Opción 1

SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

Opción 2

SELECT *
FROM platzi.alumnos
LIMIT 5;

Opción 3

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
LIMIT 5;

Se me hizo muy interesante lo de ventanas, hasta ahora no lo había entendido muy bien en la uni.

SELECT *
FROM platzi.alumnos
LIMIT 5;

SELECT *
FROM platzi.alumnos
FETCH FIRST 6 ROWS ONLY;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() as row_id, *
	FROM platzi.alumnos
) AS alumnos_con_numero_fila 
WHERE row_id BETWEEN 1 AND 5;
SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id BETWEEN 1 AND 5;

SELECT *
FROM platzi.alumnos
LIMIT 5;

SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;```
SELECT * 
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

SELECT * 
FROM platzi.alumnos
LIMIT 5;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id <= 5;```
select * from platzi.alumnos a 
fetch first 5 rows only

select * from platzi.alumnos a 
limit 5

select * 
from (
	select row_number() over() as row_id, *
	from platzi.alumnos a 
) as alumnos_with_row_num
where row_id < 6
SELECT *
FROM platzi.alumnos
LIMIT 5;

SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id BETWEEN 1
	AND 5;```
![](https://static.platzi.com/media/user_upload/image-75f2c426-0e38-4226-a2c8-57431541ba1e.jpg)
Reto select \* from platzi.alumnos where id between '1' and '5'; select \* from platzi.alumnos fetch first 5 rows only; select \* from platzi.alumnos limit 5; select \* from platzi.alumnos where id <6; select \* from ( select row\_number() over() as row\_id, \* from platzi.alumnos ) as Alumnos\_con\_numero\_flecha where row\_id between '1' and '5'; select \* from ( select row\_number() over() as row\_id, \* from platzi.alumnos ) as Alumnos\_con\_numero\_flecha where row\_id in (1,2,3,4,5);
Comparto el ejercicio realizado: ![](https://static.platzi.com/media/user_upload/image-56728fb1-90e9-4ca4-900a-201c2930694c.jpg) ![](https://static.platzi.com/media/user_upload/image-066daacd-330a-4351-9f87-b48092901a30.jpg)
```txt SELECT * FROM platzi.alumnos LIMIT 5; SELECT * FROM ( SELECT ROW_NUMBER() OVER() as row_id, * FROM platzi.alumnos ) AS alumnos_with_row_num WHERE row_id <= 5; ```SELECT \* FROM platzi.alumnos LIMIT 5; SELECT \* FROM ( SELECT ROW\_NUMBER() OVER() as row\_id, \* FROM platzi.alumnos ) AS alumnos\_with\_row\_num WHERE row\_id <= 5;
Uso la rapida ```ts SELECT * FROM platzi.alumnos where id = 1; ```SELECT \* FROM platzi.alumnos where id = 1;
```js SELECT * FROM ( SELECT ROW_NUMBER () OVER () AS row_id, * FROM platzi.alumnos ) AS alumnos_with_row_num WHERE row_id <= 5 ; SELECT * FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY; SELECT * FROM platzi.alumnos LIMIT 5 ; SELECT * FROM ( SELECT ROW_NUMBER () OVER () AS row_id, * FROM platzi.alumnos ) AS alumnos_with_row_num WHERE row_id BETWEEN 1 AND 5 SELECT * FROM platzi.alumnos WHERE id <= 5 ; SELECT * FROM platzi.alumnos WHERE id IN ('1', '2', '3', '4', '5') ```
Qué diferencia habría de poner en el Query lo siguiente Fetch first 1 o Limit 1
Hasta ahora estoy iniciando este curso, aprendiendo SQL SELECT \* FROM platzi.alumnos WHERE id <= 5 Este ☝️ es otra manera
Estas fueron las que realice: 1.- con LIMIT ```js SELECT * FROM platzi.alumnos LIMIT 5 ```2.- Con FETCH: ```js SELECT * FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY; ```3.- Con una sub-consulta: ```js SELECT * FROM ( SELECT ROW_NUMBER() OVER() AS fila_id, * FROM platzi.alumnos ) AS alumnos_con_num_fila WHERE fila_id BETWEEN 1 AND 5; ```
\-- CON FETCH SELECT \* FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY; \-- CON LIMIT SELECT \* FROM platzi.alumnos LIMIT 5; \--AGREGANDO EL ROW\_ID SELECT \* FROM ( SELECT ROW\_NUMBER () OVER () AS row\_id, \* FROM platzi.alumnos ) AS alumnos\_with\_row\_num WHERE row\_id BETWEEN 1 AND 5 ;
These are my responses using SSMS and assuming a table called superhero: \--**Using FETCH NEXT** SELECT \* FROM superhero ORDER BY id OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY; \--**Using TOP 5 instead of LIMIT** SELECT TOP 5 \* FROM superhero; \--**Using PARTITION OVER() including ORDER BY** SELECT \* FROM ( SELECT ROW\_NUMBER() OVER(ORDER BY superhero\_name) AS row\_id, \* FROM superhero ) AS alumnos\_with\_row\_num WHERE row\_id >= 1 AND row\_id <= 5;
Para MYSQL WorkBench me funcionó: `SELECT * FROM( ` `SELECT(` ` ROW_NUMBER() OVER(ORDER BY id)) as row_id, id, nombre, apellido, email, colegiatura, fecha_incorporacion, carrera_id, tutor_id` `FROM platzi.alumnos` `) AS alumnos_with_row_num WHERE row_id <= 5;` `SELECT * FROM platzi.alumnos LIMIT 5;` `SELECT *` `FROM (` `SELECT ROW_NUMBER () OVER(ORDER BY id) AS row_id, id, nombre, apellido, email, colegiatura, fecha_incorporacion, carrera_id, tutor_id` `FROM platzi.alumnos` ` )AS alumnos_with_row_nums` ` WHERE row_id BETWEEN 1 and 5` `;` Si alguien me pudiera dar una respuesta mas simplificada para SQL Workbench me vendría super bien.
SELECT \* FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY; SELECT \* FROM ( SELECT ROW\_NUMBER() OVER() AS row\_id, \* FROM platzi.alumnos ) AS alumnos\_with\_row\_num WHERE row\_id between 1 and 5; SELECT \* FROM platzi.alumnos limit 5;
\--Opción peculiar de llamar a las 10 últimas filas--¿Qué forma es la más eficiente para hacer lo siguiente, será esa o existe otra?WITH alumnos\_with\_row\_num AS (    SELECT         ROW\_NUMBER() OVER (ORDER BY ID) AS row\_id,  -- Cambia 'ID' por la columna por la que quieras ordenar        \*    FROM         platzi.alumnos),total\_count AS (    SELECT COUNT(\*) AS total FROM platzi.alumnos  -- Cuenta el total de filas)SELECT \*FROM alumnos\_with\_row\_num, total\_countWHERE row\_id > total - 10  -- Filtra las últimas 10 filasORDER BY row\_id;  -- Opcional: ordena los resultados
Para MYSQL WorkBench me funcionó: `SELECT` `ROW_NUMBER() OVER(ORDER BY id) ` `AS row_id, id, nombre, apellido, email, colegiatura, fecha_incorporacion, carrera_id, tutor_id` `FROM platzi.alumnos ` `AS alumnos_with_row_num;` Debería funcionar el \* para seleccionar todo y evitar poner columna por columna pero aún no descubro cómo, pero para el ejercicio de traer a todos los alumnos con un Row Number eso me sirvió.
```js SELECT * FROM carreras FETCH FIRST 5 ROWS ONLY; SELECT * FROM carreras LIMIT 5; SELECT * FROM ( SELECT ROW_NUMBER() OVER() AS row_id, * FROM alumnos ) AS alumnos_with_row_num WHERE row_id BETWEEN 1 AND 5; ```
Usando LIMIT![](https://static.platzi.com/media/user_upload/image-291fea79-10ca-48d2-a677-2561716d646a.jpg) Usando FETCH ![](https://static.platzi.com/media/user_upload/image-3f77a18b-4a4a-4118-b969-336b0a288d05.jpg) Usando window functions ![](https://static.platzi.com/media/user_upload/image-9e33b67d-0828-4715-b348-96dbf445dbee.jpg)
```java select * from ( select row_number () over() as inicio,* from alumnos a ) where inicio <= 5 SELECT * FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY; SELECT * FROM platzi.alumnos LIMIT 5; ```
```css SELECT * FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY; SELECT * FROM platzi.alumnos LIMIT 5; SELECT * FROM ( SELECT ROW_NUMBER() OVER() AS row_id, * FROM platzi.alumnos ) AS alumnos_with_row_num WHERE row_id <= 5; ```SELECT \* FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY; SELECT \* FROM platzi.alumnos LIMIT 5; SELECT \* FROM ( SELECT ROW\_NUMBER() OVER() AS row\_id, \* FROM platzi.alumnos ) AS alumnos\_with\_row\_num WHERE row\_id <= 5;
```js SELECT * FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY; --Es otra versión del LIMIT SELECT * FROM platzi.alumnos limit 5; SELECT * FROM platzi.alumnos ORDER BY id desc OFFSET (995) --en esta parte quería sacar el 995 de otra forma, pero no pude, -- quería que cuente todos los datos y luego restar 5. pusee 995 porque son 1000 datos limit 5; select * from ( select row_number () over() as id_nuevo, * from platzi.alumnos) as misma_tabla --aquí se le pone un nombre al subselect where id_nuevo < 6; ```
ROW\_NUMBER asigna numeros secuenciales a las filas (1,2,3,4.....n), OVER() se usa para definir cómo se aplicará una función de ventana a un conjunto de filas, y sin algun argumento en over toma el efecto por default. -Ambas son necesarias para poner ROW\_NUMBER = 1 a la misma que tenga id = 1-
`-- Limit` `SELECT *` `FROM PLATZI.ALUMNOS` `LIMIT 5;` `-- Fetch First` `SELECT *` `FROM PLATZI.ALUMNOS` `FETCH FIRST 5 ROW ONLY;` `-- Row_Number` `SELECT * ` `FROM (` ` ``SELECT ROW_NUMBER() OVER() AS FILAS,*` ` ``FROM PLATZI.ALUMNOS` `)` `WHERE FILAS <=5`
\-- Hay muchas formas SELECT \* FROM ( SELECT ROW\_NUMBER() OVER() AS row\_id, \* FROM platzi.alumnos ) AS alumnos\_with\_row\_num where row\_id>=1 and row\_id<=5;
```js SELECT * FROM ( SELECT ROW_NUMBER() OVER() AS ROW_ID, * FROM platzi.alumnos ) AS alumnos_with_row_num WHERE row_id BETWEEN 1 and 5 ```
Nunca vi donde crearon el esquma 'Platzi',
La verdad que siempre x una cosa u otra no puedo terminar los cursos. En este caso no se donde poner los archivos que supuestamente estaban en la instalación pero que entonces no los pude abrir y ahora no accedo a la base Ptatzi, so no pued seguir el curso
Opción 1 : SELECT \* FROM platzi.alumnos LIMIT 5 Opción 2 : SELECT \* FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY Opción 3 : SELECT \* FROM (SELECT ROW\_NUMBER() OVER () AS row\_id, \* FROM platzi.alumnos) AS alumnos\_with\_row\_number WHERE row\_id between 1 and 5
```js --Traer el primer registro SELECT * FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY SELECT * FROM platzi.alumnos LIMIT 5; --Window funtion SELECT * FROM ( SELECT ROW_NUMBER() OVER() AS row_id, * FROM platzi.alumnos )AS alumnos_whit_row_number where row_id <= 5 ```--Traer el primer registro SELECT \* FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY SELECT \* FROM platzi.alumnos LIMIT 5; \--Window funtion SELECT \* FROM ( SELECT ROW\_NUMBER() OVER() AS row\_id, \* FROM platzi.alumnos )AS alumnos\_whit\_row\_number where row\_id <= 5
-- Modo uno
SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

-- Modo dos
SELECT *
FROM platzi.alumnos
LIMIT 5;

-- Modo tres
SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, * 
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id < 6;
Estoy utilizando SQL SERVER `SELECT TOP 5 * FROM pol.tbPolizas` `SELECT top 5 * FROM (` `SELECT ROW_NUMBER() OVER(ORDER BY NoPoliza DESC) AS row_id, * from POL.tbPolizas` `) AS poli` `WHERE row_id = 5`
Comparto 4 formas. `SELECT *` `FROM platzi.alumnos` `FETCH FIRST 5 ROWS ONLY;` `SELECT * ` `FROM platzi.alumnos` `LIMIT 5;` `SELECT * ` `FROM (` ` ``SELECT ROW_NUMBER() OVER() AS row_id, *` ` ``FROM platzi.alumnos ` `)AS`` `` alumnos_with_row_number` `WHERE row_id <= 5;` `SELECT * ` `FROM (` ` ``SELECT ROW_NUMBER() OVER() AS row_id, *` ` ``FROM platzi.alumnos ` `)AS`` `` alumnos_with_row_number` `WHERE row_id between 1 AND 5;`
\-- 1ra Forma -- SELECT \* FROM platzi.alumnos FETCH FIRST 5 ROW ONLY; \-- 2da Forma -- SELECT \* FROM platzi.alumnos LIMIT 5; \-- 3ra Forma -- SELECT \* FROM ( SELECT ROW\_NUMBER() OVER () as row\_id,\* FROM platzi.alumnos ) WHERE row\_id between 1 and 5
![](https://static.platzi.com/media/user_upload/image-787e10e7-5959-4e97-9e23-bdab86bb663b.jpg)
Mi respuesta:![](https://static.platzi.com/media/user_upload/image-60b3a0f1-e1cd-4e87-88ae-41277a3c2604.jpg)
Otra forma, solo para demostrar que hay muchas maneras, como dice el profesor. ```js SELECT * FROM ( SELECT ROW_NUMBER() OVER() AS row_id, * FROM platzi.alumnos ) AS alumnos_with_row_num WHERE row_id IN ( SELECT * FROM generate_series(1, 5) ); ```Usando IN, una subquery y la función generate\_series, que crea rangos.

Estuve volando un poco al inicio porque me distraje en el video 9 y lo volví a reproducir, luego el 10 nuevamente y pude comprender mejor los conceptos. Les dejo mis apuntes y el Reto, SQL es hermoso.

Apuntes:

/**
  * Primer row de la tabla
  */

/*Usando FETCH*/
SELECT *
FROM platzi.alumnos
FETCH FIRST 1 ROWS ONLY;

/*Usando LIMIT*/
SELECT *
FROM platzi.alumnos
LIMIT 1;

/*Con Windows Function*/
SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_num
WHERE row_id = 1;

RETO:

/**RETO
	*Extraer 5 primeros registros con los 3 métodos
*/

/*Con FETCH*/
SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

/*Con LIMIT*/
SELECT *
FROM platzi.alumnos
LIMIT 5;

/*Con Windows Function*/
SELECT *
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
)	AS alumnos_with_row_num
WHERE row_id <6;

/*Con OFFSET y LIMIT*/
SELECT *
FROM (
    SELECT ROW_NUMBER() OVER() AS row_id, *
    FROM platzi.alumnos
) AS alumnos_with_row_num
ORDER BY row_id
OFFSET 0
LIMIT 5;

/*Usando OFFSET y LIMIT con ordenamiento descendente*/
SELECT *
FROM (
    SELECT ROW_NUMBER() OVER() AS row_id, *
    FROM platzi.alumnos
    ORDER BY row_id DESC
) AS alumnos_with_row_num
OFFSET 995
LIMIT 5;
 

Reto terminado

-- With FETCH
SELECT * FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY;

-- With LIMIT
SELECT * FROM platzi.alumnos
LIMIT 5;

-- With window function
SELECT * 
FROM (
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
) AS alumnos_with_row_number
LIMIT 5;
select \* from platzi.alumnos fetch first 5 rows only; select \* from ( select row\_number() over() as id\_columna, \* from platzi.alumnos) as alumnos\_concolumnas limit 5;
SELECT \* FROM ( SELECT ROW\_NUMBER() OVER() AS row\_id, \* FROM platzi.alumnos ) AS alumnos\_ith\_row\_num WHERE row\_id between 0 and 5;

A quienes les interese hacer inserción de datos masivos desde un archivo .sql desde terminal.

psql -U postgres -W -h localhost nombre_base < dump_base.sql
  1. -U Se refiere al Usuario, en nuestro ejemplo usamos el usuario: postgres.
  2. -W Con este parámetro conseguiremos que nos solicite el password del usuario antes especificado.
  3. -h Con este indicamos cuál es el servidor PostgreSQL al que nos conectaremos para importar nuestro dump, si estamos en el mismo servidor podemos colocar localhost, si será un servidor remoto colocaremos la IP.
  4. nombre_base Este es el ultimo parámetro en nuestra linea del comando, el cual hace referencia al nombre de la base de datos a la que importaremos nuestro dump.
  5. < dump_base.sql Indicamos cual es el archivo que contiene el dump de la base y que por tanto queremos importar.

Para listar las tablas dentro del schema platzi hacemos lo siguiente:

pruebas=# \dt platzi.*

# Listar todos los schemas

pruebas=# \dt *.*

Espero les sea de utilidad.

Por medio de los cursores de sql se puede obtener otra solucion

comparto mi codigo con el cursor

--haciendo uso de un cursor
DECLARE @Contador INT = 0; -- Variable contador para controlar el número de filas recorridas

DECLARE CursorFilas CURSOR 
FOR SELECT * FROM platzi.alumnos;

OPEN CursorFilas;

FETCH NEXT FROM CursorFilas

WHILE @@FETCH_STATUS = 0 AND @Contador < 4
BEGIN
    -- Incrementa el contador
    SET @Contador = @Contador + 1;

    -- Obtiene la siguiente fila
    FETCH NEXT FROM CursorFilas
END

CLOSE CursorFilas;
DEALLOCATE CursorFilas;

Dejo mi tarea de la clase

SELECT * 
FROM platzi.alumnos
limit 5;

SELECT *
FROM platzi.alumnos
FETCH first 5 rows only;

SELECT *
FROM (
SELECT ROW_NUMBER () OVER () AS row_id, * FROM platzi.alumnos
) as alumnos_rows
WHERE row_id <6;
```js ``` ````js SELECT * FROM platzi.alumnos FETCH FIRST 5 ROW ONLY SELECT * FROM platzi.alumnos LIMIT 5; SELECT * FROM ( SELECT ROW_NUMBER () OVER() AS row_id, * FROM platzi.alumnos )AS alumnos_with_row_nums WHERE row_id <= 5 ; ```SELECT \* FROM platzi.alumnos FETCH FIRST 5 ROW ONLY SELECT \* FROM platzi.alumnos LIMIT 5; SELECT \* FROM ( SELECT ROW\_NUMBER () OVER() AS row\_id, \* FROM platzi.alumnos )AS alumnos\_with\_row\_nums WHERE row\_id <= 5 ; ````
Primera forma: ![](https://static.platzi.com/media/user_upload/image-a425f70d-93c8-4b05-af95-740eab11119c.jpg) Segunda forma: ![](https://static.platzi.com/media/user_upload/image-c6e34d9a-1410-46a1-86a4-60dfe4bf279d.jpg) Tercera forma: ![](https://static.platzi.com/media/user_upload/image-4e290b0f-cfcd-4825-a333-8cbfd31bcafe.jpg)
Las consultas que realice para la solución del ejercicio. `SELECT * FROM platzi.alumnos` `FETCH FIRST 5 ROW ONLY;` `SELECT * FROM platzi.alumnos` `LIMIT 5;` `SELECT *` `FROM (` ` ``SELECT ROW_NUMBER() OVER() as row_id, * ` ` ``FROM platzi.alumnos` ` ``) as alumnos_with_row_num ` ` ``WHERE row_id BETWEEN 1 AND 5;` ` ` ` ``SELECT *` `FROM (` ` ``SELECT ROW_NUMBER() OVER() as row_id, * ` ` ``FROM platzi.alumnos` ` ``) as alumnos_with_row_num ` ` ``WHERE row_id < 6;` ` ` ` ``SELECT *` `FROM (` ` ``SELECT ROW_NUMBER() OVER() as row_id, * ` ` ``FROM platzi.alumnos` ` ``) as alumnos_with_row_num ` ` ``WHERE row_id = 5;`

las primeras 10 filas de la tabla alumnos, puedes usar la cláusula LIMIT:

SELECT *
FROM platzi.alumnos
LIMIT 10;
SELECT \* FROM (SELECT ROW\_NUMBER () OVER () AS row\_id, \* FROM platzi.alumnos) AS alunmos\_with\_row\_num WHERE row\_id <=5 ;

SELECT *
FROM(
select row_number() over() as row_id,*
from platzi.alumnos
) as alumnos_with_row_num
where row_id in (1,2,3,4,5)

SELECT *
FROM(
select row_number() over() as row_id,*
from platzi.alumnos
) as alumnos_with_row_num
where row_id<=5

Yo hice estos:

select * from platzi.alumnos

fetch first 5 row only ;

select * from platzi.alumnos
as nice where id < 6 ;

SELECT *
FROM (
	SELECT ROW_NUMBER () OVER() AS row_id, *
	FROM platzi.alumnos
 )AS alumnos_with_row_nums
 WHERE row_id BETWEEN 1 and 5
;
Estoy haciendo este curso con MariaDB, la sintaxis cambia un poco, pero esta es la forma en la me funciono el ejercicio: ```css select * from ( select row_number() over() as row_id, a.* from platzi.alumnos as a join ( select row_number() over() as dummy_row_id from platzi.alumnos ) as dummy on 1 = 1 ) as result where row_id = 10; ```
Agregue uno utilizando el id, usando HAVING, GROUP BY y ORDER BY. `SELECT * FROM platzi.alumnos LIMIT 5;` `SELECT * FROM platzi.alumnos FETCH NEXT 5 ROWS ONLY;` `SELECT * FROM (SELECT ROW_NUMBER() OVER() AS NUM, * FROM platzi.alumnos) AS tab WHERE NUM >= 1 AND NUM <= 5;` `SELECT id, nombre, apellido, email FROM platzi.alumnos GROUP BY nombre, apellido, email, id ` `HAVING id > 0 AND id < 6 ORDER BY id;`

Este, en mi opinión, puede ser útil en otras ocasiones, por ejemplo, si tenemos una lista específica que queramos buscar

SELECT *
FROM(
	SELECT ROW_NUMBER() OVER() AS row_id, *
	FROM platzi.alumnos
	) AS alumnos_with_rows_num
WHERE row_id IN (1,2,3,4,5)
;
```js ```
\--5 PRIMEROS SELECT\* FROM PLATZI.alumnos FETCH FIRST 5 ROWS ONLY; SELECT\* FROM PLATZI.alumnos LIMIT 5 SELECT\* FROM( SELECT ROW\_NUMBER() OVER() AS row\_id,\* FROM PLATZI.alumnos ) alumnos\_with\_row\_id WHERE ROW\_ID <=5

Solución al reto

Mi solucion. *SELECT \* FROM platzi.alumnos FETCH FIRST 5 ROWS ONLY;* *SELECT \* FROM platzi.alumnos LIMIT 5;* *SELECT \* FROM (SELECT ROW\_NUMBER() OVER() AS row\_id, \* FROM platzi.alumnos) AS alumnos\_with\_row\_num WHERE row\_id < 6;*
Que buen ejercicio y eso es solo el primero, muchas gracias

Es mi segunda vez tomando este curso. Ahora estoy más que decidida a no dejar esto y que se convierta en mi profesión!

select \* from platzi.alumnos fetch first 5 rows only; select \* from platzi.alumnos limit 5; select \* from ( select row\_number() over() as row\_id, \* from platzi.alumnos ) as alumnos\_with\_row\_num where row\_id between 1 and 5;

// Primera forma con fetch
SELECT *
FROM platzi.alumnos
FETCH FIRST 5 ROWS ONLY ;

//Segunda forma con limit
SELECT *
FROM platzi.alumnos
LIMIT 5 ;

//Tercera forma con subquery
SELECT *
FROM (
SELECT ROW_NUMBER() OVER() AS row_id, *
FROM platzi.alumnos
) AS alumnos_with_rows_num
WHERE row_id <= 5;

Hola comparto mis consultas.
Primer ejercicio

Segundo ejercicio

Tercer ejercicio

Cuarto ejercicio

Una opción más:

Resolucion del reto: