Vous êtes sur la page 1sur 9

4- Uso de sentencias avanzadas

Objetivos:

Elaborar sentencias de manejo de datos.

Introduccin:
Despus de trabajar con las sentencias de agregar, modificar, editar y visualizar datos,
debemos de ver algunas sentencias y modificadores para refinar y mejorar las bsquedas de
nuestras bases de datos.
Para realizar esta gua cargue la base de datos que esta al final del documento.
MAX y MIN
Las funciones MAX y MIN son muy similares as que las revisaremos juntas revisarlas juntas.
La funcin MAX arroja el valor ms alto para la columna especificada, y la funcin MIN arroja
el valor ms bajo.
Ambas funciones requieren que se especifique un nombre de columna. Por ejemplo,
supongamos que tenemos una tabla de las ventas por ciudad de una empresa, y necesitamos
saber cual es la venta mxima y cual es la mnima o mejor cuales es la mxima y mnima.
Tabla: vtaxciudad

Puedo obtener los resultados ejecutamos las siguientes consultas:


SELECT MAX(tot_ventas)AS 'VENTA MAYOR' FROM vtaxciudad
SELECT MIN(tot_ventas)AS 'VENTA MENOR' FROM vtaxciudad
SELECT MAX(tot_ventas)AS 'VENTA MAYOR',MIN(tot_ventas)AS 'VENTA MENOR' FROM vtaxciudad

Cuando se ejecuta esta instruccin, los resultados de la consulta incluirn solamente un valor

(una fila y una columna), como se muestra en los siguientes resultados:

Este resultado, por s mismo, no resulta de mucha ayuda. Sera mejor si los resultados de la
consulta tambin incluyeran el nombre de la ciudad. Sin embargo, SQL no soporta una
instruccin SELECT como la siguiente:
SELECT nom_ciudad,MIN(tot_ventas) AS 'VENTA MENOR' FROM vtaxciudad

Esta consulta generara un error, pues no soporta colocar una columna adicional sin un
modificador.

COUNT
Como su nombre sugiere, la funcin COUNT cuenta el nmero de filas en una tabla o el
nmero de valores en una columna, segn se especifique en la instruccin SELECT. Cuando
se utiliza la funcin COUNT, se debe especificar un nombre de columna para contar el
nmero de valores que no sean nulos en una columna, o un asterisco para contar todas las
filas en una tabla independientemente de los valores nulos. Por ejemplo, si se quiere saber
el total de registros de la siguiente tabla:
Tabla: vtaxvendedor

Elaboraremos la siguiente consulta:


SELECT COUNT(tot_ventas)AS 'Total Registros' FROM vtaxvendedor

La cual nos dar como resultado:

Tambin puede utilizar la sentencia WHERE para contar los registros de esa condicin, por
ejemplo:
SELECT COUNT(tot_ventas)AS 'Total Registros' FROM vtaxvendedor WHERE vendedor = 'Karla Alas'

Esto nos dara como resultado la cantidad de dos, que son la cantidad de registros que tiene
el vendedor seleccionado.

GROUP BY
La siguiente clusula en la instruccin SELECT es la clusula GROUP BY. La clusula GROUP
BY tiene una funcin muy diferente de la clusula WHERE. Como su nombre lo indica, la
clusula GROUP BY se utiliza para agrupar tipos de informacin con el fin de resumir datos
relacionados. La clusula GROUP BY se puede incluir en la instruccin SELECT aun si la
clusula WHERE se utiliza o no.
Si utilizamos la tabla de vtaxvendedor y queremos agrupar y saber cuantas ventas tengo
por vendedor, ejecutaremos la siguiente consulta:
SELECT vendedor AS Vendedor,SUM(tot_ventas) AS 'Total Vendido' FROM vtaxvendedor GROUP BY
vendedor

La cual nos dar el resultado siguiente:

Tambin puedo usar WHERE para solo ver el resultado de un vendedor, por ejemplo:

SELECT vendedor AS Vendedor,SUM(tot_ventas) AS 'Total Ventas' FROM vtaxvendedor WHERE


vendedor = 'Karla Alas' GROUP BY vendedor

Esto nos dar el siguiente resultado:

SUM
A diferencia de las funciones MIN y MAX, que seleccionan los valores ms alto y ms bajo de
una columna, la funcin SUM agrupa valores de columna. Esto es particularmente til
cuando se necesita encontrar los totales para datos agrupados.
Para entender mejor la funcin SUM, tomemos la tabla vtaxvendedor de ventas por
vendedor. Y pro usamos la siguiente consulta:
SELECT SUM(tot_ventas) AS TOTAL_VENDIDOS FROM vtaxvendedor

Esta nos da como resultado la siguiente pantalla.

A pesar de que la funcin SUM, al igual que cualquier otra funcin set, trata a la tabla entera
como un grupo nico si ningn dato ha sido explcitamente agrupado, si quisiera agrupar a
los vendedores y obtener el total de ventas por cada uno de ellos, realizaramos la siguiente
consulta:
SELECT vendedor AS Vendedor,SUM(tot_ventas) AS 'Total Vendido' FROM vtaxvendedor GROUP BY
vendedor

El resultado que se obtiene es el siguiente:

Si lo necesita tambin podr incorporar WHERE a su consulta.

AVG
Como se puede imaginar, la funcin AVG simplemente promedia los valores en una columna
especificada. Al igual que la funcin SUM, es ms efectiva cuando se utiliza junto con una
clusula GROUP BY, a pesar de que puede ser utilizada sin la clusula, como se muestra en
el siguiente ejemplo:
SELECT AVG(tot_ventas) AS 'Total Vendido' FROM vtaxvendedor

Lo cual nos da por resultado el siguiente:

A pesar de que esta informacin puede ser bastante til, sera de mucha ms ayuda si se
estableciera una instruccin que agrupe los datos:
SELECT vendedor as Vendedor,AVG(tot_ventas) AS 'Total Vendido' FROM vtaxvendedor GROUP BY
vendedor

Si se ejecuta esta instruccin, se obtendrn los siguientes resultados de la consulta:

Esto nos dara como resultado la venta promedio de cada vendedor.

SUBSTRING
La funcin del valor de cadena SUBSTRING extrae un nmero definido de caracteres de una
cadena de caracteres identificada para crear una nueva cadena. Esa cadena de caracteres
original puede ser derivada de una columna o puede ser declarada explcitamente. En ambos
casos, la cadena de caracteres pasa como un parmetro de la funcin SUBSTRING, junto con
un punto de inicio y una especificacin de longitud. Por ejemplo, supongamos que se quieren
arrojar solamente los primeros 5 caracteres de los valores en la columna vendedor de la
tabla vtaxvendedor.

La funcin SUBSTRING incluye tres parmetros, nombre del campo, numero de posicin de
inicio y posicin final. Se puede crear una instruccin SELECT similar a la siguiente:
SELECT SUBSTRING(vendedor,1,5) AS Abreviado FROM vtaxvendedor

Es resultado esta consulta es que tomara los primeros 5 caracteres de la columna vendedor
y los mostrara de la siguiente forma.:

BETWEEN
Hablando estrictamente, el predicado BETWEEN no es un predicado de comparacin. Sin
embargo, es lo suficientemente similar en funciones al operador Mayor que o Igual a y a los
operadores Menor que o Igual a, que vale la pena analizar aqu.
El predicado BETWEEN se utiliza en conjuncin con la palabra clave AND para identificar un
rango de valores que pueden ser incluidos como una condicin de bsqueda en la clusula
WHERE. Los valores en la columna identificada deben entrar en ese rango para poder
evaluarse, utilizando la tabla vtaxvendedor, podemos hacer la siguiente consulta:
SELECT vendedor AS Vendedor, tot_ventas AS Ventas FROM vtaxvendedor WHERE tot_ventas between
500 and 2000

Lo cual nos dara el siguiente resultado:

Nos mostrara las ventas por vendedor que estn entre 500 y 2000 dolares.
EXITS

IN
El predicado IN permite determinar si los valores en la columna especificada de una tabla
estn contenidos en una lista definida o contenidos dentro de otra tabla. En el primer caso,
se debe especificar el nombre de la columna, la palabra clave IN y una lista de valores que
son comparados a los valores en la columna especificada. En el segundo caso, se debe
especificar el nombre de la columna, la palabra clave IN y una subconsulta, que hace
referencia a la segunda tabla. En cada caso, si el valor de la columna coincide con uno de los
valores en la lista o en los resultados de la subconsulta, el predicado se evala como
verdadero y la fila es arrojada en los resultados de la consulta.
La mejor forma de ilustrar ambos de estos mtodos es por medio de ejemplos. Usando
siempre la tabla de vtaxvendedor evaluaremos la primera opcin con la siguiente consulta.
SELECT * FROM vtaxvendedor WHERE tot_ventas IN (600,700,800,900)

Esta nos dar como resultado el siguiente:

De la lista solo un registro concuerda con la lista en la clusula IN.


Otra forma es hacindolo mediante una subconsulta, para lo cual nos ayudaremos con la
tabla siguiente.
Tabla: valores

Lo que haremos mdiate la siguiente consulta es ver cuantos datos de la tabla valores
concuerdan con los datos de la tabla vtaxvendedor, la consulta es la siguiente:
SELECT * FROM vtaxvendedor WHERE tot_ventas IN (SELECT * FROM valores)

Dicha consulta logra coincidir con dos registros de la tabla y presenta los siguientes
resultados.

Datos ejemplo:
CREATE DATABASE prueba2
GO
USE prueba2
GO
CREATE TABLE vtaxciudad
(
nom_ciudad varchar(25),
tot_ventas smallmoney
)
INSERT
INSERT
INSERT
INSERT
INSERT

INTO
INTO
INTO
INTO
INTO

vtaxciudad
vtaxciudad
vtaxciudad
vtaxciudad
vtaxciudad

VALUES
VALUES
VALUES
VALUES
VALUES

('Soyapango',3456.99)
('Santa Ana',12456.23)
('Ciudad Barrios',6356.99)
('Apopa',956.00)
('San Bartolo',13756.45)

CREATE TABLE vtaxvendedor


(
vendedor varchar(25),
tot_ventas smallmoney,
sucursal int
)
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT

INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO

vtaxvendedor
vtaxvendedor
vtaxvendedor
vtaxvendedor
vtaxvendedor
vtaxvendedor
vtaxvendedor
vtaxvendedor
vtaxvendedor

VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES

('Efrain Burgos',345.56,1)
('Carlos Olmos',2345.00,1)
('Efrain Burgos',509.87,2)
('Karla Alas',3123.05,3)
('Carlos Olmos',323.76,3)
('Efrain Burgos',800.00,2)
('Carlos Olmos',654.43,2)
('Karla Alas',123.34,4)
('Carlos Olmos',450.34,5)

Vous aimerez peut-être aussi