Mostrando entradas con la etiqueta COUNT. Mostrar todas las entradas
Mostrando entradas con la etiqueta COUNT. Mostrar todas las entradas

viernes, 15 de febrero de 2013

DB2 - Funciones agregadas

Las funciones agregadas reciben un conjunto de valores y devuelven un resultado de valor único para el conjunto de valores de entrada.

COUNT: devuelve el número de filas o valores de un conjunto de filas o valores. ALL es la opción por defecto, la que se aplica si se omite, e implica que la función se realiza sobre el conjunto de valores tras eliminar los nulos. Si se especifica DISTINCT, los valores duplicados se eliminan también.

 

SELECT COUNT(*)        
FROM "SYSIBM".SYSTABLES
WHERE CREATOR = 'SYSIBM' 


COUNT_BIG: el comportamiento es igual a COUNT excepto que el resultado puede ser mayor que el valor máximo de un entero. ALL es la opción por defecto, la que se aplica si se omite, e implica que la función se realiza sobre el conjunto de valores tras eliminar los nulos. Si se especifica DISTINCT, los valores duplicados se eliminan también.

 

SELECT COUNT_BIG(*)      
FROM "SYSIBM".SYSTABLES  
WHERE CREATOR = 'SYSIBM'   



SUM: devuelve la suma de un conjunto de números. ALL es la opción por defecto, la que se aplica si se omite, e implica que la función se realiza sobre el conjunto de valores tras eliminar los nulos. Si se especifica DISTINCT, los valores duplicados se eliminan también.



SELECT SUM(COLCOUNT)   
FROM "SYSIBM".SYSTABLES
WHERE CREATOR = 'SYSIBM' 


MAX: devuelve el valor máximo de un conjunto de valores. ALL es la opción por defecto, la que se aplica si se omite, e implica que la función se realiza sobre el conjunto de valores tras eliminar los nulos. Si se especifica DISTINCT, los valores duplicados se eliminan también.



SELECT MAX(COLCOUNT)    
FROM "SYSIBM".SYSTABLES 
WHERE CREATOR = 'SYSIBM' 

MIN: devuelve el valor mínimo de un conjunto de valores. ALL es la opción por defecto, la que se aplica si se omite, e implica que la función se realiza sobre el conjunto de valores tras eliminar los nulos. Si se especifica DISTINCT, los valores duplicados se eliminan también.



SELECT MIN(COLCOUNT)    
FROM "SYSIBM".SYSTABLES 
WHERE CREATOR = 'SYSIBM'


AVG: devuelve el promedio de un conjunto de números. ALL es la opción por defecto, la que se aplica si se omite, e implica que la función se realiza sobre el conjunto de valores tras eliminar los nulos. Si se especifica DISTINCT, los valores duplicados se eliminan también.

 

SELECT AVG(COLCOUNT)   
FROM "SYSIBM".SYSTABLES
WHERE CREATOR = 'SYSIBM'


VARIANCE o VARIANCE_SAMP: devuelve la varianza sesgada (/ n) de un conjunto de números. la VARIANCE_SAMP función devuelve la varianza de muestra (/ n-1) de un conjunto de números. ALL es la opción por defecto, la que se aplica si se omite, e implica que la función se realiza sobre el conjunto de valores tras eliminar los nulos. Si se especifica DISTINCT, los valores duplicados se eliminan también.

En teoría de probabilidad, la varianza de una variable aleatoria es una medida de dispersión definida como la esperanza del cuadrado de la desviación de dicha variable respecto a su media. Está medida en unidades distintas de las de la variable. Por ejemplo, si la variable mide una distancia en metros, la varianza se expresa en metros al cuadrado. La varianza tiene como valor mínimo 0. 



SELECT VARIANCE(COLCOUNT)
FROM "SYSIBM".SYSTABLES 
WHERE CREATOR = 'SYSIBM'  

  
COVARIANCE o COVARIANCE_SAMP: devuelve la covarianza (población) de un conjunto de pares de números.

La covarianza es una medida de dispersión conjunta de dos variables estadísticas. Por definición, mide el valor esperado del producto de las desviaciones con respecto a la media. 

  • Si > 0 hay dependencia directa (positiva), es decir, a grandes valores de x corresponden grandes valores de y.
  • Si = 0 se interpreta como la no existencia de una relación lineal entre las dos variables estudiadas.
  • Si < 0 hay dependencia inversa o negativa, es decir, a grandes valores de x corresponden pequeños valores de y.



SELECT COVARIANCE(COLCOUNT,KEYCOLUMNS)
FROM "SYSIBM".SYSTABLES               
WHERE CREATOR = 'SYSIBM'            
  
 
STDDEV o STDDEV_SAMP: devuelve la desviación estándar (/ n), o la desviación estándar de la muestra (/ n-1), de un conjunto de números. ALL es la opción por defecto, la que se aplica si se omite, e implica que la función se realiza sobre el conjunto de valores tras eliminar los nulos. Si se especifica DISTINCT, los valores duplicados se eliminan también.

La desviación estándar es una medida del grado de dispersión de los datos con respecto al valor promedio. Dicho de otra manera, la desviación estándar es simplemente el "promedio" o variación esperada con respecto a la media aritmética. Por ejemplo, las tres muestras (0, 0, 14, 14), (0, 6, 8, 14) y (6, 6, 8, 8) cada una tiene una media de 7. Sus desviaciones estándar muestrales son 8.08, 5.77 y 1.15 respectivamente. La tercera muestra tiene una desviación mucho menor que las otras dos porque sus valores están más cerca de 7.



SELECT STDDEV(COLCOUNT)   
FROM "SYSIBM".SYSTABLES   
WHERE CREATOR = 'SYSIBM'   


CORRELATION: devuelve el coeficiente de la correlación de un conjunto de pares de números.

En probabilidad y estadística, la correlación indica la fuerza y la dirección de una relación lineal y proporcionalidad entre dos variables estadísticas.  La correlación entre dos variables no implica, por sí misma, ninguna relación de causalidad.



SELECT CORRELATION(COLCOUNT,KEYCOLUMNS)
FROM "SYSIBM".SYSTABLES               
WHERE CREATOR = 'SYSIBM'      


Fuentes: SQL Reference (SC19-2983-03) IBM y Wikipedia

lunes, 3 de enero de 2011

Programas con DB2 III: COUNT, MAX y FOR UPDATE.

Para terminar con la saga, vamos a ver estos tres últimos casos.

SELECT COUNT:
Esta sentencia nos recuperará la cantidad de registros que cumplen una condición, es decir, lo que devuelve es un número.

EXEC SQL
   SELECT COUNT(*)
     INTO :NUMERO-REGISTROS :IND-NULL
     FROM TABLA1
    WHERE CAMPO1 = 'XX'
END-EXEC

La variable IND-NULL la definiremos como S9(4) COMP y la utilizaremos para controlar el retorno, en caso de que no encuentre ningún registro que cumpla la condición.

Controlando el SQLCODE:
EVALUATE TRUE
   WHEN SQLCODE EQUAL ZEROES
      IF IND-NULL EQUAL -1
         MOVE ZEROES TO NUMERO-REGISTROS
      END-IF
   WHEN OTHER
      DISPLAY 'ERROR HACIENDO EL SELECT COUNT. SQLCODE: 'SQLCODE
END-EVALUATE

El indicador de nulos para el caso de no encontrar ningún registro valdrá -1. Si no controlásemos el indicador de nulos, la SELECT nos devolvería un SQLCODE -305.


SELECT MAX:
Esta sentencia nos recuperará el valor máximo de un campo para una determinada condición.

EXEC SQL
   SELECT MAX(CAMPO2)
     INTO :TABLA1-CAMPO2 :IND-NULL
     FROM TABLA1
    WHERE CAMPO1 = 01
END-EXEC

El control del retorno se hará del mismo modo que para el SELECT COUNT:
EVALUATE TRUE
   WHEN SQLCODE EQUAL ZEROES
      IF IND-NULL EQUAL -1
         MOVE ZEROES TO TABLA1-CAMPO2
      END-IF
   WHEN OTHER
      DISPLAY 'ERROR HACIENDO EL SELECT COUNT. SQLCODE: 'SQLCODE
END-EVALUATE


FOR UPDATE:
Esta sentencia se utiliza para actualizar el registro en el que nos hemos posicionado con un FETCH.

EXEC SQL
   DECLARE CUR-TABLA1 CURSOR FOR
    SELECT
          CAMPO1,
          CAMPO2,
          CAMPO3,
          CAMPO4
      FROM TABLA1
     WHERE CAMPO1 = :TABLA1-CAMPO1
     FOR UPDATE OF
          CAMPO2,
          CAMPO3,
          CAMPO4
END-EXEC

En el programa haríamos un update por cada FETCH del siguiente modo:
EXEC SQL
   UPDATE TABLA1
     SET CAMPO2 = :UPD-CAMPO2,
         CAMPO3 = :UPD-CAMPO3,
         CAMPO4 = :UPD-CAMPO4
    WHERE CURRENT OF CUR-TABLA1
END-EXEC

De este modo no tendríamos que indicarle la clave del registro a actualizar, pues actualizaría el registro abierto por el FETCH.