Está en la página 1de 4

26/4/2015

Tema4Lasconsultasderesumen

Tema4.Lasconsultasderesumen(I)

Bsqueda

Introduccin

EnSQLdeMicrosoftJet4.xydelamayoradelosmotoresdebasesdedatosrelacionales,podemosdefiniruntipo
de consultas cuyas filas resultantes son un resumen de las filas de la tabla origen, por eso las denominamos
consultasderesumen,tambinseconocencomoconsultassumarias.
Es importante entender que las filas del resultado de una consulta de resumen tienen una naturaleza distinta a las
filasdelasdemstablasresultantesdeconsultas,yaquecorrespondenavariasfilasdelatablaorgen.Parasimplificar,
veamoselcasodeunaconsultabasadaenunasolatabla,unafiladeunaconsulta'noresumen'correspondeaunafilade
latablaorigen,contienedatosqueseencuentranenunasolafiladelorigen,mientrasqueuna fila de una consulta de
resumencorrespondeaunresumendevariasfilasdelatablaorigen,estadiferenciaesloquevaaoriginarunaserie
derestriccionesquesufrenlasconsultasderesumenyqueveremosalolargodeltema.
En el ejemplo que viene a continuacin tienes un ejemplo de consulta normal en la que se visualizan las filas de la
tabla oficinas ordenadas por region, en este caso cada fila del resultado se corresponde con una sola fila de la tabla
oficinas, mientras que la segunda consulta es una consulta resumen, cada fila del resultado se corresponde con una o
variasfilasdelatablaoficinas.

Las consultas de resumen introducen dos nuevas clusulas a la sentencia SELECT, la clusula GROUP BY y la
clusulaHAVING,sonclusulasqueslosepuedenutilizarenunaconsultaderesumen,setienenqueescribirentre la
clusulaWHEREylaclusulaORDERBYytienenlasiguientesintaxis:

Las detallaremos en la pgina siguiente del tema, primero vamos a introducir otro concepto relacionado con las
consultasderesumen,lasfuncionesdecolumna.

http://www.aulaclic.es/sql/t_4_1.htm

1/4

26/4/2015

Tema4Lasconsultasderesumen

Funcionesdecolumna
Enlalistadeseleccindeunaconsultaderesumenaparecenfuncionesdecolumnatambindenominadas funciones
dedominioagregadas.Unafuncindecolumnaseaplicaaunacolumnayobtieneunvalorque resume el contenido
delacolumna.
Tenemoslassiguientesfuncionesdecolumna:

Elargumentodelafuncinindicaconquvaloressetienequeoperar,poresoexpresin suele ser un nombre de


columna,columnaquecontienelosvaloresaresumir,perotambinpuede ser cualquier expresin vlida que devuelva
unalistadevalores.
LafuncinSUM()calculalasumadelosvaloresindicadosenelargumento.Losdatosquesesumandebenserde
tiponumrico(entero,decimal,comaflotanteomonetario...).Elresultadoserdelmismotipoaunquepuedeteneruna
precisinmayor.
Ejemplo:
SELECTSUM(ventas)
FROMoficinas

Obtieneunasolafilaconelresultadodesumartodoslosvaloresdelacolumnaventas
delatablaoficinas.

La funcin AVG() calcula el promedio (la media arimtica) de los valores indicados en el argumento, tambin se
aplica a datos numricos, y en este caso el tipo de dato del resultado puede cambiar segn las necesidades del
sistemapararepresentarelvalordelresultado.
StDev() y StDevP() calculan la desviacin estndar de una poblacin o de una muestra de la poblacin
representada por los valores contenidos en la columna indicada en el argumento. Si la consulta base (el origen) tiene
menosdedosregistros,elresultadoesnulo.
Es interesante destacar que el valor nulo no equivale al valor 0, las funciones de columna no consideran los
valores nulos mientras que consideran el valor 0 como un valor, por lo tanto en las funciones AVG(), STDEV(),
STDEVP()losresultadosnosernlosmismosconvalores0queconvaloresnulos.Vemosloconunejemplo:
Sitenemosesta
tabla:

Laconsulta

devuelve:

Enestecasoloscerosentranen
lamediaporloquesaleiguala4
(10+5+0+3+6+0)/6=4

devuelve:

Enestecasoloscerossehan
sustituidoporvaloresnulosyno
entranenelclculoporloquela
mediasaleiguala6
(10+5+3+6)/4=4

SELECTAVG(col1)ASmedia
FROMtabla1

Conestaotratabla:

SELECTAVG(col1)ASmedia
FROMtabla2

http://www.aulaclic.es/sql/t_4_1.htm

2/4

26/4/2015

Tema4Lasconsultasderesumen

Las funciones MIN() y MAX() determinan los valores menores y mayores respectivamente. Los valores de la
columna pueden ser de tipo numrico, texto o fecha. El resultado de la funcin tendr el mismo tipo de dato que la
columna.SilacolumnaesdetiponumricoMIN()devuelveelvalormenorcontenidoenlacolumna,silacolumnaes
detipotextoMIN()devuelveelprimervalor en orden alfabtico, y si la columna es de tipo fecha, MIN() devuelve la
fechamsantiguayMAX()lafechamsreciente.
Lafuncin COUNT(nb columna) cuenta el nmero de valores que hay en la columna, los datos de la columna
pueden ser de cualquier tipo, y la funcin siempre devuelve un nmero entero. Si la columna contiene valores nulos
esosvaloresnosecuentan,sienlacolumnaapareceunvalorrepetido,locuentavariasveces.
COUNT(*)permitecontarfilasenvezdevalores.Silacolumnanocontieneningnvalornulo,COUNT(nbcolumna)
yCOUNT(*)devuelvenelmismoresultado,mientrasquesihayvaloresnulosenlacolumna,COUNT(*) cuenta tambin
esosvaloresmientrasqueCOUNT(nbcolumna)noloscuenta.
Ejemplo:
Cuntosempleadostenemos?
SELECTCOUNT(numemp)
FROMempleados
obien
SELECTCOUNT(*)
FROMempleados
Enestecasolasdossentenciasdevuelenelmismoresultadoyaquelacolumnanumempnocontienevaloresnulos(es
laclaveprincipaldelatablaempleados).
Cuntosempleadostienenunaoficinaasignada?
SELECTCOUNT(oficina)
FROMempleados
Estasentenciaporelcontrario,nosdevuelveelnmerodevaloresnonulosqueseencuentranenlacolumnaoficinade
latablaempleados,porlotantonosdicecuntosempleadostienenunaoficinaasignada.
Se pueden combinar varias funciones de columna en una expresin pero no se pueden anidar funciones de
columna,esdecir:
SELECT(AVG(ventas)*3)+SUM(cuota)
FROM...
escorrecto

SELECTAVG(SUM(ventas))
FROM...
NOescorrecto,nosepuedeincluirunafuncinde
columnadentrodeunafuncindecolumna

Seleccinenelorigendedatos.
Siqueremoseliminardelorigendedatosalgunasfilas,bastaincluir la clusula WHERE que ya conocemos despus
delaclusulaFROM.
Ejemplo:Queremossaberelacumuladodeventasdelosempleadosdelaoficina12.
SELECTSUM(ventas)
FROMempleados
WHEREoficina=12

http://www.aulaclic.es/sql/t_4_1.htm

3/4

26/4/2015

Tema4Lasconsultasderesumen

Origenmltiple.
Si los datos que necesitamos utilizar para obtener nuestro resumen se encuentran en varias tablas, formamos el
origendedatosadecuadoenlaclusulaFROMcomosifueraunaconsultamultitablanormal.
Ejemplo: Queremos obtener el importe total de ventas de todos los empleados y el mayor objetivo de las oficinas
asignadasalosempleados:
SELECTSUM(empleados.ventas),MAX(objetivo)
FROMempleadosLEFTJOINoficinasONempleados.oficina=oficinas.oficina
NOTA:combinamosempleadosconoficinasporunLEFTJOINparaqueaparezcanenelorigendedatostodoslos
empleadosinclusolosquenotenganunaoficinaasignada,aselorigendedatosestarformadoporunatablacontantas
filascomoempleadoshayanenlatablaempleados,conlosdatosdecadaempleadoydelaoficinaalaqueest
asignado.Deestatablasacamoslasumadelcampoventas(importetotaldeventasdetodoslosempleados)yel
objetivomximo.Observarqueelorigendedatosnoincluyelasoficinasquenotienenempleadosasignados,porloque
esasoficinasnoentranalahoradecalcularelvalormximodelobjetivo.

Pag.4.1
Avisolegal:estecursoesgratuitosiemprequesevisualicedesdelapginawebdeaulaClic.Noestpermitidodescargarel
cursoniutilizarloenacademiasocentrosdeenseanzaprivadossinestarconectadoaInternet.
aulaClic.Todoslosderechosreservados.FreeComputertutorials.Prohibidalareproduccinporcualquiermedio.
Junio2001.aulaClic.com

http://www.aulaclic.es/sql/t_4_1.htm

4/4

También podría gustarte