You are on page 1of 53

INTRODUCCIÓN A LAS CONSULTAS SQL EN

ACCESS
¿QUÉ ES SQL?
SQL es un lenguaje de computación para trabajar con conjuntos de
datos y las relaciones entre ellos. Los programas de bases de datos
relacionales, como Microsoft Office Access, usan SQL para trabajar
con datos. A diferencia de muchos lenguajes de computación, SQL
no es difícil de leer y entender, incluso para un usuario inexperto.
• Lenguaje de consulta estructurado (SQL: Structured Query
Languague) .
• Es un lenguaje de base de datos normalizado.
• Utilizado para consultar, modificar o eliminar datos en una Base de
Datos Relacional.
COMPONENTES DE SQL
1. Comandos
2. Cláusulas
3. Operadores
4. Funciones de agregado (funciones de columna)
Estos elementos se combinan en las instrucciones para
crear, actualizar y manipular las bases de datos.
COMANDOS
Existen 2 tipos:
1. DML (Data Manipulation Language – Lenguaje de Manipulación de Datos):
Los usaremos de manera más habitual para consultar, generar o actualizar
información de la base de datos.
- SELECT
- INSERT
- UPDATE
- DELETE

2. DDL (Data Definition Language – Lenguaje de Definición de Datos): Se encarga


de la manipulación de los objetos de la base de datos, por ejemplo, crear y
definir nuevas bases de datos, campos e índices.
- CREATE
- DROP
- ALTER
1. COMANDOS DML
COMANDO DESCRIPCIÓN
SELECT Permite seleccionar las columnas que se van a mostrar y en el
orden en que lo van a hacer. Simplemente es la instrucción que
la base de datos interpreta como vamos a solicitar información
INSERT Utilizado para cargar lotes de datos en la base de datos en una
única operación
UPDATE Utilizado para modificar los valores de los campos y registros
especificados
DELETE Utilizado para eliminar registros de una tabla de una base de
datos
2. CLÁUSULAS
Existen muchas cláusulas asociadas al comando o sentencia SELECT
Cláusula Función
FROM Muestra las tablas que contienen los campos de la cláusula
SELECT
WHERE Especifica la condición de filtro de las filas devueltas. Se utiliza
cuando no se desea que se devuelvan todas las filas de una tabla,
sino sólo las que cumplen ciertas condiciones
ORDER BY Especifica la forma de ordenar los resultados
GROUP BY En una instrucción SQL que contiene funciones de agregado,
muestra los campos que no se resumen en la cláusula SELECT
HAVING En una instrucción SQL que contiene funciones de agregado,
especifica las condiciones que se aplican a los campos que se
resumen en la instrucción
3. OPERADORES
LÓGICOS:
Operador Uso
AND Es el “Y” lógico. Evalúa dos o más condiciones y devuelve un
valor lógico VERDADERO sólo si todas las condiciones se
cumplen o son ciertas
OR Es el “O” lógico. Evalúa dos o más condiciones y devuelve un
valor lógico VERDADERO, si al menos una de todas se cumple o
es verdadero
NOT Negación lógica. Devuelve el valor contrario de la expresión
3. OPERADORES
DE COMPARACIÓN
Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor ó Igual que
>= Mayor ó Igual que

DE VALOR NULO
IS [NOT] NULL (para comprobar si el valor de una columna es o no es nula, es
decir, si contiene o no contiene algún valor)
Una fila y también un campo es NULL si está completamente vacía o vacío.
3. OPERADORES
DE CORRESPONDENCIA CON PATRÓN
LIKE: para la comparación de un modelo. Para ello utiliza los
caracteres comodín especiales: ASTERISCO, ALMOHADILLA y CIERRE
DE PREGUNTA (*, ?, #). Con * indicamos que en su lugar puede ir
cualquier cadena de caracteres; con ?, que puede ir cualquier
carácter individual (un solo carácter) y con #, cualquier dígito (0-9).
Con la combinación de estos caracteres podremos obtener múltiples
patrones de búsqueda. Por ejemplo:
El nombre empieza por A: Nombre LIKE ‘A*’
El nombre acaba por A: Nombre LIKE ‘*A’
El nombre contiene la letra A: Nombre LIKE ‘*A*’
3. OPERADORES
DE RANGO O INTERVALO
BETWEEN: para un intervalo de valores. Por ejemplo:
- Códigos de clientes entre el 30 y el 100: CodCliente BETWEEN 30
AND 100
- Clientes nacidos entre 1970 y 1979: FechaNac BETWEEN
#01/01/1970# AND #12/31/1979#
DE PERTENENCIA A UN CONJUNTO
IN( ): para especificar una relación de valores concretos. Por
ejemplo: Ventas de los Clientes 10, 15, 30 y 75: CodCliente IN (10,
15, 30, 75)
3. OPERADORES
Por supuesto es posible combinar varias condiciones simples de los
operadores anteriores utilizando los operadores
lógicos OR, AND y NOT, así como el uso de paréntesis para controlar
la prioridad de los operadores (como en matemáticas). Por
ejemplo: … (Cliente = 100 AND Provincia = 30) OR Ventas > 1000
… que sería para los clientes de las provincias 100 y 30 o cualquier
cliente cuyas ventas superen 1000.
4. FUNCIONES DE COLUMNA
En la lista de selección (después de SELECT) de una consulta de
resumen aparecen funciones de columna también denominadas
funciones de dominio agregadas. Una función de columna se aplica
a una columna y obtiene un valor que resume el contenido de la
columna
Comando Descripción
AVG Calcula el promedio de los valores de un campo determinado
COUNT Devuelve el número de registros del campo seleccionado
SUM Devuelve la suma de todos los valores de un campo determinado
MAX Devuelve el valor más alto de un campo especificado
MIN Devuelve el valor más bajo de un campo especificado
CONSULTAS SQL EN ACCESS
Una consulta es un objeto de Access que se utiliza para
localizar, organizar o editar los datos contenidos en tablas.
Son tres tipos de consultas a implementar en Access:
Consulta de selección, para localizar los registros de una tabla que
cumplan unas condiciones determinadas; es la más sencilla, se
indican unos criterios para ver sólo lo que interesa de una tabla. Los
datos aparecen en la Hoja de respuestas dinámicas, esta parece
una tabla pero no lo es, sólo muestra los datos de una tabla o
de varias tablas según los criterios de la consulta. Aunque la
hoja de respuestas dinámica no es una tabla se pueden introducir
datos en las tablas a través de ella.
CONSULTAS SQL EN ACCESS
Consultas de acción, diseñadas para modificar, añadir o
reemplazar datos, eliminar registros, etc.; estas consultas de
acción son especialmente útiles cuando se quieren modificar
muchos datos de una tabla que cumplen determinada condición , y
Consultas de parámetros, que permiten seleccionar los registros
que cumplen con los valores introducidos como parámetros en el
momento de la ejecución de la consulta.
CONSULTAS SQL EN ACCESS
Las consultas admiten tres modos de presentación:
1. Vista Diseño: abre la ventana Diseño de la consulta, en la
que podremos crear o modificar su estructura.
2. Vista hoja de datos: ejecuta la consulta y preséntale resultado
en una hoja de datos que permite ver, agregar o editar los
registros.
3. Vista SQL: permite crear o modificar una consulta usando
instrucciones del lenguaje de consultas estructurado SQL
En este curso, se desarrolla el tema de diseño de consultas
mediante el uso del modo Vista SQL.
Uso del Editor de Consultas SQL en Access
Menú Crear, Diseño de consulta.
Cerrar la ventana Mostrar tabla
Luego en la pestaña Consulta1
Dar clic derecho y seleccionar
Vista SQL.
Uso del Editor de Consultas SQL en Access
Aparecerá una ventana similar a la siguiente con el comando
SELECT;
A partir de ese momento ya
podemos introducir código en
SQL, por ejemplo:
SELECT * FROM Customers;

El ícono para ejecutar la consulta es


el siguiente:
Base de datos Northwind para consultas
Consultas de Selección básicas
Las consultas en SQL pueden ser muy complejas. Empezaremos
con las sencillas e iremos progresando, hasta las más
complejas. La forma básica de la sentencia SELECT, está
formada por las cláusulas
SELECT, FROM y WHERE y tiene la siguiente forma:
Consultas de Selección básicas

donde:
<lista de atributos> es una lista de los atributos cuyos valores serán
recuperados por la consulta.
<lista de tablas> es una lista de las relaciones necesarias para
procesar la consulta.
<condición> es una expresión condicional (booleana) que
identifica las tuplas (registros) que la consulta recuperará.
Consultas de Selección básicas
Ejemplos
SELECT * FROM Customers;

SELECT * FROM Employees;

Las consultas anteriores, por separado, devuelven todos los


registros de la tabla Customers (Clientes) y todos los de la tabla
Employees (Empleados)
CONSULTAS DE SELECCIÓN BÁSICAS
Ejemplos
La siguiente consulta devuelve el nombre del contacto, ciudad y
país (ContactName, City, Country) de todos los registros de la tabla
Customers (Clientes)
SELECT ContactName, City, Country
FROM Customers;

Ejercicio: Escribir una consulta SQL que devuelva el Codigo,


Nombre y Ciudad (CustomerID, CustomerName, City) de los
registros de la tabla Clientes (Customers)
CONSULTAS DE SELECCIÓN BÁSICAS
Ordenar los registros recuperados
Mediante la cláusula ORDER BY <lista de campos> ASC/DESC, se puede
especificar el orden en que se desea recuperar los registros. Si se omite DESC se
asume ASC.
La siguiente consulta devuelve el nombre del contacto, ciudad y país
(ContactName, City, Country) de tabla Customers (Clientes) ordenados ASC por
país (Country) SELECT ContactName, City, Country
FROM Customers
WHERE Country='Mexico'
ORDER BY City;
Ejercicio: Escribir una consulta SQL que devuelva el Codigo, Nombre y Ciudad
(CustomerID, CustomerName, City) de los clientes de Brazil, ordenados DESC por
ciudad (City)
CONSULTAS CON PREDICADO
ALL/TOP/DISTINCT/DISTINCTROW
El predicado se incluye entre la cláusula y el primer nombre del campo a
recuperar
Predicado Descripción
ALL Devuelve todos los campos de la tabla
TOP Devuelve un determinado número de registros de la tabla
DISTINCT Omite los registros cuyos campos seleccionados coincidan
totalmente
DISTINCTROW Omite los registros duplicados basándose en la totalidad del
registro y no sólo en los campos seleccionados
CONSULTAS CON PREDICADO
ALL
SELECT ALL * FROM Customers;
SELECT * FROM Customers;
Las consultas anteriores, son equivalentes y, por separado,
devuelven lo mismo: todos los registros de la tabla Customers
(Clientes)

No es conveniente abusar de este predicado ya que obligamos al


motor de la base de datos a analizar la estructura de la tabla para
averiguar los campos que contiene, es mucho más rápido indicar el
listado de campos deseados.
CONSULTAS CON PREDICADO
TOP
TOP n [PERCENT], devuelve un número determinado de registros
que se encuentran en la parte superior o inferior de un intervalo
especificado por una cláusula ORDER BY. Ejemplo1:
SELECT TOP 25 ContactName, City
FROM Customers
ORDER BY ContactName;
Si no incluye la cláusula ORDER BY, la consulta devolverá un
conjunto arbitrario de 25 registros de la tabla Customers que
cumplan la cláusula WHERE.
CONSULTAS CON PREDICADO
TOP
Ejemplo2: Escribir una consulta de selección que devuelva el código
del producto, nombre y precio (ProductID, ProductName, Price) de
los primeros 10 productos con el precio más bajo.
SELECT TOP 10 ProductID, ProductName, Price
FROM Products
ORDER BY Price;
El predicado TOP no elige entre valores iguales. En el ejemplo
anterior si el precio 10 y 11 de la consulta valen lo mismo la
consulta devuelve 11 ó mas registros por los valores repetidos.
CONSULTAS CON PREDICADO
TOP
Se puede utilizar la palabra reservada PERCENT para devolver un
cierto porcentaje de registros que caen al principio o al final de un
rango especificado por la cláusula ORDER BY.
SELECT TOP 10 PERCENT ProductID, ProductName, Price
FROM Products
ORDER BY Price;

El predicado TOP no elige entre valores iguales. En el ejemplo


anterior si el precio 10 y 11 de la consulta valen lo mismo la
consulta devuelve 11 registros.
CONSULTAS CON PREDICADO
DISTINCT
Omite los registros que contienen datos duplicados en los campos
seleccionados. Para que los valores de cada campo listado en la
instrucción SELECT se incluyan en la consulta deben ser únicos.
Por ejemplo, varios empleados listados en la tabla Employees
(Empleados) pueden tener el mismo apellido y nombre. Si dos
registros contienen Robert en campo FirstName (PrimerNombre) y
King en el campo LastName (Apellido), la siguiente instrucción
SQL devuelve un único registro de Robert King:
SELECT DISTINCT FirstName, LastName
FROM Employees;
CONSULTAS CON PREDICADO
DISTINCTROW
Devuelve los registros diferentes de una tabla; a diferencia del predicado
anterior que sólo se fijaba en el contenido de los campos seleccionados,
éste lo hace en el contenido del registro completo independientemente
de los campos indicados en la cláusula SELECT.
Si la tabla Empleados contiene dos registros: Robert King, como ya
vimos en el ejemplo anterior, DISTINCTROW devuelve ambos registros
porque además de buscar duplicados en los campos indicados en SELECT,
busca duplicados todas las columnas de cada registro.
SELECT DISTINCTROW FirstName, LastName
FROM Employees;
Consultas SQL con ALIAS
para Campos
Es posible dar un alias (otro nombre) a los títulos de las columnas de
una consulta, que no es el mismo que posee en la Base de Datos.
Para resolverlo tenemos la palabra reservada AS que se encarga de
asignar el nombre o ALIAS a la columna deseada. Ejemplo:

SELECT FirstName AS Nombre, LastName AS Apellido


FROM Employees;
Consultas SQL con ALIAS
para Tablas
También es posible dar un alias (otro nombre) al nombre de la tabla en una
consulta. Para resolverlo se usa la misma palabra reservada AS que se encarga de
asignar el nombre o ALIAS a la tabla. Ejemplo:
SELECT e.FirstName, e.LastName
FROM Employees AS e;

Los alias se utilizan normalmente en los siguientes casos:


Cuando se utilizan funciones en una consulta
Cuando hay más de una tabla en una consulta
Cuando los nombres de los campos son muy grandes o difíciles de leer
Cuando se combinan más de dos columnas
CRITERIOS DE SELECCIÓN
Importancia
Cada vez que se desee establecer una condición referida a un campo
de texto la condición de búsqueda debe ir encerrada entre comillas
simples. Las fechas se deben escribir siempre en formato mm-dd-aa
en donde mm representa el mes, dd el día y aa el año.
Además la fecha debe ir encerrada entre almohadillas (#). Por
ejemplo si deseamos referirnos al día 3 de octubre de 2017,
deberemos hacerlo de la siguiente forma; #10-03-2017# ó #10-3-
2017#.
CRITERIO DE SELECCIÓN CON
WHERE, Operadores de Comparación y Lógicos
La cláusula WHERE puede usarse para determinar qué registros de
las tablas enumeradas en la cláusula FROM aparecerán en los
resultados de la instrucción SELECT. Ejemplos.
SELECT * FROM Products WHERE Price > 25 AND Price < 50
ORDER BY Price;
SELECT * FROM Employees WHERE NOT FirstName='Nancy';

SELECT ContactName, City, Country


FROM Customers
WHERE (City='London' AND Country='UK') OR Country='France'
ORDER BY Country DESC;
CRITERIO DE SELECCIÓN CON
WHERE, Operadores de Comparación y Lógicos
Ejercicios:
1. Escribir una consulta que devuelva los precios de productos que están entre
25 y 30, incluyendo ambos valores, el orden es descendente. Guardar como:
PreciosEntre25y30
2. Escribir una consulta que devuelva la lista de empleados, menos a Nancy y
Margaret. Ordenar por nombre. Guardar como: NotNancyMargaret
3. Modificar la consulta 3 de manera que para Francia solo muestre la ciudad de
Paris, el resto no cambia. Guardar como: ContactosLondonParis
CRITERIO DE SELECCIÓN CON
BETWEEN
Si queremos recuperar los registros según el intervalo de valores de
un campo, emplearemos el operador BETWEEN. Sintaxis:
(campo [Not] Between valor1 And valor2.
(Operador Not es opcional)
La consulta devolvería los registros que contengan en "campo" un
valor incluido en el intervalo valor1 Y valor2 (ambos inclusive). Si
anteponemos la condición Not devolverá aquellos valores no
incluidos en el intervalo.
CRITERIO DE SELECCIÓN
BETWEEN - Ejemplos
Ejem1. Consulta SQL que devuelve el nombre y precio de productos,
cuyo valor está entre $10 y $20, ordenar por precio. Guardarla como
Between1
SELECT ProductName, Price
FROM Products WHERE Price BETWEEN 10 AND 20 ORDER BY Price;

Ejer1. Hacer una consulta que haga lo mismo que la anterior, sin uso
de Between
SELECT ProductName, Price
FROM Products WHERE Price>=10 AND Price<=20 ORDER BY Price;
CRITERIO DE SELECCIÓN
BETWEEN - Ejemplos
Ejem2. Consulta SQL que devuelve el nombre y precio de 30 productos, de
menor a mayor, hace una valoración de ‘barato’ si está entre $1 y $15, o
‘caro’ para el resto. Guardar como: Top30BaratosEntre1y15
SELECT TOP 30 ProductName, Price, IIf(Price BETWEEN 1 AND
15,'Barato','Caro') AS Valoración
FROM Products ORDER BY Price;

Ejer2. Consulta SQL que devuelva el nombre y precio de los productos.


Valorar con ‘Me gusta’ si precio está entre $20 y $30 y ‘No me interesa’
para el resto. Ordena como quieras. Guardar como: MeGustanEntre20y30
SELECT ProductName, Price, IIf(Price BETWEEN 20 AND 30,'Me
gusta','No me interesa') AS Valoración
FROM Products ORDER BY Price;
CRITERIO DE SELECCIÓN
BETWEEN - Ejemplos
Ejem3. Consulta SQL que devuelve el nombre, apellido y fecha de
nacimientos entre 1960 y 1963. Además los ordena fecha de nacimiento.
Guardar como: NacidosEntre60y63
SELECT FirstName, LastName, BirthDate FROM Employees
WHERE BirthDate BETWEEN #01/01/1960# AND #12/31/1963#
ORDER BY BirthDate;

Ejem4. La siguiente consulta devuelve los nacidos en 1960 ó 1963,


extrayendo el año de la fecha (BirthDate) con la función Year()
SELECT FirstName, LastName, BirthDate FROM Employees
WHERE Year(BirthDate)=1960 OR Year(BirthDate)=1963
ORDER BY BirthDate;
CRITERIO DE SELECCIÓN
BETWEEN - Ejemplos
Ejer3. Escribir una consulta SQL que devuelva el código de pedido (OrderID)
y la fecha de pedido (OrderDate) de los pedidos de Enero de 1997. Nombre
de la consulta: PedidosEnero97
SELECT

Ejer4. Escribir una consulta que devuelva todos los pedidos de 1997, usando
la función Year(). Guardar como: PedidosYear97

SELECT
CRITERIO DE SELECCIÓN CON
IN
Este operador devuelve aquellos registros cuyo campo indicado
coincide con alguno de los indicados en una lista. Sintaxis:
Campo [Not] In(valor1, valor2, . . . valorN)
La consulta devolvería los registros que contengan en "campo" un
valor incluido en la lista: valor1, valor2, …valorN). Si anteponemos la
condición Not devolverá aquellos valores que no estén en la lista.
CRITERIO DE SELECCIÓN CON
IN - Ejemplos
Ejem1. Consulta SQL que devuelve el nombre de contacto y ciudad de
Clientes que son de las ciudades (Sevilla, Madrid y Barcelona.
Guardarla como: ContactosEnSevillaMadridBarcelona
SELECT ContactName, City FROM Customers WHERE City
In ('Sevilla', 'Madrid', 'Barcelona');

Ejer1. Hacer una consulta que devuelva el nombre de contacto y el


país de los clientes de (Spain, France y UK) . Ordenar por país.
Guardar como: ClientesEnFranceSpainUK
SELECT ContactName, Country FROM Customers WHERE Country
In ('Spain', 'France', 'UK') ORDER BY Country;
CRITERIO DE SELECCIÓN CON Operador LIKE y
caracteres comodines: *, ? y #
Compara un expresión de cadena un patrón en una expresión SQL.
Sintaxis:
expresión [Not] LIKE Patrón o Modelo
Donde: expresión, es una expresión SQL usada en una cláusula
WHERE. Patrón o modelo, es una cadena de caracteres que se
comparan con expresión. Not devolverá aquellos valores que no
coinciden con el modelo o patrón.
Los caracteres de comodín más usados son: *, ? Y #. *: representa
muchos caracteres, ?: un solo carácter y #: un solo dígito (0-9).
CRITERIO DE SELECCIÓN CON Operador LIKE y
caracteres comodines: *, ? y #
Tipo de resultado Patrón o Modelo Coincide No coincide
Varios caracteres a*a aa, aBa, aBBBa aBC
*ab* abc, AABB, Xab aZb, bac
Carácter especial a[*]a a*a aaa
Varios caracteres ab* abcdefg, abc cab, aab
Un único carácter a?a aaa, a3a, aBa aBBBa
Un único dígito a#a a0a, a1a, a2a aaa, a10a
Intervalo de caracteres [a-z] f, p, j 2, &
Fuera de un intervalo [!a-z] 9, &, % b, a
Sin dígito [!0-9] A, a, &, ~ 0, 1, 9
Combinado a[!b-m]# An9, az0, a99 abc, aj0
CRITERIO DE SELECCIÓN CON Operador LIKE y
caracteres comodines: *, ? y #. Ejemplos
SELECT FirstName, LastName FROM Employees WHERE LastName LIKE 'fuller';
SELECT FirstName, LastName FROM Employees WHERE FirstName LIKE 'steven';
SELECT FirstName, LastName FROM Employees WHERE FirstName LIKE 'a*';
SELECT FirstName, LastName FROM Employees WHERE FirstName LIKE '*a*';
SELECT FirstName, LastName FROM Employees WHERE FirstName LIKE '*a';
SELECT FirstName, LastName FROM Employees WHERE LastName LIKE '*a?an';
CONSULTAS DE RESUMEN - Introducción
Registros Agrupados
Las consultas de resumen introducen
dos nuevas cláusulas a la sentencia
SELECT, la cláusula GROUP BY y la
cláusula HAVING, son cláusulas que
sólo se pueden utilizar en una
consulta de resumen, se tienen que
escribir entre la cláusula WHERE y la
cláusula ORDER BY y tienen la
siguiente sintaxis:
CONSULTAS DE RESUMEN - Introducción
Registros Agrupados
Con la cláusula GROUP BY se pueden obtener subtotales. Una consulta con
una cláusula GROUP BY se denomina consulta agrupada ya que agrupa los
datos de la tabla origen y produce una única fila resumen por cada grupo
formado. Las columnas indicadas en el GROUP BY se llaman columnas de
agrupación.
Los valores Null en los campos GROUP BY se agrupan y no se omiten. No
obstante, los valores Null no se evalúan en ninguna de las funciones SQL
agregadas.
Se utiliza la cláusula WHERE para excluir aquellas filas que no desea
agrupar, y la cláusula HAVING para filtrar los registros una vez agrupados
CONSULTAS DE RESUMEN - Introducción
Funciones de Columna
En la lista de selección de una consulta de resumen aparecen funciones de
columna también denominadas funciones de dominio agregadas. Una
función de columna se aplica a una columna y obtiene un valor que
resume el contenido de la columna.
CONSULTAS DE RESUMEN - Introducción
Consulta normal vs. Consulta Resumen
CONSULTAS DE RESUMEN - Ejemplos
Ejem1. Consulta resumen que agrupa por código de producto (ProductID)
para obtener las veces que se pide el producto COUNT() y la cantidad de
producto pedido SUM() en todas las órdenes de pedido.
SELECT ProductID, COUNT(ProductID) AS NumPedidos, SUM(Quantity) AS Cantidad
FROM OrderDetails GROUP BY ProductID;

Si queremos saber cuál es el producto más pedido, ordenamos la consulta por la


suma de cantidad así:
SELECT ProductID, SUM(Quantity) AS Cantidad FROM OrderDetails
GROUP BY ProductID
ORDER BY SUM(Quantity) DESC;
CONSULTAS DE RESUMEN - Ejemplos
Ahora queremos que la consulta devuelva solamente aquellas cantidades de
producto pedido, mayores a 200. Uso de HAVING

SELECT ProductID, SUM(Quantity) AS Cantidad FROM OrderDetails


GROUP BY ProductID
HAVING SUM(Quantity)>200
ORDER BY SUM(Quantity);

Enseguida queremos saber solamente las cantidades máximas y mínimas


pedidas de cada producto así:
SELECT ProductID, MAX(Quantity) AS MaxCantPedida, MIN(Quantity) AS
MinCantPedida FROM OrderDetails
GROUP BY ProductID
ORDER BY ProductID;
CONSULTAS DE RESUMEN - Ejercicios
Ejer1. Escribir una consulta SQL que cuente la cantidad de productos por código
(ProductID) como NumProductos, que totalice las cantidades (Quantity) pedidas
de cada producto como TotalUnidades, por cada orden de pedido (OrderID).
Ayuda: el campo que se debe agrupar es el OrderID de la tabla OrderDetails

Modifica la consulta anterior para que ordene desde la mayor cantidad de


unidades pedidas ¿Qué num de pedido tiene la mayor cantidad?
BIBLIOGRAFÍA
https://sistemaspdfs.files.wordpress.com/2010/05/cursosql.pdf

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

https://msdn.microsoft.com/en-us/library/bb208930%28v=office.12%29.aspx
http://quidel.inele.ufro.cl/~pvalenzu/tutoriales/sql/sql.html