1. Mostrar nombres de oficinas de la Región Centro.
SELECT nombre FROM oficina WHERE región = ' CENTRO' ;
2. Mostrar Vendedores cuyas ventas superan la meta.
SELECT
*
FROM vendedor
WHERE ventas > meta ;
3. Mostrar valor del inventario de los productos clasificado por valor
SELECT codpro, nombre, preunitario*stock
FROM producto;
ORDER BY preunitario*stock
4. Mostrar los códigos de los empleados que son directores de oficina
SELECT director
FROM oficina;
En pantalla se desplegara el siguiente pantallazo:
110
115
120
120
Como el código 120 tiene las oficinas 030 y 040 a cargo
aparecerá 2 veces.
Esto se soluciona utilizando la cláusula DISTINTC.
SELECT DISTINTC director
FROM oficina;
En pantalla se desplegara el siguiente pantallazo:
110
115
120
CONSULTAS MULTITABLA
Mostrar los Clientes con el respectivo nombre del vendedor que lo atiende.
SELECT codcli, cliente.nombre, vendedor.nombre
FROM cliente, vendedor
WHERE cliente.codven = vendedor.codven
En este caso mostrara de la Tabla CLIENTE los
atributos codcli y nombre y de la Tabla VENDEDOR mostrara el nombre
Mostrar ventas realizadas indicando nombres del cliente y del producto en vez
de los códigos.
SELECT numero, cliente.nombre, producto.nombre, cantidad,
valor
FROM pedidos, cliente, producto
WHERE pedidos.codcli = clientes.codcli
AND pedidos.codpro = producto.codpro;
CONSULTAS SUMATORIAS
Función |
Operación |
Ejemplo |
COUNT {* | (nombre-columna)} |
Cuenta numero de filas |
Select count (*) from oficina; Cuenta el numero de oficinas. |
AVG (nombre-columna) |
Calcula el promedio de todos los valores de la columna |
Select avg(meta) from vendedor; Calcula promedio de la meta |
MAX (nombre-columna) |
Calcula el valor mayor de la columna |
Select max(valor) from pedidos Calcula mayor venta realizada |
MIN (nombre-columna) |
Calcula el menor valor de la columna |
Select min(valor) from pedidos Calcula menor venta realizada |
SUM (nombre-columna) |
Calcula suma de los valores de la columna |
Select sum(valor) from pedidos Calcula suma de todas las ventas
realizadas. |
Mostrar mejor venta realizada
SELECT max(ventas)
FROM vendedor;
Mostrar numero de vendedores que han superado la meta
SELECT count(codven)
FROM vendedor
WHERE ventas > meta;
Mostrar compras totales del cliente cuyo código es 81
SELECT count (valor)
FROM cliente
WHERE codcli = 81;
CONSULTAS CON ROMPIMIENTO DE CONTROL
Para rompimientos de control se utiliza la cláusula group by . Si
la consulta solicitada requiere que algún conjunto de filas cumpla con una
condición, se utiliza el comando having en vez del where.
Mostrar total compras de cada cliente
SELECT codcli "Cliente", sum (valor) "Total"
FROM pedidos
GROUP BY codcli;
Producirá el siguiente pantallazo:
Cliente Total
3 7,500
4 20,000
7 32,000
Mostrar numero de vendedores por oficina
SELECT codofi, count(*)
FROM oficina
GROUP BY codofi;
De la tabla de pedidos mostrar el promedio de compras de aquellos clientes
que realizaron en total pedidos superiores a los $ 15,000
SELECT codcli, avg (valor)
FROM pedidos
GROUP BY codcli
HAVING sum (valor) > 15000;
SUBCONSULTAS
Otra de las facilidades que nos permite SQL es incluir una o mas consultas
dentro de una consulta, como se muestra a continuación.
Mostrar vendedores de la oficina de VILLANUEVA
SELECT codven, nombre FROM vendedor WHERE codofi = (SELECT codofi
FROM oficina WHERE nombre = 'VILLANUEVA');
Mostrar el total de compras de aquellos clientes que han realizado mas de 2
compras
SELECT codcli, sum (valor)
FROM pedidos
GROUP BY codcli
HAVING count (codcli) > 2;
Mostrar clientes que son atendidos por vendedores de las oficinas región
Centro
SELECT codcli
FROM cliente
WHERE codven IN (SELECT codven
FROM vendedor
WHERE codofi = (SELECT codofi
FROM oficina
WHERE región = 'CENTRO');
También podría ser:
SELECT codcli
FROM cliente, vendedor, oficina
WHERE cliente.codven = vendedor.codcli
AND vendedor.codofi = oficina.codofi
AND oficina.region = ' CENTRO ';
Como
ya hemos visto, con SQL se puede crear la estructura de la base de datos, se
pueden actualizar estos, pero la herramienta más poderosa es para crear informes
refinados, rápidos y bien formateados. Permitiendo un manejo sencillo sobre los
títulos, cabeceras de columnas, subtotales y totales. Es el uso más común de
SQL, consultas e impresión de informes.
PRINCIPALES COMANDOS
REMARK: Comentarios. Se puede abreviar a REM
SET HEADSEP <carácter>: Indica cual es el carácter utilizado
para partir un titulo en 2 o más líneas.
TTITLE: Titulo superior
BTITLE: Titulo inferior
COLUMN: Columnas del informe
BREAK ON: Donde imprimir subtotales o totales
COMPUTE SUM: Hace que SQL calcule totales
SET LINE SIZE: Caracteres por línea
SET PAGE SIZE: Líneas por pagina
SPOOL: Redirecciona el informe para un archivo
/* Comentarios entre varias líneas */
Ejemplo:
REM Programa ejemplo de informe con SQL
REM Descripción : Informe de ventas por articulo.
SET HEADSEP !
TTITLE ' INFORME DE VENTAS DETALLADO ! POR ARTICULO '
BTTILE ' COMPAÑÍA XYZ '
COLUMN nombre HEADING ' Nombre ! Producto ' format a18 word
-wrapped à siga en la siguiente línea
COLUMN cantidad HEADING ' Unidades '
COLUMN valor HEADING ' Valor ! Venta '
BREAK ON nompro SKIP 2 à salte 2 líneas antes de imprimir subtotales
COMPUTE SUM OF valor ON nompro
SET LINESIZE 80
SET PAGESIZE 50
SPOOL informe.lst à el informe es guardado en un archivo llamado
informe.lst
SELECT nombre, cantidad, valor
FROM pedido, producto
WHERE pedido.codpro = producto.codpro
ORDER BY nompro;
INFORME DE VENTAS DETALLADO POR ARTICULO
Nombre Unidades Valor
Producto
Venta
ESCOBAS 5 7,500
1 9,000
sub 16,500
CEPILLOS 5 11,000
Sub 11,000
JABON FAB 4 32,000
Sub 32,000
Tot 59,500
Una vista es una consulta que esta permanentemente almacenada en la base de
datos y a la que se le asigna un nombre. Es como una tabla virtual. No puede ser
modificada, gasta espacio pero es muy veloz para consultas y se actualiza
automáticamente.
Sintaxis:
CREATE VIEW nombre-vista
AS
SELECT {* | {nombre-columna(s),}
FROM {nombre-tabla(s),}
[WHERE condición]
[ORDER BY {expresion | nombre-columna [ASC | DESC]}];
Ejemplo:
Crear una vista
con el nombre Vista 1 que contenga los campos codpro, nombre, cantidad, valor
desde las tablas pedido y producto cuando el código del producto de las tablas
sean iguales.
CREATE VIEW vista 1 AS
SELECT codpro, nombre, cantidad, valor
FROM pedido, producto
WHERE pedido.codpro = producto.codpro;
Para eliminar una vista se utiliza la sentencia:
DROP VIEW nombre-vista;
|