Saltar al contenido

Descubre Como Utilizar la PL-SQL Function en Oracle MAX en tus PL-SQL Packages en Oracle

PL-SQL Function en OracleSi sabes como utilizar la PL-SQL Function en Oracle MAX en tus PL-SQL Packages en Oracle podrás realizar búsquedas de datos mayores o máximos rápidamente en las tablas de tu Base de Datos Oracle.

La PL-SQL Function en Oracle MAX es una función que se utiliza en grupos de datos o de forma independiente y como su nombre lo indica busca el valor máximo dentro de un grupo de datos o dentro de una tabla.

Generalmente la PL-SQL Function en Oracle MAX se utiliza en conjunto con la cláusula GROUP BY para obtener el valor mayor de cada grupo de datos. Revisemos algunos ejemplos prácticos para que entiendas mas claramente como se debe utilizar la PL-SQL Function en Oracle MAX en tus PL-SQL Packages en Oracle.

Ejemplo #1: Supone que deseas obtener el sueldo más alto o con el sueldo máximo de todos los empleados de una empresa, veamos como se hace:

/* PL-SQL Function en Oracle */

Select max(emp.sueldo) sueldo_mayor

From t_empleado emp;

En este ejemplo se obtiene el sueldo mayor, el cual se busca dentro de todos los empleados de la empresa.

Ejemplo #2: Supone ahora que debes obtener el sueldo más alto pero de cada departamento de la empresa, veamos como se hace:

/* PL-SQL Function en Oracle */

Select emp.id_departamento, max(emp.sueldo) sueldo_mayor

From t_empleado emp

Group by emp.id_departamento;

En este ejemplo se busca el sueldo mayor por cada departamento de la empresa, para esto se utiliza la PL-SQL Function en Oracle MAX en conjunto con la cláusula GROUP BY para generar un grupo por cada departamento, mostrando un resultado como el siguiente:

/* PL-SQL Function en Oracle */

Id_departamento        sueldo_mayor

101                                                           5892000

102                                                           1562000

103                                                           968000

104                                                           2957000

TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”

¡ Haz Click Aquí y Descárgalo GRATIS Ahora !

Ejemplo #3: A la misma consulta del ejemplo 2 se pueden agregar otras funciones de grupo, como por ejemplo la PL-SQL Function en Oracle COUNT, para contar la cantidad de empleados que tiene cada departamento, veamos como quedaría:

/* PL-SQL Function en Oracle */

Select emp.id_departamento, max(emp.sueldo) sueldo_mayor, count(1) cant_empleados

From t_empleado emp

Group by emp.id_departamento;

En esta query se agregó la función COUNT para contar la cantidad de empleados que existen en cada departamento, mostrando un resultado como el siguiente:

/* PL-SQL Function en Oracle */

Id_departamento        sueldo_mayor             cant_empleados

105                                                           5892000               36

106                                                           1562000               18

107                                                           968000                 25

108                                                           2957000               12

Te propongo que pruebes de inmediato estos ejemplos en tu Base de Datos con tus propias tablas, PL-SQL Procedures en Oracle y PL-SQL Function en Oracle, para que comiences a ejercitar la mano y aprendas a dominar esta nueva técnica en tus PL-SQL Packages en Oracle.

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de PL-SQL Function en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con PL-SQL Function en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Escritor del Reporte:

Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos

6 comentarios en «Descubre Como Utilizar la PL-SQL Function en Oracle MAX en tus PL-SQL Packages en Oracle»

  1. Estimado,

    Debo hacer el siguiente ejercicio pero, no sé como hacerlo:

    función que entregue el material que mas ha entregado un proveedor

    y está función la debo llamar desde una aplicación puede ser con cualquier lenguaje de programación, si me puede ayudar en esto se lo agradecería un montón.

    Saludos cordiales.

    1. Hola Jhosep, este tipo de consultas son un poco difíciles de realizar, pero existen varias formas de hacerlo, aqui te adjunto una consulta que puedes ajustar a lo que necesitas para tu función, solo debes reemplazar la tabla ficticia que cree por tus tablas reales filtrando por tu id_proveedor, en este ejemplo el producto mas entregado corresponde al id_material 2 con 10 unds entregadas, espero te sea útil para lo que quieres:

      select — Finalmente obtengo la fila 1 que es el material mas entregado.
      mas_ent.*
      from (
      select — Aqui agrego un numero de fila al resultado
      rownum fila,
      may.*
      from (
      select — En esta subquery ordeno por cant_entregada descendente
      dat.*
      From (
      select — Creo una tabla ficticia, tu debes reeemplazarla por tu tabla o tablas con los detalles de materiales comprados.
      mat.id_material,
      mat.descripcion,
      sum(mat.cant) cant_entregada
      from (
      select 1 id_material, ‘material 1’ descripcion, 1 cant from dual
      union all
      select 1 id_material, ‘material 1’ descripcion, 2 cant from dual
      union all
      select 2 id_material, ‘material 2’ descripcion, 3 cant from dual
      union all
      select 2 id_material, ‘material 2’ descripcion, 1 cant from dual
      union all
      select 2 id_material, ‘material 2’ descripcion, 6 cant from dual
      union all
      select 3 id_material, ‘material 3’ descripcion, 1 cant from dual
      union all
      select 4 id_material, ‘material 4’ descripcion, 2 cant from dual
      union all
      select 4 id_material, ‘material 4’ descripcion, 1 cant from dual
      ) mat
      group by
      mat.id_material,
      mat.descripcion
      ) dat
      order by
      dat.cant_entregada desc
      ) may
      ) mas_ent
      where mas_ent.fila = 1;

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle

  2. BUENAS. ESTA MUY BUENO TU BLOG, YO NECESITO HACER TU MISMO EJEMPLO PERO Q ME DE COMO RESULTADO EL DEPARTAMENTO CON EL SUELDO MAS ALTO. ESPERO TU AYUDA. MI CASO ES UN CALCULAR EL MAYOR DE UNA SUMA AGRUPADAD

    1. Hola Jhonny, gracias por comunicarte y por tu comentario, tengo un vídeo donde explico ‘Como Obtener el Artículo mas Comprado’ y creo que calza muy bien con el problema que tienes, este es el link: https://dominatuspackagesen0racle.com/?p=877

      PD: Ya obtuviste mi libro-reporte sobre “Cómo Construir un SELECT Eficiente en Oracle en Solo 7 Pasos”, si aun no lo tienes puedes obtenerlo desde este enlace:
      https://dominatuspackagesen0racle.com/

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

  3. HM DEL 3 EJERCICIO QUISIERA SABER, QUE PARA SABER LA CANTIDAD DE EMPLEADOS POR DEPARTAMENTO, PERO INGRESANDO DESDE LA PANTALLA CON EL NOMBRE DE DEPARTAMENTO ME DARA RESULTADO EL NUMERO DE EMPLEADO OSEA USANDO UN EJECUTOR QUE ME VOTE LA PANTALLITA PARA INGRESAR EL NOMBRE DEL DEPARTAMENTO QUE QUIERO SABER

    1. Hola Kamilita, gracias por comunicarte, claro que puedes hacerlo en dos pasos, primero busca el nombre del departamento (que ingresaron por pantalla) en la tabla departamentos para obtener el código y luego con el código vas a contar a la tabla de empleados la cantidad de empleados que hay en ese departamento, algo como lo siguiente:

      select id_depto into lin_id_depto from t_departamentos where nombre_dep = ‘nombre ingresado’;
      select count(1) cant_empleados from t_empleados where id_depto = lin_id_depto;

      PD: Ya viste mi libro-reporte sobre “Cómo Crear un SELECT Eficiente en ORACLE en Solo 7 Pasos”, si aun no lo tienes en tus manos puedes obtenerlo gratis desde aquí: https://dominatuspackagesen0racle.com/

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.