Académique Documents
Professionnel Documents
Culture Documents
BASE DE DATOS
Byron Cuesta 16, 2013
INTEGRANTES:
Fiamma Zenith Claro Vega 190602 Ligdy Milena Orozco 190607 Jos Martn Rios Payares 190641 Ailer Alfonso Durn Coronel 190642
16, 2013
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
Listar el nombre de los clientes cuyas compras sean mayores a la cuarta parte del promedio de las ventas entre el 01/01/2012 hasta la fecha actual. SELECT DISTINCT C.NOMBRE FROM EMPRESA.CLIENTE C, EMPRESA.FACTURA F WHERE F.CLIENTE = C.DOCUMENTO AND TOTAL>(SELECT 0.25*AVG(TOTAL) AS PROMEDIO_VENTAS FROM EMPRESA.FACTURA WHERE FECHA BETWEEN 2012-01-01 AND 2013-07-13);
EJEMPLO
BASE DE DATOS
Byron Cuesta
REFERENCIAS EXTERNAS
Dentro del cuerpo de una subconsulta es necesario a menudo hacer referencia al valor de una columna de la fila actual de la consulta principal.
BASE DE DATOS
Byron Cuesta
EJEMPLO
Listar el documento, el nombre y la fecha de la primera compra de cada cliente. SELECT C.DOCUMENTO, C.NOMBRE, (SELECT MIN(F.FECHA) AS PRIMERA_COMPRA FROM EMPRESA. FACTURA F WHERE C.DOCUMENTO=F.CLIENTE) FROM EMPRESA.CLIENTE C;
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
EJEMPLO
TRAER EL NOMBRE DEL ARTICULO Y SU VALOR QUE ES EL MAS COSTOSO DE LOS PRODUCTOS OFRECIDOS SELECT NOMBRE, VALOR FROM EMPRESA.ARTICULO WHERE VALOR = (SELECT MAX(VALOR) FROM EMPRESA.ARTICULO);
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
EJEMPLO
LISTAR EL NOMBRE DE LOS ARTICULOS QUE NO SE HAN VENDIDO A LA FECHA
SELECT NOMBRE FROM EMPRESA.ARTICULO WHERE CODIGO NOT IN (SELECT DISTINCT ARTICULO FROM EMPRESA.DETALLE_FACTURA);
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
EJEMPLO
Listar los artculos para los cuales exista un pedido con cuatro o ms elementos comprados. SELECT A.CODIGO FROM EMPRESA.ARTICULO A WHERE EXISTS (SELECT SUM(D.CANTIDAD) FROM EMPRESA.DETALLE_FACTURA D WHERE D.ARTICULO = A.CODIGO HAVING SUM(D.CANTIDAD) > 4);
BASE DE DATOS
Byron Cuesta
TEST CUANTIFICADOS
Consiste en comparar el valor de una expresin con cada uno de los valores del conjunto producido por una subconsulta. SQL proporciona dos tests cuantificados ANY y ALL que extienden esta nocin a otros operadores de comparacin.
BASE DE DATOS
Byron Cuesta
TEST ANY
El test ANY se usa en conjuncin con uno de los seis operadores de comparacin de SQL (=, <>, <, <=, >, >=) para contrastar un nico valor de test con una con una columna de valores de datos producida por una subconsulta.
BASE DE DATOS
Byron Cuesta
EJEMPLO
Listar los clientes que han hecho una compra que sea mayor al 10 por ciento de las ventas. SELECT CLIENTE FROM EMPRESA.FACTURA F WHERE (0.1 * TOTAL) > ANY (SELECT D.SUBTOTAL FROM EMPRESA.DETALLE_FACTURA D WHERE F.ID= D.ID);
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
TEST ALL
El test ALL se usa en conjuncin con uno de los seis operadores de comparacin de SQL (=, <>, <, <=, >, >=) para contrastar un nico valor de test con una con una columna de valores de datos producidos por una subconsulta. Este test usa el operador de comparacin especificado para contrastar el valor de test con cada valor de datos de la columna, uno por uno.
BASE DE DATOS
Byron Cuesta
EJEMPLO
Listar la factura donde todos los subtotales sean menores al total de las ventas.
SELECT F.ID FROM EMPRESA.FACTURA F WHERE TOTAL > ALL (SELECT SUM(SUBTOTAL) FROM EMPRESA.DETALLE_FACTURA D WHERE F.ID=D.ID);
BASE DE DATOS
Byron Cuesta
BASE DE DATOS
Byron Cuesta
SUBCONSULTAS Y REUNIONES
Es posible escribir las subconsultas como consultas multitabla o reuniones. EJEMPLO: Listar la factura y el cliente que contienen el articulo 10 A SUBCONSULTA: SELECT F.ID, F.CLIENTE FROM EMPRESA.FACTURA F WHERE F.ID IN (SELECT D.ID FROM EMPRESA.DETALLE_FACTURA D WHERE D.ARTICULO='10A');
REUNIONES:
SELECT F.ID, F.CLIENTE FROM EMPRESA.FACTURA F, EMPRESA.DETALLE_FACTURA D WHERE F.ID= D.ID AND D.ARTICULO = '10A';
BASE DE DATOS
Byron Cuesta
SUBCONSULTAS ANIDADAS
Esto quiere decir que se puede usar una subconsulta dentro de otra subconsulta. EJEMPLO: Listar los nombres de los clientes cuyas facturas contengan el articulo 09 A
SELECT C.NOMBRE FROM EMPRESA.CLIENTE C WHERE C.DOCUMENTO IN (SELECT F.CLIENTE FROM EMPRESA.FACTURA F WHERE F.ID IN(SELECT D.ID FROM EMPRESA.DETALLE_FACTURA D WHERE D.ARTICULO ='09A'));