04 noviembre 2016

NBA y COALESCE


La función COALESCE recibe varios argumentos y retorna la primer expresión distinta de nulo de la lista de dichos argumentos.


  • Sintaxis


COALESCE ( expression [ ,...n ] )


  • Argumentos


expression: Puede ser una expresión de cualquier tipo.


  • Tipos de valor devueltos

Devuelve el tipo de datos de expression con la precedencia de tipo de datos más alta.
Nota: Si todos los argumentos son NULL, COALESCE devuelve NULL.
Al menos uno de los valores NULL debe ser NULL con tipo.

COALESCE(expression1,...n) es equivalente a esta función CASE:

CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
END

ISNULL y COALESCE, aunque son equivalentes, pueden comportarse de forma diferente.
Una expresión que contenga ISNULL con parámetros diferentes de NULL se considera que es NOT NULL, mientras que las expresiones que contienen COALESCE con parámetros que son diferentes de NULL se consideran NULL.

En este ejemplo, la tabla NBA_TEAM_TICKETS_SOLDS incluye tres columnas con información acerca del precio de entradas vendidas por cada equipo de la NBA.
Para determinar el importe total por cada equipo, utilice la función COALESCE para obtener sólo los valores no NULL encontrados en hourly_wage, price y commission.



CREATE TABLE NBA_TEAM_TICKETS_SOLDS

(

party_day_wage number NULL,

price number NULL,

commission number NULL,

num_sales int NULL 

);

/

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(10.00, NULL, NULL, NULL);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(20.00, NULL, NULL, NULL);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(30.00, NULL, NULL, NULL);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(40.00, NULL, NULL, NULL);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, 10000.00, NULL, NULL);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, 20000.00, NULL, NULL);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, 30000.00, NULL, NULL);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, 40000.00, NULL, NULL);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, NULL, 15000, 3);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, NULL, 25000, 2);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, NULL, 20000, 6);

INSERT NBA_TEAM_TICKETS_SOLDS VALUES(NULL, NULL, 14000, 4);

/

SELECT CAST(COALESCE(party_day_wage * 40 * 52, price, commission * num_sales) AS money) AS 'Total sales' FROM NBA_TEAM_TICKETS_SOLDS;
/

Total Sales

------------

20800.0000

41600.0000

62400.0000

83200.0000

10000.0000

20000.0000

30000.0000

40000.0000

45000.0000

50000.0000

120000.0000


No hay comentarios:

Publicar un comentario

Por favor deja tu comentario, es valioso.