Vous êtes sur la page 1sur 29

Diseo y Base de Datos II

Ing. Luis Reyes

Funciones de columna
Las funciones de columna slo pueden aparecer en
las clusulas SELECT y HAVING: o sea, nunca
puede utilizarse ninguna funcin de columna en la
clusula WHERE.
Esto es as porque las condiciones del WHERE se
evalan independientemente para cada fila, y una

funcin de columna sirve para agrupar los valores


que se almacenan en una columna de varias filas.

Funciones de Columna
COUNT: Nmero de valores de una columna
AVG:
Media de los valores de una columna
SUM:
Suma de los valores de una columna
MAX:
Mximo de los valores de una columna
MIN:
Mnimo de los valores de una columna
STDDEV: Desviacin tpica de los valores de una
columna
VARIANCE: Varianza de los valores de una
columna

Funciones Agregadas
Cules son las tarifas por hora mxima y mnima?

Funciones agregadas: COUNT


Cuntos edificios tienen nivel 3?

Cuntos tipos de cualificacin existen?

Slo tienen sentido COUNT(*) o

COUNT(DISTINCT columna)

Funciones agregadas: AVG


Cul es el nmero medio de das que los
empleados estn asignados al edificio 2?

Cul es el salario semanal medio?

Todas las funciones agregadas, excepto COUNT,


pueden utilizarse con expresiones

Funciones agregadas: SUM


Cul es el nmero total de das de fontanero

asignados al edificio 1?

SUM y AVG deben usarse con columnas numricas

Reglas Bsicas del GROUP by y HAVING


Las funciones de columna en el SELECT devuelven un solo valor,

por lo que no se pueden recuperar junto con otras columnas.

En el GROUP BY pueden aparecer columnas y funciones (ej.

to_char, to_number, nvl, ...), pero no funciones de columna.

Cuando el SELECT se utiliza junto con un GROUP BY, las

funciones de columna devuelven tantos valores como grupos se


formen, por lo que se pueden recuperar junto con alguna de las
columnas del GROUP BY.

En el SELECT y en el HAVING solamente se pueden poner las

columnasque aparecen en el GROUP BY, y funciones de columna


sobre el resto de columnas de la tabla.

Clusula GROUP BY
Para cada supervisor, cul es la tarifa por hora ms alta

pagada a un empleado de ese supervisor?

Si en un SELECT aparece una funcin agregada, el resto

tienen que ser tambin funciones agregadas (con excepcin


de GROUP_BY)

GROUP BY
Para cada tipo de edificio, cul es la calidad media

para edificios de estado 1?

Clusula HAVING
Para cada supervisor que supervisa a ms de un
empleado, cul es la tarifa por hora ms alta de
los empleados que supervisa?

Diferencia entre WHERE y HAVING


WHERE se aplica a tuplas
HAVING se aplica a grupos

HAVING
Para cada tipo de edificio, cul es el nivel medio
para edificios con estado 1? Considerar slo
aquellos tipos de edificio con un nivel de calidad
mximo no mayor que 3.

Orden de procesamiento: WHERE, GROUP_BY,

HAVING, SELECT

IMPORTANTE
Como vimos, las funciones de columna en el
SELECT devuelven un solo valor, por lo que no
se pueden recuperar junto con otras
columnas.
Sin embargo, cuando el SELECT se utiliza
junto con un GROUP BY, las funciones de
columna devuelven tantos valores como
grupos se formen, por lo que se pueden
recuperar junto con alguna de las columnas
del GROUP BY.

IMPORTANTE
En el SELECT y en el HAVING solamente se

pueden poner las columnas que aparecen en el


GROUP BY, y funciones de columna sobre el resto
de columnas de la tabla.