Desarrollando en Cobol y Natural sobre Plataforma Mainframe

jueves, 26 de marzo de 2015

Sentencia SQL SELECT COUNT GROUP BY para DB2

En numerosas ocasiones estamos trabajando con una determinada tabla DB2 y, en un momento dado, nos surge la necesidad de conocer cuántos registros hay para los diferentes valores existentes en un determinado campo. Hoy vamos a hablar de una cláusula que nos soluciona los problemas de este tipo.

El comando COUNT(*) es un tipo de cláusula SQL mediante la que podemos obtener, en cualquier objeto Cobol, el número de registros que hay almacenados para cada uno de los posibles valores que puede tomar un campo determinado de una tabla DB2.

Supongamos que, en nuestro programa Cobol, estamos trabajando con un fichero de Pedidos (PEDI), donde tenemos almacenado registros en los que se especifica un código interno de Provincia y un código de Pedido (entre otras cosas). Imaginemos que necesitamos saber cuántos pedidos, cuyo código comience por '5', hay almacenados para cada provincia.



Aunque en Universocobol.com sabemos que existen muchas posibilidades para implementar una solución, una query SQL que podría dar respuesta a nuestra necesidad sería la siguiente.

SELECT CO_PROVINCIA, COUNT(*) AS CANTIDAD
FROM JJPEDIT0                                     
WHERE CO_PROVINCIA BETWEEN 500000 AND 599999         
GROUP BY CO_PROVINCIA;                                             

Una vez vista la query a nivel general, a continuación vamos a detallar un poco más su contenido. La información especificada es la siguiente.

1º) GROUP BY: En la última línea indicamos el campo por el que deseamos que se agrupe la información de la tabla, en este caso, CO_PROVINCIA. Esto nos permitirá, posteriormente, indicar que queremos realizar un recuento de los registros existentes para cada provincia.

2º) WHERE: aquí simplemente estamos indicando que queremos recuperar los pedidos cuyo código se encuentre entre 500000 y 599999 (los que comiencen por '5').

3º) SELECT: En la primera línea tenemos que especificar el campo por el que hemos agrupado la información (CO_PROVINCIA). A continuación, incluimos la cláusula COUNT(*), con la que estamos indicando que queremos recuperar también la cantidad de registros que hay almacenados para cada uno de los diferentes valores existentes en el campo CO_PROVINCIA.

Una vez codificado todo lo anterior, podríamos lanzar la sentencia SELECT de SQL. La ejecución de la query anterior daría el resultado siguiente.



Como se puede apreciar, en la salida se están mostrando todos los códigos de CO_PROVINCIA que comienzan por '5' (en realidad, en la tabla DB2 hay más, pero aquí sólo incluimos los primeros) y, junto a ellos, una columna en la que se muestra el número de registros existentes en la tabla para cada uno de dichos códigos de provincia (según el recuento realizado por COUNT). Básicamente, esta era la información que estábamos buscando.

Eso es todo. Esperamos que lo comentado en el post sea suficiente para aclararos el funcionamiento de la cláusula COUNT(*). Si os queda alguna duda, preguntadnos lo que queráis y trataremos de responderos lo antes posible.

Saludos.

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...