Mis cursos de Programación: hdeleon.net/cursos-premium/ La consulta del video: SELECT D.name as Department, E.name as Employee, E.salary as Salary FROM Employee as E INNER JOIN Department as D on D.id = E.departmentid WHERE E.salary IN (SELECT SWN.salary FROM (SELECT e.salary, ROW_NUMBER() OVER(ORDER BY salary DESC) AS number FROM ( SELECT DISTINCT e2.salary FROM Employee as e2 WHERE e2.departmentid= D.id ) as e WHERE e.departmentid= D.id ) as SWN WHERE SWN.number
Creo que nunca te había comentado Héctor, pero muchas gracias por todo tu contenido, te sigo desde que estaba en la prepa y ya terminé mi carrera este año y empecé a ejercer en mi primer trabajo, gracias por tanto, nunca se termina de aprender !
Excelente, también sería un group by por departamento y salario, posteriormente a ese resultado le haces un rownumber con partition, por departamento, y ya con eso ordenas los 3 primero, y un where solamente coges los 3 de cada país y ya, excelentes videos, el mejor canal 👌
Muy buen video, hallé una manera más sencilla de resolverlo usando DENSE_RANK y PARTITION BY pero basándome en tu solución: SELECT Department, Employee, Salary FROM (SELECT D.name AS Department, E.name AS Employee, E.salary AS Salary, DENSE_RANK() OVER (PARTITION BY D.name ORDER BY E.salary DESC) AS row_num FROM Employee AS E INNER JOIN Department AS D ON E.departmentId = D.id) AS top_3 WHERE top_3.row_num
No es difícil, más bien hay que entender los que nos piden, si se entiende bien lo que se pide seguramente se puede lograr, aún así gracias por el detalle del vídeo
Pensé lo mismo jajaja, pero bueno así también se da visualización a subconsultas un poco más compejas, por si en algún momento trabajan con SnowFlake, o BigQuery y quieran usar una subconsulta para json, o tipos de datos semi estrucrurados, aunque soy fiel defensor de los CTE, esta forma también es buena para que personas que no se dediquen a SQL comos los Data Engineers y los Data Analyst puedan mejorar habilidades
hace tiempo yo tambien hubiera dichoque es es dificl, ya que no conocia mucho sobre sql. ahorita que lo vi la verdad esta facil pero ya por la experiencia. muy bien explicado espero mas videos de sql.
Lo bonito de la programación es que hay distintas formas de hacerlo select D.name as Department,E.name as Employee,T.Salary from ( SELECT distinct departmentid,salary, dense_rank() over (partition by departmentid order by salary desc) as salary_rank from Employee ) as T inner join Department D on D.Id = T.DepartmentID inner join Employee E on E.Salary =T.Salary where salary_rank
Me acuerdo que en una entreviste hace unos años me tomaron exactamente el mismo el problema, nada mas cambiaba el nombre de las tablas, me habian dado 30 min para resolverla, me acuerdo que llegue justo, tambien habia usado el el row_number. Despues tambien me tomaron otra prueba que no pude pasar, habia que usar el group_concat que para ese entonces no tenia idea que era jajaj
Hola Hector! Una duda, ¿por qué no usaste Row_number() over(partition by id order by e.salary) as number? ¿No es posible en la versión de MySQL? También me gustaría preguntarte porque no usaste WITH, ¿es más recomendable usar queries anidadas? Gracias!
Row_number() siempre te va a generar un número distinto por cada fila, aunque los valores se repitan. En este caso, para IT, hay 2 filas con valores iguales (85.000). Si usas Row_number(), el primer 85.000 tendría la posición 2 y el segundo la posición 3, por lo que no te serviría para calcular el top 3 (el tercer valor más alto para IT no repetido (70.000) quedaría fuera del TOP) En TSQL sí que se podría hacer como comentas, sólo que con Dense_rank() en lugar de Row_number(), y la query quedaría mucho más simplificada. Por otro lado, tengo entendido que por cuestiones de uso de memoria, es más recomendable usar subconsultas en lugar de CTEs (WITH)
Yo digo que para resolver ese tipo de problemas y hacer ese tipo de consultas se necesita muucha imaginación y orden de ideas, cosa que no que no tengo
Excelente contenido, tienes un curso donde enseñes SQL hasta nivel avanzado? Solo uso Sequalize y la verdad es que hay cosas que requieren meterle código SQL en algunas peticiones
Excelente video. En lo personal nunca me e sentido comodo trabajando con alias en las tablas. Llevo 7 años trabajando con una base de datos donde las tablas llevan la nomeclatura mnt01, mnt02, mnt03... entre otras y tarde mucho en identificarlas como para todabía cambiarles el nombre xD
Ahora como le pidieron a un conocido en una prueba técnica de una empresa local. Debes hacer el análisis de rendimiento con Notación big O de la consulta final. 👹
Seria posible crear el SQL query, usando puro JOIN, en lugar de usar IN ? He leido que usando JOINS, el performance de la consulta mejora muchisimo, especialmente si son miles de registros como usualmente pasa.
Seria de verificar, porque en la especificación sql anterior no estaba la sentencia JOIN y se hacia con el where (+) y el IN para los motores son al final varios WHERE AND pero mas legible (corríjanme si estoy mal)
Si, es posible resolverlo solo con Joins pero te vas a complicar la vida porque para ese problema en particular tendrias que usar dos inner joins y un left join. Es mucho mas simple con subconsultas, ahora si lo que te preocupa es el performance puedes aplicar common table expressions (cte) para encapsular fragmentos de codigo y luego reutilizarlo. No depende tanto de si se resuelve con joins o subqueries
Mis cursos de Programación: hdeleon.net/cursos-premium/
La consulta del video:
SELECT D.name as Department, E.name as Employee, E.salary as Salary
FROM Employee as E
INNER JOIN Department as D on D.id = E.departmentid
WHERE E.salary IN
(SELECT SWN.salary
FROM
(SELECT e.salary,
ROW_NUMBER() OVER(ORDER BY salary DESC) AS number
FROM (
SELECT DISTINCT e2.salary
FROM Employee as e2
WHERE e2.departmentid= D.id
) as e
WHERE e.departmentid= D.id
) as SWN
WHERE SWN.number
Sí, más vídeos de SQL avanzado, por favor!!! 🔥🤘🏻
Excelente idea esta de resolver esos casos más complejos, voto por que sigas con más ejemplos👏👏👏
se aprende mas xD q en cursos de 1 hora
Este tipo de contenidos deberían tener mucha más difusión sin duda, muchas gracias por tu esfuerzo !
Creo que nunca te había comentado Héctor, pero muchas gracias por todo tu contenido, te sigo desde que estaba en la prepa y ya terminé mi carrera este año y empecé a ejercer en mi primer trabajo, gracias por tanto, nunca se termina de aprender !
Excelente, también sería un group by por departamento y salario, posteriormente a ese resultado le haces un rownumber con partition, por departamento, y ya con eso ordenas los 3 primero, y un where solamente coges los 3 de cada país y ya, excelentes videos, el mejor canal 👌
Muy buen video, hallé una manera más sencilla de resolverlo usando DENSE_RANK y PARTITION BY pero basándome en tu solución:
SELECT Department, Employee, Salary
FROM
(SELECT D.name AS Department, E.name AS Employee, E.salary AS Salary,
DENSE_RANK() OVER (PARTITION BY D.name ORDER BY E.salary DESC) AS row_num
FROM Employee AS E
INNER JOIN Department AS D ON E.departmentId = D.id) AS top_3
WHERE top_3.row_num
No es difícil, más bien hay que entender los que nos piden, si se entiende bien lo que se pide seguramente se puede lograr, aún así gracias por el detalle del vídeo
Que buen vídeo, quedaría mucho mas limpio utilizando "With" para identificar fácilmente las tablas de las subconsultas
Pensé lo mismo jajaja, pero bueno así también se da visualización a subconsultas un poco más compejas, por si en algún momento trabajan con SnowFlake, o BigQuery y quieran usar una subconsulta para json, o tipos de datos semi estrucrurados, aunque soy fiel defensor de los CTE, esta forma también es buena para que personas que no se dediquen a SQL comos los Data Engineers y los Data Analyst puedan mejorar habilidades
hace tiempo yo tambien hubiera dichoque es es dificl, ya que no conocia mucho sobre sql. ahorita que lo vi la verdad esta facil pero ya por la experiencia. muy bien explicado espero mas videos de sql.
Gracias por el video, por favor sigue subiendo más videos sobre SQL.
Aún no veo el video y tengo la adrenalina como si fuera ver un estreno en el cine
gracias por el tutorial amigo, mi mente exploto con todo lo que se puede hacer dentro de sql
Si, mas videos de SQL avanzado :) Chingon Hector, gracias.
de verdad que en ese ejercicio me hiciste recordar medio ciclo de curso
No la hubiera podido resolver, ya aprendí mucho!!!! Gracias x el gran contenido!!!
Wow siempre aprendo más de tus videos. Eres un crack. Muchas gracias por compartir tus conocimientos
Hermano saludos desde Venezuela, Excelente video. Gracias por compartir a la espera de nuevos conocimientos
Sólo vengo a agradecer porque me sirvió
Excelente amigo mas videos dedicados a consultas de menos a más y hasta las consultas mas chingonas!
Gracias cabezón... Más vídeos de SQL difícil...😊
Primera vez que te veo, muchas gracias, lo explicas muy bien.
Que buen video!
Sólo me quedó una duda: como quedaría la consulta si pudieramos utilizar la instrucción TOP/LIMIT ?
Haz mas videos así, fue una buena prueba y la solución aún más
Buenas , excelente video, no defraudas, por mas videos como este. saludos
Excelente video como siempre explicaciones claras mas videos de este tipo hay pocos en youtube sobre todo en espanol
Si mas videos asi hector por favor😅
Recien lo veo,muy buen video,te lleva paso a paso
Excelente video, sigue subiendo ejercicios complejos de SQL por favor.
Gracias por compartir Amigo Metalero 👍👍
mas videos de medio y anvanzado muchas gracias capo nuevo Subs ... !!
Excelente, estaría bien que hicieras más videos de estos
Sos demasiado pro bro!! saludos desde Argentina
Muy buena forma de explicar y estas pruebas tecnicas esta geniales.
Excelente, algunos mas por favor.
Queremos másssss
buen video, si se necesitas mas videos de sql avanzado
Muy bueno !
Muy bueno! mas videos porfavor
💪 excelente video lo tendré que ver otra vez 😅 , si más videos así de sql , súper bueno
te sigo desde Managua, Nicaragua
Excelente aporte Hector saludos🖥💡
excelente, muchas gracias
Excelente video y explicación, ¿puedes hacer una prueba técnica con tablas temporales ?
Gracias por compartir tu conocimiento profe
Sigue subiendo videos de este tipo.
estan buenos sigue sacando videos de sql dificil
Más videos!!!
Excelente video, cabezón. Gracias
Voy empezando en SQL y siento que si tuviera ese nivel de conocimiento ya podria hacer telequinesis jajaja
Que buen video pana, gracias por compartir tu conocimiento. 👍🏼
Gracias por compartir esa página, será que hay alguna similar para practicar C#?
gracias, muy interesante!
Muy buen video amigo , saludos.
porfa un video de como elevar el nivel de SQL incluso podrias hacer un cursoen udemy
Lo bonito de la programación es que hay distintas formas de hacerlo select D.name as Department,E.name as Employee,T.Salary from (
SELECT distinct departmentid,salary, dense_rank() over (partition by departmentid order by salary desc) as salary_rank from Employee
) as T
inner join Department D on D.Id = T.DepartmentID
inner join Employee E on E.Salary =T.Salary
where salary_rank
Buen video, estaria bueno mas de este tipo.
Pa cuando un cursito de microservicio con .NET? Saludos rey!!!
excelente vídeo, realmente se necesitan contenido como este. me gustaría saber si existen páginas como estas pero con postgresql.
¡Más videos de SQL! 🤘
Me acuerdo que en una entreviste hace unos años me tomaron exactamente el mismo el problema, nada mas cambiaba el nombre de las tablas, me habian dado 30 min para resolverla, me acuerdo que llegue justo, tambien habia usado el el row_number.
Despues tambien me tomaron otra prueba que no pude pasar, habia que usar el group_concat que para ese entonces no tenia idea que era jajaj
era para jr,semi sr o senior?
@@fernandoxd4601 seguro semi o sr
Muchas gracias, aprendí bastante :D
Un crack de verdad!!!
Son necesarios ambos WHEREs? Me da la sensación de que con el de la subquery más interna basta, no?
Buen video Rapunzel
Excelente contenido
SQL Avanzado !, please !!!
Saludos HectorDLeon, Me puedes saludar en tu proximo subida de video
Videazo crack!
Brutal. 👀😲
Hola Hector! Una duda, ¿por qué no usaste Row_number() over(partition by id order by e.salary) as number? ¿No es posible en la versión de MySQL?
También me gustaría preguntarte porque no usaste WITH, ¿es más recomendable usar queries anidadas?
Gracias!
Row_number() siempre te va a generar un número distinto por cada fila, aunque los valores se repitan.
En este caso, para IT, hay 2 filas con valores iguales (85.000). Si usas Row_number(), el primer 85.000 tendría la posición 2 y el segundo la posición 3, por lo que no te serviría para calcular el top 3 (el tercer valor más alto para IT no repetido (70.000) quedaría fuera del TOP)
En TSQL sí que se podría hacer como comentas, sólo que con Dense_rank() en lugar de Row_number(), y la query quedaría mucho más simplificada.
Por otro lado, tengo entendido que por cuestiones de uso de memoria, es más recomendable usar subconsultas en lugar de CTEs (WITH)
Videos de Store Procedures😊
Excelente contenido bro!, Estuviera genial que crearas un curso de SQL, yo me apunto, Saludos!.
Profe ¿para trabajar en backend es necesario manejar el DCL o solo el DML y el DDL en el SQL?
Puedes compartir el documento de la prueba para practicar? Aún no ví la resolución quiero ver si lo puedo hacer solo. Por favor
Excelente vídeo!!!
WOW, te pasaste.
ME GUSTO
me suscribo
Yo digo que para resolver ese tipo de problemas y hacer ese tipo de consultas se necesita muucha imaginación y orden de ideas, cosa que no que no tengo
Genial
Excelente contenido, tienes un curso donde enseñes SQL hasta nivel avanzado? Solo uso Sequalize y la verdad es que hay cosas que requieren meterle código SQL en algunas peticiones
Con los cursos que tienes en tu canal es posible llegar a ese nivel o tienes alguno de pago ?
curiosamente me vino asi en una prueba tecnica para practicante(trainee) de manera presencial con una base de datos real xD
Excelente video. En lo personal nunca me e sentido comodo trabajando con alias en las tablas. Llevo 7 años trabajando con una base de datos donde las tablas llevan la nomeclatura mnt01, mnt02, mnt03... entre otras y tarde mucho en identificarlas como para todabía cambiarles el nombre xD
Cien mil likes compañero
Más
Seria de gran ayuda puro SQL PRO avanzado
Yo lo hice en Oracle pero me da error cuando coloco el WHERE E.DEPARTMENTE = D.ID.
Ahora como le pidieron a un conocido en una prueba técnica de una empresa local. Debes hacer el análisis de rendimiento con Notación big O de la consulta final. 👹
Sección dedicada a sql tienes?
Crack
No entiendo por qué no se puede usar LIMIT si está disponible desde la versión 5.0 por lo menos...
Yo no puse las reglas.
Seria posible crear el SQL query, usando puro JOIN, en lugar de usar IN ?
He leido que usando JOINS, el performance de la consulta mejora muchisimo, especialmente si son miles de registros como usualmente pasa.
Seria de verificar, porque en la especificación sql anterior no estaba la sentencia JOIN y se hacia con el where (+) y el IN para los motores son al final varios WHERE AND pero mas legible (corríjanme si estoy mal)
Si, es posible resolverlo solo con Joins pero te vas a complicar la vida porque para ese problema en particular tendrias que usar dos inner joins y un left join. Es mucho mas simple con subconsultas, ahora si lo que te preocupa es el performance puedes aplicar common table expressions (cte) para encapsular fragmentos de codigo y luego reutilizarlo. No depende tanto de si se resuelve con joins o subqueries
que crack
Que es un promedio ingeniering.
Se te olvido decir que sampoo es el que te deja brillante el pelo cabezón
Se ocupa un curso sobre SQL avanzado
También se pudo hacer un group by directo desde la primer query que hiciste para poder quitar los salarios repetidos
Un metacho que se baña..... XD
Mentiras aguante el metal de princesas y dragones