0:02El día de hoy vamos a seguir viendo eh un poco sobre estas cláusulas, ¿no? [resoplido] Es en en tema de la sentencia en tranza que se ql, ¿no? Habíamos visto un poco sobre lo que era group y having, ¿no? Bueno, having no habíamos tocado, group más que nada, ¿no? Y también hoy vamos a ver sobre las funciones integradas y vamos a estar ya dando o utilizando algunos ejercicios para poder analizar, ¿no? Y también utilizar lo que estamos aprendiendo, que eso es lo esencial, ¿no? Okay.
0:42Entonces, eh
0:51entonces siguiendo con el dataset que nosotros que teníamos la semana pasada, ¿no? Vamos a ir abriendo. Era este. Ah, no, perdón, usar la base de datos, no se me fue el nombre. era data database test, si no me equivoco ¿no? Select from. Ups. Select.
1:24¿Qué falta? Select from era dataset, si no me equivoco. No, no estaba en esta base de datos. ¿En qué base de datos? Creo dataset minimarket. Domica, ¿no has limpiado el puerto tu hermano?
1:55Ya chicos perdón. Ah, creo que era minimarket. Ahí está. minimarketer. Ya. Eh, ya siguiendo eso, entonces estamos viendo lo que era el group, ¿no? Lo cual habíamos nosotros definido, en pocas palabras eh que que agrupaba casos, ¿no? Tipo, eh, lo que era las tablas dinámicas, lo que hacía era generar resúmenes en base a una o más variables, ¿no? En realidad, eso es lo que podríamos nosotros decir de group, ¿no? Que lo que hace es reunir [resoplido] o resumir, ¿no? Que comparten uno o más valores, ¿no? Valores iguales. ¿Ya?
2:43Entonces, una vez formados los grupos, nosotros podemos realizar cálculos, ¿no? Eh, perdón, calcular resultados agregados como eh habíamos visto la suma, el promedio, incluso podemos también ver el mínimo, el máximo, ¿no? Y nos va a permitir conservar únicamente los grupos que cumplen una condición, ¿de acuerdo? O sea, el having viene después del group. Por eso es que es esencial que ustedes sepan el el nivel de sentencias, ¿no? Nivel de sentencias. Eh, SQL, ¿no?
3:22SQL, ¿no? Por ejemplo, no, estos no. Eh, ¿dónde estaban? Eh, disculpen no lo acá está. Okay, es importante que ustedes sepan esto. Ya, por ejemplo, nosotros ya hemos estado viendo el select, el from hasta cierto momento, ¿no? En cierto ejemplo vimos el join. Luego para filtrar vimos que es después del from y después del where viene el group y después viene having después y como último en ciertos casos viene el order by y ya en otra base de datos como último última cláusula, ¿no? Usamos lo que es el limit, ¿no? El limit es un derivado.
4:25Bueno, acá en SQL server la tenemos como top 10, por ejemplo, ¿no? Acá limit 10 o acá top count, ¿no?, etcétera. Okay. Entonces tienen que saber esto, ¿no? Antes cuando QL estaba haciendo moda, por llamarlo así, lo que preguntaban [carraspeo] en entrevistas técnicas para desarrolladores era justamente, ¿qué es lo que viene primero, un group o un having?
4:55No, o el order by, ¿no? Entonces, mucha gente a veces se se equivocaba, ¿no? Porque no tenían bien claro lo que era el concepto, ¿no? Entre la diferencia entre Grotby y Havin. Lo ahora, ¿por qué no no había esta definición tan clara? Lo malo es que el having no se suele utilizar mucho, ¿no? En cambio, el group sí, ¿no? Group by, el order by. cambio having por lo general no se usa no se usa tan recurrentemente, ¿no? Pero entonces nosotros tenemos que saber y tener en cuenta que después de que nosotros hayamos realizado este agrupamiento, ¿no? Este resumen, el haming lo que va a hacer es crear una condición que nos va
5:42a permitir un conservar únicamente los grupos que cumplen esta contención. ¿De acuerdo? Entonces, por acá tenemos un ejemplo, ¿no? Habíamos visto ese ejemplo en la clase anterior. Ah, ah, perdón, acá era dataset. Sí, me me olvido actualizarlo. Okay. Entonces, por ejemplo, acá lo que estamos haciendo es de la tabla buscar en el campo categoría y filtrar. Solamente tener todas las categorías. Y lo que hacemos acá es realizar un conteo, ¿no? El con lo que hace es contabilizar cuántos productos tiene la categoría accesorios almacenamiento audio impresión, etcétera. ¿Okay? Y así como nosotros podemos usar el conteo, también podemos usar otro tipo de funciones de agregación, como por ejemplo, existe
6:48otra que es la suma, ¿no? ¿Y qué podemos sumar nosotros? Por ejemplo, [carraspeo] existe eh en la tabla. Vamos a ver qué existe en la tabla. No lo tengo en mente ahorita. Ya. Por ejemplo, en la tabla existe el precio. Entonces, nosotros podemos sumar todo el precio, ¿no? [carraspeo] Okay. Entonces, as precio, vamos a colocar a suma de precio.
7:18¿De acuerdo? Entonces, ¿qué es lo que significaría esto? que por cada categoría, por ejemplo, en accesorios, el total que podemos nosotros sacar eh provecho o en una venta es 1644 soles, ¿no? Okay. En almacenamiento 2644, ¿no? Entonces, lo que está haciendo es tomar todos los registros que tengan la categoría accesorios y sumar todos los registros de esta categoría, pero de la columna precio, ¿no?
7:55Entonces, lo que podemos nosotros hacer para validar es esto. We categoría, acá le damos accesorios, ¿no? De acuerdo. Y acá lo que nosotros vamos a hacer es filtrar o perdón, seleccionar únicamente la columna precio. Entonces acá lo tenemos todo. Entonces vamos a copiar esto. Vamos a llevarlo un Excel super rápido para poder obtener nosotros la suma que es 1644, ¿no? Okay. Que es justamente el que nos sale acá, 1144.50.
8:36Entonces, básicamente eso es lo que hace el groupe. Podemos realizar conteos, realizar sumas, ¿no? Básicamente realizar agrupamientos, resúmenes en base a un a una columna o diferentes columnas, ¿no? Por ejemplo, ¿qué otras columnas podríamos nosotros utilizar acá? Eh, por ejemplo, la marca, ¿no? Podríamos nosotros agrupar por accesorios y por marca, ¿no? Entonces, acá colocamos por marca y una coma, ¿no?
9:10Okay, profesor, si ejecuto esto, ¿va a salir todo bien? Veámoslo. ¿Por qué no no va a salir error? Ahora, ¿por qué sale el error, chicos? El leasmo acá, ¿no? ¿Qué dice? La columna marca es inválido en la selección, bueno, en la lista seleccionada, ¿okay? Porque esta no está contenida en la función de agregación del group by o de la cláusula groupy.
9:41¿De acuerdo? Entonces nosotros cada vez que queremos realizar un agrupamiento por una variable, dos, tres, cuatro variables, las cuales no están teniendo una función de agregación, ¿okay? Las tenemos que agregar en el group. Entonces acá marca, en categoría le damos coma y colocamos marca. Okay. Ahora, profesor, ¿por qué no agrego precio? Porque precio está dentro de lo que es una función de agregación, entonces no necesita estar dentro de group, ¿de acuerdo? Que solamente los que no tienen esta marca de eh o o está dentro de una función de agregación. Entonces, ahora sí, ¿no?
10:33Ahora sí, vean cómo es que el resumen eh se ha hecho más grande, incluso, ¿no? Vemos que en accesorios, ¿no? Si bien la suma nos va a dar lo mismo, ¿no? Por ejemplo, nosotros podemos copiar, ir a este lado, ¿no? Eh, guardamos, ¿no? Y pegamos y vemos que la suma nos va a dar lo mismo. Sí, nos da lo mismo la suma del precio, pero ya no solamente sabemos que son accesorios, sino también podemos ver el tipo de marca, ¿no? Entonces, por ciertas marcas se suman, ¿no? Y así, ¿okay? No va a permitir hacer básicamente lo que hacemos una tala dinámica en Ex, ¿no? Entonces, esa es
11:17[carraspeo] la ventaja del group. Personalmente yo lo utilizo todos los días el group no es es es una cláusula que que nos sirve a nosotros bastante porque lo [carraspeo] que nosotros necesitamos es tomar decisiones en base a los datos. Entonces, lo que nosotros vemos es el resultado final agrupado, no vemos el uno a uno. Entonces, el resultado final agrupado lo sacamos con un group, ¿no?
11:47De acuerdo. Entonces el group nos sirve para eso, ¿no? Espero que haya quedado todo claro, ¿no? Con con lo que hemos visto la semana pasada y lo que hemos visto ahora. ¿De acuerdo? Ahora vamos a ver lo que es el hin, ¿no? Es el filtrar después de agrupar, ¿de acuerdo? Por ejemplo, nosotros estábamos viendo, ¿no? Por ejemplo, veamos acá solamente la marca, ¿okay? Veamos solamente la marca y como estamos quitando la marca, perdón, como estamos quitando categoría, vamos a quitar categoría.
12:28Okay. Y vamos a quitar el orden. Lo vamos a dejar así. Ya. Entonces lo vamos a tener así. Okay. E vamos a ordenarlo por marcas. Order by 1. Ya. Entonces tenemos eh productos, ¿no?, que tienen su marca. No, su precio y hay algunos que no tienen marca, ¿no? Lo más probable son los que nosotros hemos agregado manualmente.
13:05Ya. Entonces, por ejemplo, eh lo que nosotros queremos hacer, ¿no? Es, como pueden ver, acá tenemos los precios, pero vamos a ordenar por los precios, si no ya vamos a ordenar por los precios. Entonces tenemos el precio del mayor al menor. Entonces nosotros si queremos acá filtrar esa agrupación y solamente quedarnos con los precios mayores a 5000 soles, entonces lo que nosotros tenemos que hacer acá es un, ¿no? Okay. Ahora en el having nosotros tenemos que colocar, a ver, si no me equivoco era un precio mayor o igual a 5000.
14:01Okay. Entonces ejecutamos y lo tenemos, ¿no? Entonces de nuestro agrupamiento, ¿no? Que vemos que teníamos, ¿no? Lo que estamos haciendo acá es agregar un filtro. El filtro va a ser por cuál, por la función de agregación que yo tenga acá. Prof. Pero si yo tengo varias funciones de agregación, porque sí se puede, chicos, tú puedes tener un count, ¿no?
14:27Por ejemplo, cantidad de productos, ¿okay? y tú lo ejecutas esto y acá tenemos, por ejemplo, el login, perdón, acá tenemos que hacer con tres, por ejemplo, acá en la HP, esta es la suma de sus precios y tiene siete productos. Del, esta es la suma de sus precios y tiene cuatro productos, ¿no? Entonces, profesor, entonces si yo quiero filtrar, ¿es necesario que ponga los dos los dos funciones de agregación que está teniendo el group? No, no es necesario, solo con el que tú quieres filtrar, ¿no? En este caso nosotros deemos filtrar por las marcas que tienen su precio a vender mayor a 5,000 soles, ¿no? Que en total su precio a vender son
15:13mayores a 5,000 soles y ahí lo tendríamos, ¿no? Entonces, si se dan cuenta, es sersencillo el having, ¿no? No hay mucho misterio, eso es todo, ¿no? Ahora, el having nos sirve bastante, ¿no? Nos sirve muchísimo. ¿Saben por qué? Porque eh a mí me pasa bastante cuando yo bueno, me pasaba bastante cuando yo recién estaba creando una tala productiva en el banco, ¿no? Que para que utilice todo el mundo, nos pasaba algo con unos datos, ¿no? Por ejemplo, nosotros tenemos esto, les voy a comentar, teníamos un campo llamado número de oportunidad, ¿no? y teníamos el campo COD interno cliente, vamos a llamarle, porque es un un campo más
16:05grandes ¿ya? Entonces, y luego tenemos más variables, ¿no? Producto, teníamos la tasa, etcétera, ¿no? Campaña, etcétera. Okay. Lo que pasaba era que un número oportunidad, ¿qué es lo que significaba? que era una solicitud de crédito. Eso significaba el número de oportunidad. ¿Okay? El código interno, el code interno cliente significaba un cliente o bueno, cliente del que solicita crédito.
16:47¿De acuerdo? bastante sencillo. Era un cliente que solicita el crédito. Okay. Entonces, eh nosotros lo que teníamos que tener, ¿no? Era un solo registro por cada número de oportunidad. Por ejemplo, teníamos, ¿no?, el 20, 19, 77, 86, por ejemplo, ¿no? Entonces, en un caso normal teníamos esto y un cliente asociado, ¿no? Teníamos 0 274. Okay. Entonces, eh, a ver, perdón, 0 1 2 3 4 0 27 56 87.
17:35Ya. Entonces esta solitud de crédito estaba eh bueno, lo realizó un cliente, ¿no? Producto, no sé, CF, tasa, no sé, 3% y la campaña, este, no sé, campaña aprobada. Ya, pero ¿qué había pasado, chicos? ¿Qué había pasado? que en el cruce de una de las muchas tablas que nosotros hacíamos, que era estos left join R join que que nosotros hacíamos en el modelo del de la consulta SQL, se estaban se estaban colando algunos duplicados, ¿no? Entonces, lo que sí o sí teníamos que tener un número de oportunidad, ¿no?
18:25Ya no nos figuraba solo uno, nos figuraban dos. para el mismo cliente, pero el mismo producto, la misma campaña, pero la tasa era distinto. Ahora, ¿por qué la tasa era distinta? Era otro campo en realidad. Vamos a vamos a este a verlo con el campo original, ¿ya? Era un desproducto, ¿ya? Okay. Era un desproducto y lo cual era una tarjeta de crédito. Bueno, eran tarjetas de crédito, ¿ya? Y por ejemplo, el desproducto es ¿qué tipo de tarjeta?
19:06En este caso era una oro LAN, ¿okay? Y en cambio el otro era una oro lan y cuatro espacios. Okay. Entonces, ¿qué pasaba? que debido a que este valor de acá tenía cuatro espacios y este de acá no, okay, porque miren, hacemos un largo, ya eh le hacemos un largo y este tiene siete, ¿no? Y este tiene 10. Entonces, ¿qué pasaba? que teníamos dos registros que supuestamente iban a ser solo uno, pero por esta diferencia no la SQL decía, "No, estos son distintos, son registros distintos." Okay.
20:00¿Y cuál era el problema? que en la fuente que nosotros consultábamos el tipo de tarjeta que había sujetado el cliente, no estaba habían dos valores, uno así, ¿no? Y el otro así. Entonces el modelo NSQL como buscaba por un código traía los dos. Ya. Entonces, ¿a qué quiero llegar, chicos? que en un momento este nos habían explotado. Por ejemplo, al mes nosotros atendíamos, no sé, 24,000 solicitudes de crédito y ese día que actualizamos, ¿no?, que añadimos esta nueva lógica, teníamos 36000, ¿no? Entonces era un cambio sumamente grande, inesperado, totalmente eh inexplicable, ¿no? No, no era lógico tener este salto de un día a otro, ¿no?
20:57Eh, entonces lo que se pensó es, okay, hay un error de data, ¿no? Entonces, ¿qué es lo que hice yo? Bastante sencillo, ¿no? Con estos mismos campos vamos a hacer lo mismo, ¿no? Lo que hice yo fue hacer un select, ¿no? Busqué el número oportunidad, le hice un cont, no, un from. La tabla se llama HM solicitudes eh de una aplicación llamada SFC, ¿no? Y luego lo que hice fue filtrar, ¿no?
21:34Bueno, en realidad no filtré, ¿no? Y lo que hice después fue hacer un group buy por numa oportunidad y luego un having count. Okay. Unc mayor a un order by un descendente. Okay. Entonces, en base a lo que nosotros hemos visto, ¿no? ¿Qué es lo que esto me daría, chicos? ¿Alguien podría decirme en base a lo que nosotros hemos visto, no? de qué es lo que hace el Javi, ¿no?
22:16¿Qué es lo que esto me daría? ¿Alguien tendrá una idea? No. ¿Qué estamos haciendo acá nosotros? Estamos seleccionando el número oportunidad, ¿no? Okay. Estamos haciendo un conteo, ¿no? Estamos buscando la tabla, estamos agruparnos por eso en una oportunidad y luego estamos haciendo un having cod, ¿no? ¿Qué creen que me pueda dar ese resultado? Para que piensen un poquito, ¿no? ¿Qué creen que pueda darme ese resultado?
22:55¿Alguna idea? [resoplido] Nada. Eh, podría ser este el número de oportunidad que se repite. Exactamente, José. No son los número oportunidades que con que cuando nosotros los contamos son mayores a uno, ¿no? Entonces de esa forma nosotros detectamos qué número de oportunidades estaban repitiendo. Y esa fue la primera etapa, saber o bueno, tener la confirmación de que los números de oportunidad efectivamente están repitiendo y después con con este con esta información, ¿no?, porque lo que me está saliendo acá es el número de oportunidad, ¿no?, y el conteo. ¿Okay?
23:45Entonces, yo ya tengo una lista de las número oportunidades que me están saliendo. Entonces lo lo siguiente fue hacer esto, select from todas las columnas, ¿no? En la tabla where el num oportunidad, ¿no? Que se encuentren en dónde y bueno, le metíamos esto de acá, ¿no? Esto se llama una subconsulta, ¿no? Okay. Pero bueno, no no no estaba este bueno, la subconsulta tendríamos que que este acomodarla, ¿no? La cosa es que nosotros teníamos acá la lista y luego esa lista de número de oportunidades que son estas estos estos códigos de acá, lo hacíamos la búsqueda acá, ¿no? Entonces, ¿qué obteníamos? teníamos de la tabla todas las oportunidades que estaban
24:43siendo repetidas con todos sus campos. Entonces, ya teníamos nuestra base a examinar. Entonces, con esta base examinar, ¿no? Nosotros ya pudimos hicimos bastantes cosas. Una, por ejemplo, fue ver eh si habían columnas distintas a simple vista nada más, ¿no? Por ejemplo, una decía TC y la otra decía C, por ejemplo, ¿no? Entre entre las repetidas porque como estaban ordenadas, ¿no? O sea, veíamos una repetida arriba y la otra repetida abajo. Entonces, íamos comparando. Acá está todo bien, acá está todo bien, acá está todo bien, acá está todo bien, acá está todo bien, ¿no? Entonces, cuando yo personalmente vi que todas las líneas estaban bien, entonces lo que se me
25:28ocurrió fue, okay, acá hay un problema de espacios. Entonces lo que hice fue aplicar e bueno, en enrix tenemos una función que es muy parecida al largo que se llama len, ¿no? Y descubrí eso, ¿no? Que una venía con siete caracteres y la otra venía con 10 y ahí descubrimos el caso, ¿no? Eh, y después ya buscamos la solución, ¿no? Pero, ¿cuál fue lo importante, chicos, de esta anécdota?
25:57que conocer el having con, ¿no? El having con nos, bueno, me ayudó a mí a poder eh resolver este caso de una manera muy sencilla, ¿no? Entonces, cuando ustedes construyan algo, estén explorando una tabla y vean que le salen duplicados ¿no? cuando no deberían tenerlos. El having con es una de las cláusulas que van a utilizar para poder eh determinar por qué están duplicadas, ¿no? Okay. Quizás un error del negocio, un error de data, ¿no? Entonces ahí ustedes van a poder identificar y decidir, ¿no? Porque justamente para eso son las consultas SQL, ¿no? Que nos va a ayudar a tomar decisiones.
26:44¿Okay? Entonces, yo creo que con eso quedó supercaro lo cómo que funciona el group, el having con, el order by, el from, vimos el where, ya tenemos el select, estamos viendo algunas funciones, entonces creo que ya estamos, al menos yo pienso, agarrando un poco de nivel con lo que es las consultas, ¿no? Y bueno, justamente el having nos sirve, ¿no?, para filtrar después de agrupar, ¿no?
27:18Okay. Ahora, algo que tienen que tener en cuenta es que el we having no cumplen la misma función. Ya, si bien se parecen, ¿no? Porque ambos filtran, ¿no? Pero el we filtra a nivel de tabla y el having filtra a nivel de resumen del resultado, ¿no? Recuerden esto de acá. Vamos a ver acá where por ejemplo, no sé, num oportunidad se encuentra en este resultado. Ya.
27:56Okay. Entonces, todo esto de acá, ¿qué es lo que hace? Todo esto filtra la tabla [carraspeo] select from y filtra qué la tabla de acá. Okay, todo esto filtra la tabla. El select nos dice, "Okay, ¿qué columnas vamos a ver de la tabla?" El from nos dice qué tabla vamos a consultar y el word nos dice qué cosas vamos a aplicar a esta tabla. Pero el group, el having y el order lo que hacen es agrupar el resultado que venga de esta consulta.
28:40El ja lo que hace es filtrar por el resultado del agrupamiento de esta consulta, ¿no? Y el order by lo que hace es ordenar el filtrado del agrupamiento que hace esta consulta, ¿de acuerdo? No. Eh, y bueno, y cuando no esté el having lo que hace el order by, no, perdón, en el order by me equivoqué. El order by lo que hace es ordenar el resultado de esta consulta.
29:19¿Ya? Okay. Entonces, así es como funciona, ¿no? Por eso es que no son iguales el having y el word. Ya, el word es antes de agrupar filas individuales, ¿no? O sea, a la tabla el having después de agrupar y filtra en los resultados de los grupos después de group y al resultado de la consulta, no a la tabla, sino al resultado de la consulta.
29:52¿De acuerdo? Entonces, eh queda bastante claro, ¿verdad, chicos? Por ejemplo, acá hay una consulta de ejemplo con nuestro tabla datasets, ¿no? Okay. ¿Qué es lo que está haciendo acá? Ya creo que tenemos eh la capacidad para poder identificarlo, ¿no? Si a simple vista selecciona la columna categoría, hace un conteo de la cantidad de productos de toda la tabla, ¿no? Okay.
30:23Ahora selecciona nuestro tabla que se llama dataset y okay. Filtra en la tabla dataset solamente los que tengan un estado activo, ¿no? Luego los agrupamos por categoría, ¿no? Para poder ver el conteo. Luego de a este agrupamiento lo que hacemos es filtrar solamente los que tengan un conteo o la cantidad de productos activos mayor igual a CCO y estos después los ordenamos por cantidad de activos de manera ascendente de menor a perdón descendente de mayor a menor y categoría en orden alfabético de forma ascendente, o sea, de la A la Z. ¿Okay?
31:10Eh, y así lo tenemos, ¿no? De acuerdo. Entonces, primero el Word descarta los productos que no están activos, ¿no? Después el groupantes y finalmente el we, perdón, el having evalúa el conteo obtenido por cada categoría ¿no? Okay. Y esto es la idea clave que tienen que llevarse, lo que les he venido mencionando. El we trabaja con la información que existe en la fila y el having con el resultado eh calculados para el grupo que realizó el group.
31:50Okay. Ahora, eh hay una hay un hay un error, ¿no?, que suelen cometer las personas que utilizan SQL server, ¿de acuerdo? Porque esto solo este error solamente funciona en SQL Server y en MySQL si no me equivoco en Postgress también. Pero en databaks no funciona así. En datab sí podemos realizar este tipo de filtrado. ¿Ya? Entonces, ¿qué está haciendo acá? que está seleccionando la columna categoría, está contando y en el word lo que hace es okay.
32:32De este conteo que tú has hecho, quiero tener los que sean mayor o igual a C, ¿no? Es decir, esto de acá quiero obtener los que sean mayor o igual a cinco. Entonces, no van a salir todos, ¿no? Pero acá nos va a salir un error. ¿Por qué? [carraspeo] Porque dice eh la agregación no, bueno, no se aprecia en la cláusula web, ¿no?
33:00Okay. Tú debes tener una subconsulta que contenga having cloud, ¿no? Y que estás esté seleccionando en la lista, ¿no? Okay. Y nada más. Es decir, que esta este filtro de con tienes que hacerlo con un hi, ¿de acuerdo? Y con el having simplemente lo reemplazas, ¿no? Y bueno, el having nos sale error. ¿Por qué? Porque el having viene después del group, ¿no?
33:31Y listo, ya lo tendrá. Bueno, para que se vea diferente, mayor a 10, ¿no? What. Ah, perdón. Mayor igual, no, mayor a 10. Okay. 12. Entonces, todo claro, ¿verdad, chicos? Todo bastante claro con el having y el group. La diferencia con el, ¿no? Sí. ¿No podemos pasar a otro tema, ¿les parece? ¿O quieren este o alguien tiene una duda con el group? El having, algo que no haya quedado claro.
34:09Okay, José nos dice que todo bien por su lado, ¿no? Alguien más, ¿eh? Quizás tiene un comentario, profesor, no le entendí muy bien. Eh, este es el momento, chicos, ¿no? Eh, bueno, vamos a a vamos a pensar que está todo bien. Okay. Y bueno, acá lo que ya les había mencionado, ¿no? Bueno, Crisis nos dice que está todo claro. Perfecto. Entonces, ¿no? Perfecto. Y acá está lo que les había mencionado, ¿no? Que nosotros podemos agrupar por más de una columna, categoría, estado, ¿no? Pero no necesariamente nuestro, bueno, acá no está el havinging, ¿no? Pero bueno, en el group si tenemos que colocarlo, ¿se dan cuenta? No. Categoría estado,
35:01categoría estado, pero no la función de agregación. ¿De acuerdo? Y bueno, profesor, usted está hablando mucho de funciones de agregación, pero ¿cuáles son las funciones de agregación? ¿Qué son? ¿Qué nos permiten, no? ¿Cuándo utilizarlos? Porque desde la desde la clase tres que hemos entrado a SQL, creo que ya nos está mencionando sobre esto, ¿no? Y sí, yo les menciono a propósito para que ustedes vayan este familiarizándose con estos términos, ¿no? Porque nosotros ya hemos visto el con, creo que en cuando entramos primera a la primera clase, creo, ¿no? Hemos visto el Aper, que recién en la clase anterior lo hemos conocido ¿no?
35:49Pero es una manera que ustedes ya vayan familiarizándose y cuando lo vean nuevamente porque ya tengan un idea, ¿no? ¿Por qué? Porque la primera vez que nosotros vemos algo nuevo no lo conocemos, no sabemos qué es lo que podemos esperar de esta experiencia nueva. Y esto aplica en todo, chicos, ¿no? Ustedes cuando, por ejemplo, vayan a trabajar o vayan a realizar una ponencia en su trabajo, lo que sea, la primera vez va a ser su experiencia nueva. No saben cómo ustedes van a reaccionar, cómo su cuerpo va a reaccionar, ¿no? Cómo su voz va a reaccionar, ¿no? Pero en la segunda vez como que tú ya conoces las cosas. Ah,
36:29mira, yo reaccioné así o así funcionan las cosas o así tengo que agarrar el micrófono, ¿no? Etcétera. Entonces, la mi forma de poder enseñarles es ir soltándoles cosas chiquitas, ¿no? Pero que en su momento habían pensado que quizá, "Oye, no entendí esto y la próxima clase que sí lo vemos y lo explicamos y ustedes ahí puedan entender." Ah, por eso es que la la en la clase anterior hizo aer y le salió en mayúscula, ¿no? Allá tiene sentido, ¿no?
37:03Entonces, eh es por eso que no sé si se dado cuenta que les vengo mencionando bastantes cosas que recién estamos viendo el día de hoy o bueno, en la clase anterior, ¿no? Bueno, es ese esa es la idea, ¿no? Okay. Entonces, vamos a ver las funciones de agregación desde ya ¿no? Bueno, estas funciones lo que van a hacer es recibir varias filas y van a producir, ojo, van a producir un resultado resumido, ¿okay? Van a realizar un resumen.
37:37Entonces, ¿por qué la función de agregación se complementan o son necesarias agregarle un group buy? porque justamente producen un resultado resumido y el group que hace es resumir. Entonces por eso es que la función de agregación y el group siempre van a estar juntos, ¿okay? Siempre van a estar juntos. Entonces pueden utilizarse sobre todo la tabla o dentro de cada grupo creado con groupe. ¿De acuerdo?
38:14Nosotros tenemos cinco principales. Ya hemos visto el, el cual nos permite contabilizar la cantidad de filas, ¿no? Por ejemplo, ver la cantidad de productos que tenemos, ¿no? Ver la cantidad de códigos que nosotros tenemos, ¿okay? Podemos tener la suma que la acabamos de ver hace un ratito, ¿no? Lo cual nos va a permitir realizar una suma de valores numéricos de toda la columna. por ejemplo, identificar el stock total que nosotros tenemos de estos productos, ¿no? También tenemos uno que quizá no lo utilizamos mucho, pero cuando se requiere es bastante útil, que es AVG, que es el promedio, pero no es un promedio ponderado, sino es un promedio aritmético.
39:04Ahora, yo yo he tenido bastantes problemas con el AVG, ¿no? Porque mi, como pueden, yo les he explicado ya que mi función en el banco es automatizar cosas, ¿no? Entonces parte de esta automatización que yo hago, ¿no? Es generar dashboard para que puedan tener un seguimiento de todo el área durante todos los días. No hay una alza de su de crédito. Pueden identificar por qué.
39:32Oye, la cantidad de embolsos de este mes es menor a millón de dólares con respecto al mes anterior, ¿no? Entonces ese tipo de de cosas del negocio lo ven con el dashboard. Ahora, ¿qué pasó en su momento cuando yo estaba armando el dashboard? que mi idea era tomar eh un resumen de la consulta SQL, llevar ese contenido a Power BI y ahí solamente tomar las columnas y poder eh armar los gráficos, ¿no? Pero, ¿qué pasó? que cuando yo lo llevé a Power BI, Power BI por defecto, cuando tú agregas un un valor, ¿no?, e en uno de estos gráficos se genera un resumen por defecto, ¿no?
40:21No es que te muestre el uno a uno, sino que genera un resumen, ¿no? Entonces ahí teníamos, yo tenía un problema, ¿no?, que estaba generando un resumen o bueno, un promedio, un resumen del promedio que yo estaba mandando ya con la función AOBG de SQL, ¿no? Entonces yo les digo para que en un momento lo tomen en cuenta que si ustedes van a utilizar esa conta SQL y van a usar una función de agregación de promedio para un dashboard, que no lo hagan. No envíen un promedio, envíen la columna como tal y el promedio háganlo en Excel, háganlo en Power BI, en Tableu, ¿no? En cualquier
41:07mecanismo o lugar donde van a armar su dashboard, ¿okay? No manden el promedio, manden el valor y ahí ya ustedes hagan con su fusión el promedio, ¿de acuerdo? Eso es como una anotación nada más y que en algún futuro le sirve, ¿ya? Pero sí, AVG lo que hace es generar el promedio, ¿no? El precio promedio, pero es un un promedio aritmético, como les digo, ¿no?
41:30El promedio aritmético, no se olviden. Vos hecho acordas de poco, este una anécdota, pero ya muy tarde. Promedio aritmético simplemente es si yo tengo precio uno más precio dos más precio tres, como son tres precios que estoy sumando, a todo le voy a dividir entre la cantidad de precios. Okay. Y bueno, el max lo que hace es tomar el valor máximo, ¿okay? El valor más alto que pueda tener la columna. Por ejemplo, si hacemos el max en el campo precio, nos va a obtener el precio más alto y el min es su contraparte, el precio más bajo, ¿no?
42:15Esto al menos a mí de vez en cuando me ayuda, ¿no? No lo utilizo muy seguido, ¿no? El mínimo, el máximo sí lo utilizo. ¿Saben en qué situaciones lo utilizo? Por ejemplo, les voy a explicar, ¿no? Porque parte de también las clases que ustedes eh sepan en qué situaciones pueden utilizarlo. Por ejemplo, nosotros en una tabla, vamos a imaginar que tenemos esta misma tabla, ¿ya? Pero que ya yo corregí el error, ¿no? Y ahora solamente tenemos uno, ¿no? Y bueno, el otro es, no sé, 890, ¿ya? Y este es otro cliente, ¿no? Este es un cliente car 7.
42:59t tan 6. Ya. Okay. Igual este es un CF y su producto es un libre disponibilidad y nada más. Ya. Entonces vamos a ver algo. Imaginemos, ¿no?, que yo tengo un campo acá llamado fecha de solicitud, ¿de acuerdo? Eh, o bueno, mejor les explico con un caso que he visto hoy. Ya, por ejemplo, hay hay una tabla donde nosotros consumimos la información de esta página de acá, ¿no? Esta página de acá que se llama contribuyente eh contribuyente SUNAT, ¿no? que es este de acá, donde tú buscas un rot, por ejemplo, vamos a buscar un rot rot Universidad San Marcos.
43:59No lo copiamos. A, copiamos valor. No hay copiar valor, ¿no? Bueno entremos por ejemplo, eh,
44:18está ¿no? Entonces, eh, es una tabla que nosotros tenemos donde muestra toda esta información, ¿okay? Toda esta información se muestra. Ya. Ahora, ¿qué pasa con esta tabla, con esta información o con esa tabla que nosotros tenemos disponible? Es que esta se actualiza todos los días, ¿no? Hay un proceso eh productivo que lo que hace es realizar un e, ¿cómo podemos llamarlo?
44:53una metodología de extracción de información llamada web scrapping, lo que hace es entrar a cada caso y poder obtener la información. Okay. Ahora, esta, acá me equivoqué, no se actualiza cada día, sino se actualiza cada semana, ¿okay? Es decir, ¿no? Por ejemplo, se actualizó el 3 de agosto, ¿no? Imaginemos que yo tenga acá, ¿no? El RUC, no, tenga, por ejemplo, el tipo contribuyente, ¿ya? Y tenga el el estado contribuyente, ¿de acuerdo? y tenga acá una fecha que se llama fecha rutina. Bueno, se llama F rutina en realidad.
45:48Okay. Entonces, ¿qué es lo que pasa? Que como yo les digo, esta tabla se actualiza cada semana. Primero se actualiza el tres, imaginemos, ¿no? Con este casito aquí, ¿no? Tenemos el tipo de contribuyente, ¿no? Y tenemos su estado de contribuyente, ¿no? Y la fecha de rutina tenemos que es el tres, ¿no? Es el 3 de este mes, ¿no? Entonces, este mismo registro lo vamos a tener cuatro veces en el mes. El 3, el 10, el 17 y el 24.
46:31El 10, el 17 y también el 24. Okay. Ahora, ¿por qué se actualiza una vez por semana chicos? Porque esto esto puede variar, ¿no? Esto puede variar. Puede ser que la universidad, por cierto motivo, cualquier otra empresa, deje de estar su estado, no deje estar activo. Y por algún motivo, hoy justo vimos un caso de una empresa donde estaba dado de baja, ¿no?
47:13Entonces, no quiere decir que el 24 se haya dado de baja, sino que el 24 que se actualizó la tabla, ¿no?, vimos que su último estado fue dado de baja. ¿Okay? Entonces, lo que nosotros hacemos es algo así, ¿no? Vamos a ir a SQL, teniendo en cuenta que esta es una tabla, ¿ya? Recuerden, esto es una tabla como si fuera SQL, ¿no? Entonces, lo que yo hago, bueno, lo que yo hago en mis scripts siempre, como tenemos este tipo de tablas, ¿no? Lo que yo hago es eh hacer así, select, ¿no?
47:58Busco el número del Rot. Okay, vamos a colocar RC. Ya. Y lo que hago acá es utilizar la función max. Okay. Max F rutina. Okay. From la tabla se llama party contribuyente SUNAT. Okay. Y luego lo agrupo. Group by. Bueno, ahí uso, pero en este caso sería Rook y lo ordeno, ¿no? Eh, bueno, y group. Okay. Entonces, ¿qué es lo que obtengo con esto?
48:42No, tengo que por cada RUC voy a obtener su máxima fecha de rutina. ¿Por qué les digo? Porque no solamente puedo tener el de de San Marcos, por ejemplo, puedo tener también, ¿no? El RU de Credore, por ejemplo, no puedo buscar Credicore, ¿no? Está está lente la página es un no tengo su ROT de créditore, ¿no? Imaginemos también cuatro veces, ¿no? En ese mes. Entonces sé que Credore es una sociedad anónima, ¿no? Su estado de contribuyente es activo, ¿no? Y bueno, él no tuvo ese problema, ¿no? Él si está activo.
49:33Entonces, ¿qué es lo que me resuelve esta consulta de acá? No, que lo que va a hacer es seleccionar la columna RU y lo está agrupando. ¿Y qué hemos visto? ¿Qué es lo que agrupa cuando cuando nosotros lo agrupamos? ¿Qué es lo que realmente hace? De todos los que son repetidos chapa uno, ¿no? Agarra uno, que es el que va a representar y chapa el otro, que es el que va a representar. Y los que se repiten no los toca.
50:08No, de acuerdo. No. Y luego lo que hacemos es max rutina. Entonces, de todos estos que nosotros hemos agrupado y que nos traiga uno, vamos a tomar el que en la columna fake rutina sea el mayor. Ah, ya. Va a ser este de acá. Okay. Y para esto igual de todos estos que nosotros hemos agrupado, vamos a obtener el mayor, ¿okay? Este de acá, ¿no? Entonces con esto yo ya puedo saber, por ejemplo, este RU, el registro más reciente, ¿cuál es? El del 24 del 8.
50:57Para este R, el registro más reciente, ¿cuál es? El 24 del 8. Y también, ¿por qué hacemos eso? Porque hay Rooks que en ciertos motivos no se actualizan esta fecha, sino se quedan al 17. Entonces, obtenemos el RU con su fecha de actualización más reciente posible. ¿De acuerdo? Y ahora, ¿para qué me sirve eso? Bueno, esto lo vamos a ver ojalá conmigo o con otro profesor.
51:28Eh, esto yo lo coloco en algo llamado una CTE. No, que yo acá le coloco max. Bueno, este eh cotmes max de parte contribuyente, ¿no? Así le llamo yo mis mis tablitas. Okay. Y bueno, esto yo lo almaceno así. Ya. Esto es como si fuera nosotros estos creando una tabla, una tablita temporal. Ya. Y luego, ¿qué es lo que hago yo?
52:02en la tabla nuevamente la hago la consulta, pero filtro, filtro, no hago un filtro este, por ejemplo, de fake rutina, ¿no? [resoplido] Ah, no, perdón, acá hago un left joint, ya simplemente lo voy a completar para que quede clara la idea. A esto, okay, ya. Y lo que hago es filtrar por el rook, ¿no? Ya no necesario. Chico que sepan esto, ya. Y bueno, acá le voy a dar un nombre, ¿no? Fake rutina, ¿ya? A fake rutina igual a B.
52:47Okay. ¿Y qué gano con esto yo? que cuando yo busque por ejemplo acá un rook, por ejemplo, el rook de acá, ¿no? Por ejemplo, este rook, ¿no? Cuando yo haga la búsqueda por este rook, ¿no? Y puedo obtener estos campos, por ejemplo, Rot, puedo obtener el tipo de contribuyente, ¿no? Bueno, vamos a tip contribuyente, ¿de acuerdo? el estado contribuyente, ¿no? Y también la fecha rutina.
53:20Cuando haga esto y cuando lo ejecute, ¿qué es lo que voy a obtener? Voy a obtener el registro más reciente, ¿no? La consulta me va a devolver esto, me va a devolver esto de acá. Entonces yo tengo yo tengo de forma disponible, ¿no?, que el último estado del contribuyente para la Universidad San Marcos estado de baja. Entonces, con este dato, los que son analistas de créditos revisan, ah, mira, la empresa que pertenece esta persona acá solita un crédito está dado de baja, le anulo el crédito, ¿no? Le anulo su solicitud, ¿no? Entonces, esa es la importancia, ¿no?, que yo les puedo dar uso del más, ¿no? Okay. No
54:12solamente es para poder ver, oye, cuál es el máximo precio o cuál es el máximo día que disponible del dato, ¿no? sino que les ayuda a poder determinar el la fecha más reciente asociado a un cliente, a un RU, a un producto, alguna venta, a lo que sea. ¿Okay? Entonces esa idea llévense con el Max, que nos puede dar el registro más reciente de un valor que ustedes ya van a determinar.
54:54Okay. Muchos piensan que el Max simplemente sirve para poder saber, ¿no?, el precio más alto, el precio más bajo, pero el Max nos sirve para situaciones como estas. ¿Okay? Entonces, espero que haya quedado claro, chicos. se haya entendido la idea, no que sepan hacer la consulta que he construido, ¿no?, sino que haya quedado clarísimo la idea, ¿no? Para que ustedes en un futuro puedan decir, "Tengo este problema, pero este problema yo ya lo he visto antes." Ah, ¿verdad? en la clase del profesor no hizo algo parecido. Entonces, con esa idea ustedes ya van ondeando y ya van como que ahí sacando su solución, ¿no?
55:35Eso es lo que a mí me interesa, ¿no? Que se lleven un poco de de la noción, ¿no? Okay. Y bueno, nosotros acá copiando nosotros podemos realizar las diferentes funciones de agregación juntas. Okay. Conteo, stock, tenemos el precio promedio, ¿no? El precio mínimo, el precio máximo. Okay. Y acá los podemos ver. Ahora, si se dan cuenta, estas funciones de agregación pueden funcionar sin el group, si se dan cuenta, ¿no? Solitas sin el group ¿ya?
56:20Pero cuando están solo la función de agregación, pero basta que tú agregues, no sé, categoría, ¿no? Esta sí va a necesitar lo que es el group, ¿no? Okay. Así que tengan en cuenta eso ya. Entonces, eh, bueno, acá lo tenemos ya por categoría, ¿no? No es muy difícil de aprenderse la función de agregación, chicos. son eh bastante similares a lo que a lo que realizan, ¿no? Quiero realizar un conteo conteo con quiero realizar una suma. Ya este ya es el colmo, ¿no? Zum. ¿Qué quieras a ver? El valor máximo. Ya ese también es el colum max, ¿no? El min ni qué decir, ¿no? El mínimo, ¿no? Elg
57:12aceptar, ¿no? Que no, que no lo conozcan, porque el AVG no es muy conocido su palabra que es promedio, ¿no? Pero promedio en inglés es average, ¿no? No, el average, el promedio, ¿no? En español. Okay. Por eso es que su sigla es AG. Okay. Entonces, tengan en cuenta eso, chicos. Ya hemos visto la combinación de Word, group, el Having, ¿no? También, como pueden ver acá podemos realizar un filtrado en el having por dos condiciones, pero esas dos condiciones tienen que estar en el cele, como por ejemplo acá con y zoom.
57:56Okay. Ahora eh como les digo, ¿no? Jain puede evaluar más de una condición, no solamente se limita al com, sino a la suma, al promedio, ¿no? Okay. O, bueno, a las cuatro o a las cinco funciones de agregación. ¿De acuerdo? Ahora, eh dentro de una función de agregación, nosotros podemos realizar algo así, ¿no? O sea, todo lo que nosotros podemos realizar de forma algebraica, ¿de acuerdo? También lo podemos realizar en SQL, ¿no? Con lo de las multiplicaciones también lo realizamos. Ahora tú quieres sumar el resultado de esa multiplicación, ¿no? Entonces también lo puedes realizar así.
58:50Okay. Es cuestión de lo que necesites nada más, ¿no? Y así lo tendrías. Una forma de terminar es que tú agregues acá precio y stock, ¿no? Y acá en group by agregues precio y stock, ¿no? Entonces lo que hace es, ¿no? [resoplido] Precio. Eh, copiamos todos estos, ¿no? Los llevamos acá, ¿no? Vamos acá abajito, ¿no? y supuestamente esta multiplicación me da esto. Entonces, ¿qué es lo que hacemos? Para validar si eh B36 no, multiplicado por C36, perdón C36 ¿no? [carraspeo] Okay. Es igual a D36.
59:50¿Qué fue? Si eso de ahí es igual a 30. Ah, esto si C36* D36 3. Ah, ya. Perdón. Es que acá tengo que agregarle otro paréntesis. Sí, ahí está, ¿no? Entonces vamos a indicarle que sí coincide ¿no? Si no, no coincide. Yo también uso bastante, bueno, no uso bastante Excel, ya no les voy a mentir, yo no me gusta Excel, ¿no? Pero para casitos así que necesito corroborar ciertos datos, sí lo uso, ¿no? Entonces acá tenemos, ¿no?
1:00:48Internamente lo que estamos haciendo es multiplicarlos, ¿no? Y bueno, y luego evaluar si ese esta multiplicación que nosotros hacemos coincide con esto y vemos que en todos coincide, ¿no? Vamos a ver. Okay, [resoplido] en todos coincide, ¿no? Entonces, efectivamente esto de acá se está cumpliendo. Okay, sí podemos hacerlo ya. Y bueno, también tenemos nuestras funciones de texto que como les digo existen, ¿no? Para poder nosotros calcular el como como lo que les había mencionado, ¿no?
1:01:34El el tamaño del de de una columna, de un registro, ¿no? Okay. Por ejemplo, entre las funciones de texto más representativas vamos a encontrar el link in, el upper, el lower, que ya este eh en su mismo nombre, ¿no? Ya pueden ustedes saber a qué se refiere, ¿no? Yo les voy a dar un consejo, chicos, que cada cosa que ustedes vean en SQL, en Excel, en cualquier herramienta de tecnología, no vean el nombre, porque el nombre es por algo. Ya. Por ejemplo, si dice lower, ¿no? Un inglés muy básico, sabemos que lower es bajo, ¿no?
1:02:28ing super básico. Aper arriba, no, como son funciones de texto. Ah, okay. Texto arriba. Bueno, texto en mayúsculas. Lower, texto hacia abajo, texto en minúsculas. Len, len, ¿de qué viene? Del leng, ¿no? Del GTH, si me equivoco, es largo. Y largo, ¿de qué lo podemos conocer nosotros? del largo de ese de de Excel, ¿no? Okay. Y realizaba un conteo, ¿no? Entonces, por eso es que bueno que también sepan Excel, chicos, porque varias cosas que usan en Excel también se utilizan acá en SQL, ¿no? Y Excel va a ayudar siempre en en en muchas situaciones ustedes van por el mundo de los datos, ¿no? Okay. Así,
1:03:17profesor, no, yo voy para ingeniería de data, ¿no? Igual Excel en algún momento te va a servir. ¿Por qué? Porque los usuarios finales no siempre van a utilizar la misma herramienta que tú. O usuarios finales tú no le puedes compartir la información en, no sé, en la nube, ¿no? En la base de datos en la nube porque ellos no lo saben utilizar.
1:03:37¿Cuál es lo que utilizan en su día a día? Por lo general lo utilizan Excel, ¿no? Entonces tú para que te puedas comunicar adecuadamente tienes que utilizar una herramienta similar, ¿no? Okay. Bueno, tenemos len, tenemos upper, tenemos lower, también tenemos uno que es muy útil ya y es uno. ¿Se recuerdan el problema que yo les había mencionado?
1:04:08Uno decía oro lan y tenía espacios, ¿no? Por ejemplo, len acá. Uy, fue. Ah perdón largo ¿no? Y acá largo también. Okay. ¿Se acuerdan de esto? Entonces acá entra una función que nos ayudó en a limpiar ciertos registros, que es el famoso trim. ¿Okay? El trim lo que hace es eliminar espacios al inicio y al final, ¿no? Entonces, si yo le hubiera agregado un trim, ¿ya?
1:04:57un un trim a Orolan, por ejemplo, Trim Orolan. Okay. ¿Qué hubiera pasado? En este caso no hubiera pasado nada, me hubiera dado esto. Pero si yo le hubiera agregado un trim a esto de acá, ¿no? Lo que hubiera pasado es que me hubiera dado el primer valor, ¿no?, sin espacios. ¿Por qué? Porque el trim lo que hace es eliminar espacios al inicio y al final.
1:05:37Entonces, parte de la solución que yo les dije es, o identifiqué que uno tenía más espacios, entonces le coloqué el trip, ¿no? Y para algunos registros sí funcionó, para otros no. ¿Por qué? Porque el problema no eran los espacios, sino que dentro del registro había saltos de línea, ¿no? Era er e era algo así, ¿no? Habían saltos de línea, había, por ejemplo, imaginamos que este sea el valor oro lan, ¿no? Y algunos había como espacios de línea, ¿no? Pero habían otros que era oro, lan, espacio, espacio, espacio, enter y recién acababa el contenido, ¿no?
1:06:17Entonces e era otra solución también. Ya. ¿Cuál fue la solución? Como adelantadita nada más existen algunas funciones llamadas reyex, ¿okay? Reyx replace. No, no los vamos a ver nosotros, lamentablemente, ¿no? Pero lo que hace es reemplazar, ¿no? Reemplaza cierta expresión. Okay. Por la expresión que tú desees. Por ejemplo, tú le puedes indicar, "Quiero reemplazar los saltos de línea." ¿Por qué? Por nada. Entonces, todos los saltos de línea los reemplaza o los borra prácticamente, ¿no? Entonces, esta función fue la que yo utilicé ya como como datito nada más. Entonces, parte también utilizamos TR, ¿no? Entonces esa es la función de TRM. Elimina espacios tanto al inicio como al final. Por
1:07:17ejemplo, si tú tienes este acá, María, no está así, tanto espacios al inicio como al final. Cuando tú le aplica stram, te va a salir así, María, ¿no? Okay. Nada muy difícil. Ahora, el famoso y muy útil Concat, ¿no? Concat. Ya, chicos, superfácil. Concat. ¿Qué menciona? Conca, concatenar, ¿no? Si has armado tus cadenetas para el colegio, la universidad, instituto, ¿no? Te va a ganar súper también, ¿no?
1:07:59Super conocido porque estamos concatenando uniendo ¿no? cada partecita hasta formar un un un fila con estos con estas partes ¿no? Entonces, el contact, ¿qué es lo que hace? Une varios valores, ¿ya? Y estos valores disparan por comas, no punto y comas, sino solamente comas. ¿Okay? El left, ¿qué es lo que hace? igualito a lo que vemos en Excel, ¿no?
1:08:37Por ejemplo, en Excel, María, si yo coloco left, bueno, en el Excel de inglés, ¿no? Acá en Excel en español sería izquierda, ¿no? Izquierda. [carraspeo] Seleccionamos el texto y le indicamos el número de caracteres. Okay. Quiero dos. ¿Y qué me va a traer? Las dos primeras palabras. Ma, no, ese es el no obtiene caracteres desde la izquierda, ¿no? Es muy útil. ¿Saben cuándo es útil? ¿no?
1:09:09Cuando por ejemplo ustedes tienen esta situación, ¿no? Nosotros tenemos eh bueno, yo cuando era practicante estaba en el área CRM, ¿no? Nosotros teníamos un registro en nuestras tablas que venían así, venía este G3 006, ¿no? Y acá venía este golazo Cf. Okay. Entonces, cuando ustedes le mandan un correo o un push notification, que son esas alertitas que le sale en el en el este en la banca móvil, en YAPE, ¿no? Esas comunicaciones tienen un código en el banco que tienen esta característica.
1:10:00¿Okay? Entonces nosotros teníamos que identificar a qué producto y qué subproducto y qué tipo de comunicación era. ¿De acuerdo? Eh, entonces lo que yo utilizaba en cuando recién ingresé por mi experiencia, ¿no? Fue hacer un izquierda, ¿no? Usaba el valor y traía el uno y era válido porque con G yo ya podía saber, okay, ah, okay, me trae G, entonces este es un gatillo, ¿no? Ahora, en SQL, ¿cómo sería? No, vamos a SQL, ¿no? Imaginemos que yo tengo, como les digo, este código, ¿no?
1:10:49Este código de acá. Okay. Así. Ya, acá tenemos el código, se va a llamar as eh se va a llamar este delivery cod, así es su término. Okay. Entonces, a este delivery cod lo que yo voy a hacer es aplicarle una izquierda. Bueno, en este caso un left, ¿okay? Le voy a aplicar un left a este valor, ¿de acuerdo?
1:11:23No, y solamente de uno. Ya. Entonces, así tengo el G, ¿no? Y cómo me servía esto allá. Lo que pasa es que en SQL, les doy una adelantadita, así como ustedes, por ejemplo, en sus clases han visto condiciones, ¿no?, en circuitos o depende su carrera también, ¿no? Pero ustedes saben que hay condiciones, por ejemplo, o en su casa, no, no este o cuando eh, no sé, no le pedían permiso a sus padres para poder salir, ¿no? Y su padres le decían, "Okay, ¿quieres salir? ¿Quieres ir a la verena? No sé, que con los amigos al cine. Entonces dan una condición. Si tú limpias la cocina,
1:12:14no te dejo salir. Okay. Ya no quieres limpiar la cocina. Bacán. Si tú bañas al perro, te dejo salir. Okay. Ya no vayas al perro. Ya, si tú tal cosa, okay, pero si tú agotas todos estos casos, okay, al final te voy a decir, okay, no sales, ¿no? Si tú no quieres realizar ninguna de estas porque no sientes que quieres hacerlo, entonces la última opción es que no vas a salir, ¿no? Entonces, en ese quell también tenemos algo parecido a eso, que es el famoso case when, ¿ya? El famoso case when, el case when a ti te permite realizar una condición.
1:13:08Por ejemplo, yo hacía esto. En caso este resultado de acá fuera igual a una G, ¿okay? Entonces, a esta columna yo le colocaba gatillo. Ya, pero si este resultado no hubiera terminado en una J, yo le colocaba jour. Okay, no tiene que saber significado de nada, solamente eso. Ya. Y a esto le daba el nombre como tipo de gatilo.
1:13:47Okay. Entonces, como pueden ver, ¿no? Tengo el contenido con el lef, tengo el tipo de gatillo, ¿no? el código y con el case when lo que obtengo es el resultado que yo quería, que me pedían identificar si era un gatillo, si era un journal, ¿no? Entonces acá es un valor bastante útil del left, aunque no parezca ser útil, si se dan cuenta, ¿no? No parece ser útil, ¿no? Pero luego, ¿qué pasa?
1:14:29Y luego, ¿cómo? Por ejemplo, para nosotros poder identificar el producto, teníamos que leer estos tres valores de acá, que era después del g, ¿no? Teníamos que leer tres valores para obtener el producto y después del producto tres valores más para obtener el subproducto. Entonces ahí yo no sabía mucho SQL, si les soy sincero, ¿no? el 2024, el 15 de mayo me mandaron ese problema como alrededor del 24 de mayo, ¿no? Eh, mi po era muy técnico. Yo yo había entrado a un área que era bastante técnica, a pesar de que era del negocio, ¿no? Era bastante técnico, entonces me dejaba tareas ya desde el inicio, ¿no? Entonces
1:15:15ahí conocí una famosa una famosa función que se llama el substit, ¿no? Sateamos el right porque es lo mismo que hace el left, pero ya no de izquierda, sino de derecha a izquierda. Okay. El que el que me importa que ustedes aprendan es el famoso substring, ¿no? El substring lo que va a hacer es extraer una parte del texto en el cual tú le vas a pasar el texto, le vas a pasar el inicio y le vas a pasar la cantidad de caracteres desde ese lugar hasta el final. que tú quieres obtener. [carraspeo] Por ejemplo, en este casito particular que estamos teniendo, ¿no?
1:16:02Esto es con el left o bueno, función left, vamos a llamar función left, ¿de acuerdo? Pero utilizando el famoso substam, ¿okay? Es sub stram stream de texto, ¿no? Y el sub si no sé de qué es, chicos. Sub no sé de qué es. No, imagino que debe ser alguna palabra en inglés que sea extraer, ¿no? Pero iniciado con sub, ¿ya? Entonces extra, ¿okay? Entonces, el substream lo que te va a permitir a ti es, como les digo, seleccionar el contenido que tú quieres extraer.
1:16:48En una coma le dices la posición que tú vas a iniciar. La posición inicia desde uno. El G es el valor uno. El guion hacia abajo es el valor número dos. el primer cer0, el valor número tres. Entonces, okay, yo quiero obtener el valor uno, o sea, desde el valor uno hacia el valor uno. O sea, quiero contar una sola vez desde el uno. Okay.
1:17:20Entonces, ese substram va a ser mi tipo, bueno, mi código gatillo, así le llamaba, ¿ya? Entonces, miren ejecutemos y efectivamente me traía lo mismo. Okay. Ahora, ¿por qué? ¿Por qué el substream fue mejor? Porque yo ya podía eh indicarle una posición inicial, una posición que iba a contabilizar. Esto nos da más control, ¿no? Esto de acá eh no nos da tanto control que digamos. En cambio, si cuando nosotros tenemos mayor precisión en lo que vamos a buscar, tenemos mayor control. Y también me servía. ¿Por qué? Porque mi otra tarea era obtener estos tres valores, ¿no?
1:18:09Entonces hacíamos lo mismo, ¿no? Entonces voy a copiar esto y le vamos a dar otro valor tipo de eh producto, vamos a llamar. ¿De acuerdo? Entonces, yo ya no iniciaba, yo ya no necesitaba ingresar desde la posición número uno, ¿no? Sino que necesitaba desde la posición número tres. Okay. Desde la posición número tres, desde acá quiero avanzar tres caracteres.
1:18:39Uno, dos y tres. Okay. Entonces acá digo avanza, no, cuatro, no, tres. Okay. Entonces, con eso se dan cuenta, ya tengo el 003 que me sirve. ¿Por qué? Quitemos este left, ¿no? Y usemos el substream, ¿de acuerdo? Okay. El substream acá, ¿no? Ese es para el tipo de gatillo. ¿De acuerdo? Y luego podemos agregar otro case, por ejemplo, case, ¿no? El case, como pueden ver, es sencillo, ¿no? Vamos a colocar tipo de producto, ¿de acuerdo? Y acá vamos a colocar Wen, ¿no? Y voy a colocar acá este substring, ¿okay?
1:19:37Y voy a decir, si este valor que tú me estás obteniendo es igual al 003, porque teníamos una lista de catálogos, ¿no? Entonces le vas a colocar que sea un CF. Ya, pero si este valor era 0017, le vas a colocar que es una tarjeta de crédito Visa. Pero si este valor, ¿no?, que tú vas a extraer es 0018, entonces decir que es un tarjet de crédito Anex.
1:20:15¿De acuerdo? Entonces, ¿qué es lo que hacemos? ejecutamos, ¿no? Y vean el G, código de gatillo. Acá lo examina este código y si es G, como vemos nos va a salir gatillo. Y acá lo mismo, substring, ¿no? ¿Qué me sale? 003. Acá hacemos lo mismo, ¿no? Pero acá vamos a compararlo con algo. Entonces, lo estamos comparando con 003 primero, ¿no?
1:20:49Y como sí coincide, entonces me dice que el tipo de producto es un CF, ¿no? Okay. Y así hacemos con el siguiente, ¿no? Con el siguiente hacemos lo mismo, ¿no? Hacemos una coma, un case, vamos con un wen, ¿no? y hacemos lo mismo, ¿no, chicos? Nada complejo, es todo es lógica nada más, ¿no? Todo es lógica. Buen Pero miren, yo ya no necesito iniciar desde el tres, ¿no? Porque eso era para el tipo de producto. Ahora yo quiero para el tipo de subproducto, ¿de acuerdo?
1:21:34Eh, yo necesito iniciar en el tres, que era acá. Si no, dónde necesito iniciar en el seis. No, necesito iniciar. A ver, 1 2 3 4 5. En el seis necesito iniciar, ¿no? En el seis siete y ocho. O sea, inicio en el seis y finalizo en el ocho. Okay. 6. Y si en el 6, por ejemplo, yo obtenía 006, ¿no? 006 o perdón, este 110.
1:22:17Okay. Y el otro era este, ah, no me acuerdo. Lo vamos a eliminar porque no me acuerdo. Ya me acuerdo. Okay. Si era 006, entonces este era un libre disponibilidad. Si era un 110 era una compra de deuda. Ya no, no neces. Okay. Ah, miren, acá no salió error, ¿no? Eh, vamos a ver porque qué es lo que nos sale esto, ¿no? Vamos a colocar acá una coma substring as eh sub, ¿no? Tipo de subproducto. ¿Qué nos sale ahora?
1:23:02No nos sale eh 006 gola. What? Gola. Sí ¿no? 006 gola. ¿Y por qué? Ah, ya. Perdón. Acá le puse ocho, pero no. Recordemos que esto es la cantidad, ¿no?, que va a recorrer. Entonces tiene que ser solamente que recorra tres, ya que recorra tres nada más. Desde que inicie en seis que recorra tres caracteres. Okay. Y ahora sí, ¿no? 003 006, ¿no? Y vemos luego comparamos con este resultado, ¿no? Okay. Es 003 se marca CF, ¿no? Y es 006 se marca Led.
1:24:02Okay. Entonces, el substring nos sirve para estos casos, chicos. Ahora no es necesario que tienen que tener el código, ¿no? Nosotros podemos haber declarado acá una variable, ¿no? Este, delivery code, ¿no? Igual a este contenido, ¿no? Bueno declare del codes de tipo string, ¿no? Bueno, perdón, de tipo barchar, ¿no? Acá en es barchar, barchar de 100 igual a este contenido, ¿no?
1:24:39Okay. Y en vez de todo eso, nosotros acá únicamente reutilizamos esa variable, ¿no? Reutilizamos, reutilizamos, reutilizamos. Miren chicos, cuando yo tengo este tipo de situaciones, inento reemplazar muchas cosas, lo que yo hago es utilizar un un editor de texto que se llama este M editor. Por ejemplo, acá lo voy a encarar script scripts 2.sql. El editor es este de acá, se llama en editor. ¿Ya? Entonces, en el editor yo tengo una función que la activo con control F, ¿no? Que me da esto de acá, en el cual yo voy a chapar todo el contenido, ¿okay? Y le voy a dar a esta opción que se llama reemplazar.
1:25:35En reemplazar voy a buscar acá el contenido a buscar o el contenido a reemplazar. Y lo vamos a reemplazar. ¿Por qué? Por esto de acá. ¿Ya? Entonces, le doy a reemplazar todo y se reemplaza. Okay. Y luego ya lo que yo hago es copiar y pegarlo acá. Ya, la herramienta es bastante útil, ¿no? Porque no solamente te permite a ti editar el contenido de una manera más sencilla, sino que al menos a mí, como yo reviso bastante cantidad de información, ¿no? También lo puedo ver este acá en CCV, ¿no? Ahora acá no no saca todo el provecho que digamos, ¿ya?
1:26:24Pero créanme, cuando tengan un CSV bastante grande, esto soporta hasta más de 10 millones de registros, ¿no? Entonces, cuando hay un problema en el CSV, hay un valor por un registro, todo no te carga la información cuando tú estás cargando una tabla, lo que sea. A mí me ha pasado que por un registro, 2 millones de registros no cargan, ¿no?
1:26:49Entonces, lo que hago es entrar manualmente después de que yo haya identificado, ¿no?, en mi slog, cuál es el valor, muy similar a lo que hicimos acá, ¿no? Muy similar a esto. Ups, este, muy similar a esto, ¿no? Una vez que nosotros identificamos cuál era el registro que estaba dando el error, ¿no? Lo buscamos, ¿no? Lo buscamos acá con este buscar y bueno, seleccionamos y borramos nada más.
1:27:19¿no? Entonces, eh es es una es una herramienta que que es muy útil, ¿no? Ustedes pueden utilizarlo, es es es libre, ¿no? Se llama en editor y el contenido lo pueden ver así, ¿no? En filas como si fuera una tabla en Excel, ¿no? Para que puedan visualizar, explorar, ¿no? La verdad que a mí me sirve bastante. En el banco lo utilizo mucho, ¿no? Eh, me sirve muchísimo.
1:27:45Totalmente recomendado, chicos. no tiene virus ni nada, así que descárguenlo y es totalmente gratuito la versión free, ¿no? Que es más que suficiente. Okay. Como como como un dato extra, ¿ya? Entonces, lo que podemos haber hecho eso era eso, ¿no? Declarar al inicio y ya tenemos lo mismo, ¿no? De acuerdo. Entonces, eso es lo que ustedes pueden sacar con la función string, substream, ¿no? Ustedes puedan extraer datos para que después con un case when no puedan ustedes realizar esas comparaciones, ¿no? Esto ya va a depender de ustedes de su modelo de negocio, ¿no? Y bueno, el replace que si bien es útil, ¿no? Este, en algunos casos, no más, en mis casos
1:28:36que yo he tenido, no lo utilizo mucho porque el replace en SQL e eh no me da a mí ningún valor. ¿Saben por qué? Porque SQL yo lo utilizo cuando la tabla ya está lista hasta cierto punto, ¿no? Si yo quiero reemplazar contenido, lo hago desde que está en un archivo este en bruto. Quiere decir que que está, por ejemplo, acá, ¿no? Si es que yo necesito reemplazar algo, lo hago acá directamente descontinuado, ¿no? Lo voy a reemplazar por descontinuados en mayúscula, por ejemplo. Si es un cambio simple y se va a realizar una vez, ¿no? Desde ahí yo lo hago, ¿no?
1:29:31Cuando es un reemplazo que tiene que hacerse diariamente, en mi caso tampoco lo utilizo. ¿Por qué? Porque nosotros, bueno, yo personalmente utilizo otra herramienta que es Python. No, pero Python normal, ¿no? Si no utilizamos una variante que se llama Pike Spark, que ya hace eso, estos reemplazos de una manera más efectiva, ¿no? Entonces yo personalmente no no he utilizado el replace en SQL, eh, así que no les puedo dar un caso como tal, ¿no?
1:30:05Pero el el la función es bastante simple también, ¿no? Tú le das el texto de ese texto, ¿qué va a buscar y qué vas a reemplazar? ¿no? O sea, por ejemplo, eh, teniendo en cuenta esto de acá, ¿no? Tú vas a hacer un select, ¿no? Replace este valor, ¿no? Le das el contenido que tú vas a buscar, por ejemplo, que encuentre la letra G, ¿no? Y tú la vas a reemplazar por la letra J.
1:30:36Okay. Entonces, ya no te va a salir G, sino la J. bastante sencillo, ¿no? No, no hay mucho misterio, ¿no? Y y así lo usarían, ¿no? Okay. Y bueno, ya lo demás es únicamente utilizarlo, ¿no? Lem top 10, ¿no? Eh, este, no sé, dataset, ¿no? Creo que era nuestra tabla y acá lo obteníamos, ¿no? el nombre del producto, la cantidad de caracteres que tiene esto, cuando está en mayúscula, ¿no? Y bueno, la marca en minúscula, ¿no? Bastante sencillo, ¿no? El concat, el que les digo, esto no lo hemos trabajado, pero es muy útil. A mí de verdad me ayuda muchísimo, ¿no? E cuando este ups, acá había otro casito.
1:31:36Cuando por ejemplo este eh datasets, cuando por ejemplo tengo algo así en SQL, miren, pasa algunas situaciones que trabajamos con nombres, datos sensibles, ¿no? Pero los nombres vienen de un formulario y traen nombres, apellido paterno, ¿no? Apellido materno, ¿no? Entonces, por ejemplo, mi nombre, ¿no? Juan Mariano, ¿no? Caneillas Contreras. Okay. Entonces, en SQL también hay, perdón, en Excel también hay una función muy parecida que no es concat, sino es concatar.
1:32:20No, tú le das el valor punto y coma y acá le dices, si tú le das solamente esto, simplemente le das los valores, ¿no? Okay. Si solamente le das los valores, te va a salir así, todo corrido, sin espacios, pero tú dentro tienes que agregarle los espacios, ¿no? Okay. Adentro tú le agregas. los espacios y ahí tendrías el nombre, ¿no? Entonces el concat en SQL Server es muy parecido, ¿no? Por ejemplo, acá nosotros tenemos que hacer eso.
1:33:06Okay. Entonces, nosotros podemos concatenar categoría, vamos a colocarlo acá, marca y nombre producto. Okay. Entonces tenemos así categoría laptops, marca Acer, nombre producto. Entonces estás concatenando estos tres valores de tipo string, ¿no? Categoría, ¿okay? Lo colocas. Luego con catenas un string, que es un espacio, un guion y un espacio. Entonces, por eso que después del laptop vemos un espacio guion espacio y después el siguiente texto.
1:33:52Después espacio guion espacio, ¿no? Y después el siguiente texto. Okay. Y así funciona el concat. Nada de misterio, chicos. No, puede ser con guiones o con comas, ¿no? O sin coma, solamente espacios. Ya queda a definición y a sus necesidades, ¿no? Okay. Eh, es útil para presentar información de varias columnas en una sola, como por ejemplo los nombres, ¿no?
1:34:27Okay. Ya hemos visto left, el right, que es la contraparte, left, el super strre. No, ahora e eh ya este de acá es de la anterior clase todavía, pero ya a ver vamos a checar esto. Ya, eso también la verdad que la verdad que nosotros en cu podemos hacer cosas maravillosas, profe, no sabía que se pudía hacer eso, pero eh muy difícil lo vamos a poder este utilizar, ¿no? de manera así como tal, pero por ejemplo nosotros acá estamos concatenando también, ¿no? Por ejemplo, tenemos el ID del producto y el catálogo de la laptop.
1:35:15Por ejemplo, en catálogo, ¿no? Eh, el código del el catálogo que es este de acá, ¿no? Viene a partir del nombre del producto, ¿okay? viene a partir del nombre del producto. Por ejemplo, si el producto es una laptop 5, ¿no? Entonces el código del catálogo va a ser los tres primeros caracteres, ¿no? De la categoría. Okay, perdón, es de categoría.
1:35:53Ya va a venir de los tres primeros caracteres, como pueden ver acá, left, ¿no? A categoría los tres primeros caracteres y a esos tres los colocamos en mayúscula, la no. Primero evalúa lo de adentro. Una vez que termina esto, que es la L mayúscula, A minúscula, P minúscula, todo lo coloca en mayúscula, ¿no? Luego con catena con más, porque no necesariamente necesitamos utilizar concat, ¿no? Para nosotros concatenar algo también podemos utilizar esta función, bueno, no función sino este operador de más, ¿no?
1:36:41Okay. Por ejemplo, vamos a sacar Juan, ¿no? Más espacio más Mariano, ¿no? lo ejecutas y obtienes lo mismo, ¿no? Que es un un similar al contact, ¿no? Pero, ¿cuál cuál es lo malo de esto? que eh que este que no tienes el control, ¿no? No sabes qué es lo que puede hacer, ¿no? Si bien tú puedes saberlo, lo correcto es que si tú quieres hacer cosas así, utilices una función que ya hace lo mismo, ¿no? Eso te puede servir para una prueba, un caso en particular, una búsqueda, ¿no? Pero un concat es mucho más eh es mucho más este riguroso, ¿no? Con con tu resultado, con
1:37:36la consulta exacta que tú quieres, ¿no? Okay, pero sí se puede hacer, chicos. Entonces, tenemos los tres primeros caracteres, luego concatenamos un guion, como pueden ver, y luego tenemos del ID, ¿no? El ID, ¿ya? El ID producto, ¿ya? Vamos a nosotros a castearlo. ¿Qué es castear? No, ese término casteo, ¿no? El casteo significa este eh reemplazar, pero no vamos a reemplazar cualquier cosa, vamos a reemplazar el tipo de dato, ¿okay? ID producto, ¿qué tipo de dato es? Si se dan cuenta acá entero, ¿no? Entonces con el CAS lo que estamos haciendo es reemplazarlo a tipo barchar, o sea, un texto. Entonces si acá el ID producto,
1:38:37por ejemplo, me salía uno, entonces eh lo que con el CAS lo que estamos teniendo es que sea un tipo un valor así. ¿Okay? ¿Por qué? Porque de esta manera yo puedo lo que es agruparlo, puedo concatenarlo con otro string, porque si no si no si es que fuera un valor entero, miren, no saldría error. ¿Por qué? Porque cuando tú concatenas, ¿no?, un texto, este más va a verificar si el contenido que tú estás concatenando o bueno, que tú estás sumando, en pocas palabras es texto más texto, entonces el más va a tomar la responsabilidad de concatenar.
1:39:29Ya, pero si tú si el más evalúa que el contenido que tú estás sumando son números, entonces va a tomar la responsabilidad de ¿qué? De aplicar una suma, ¿no? Pero si es que son textos, lo va a aplicar la responsabilidad de ¿qué? De concatenar. Entonces, acá cuando llega esta parte lo que dice, okay, el más, ¿cómo me voy a compartir ahorita? Okay. Ah, okay. Mira, esto acá es un texto, entonces lo tengo que concatenar con el otro texto. Oye, pero este no es un texto, este es un número. Ah, entonces tengo que sumarlo.
1:40:08A ver, espérate. No puedo concatenar un texto con un número y no puedo sumar un número con un texto. Entonces, ¿qué te doy? Te doy un error. Entonces, ¿cómo tú puedes concatenar esto? el uno que tú lo castees, castees el valor uno a un tipo barcha, ¿no? De uno, por ejemplo, de uno de extensión. Entonces, de esa manera tú ya puedes tener Juan Mariano y luego el número uno.
1:40:42Okay. Para eso me sirve el casteo, para que tú puedas eh para que tú puedas este transformar el tipo de dato en otro que tú necesitas. Yo personalmente lo utilizo muchísimo, chicos, el CAS no lo utilizo bastante. ¿Por qué? Porque como les digo, yo construyo tablas, yo construyo tablas productivas para mi equipo, para para cierta parte del banco de riesgos, ¿no?
1:41:12Entonces eh lo que yo quiero dar es cierta usabilidad más fácil a los usuarios finales que consumen esto, ¿no? Entonces, en nuestros en nuestros inputs que viene la información, ¿no? Viene, por ejemplo, el codes, ¿no? Pero viene como texto. Okay. Entonces, no, esto viene como texto, ¿no? Cod es así. Entonces yo cuando construyo la tabla a este codes, después yo le hago un CAS as in le pongo.
1:42:04Okay, le pongo así. ¿Para qué? Para que este codes se vuelva este número. Para que se vuelva número. ¿Cuál es la finalidad? de que después cuando una persona está utilizando la tabla, ¿no?, HM solicitudes, por ejemplo, y quiera filtrar por el mes, no tengan que estar colocando comillas, simplemente coloque el mes que quiere filtrar y ya. Okay, s sencillo, ¿no? Ahora, también, ¿para qué me sirve?
1:42:41Porque yo puedo generar particiones con esto de acá, ¿no? Es un término un poquito más eh más de un módulo avanzado, ¿no? Que se trata en optimizar lo que son las consultas, pero básicamente lo que hacen las particiones es todos los datos que pertenezcan a al CODMESK eh de junio del 2026 los voy a colocar en una cajita. Todos los datos que pertenezcan a mayo del 2026 lo voy a colocar en otra cajita. Entonces, si es que viene, por ejemplo, Luz mañana y hace una consulta con el CODMES de junio del 2026, ya no tengo que buscar en todas las cajas.
1:43:24¿Qué es lo que hago? busco en la cajita de junio 2026, ¿no? Entonces, tenerlo como entero me sirve bastante a mí para hacer esto, ¿no? Ya se pueden hacer también con string, pero con enteros tiene un performance mucho mejor este este tema de particiones, ¿no? Okay. Entonces, por eso es que yo lo utilizo bastante para poder presentar mis datos. Ya, para poder construir las cosas que les comento, ¿no? Entonces, el CAS lo usamos y estábamos acá, ¿no? Perdón, perdón, me había ido. Estábamos acá.
1:44:07Entonces, castea este ID producto. Si se dan cuenta, es de tipo entero el ID producto, ¿no? Entonces este es uno entero un número. Entonces lo castea, lo coloca como texto, ¿no? Y luego le da write. Okay. De acuerdo. Ahora imaginemos que esto sea uno, ¿no? Bueno, uno así. Ya. Entonces, luego el Ray lo que hace es eh wait.
1:44:49Ah, falta algo. Me he comido, creo, algo. Es
1:45:04casteamos.
1:45:20Ah, ¿verdad? Pues acá se podía hacer esto. Ya, ya me acordé. Ya, ya. Miren lo que hacemos acá con el R, ¿no? Y cuando nosotros tenemos principalmente esta función, ¿ya? Okay, se dan cuenta nosotros casteamos acá, ¿no? Todo este es el CAS, ¿okay? Todo este es el CAS, ¿no? Este es uno, ¿de acuerdo? Y con el R diciendo acá eh con catena estos ceros con el uno.
1:46:00Ya. Si tú lo colocas en el select, esto de acá te va a salir 00 1. Okay. Pero cuando tú lo colocas con el Ray, ¿de acuerdo? Ya. Eh, lo que estás diciendo es, "Okay, no, a este contenido, ¿no? Este contenido solamente extrae los tres caracteres, los tres primeros caracteres contando de derecha a izquierda. ¿Y cuáles serían esos? el 100, ¿no? Entonces, por eso es que nosotros obtenemos este resultado, ¿no? Primero el upper left, ¿no? Que es de categoría. Los tres primeros valores les coloca en mayúscula lap, luego el guion y luego tenemos el 001. ¿Por qué? Porque el ray está haciendo de la derecha
1:47:04tres caracteres nada más, ¿no? Entonces, como esto es uno y cuando tú lo concatenas es 001, entonces cuando tú extraes los tres primeros caracteres de derecha, izquierda, vas a obtener 001, ¿no? Okay. Y así es como se arma el código del catálogo en este caso, ¿no? y eso es parte del uso del R, ¿no? Okay. Es un caso bastante bastante chévere, ¿no? Porque nos enseña en qué casos nosotros podemos utilizar, ¿no? Por ejemplo, para armar un código de catálogo, ¿no? Depende a nuestras necesidades, ¿no? Dicen, "No, el código del del catálogo, no, no, no lo ha con categoría, hazlo con la marca, ¿no?
1:47:53etcétera, ¿no? Pero tú al menos ya sabes cómo cómo poder hacerlo. Y bueno, el nombre acá en este caso no necesitamos este limpiarlo, ¿no? Pero por ejemplo, si yo pusiera esto, miren, yo colocara esto, eh, colocar un select, ¿no? y colocar espacio espacio espacio 00 23m y espacio espacio espacio, ¿no? Entonces yo voy a obtener eso, ¿no?
1:48:34Pero si yo a este contenido que le voy a colocar en una variable, ¿no? Este dato, vamos a llamarlo, de tipo string, perdón, en este caso es barchar, ¿no? 100 igual a este contenido de acá, ¿no? Okay. Si a este contenido yo le hago un trim, ¿de acuerdo? ¿Qué es lo que vamos a obtener? El contenido limpio, ¿no? Le quita los espacios tanto al inicio como al final. Entonces, así.
1:49:12Y y algo que les recomiendo, chicos, algo desde mi perspectiva, ¿no? Desde la forma en como yo codeo, ¿no?, mis scripts, que cuando yo le doy un trim a algún valor, ¿no? Por ejemplo, dato, yo le doy el mismo nombre. Okay. Si esto se llamaba dato, entonces yo le doy dato también, ¿no? Porque lo único que estoy haciendo es limpiarlo, ¿no? Cuando ustedes generan, y esta es la forma en que yo me doy cuenta, cuando sus exámenes que van a tener al final me devuelven hecho con les estoy dando el tip ya para que me engañen o intenten engañarme de una manera más eficiente, ¿no? ¿Cómo yo me doy cuenta?
1:50:03No, porque la inteligencia artificial cuando tú haces un trim te coloca dato limpio, dato sin espacios, así no. Mayúscula, inicio, [carraspeo] después mayúscula y mayúscula, ¿no? Entonces [carraspeo] así te coloca la, ¿no? Porque ellos o bueno, en muchos lugares dicen, "No, tú tienes que mantener el dato, el dato original. No, eh, si vas a hacer una transformación, porque esto el hacer un trim, hacer un replace, tienen una nomenclatura, perdón, tienen una forma de decir que se le llama transformar, ¿ya? Porque tú el dato original lo estás transformando a un nuevo dato, ¿okay? ese nuevo dato, este dato de acá es totalmente distinto a este dato que
1:51:01nosotros teníamos al inicio. ¿Por qué? Porque este tiene quizá largo, no sé, 16 y este solamente tiene, no sé, siete, ¿no? Entonces es un dato totalmente distinto. Entonces, como te di, no, es un dato totalmente distinto, eh, por eso es que tienes que darle otro nombre. En lo particular, a mí no me gusta porque me lleno de variables y al fin y al cabo el dato, si bien no es el mismo el que tenía originalmente, pero es el mismo en el negocio, ¿no? El hecho de que yo haya limpiado este el hecho de que yo haya limpiado esta columna del tipo de de tarjeta, no no está
1:51:49cambiando en esencia del negocio, no sigue siendo el el la el tipo el subtipo de producto, ¿no? Entonces, en esencia, el negocio sigue siendo el mismo. Entonces, al menos yo cuando armo mis cosas no veo la necesidad de cambiarle el nombre, ¿no? Y les dejo el mismo nombre, ¿no? Cuando realizas una transformación como trim replace, el aper, ¿no? Ya cuando haces un R todo eso, obviamente, pues porque esto ya cambia totalmente la esencia del del dato como negocio, ¿no? Ya cambia la esencia. es ya esto ya no es ID producto, ¿no? Ahí sí merece la pena darlo tu nombre, ¿no? Si solamente haces un aper, ¿no? Entonces la la esencia del
1:52:37negocio en ese campo se se mantiene, ¿no? Okay. No vas a colocar categoría en mayúscula, pues ya ahí ya ahí te chapo y te pongo 05, ¿no? No en en tu prueba final, ¿no? Bueno, tampoco así, ¿no? Te llamo y te digo, "Oye, ¿por qué no has tenido tiempo de hacerlo?" No, necesitas más tiempo, ya me comentas y y lo vemos, ¿no? Okay. Y te digo, ya, okay, tienes dos días, tres días, dependiendo de tu excusa, ¿no? Acá chico me dice, "No, profesor, sí que tenías que trabajar bacán, ¿no? Y este y este chico me tenía agregado al WhatsApp, ¿no? Porque gastaba conmigo los tres módulos, ¿no? Básico,
1:53:20intermedio y avanzado, ¿no? Ya habíamos tomado como cierta confianza, incluso está trabajando en el banco, ¿no? Entonces este en el modo avanzó me dice, "Profe, este niño este está ocupado como tal, ¿no? Y para su mala suerte y había visto que el sábado había una fiesta, ¿no? Y la prueba y el examen se entregaba el domingo al mediodía, ¿no?
1:53:41Entonces, eh, al menos miéntanme bien. Okay, pero ya dejemos un poco al lado eso. Y bueno, ya son 10:20, chicos. Eh, me hubiera gustado terminar, ¿no? Este, ha sido mi culpa haber llegado tarde. Nuevamente me disculpo. He hecho todo posible por bien temprano, ¿no? Pero no, no he podido, la verdad, ¿no? Eh, de todas maneras, las horas que no hemos tomado, por ejemplo, la nuestra clase el día lunes, si no me equivoco, eh yo entré como 20 minutos tarde, ¿no?
1:54:19Eso también se va a recuperar, ¿no? eh o incluso hemos recuperado, creo, pero no importa, yo lo tengo en mi mente y es que normalmente son ocho sesiones o no sé cómo les habrán usted dicho en su matrícula, pero yo recuerdo en un momento que eran ocho sesiones, ¿no? Eh, pero luego me dijeron, "No, tienen que ser nueve sesiones, pero la novena sesión solamente va a ser 20 minutos o media hora, una hora creo, ¿no? Pero nuestro caso sí lo vamos a tomar la sesión completa, ¿no? Okay. La última sesión de la sesión nueve, que es el último el próximo viernes, va a ser simplemente repasar todo lo que ya hemos
1:54:55visto, ¿no? Le vamos a meter un caso, yo voy a traer un caso del banco, ¿no? Porque es un caso que yo estoy relacionado y les puedo explicar de una mejor manera, ¿no? Para poder resolverlos todos juntos. ¿Okay? Entonces, eh nos vamos a quedar acá en las funciones de fechas. Este contenido, si se pueden dar cuenta, eh va a estar disponible, ¿no?, [carraspeo] en la plataforma. Así que si ustedes quieren ir viendo, oye, cuáles son las funciones de fecha, en qué momento los utilizo, este o las funciones matemáticas, pueden ir este pueden ir revisándolas. Ya nosotros la vamos a continuar el día lunes, ¿no? Y el día lunes tampoco
1:55:37tenemos mucha carga, tenemos únicamente este los left join joint. Okay. Entonces, eso es todo por hoy, chicos. Más bien gracias por su tiempo y su comprensión también. Eh, espero que nadie se haya quejado por lo que he demorado, pero ya no. La grabación, como saben, va a estar disponible mañana temprano. Y bueno, eh ahorita voy a subir en la sección eh número seis este el contenido, el script y bueno, este Word en PDF. Ya. Entonces, eso sería todo por hoy, chicos. Que descansen bien, ¿no? Utilicen fin de semana para descansar, para pasar en familia y y bueno, cuídense más que todo.
1:56:25Ya cuídense chicos. que tengan un buen fin de semana. Chaitos.