Group Functions


Group Functions

SQL provides some simple functions that can be used to derive information from relations as a result of processing the data held. These functions include:
  • COUNT: returns a count of tuples evaluating to true for a given constrain.
  • MIN: returns the lowest value for an attribute.
  • MAX: returns the highest value for an attribute.
  • SUM: returns the sum of values for a numeric attribute.
  • AVG: returns the average value for a numeric attribute.
  • STDEV: returns the standard deviation for a numeric attribute.
  • VARIANCE: returns the variance for a numeric attribute.

SQL proporciona algunas funciones simples que pueden ser usados para derivar resultados en función de los datos establecidos en las tablas. Las principales funciones son:
  • COUNT: regresa el número de renglones que se evalúan verdadero para una restricción dada.
  • MIN: regresa el valor mínimo de un atributo.
  • MAX: regresa el valor máximo de un atributo.
  • SUM: regresa la suma de los valores numéricos de un atributo.
  • AVG: regresa el promedio de los valores de un atributo.
  • STDEV: regresa la desviación estándar de los valores de un atributo.
  • VARIANCE: regresa la varianza de los valores de un atributo.

Tip
The processing functions ignored NULL values.
Las funciones de proceso por grupo ignoran los valores NULL.

Tip
The processing functions support the DISTINCT and ALL operators to provide a better processing control.
Las funciones de proceso por grupo soportan los operadores DISTINCT y ALL para proporcionar un mejor control.

Problem 1
circuit_city > Test the following SQL command.
Pruebe el siguiente comando de SQL.

SQL
SELECT
     SUM(cost),
     AVG(cost),
     MIN(cost),
     MAX(cost)
FROM item;

cc_maxMin

Problem 2
circuit_city > Write an SQL statement to display the items in order 2002 as shown.
Escriba un comando SQL para mostrar los artículos en la orden 2002 como se muestra.

cc_2002

Problem 3
circuit_city > Write an SQL statement to display the price of the cheapest and most expensive item in order 2002 as shown.
Escriba un comando SQL para mostrar el artículo más barato y más caro de la orden 2002.

cc_cheap

Problem 4
circuit_city > Write an SQL statement to display the name of the cheapest item in order 2002 as shown. Hint: use subqueries, first find the cost of the cheapest item in order 2002, then display the name of the item in order 2002 with this cost.
Escriba un comando SQL para mostrar el nombre del artículo más barato en la orden 2002. Sugerencia: use sub-consultas, primero encuentre el costo del artículo más barato en la orden 2002, entonces muestre el nombre del artículo en la orden 2002 con este costo.

cc_cheapname

Problem 5
circuit_city > Test the following SQL command.
Pruebe el siguiente comando de SQL.

SQL
SELECT COUNT(*) AS order_2002
FROM ord_det
WHERE order_id=2002;

cc_Count2002

Problem 6
circuit_city > Test the following SQL command.
Pruebe el siguiente comando de SQL.

SQL
SELECT COUNT(order_id) AS order_c,
COUNT(ALL order_id) AS ord_all,
COUNT(DISTINCT order_id) AS ord_dist
FROM ord_det;

cc_countall

Problem 7
city_bank > Write an SQL statement, without using sub-queries, to display the sum of all balances for all accounts held by the customer 'Weiss, Matthew' as shown.
Escriba un comando SQL sin usar sub-consultas para mostrar la suma de los balances de todas las cuentas que tiene el cliente 'Weiss, Matthew'

cb_matt

Problem 8
city_bank > Write an SQL statement, using sub-queries, to display the sum of all balances for all the accounts held by the customer 'Weiss, Matthew' as shown.
Escriba un comando SQL usando sub-consultas para mostrar la suma de los balances de las cuentas que tiene el cliente 'Weiss, Matthew' como se muestra.

cb_mattsub

Problem 9
city_bank > Write an SQL statement to display the name of the client(s) with the highest balance. Hint: use subqueries, first find the highest balance, second find the account_id's with this balance (the highest balance), and finally, find the client names who have these account_id's. Alternatively, you can combine joins and subqueries to get the same result.
Escriba un comando SQL para listar el nombre de el (los) cliente(s) que tiene(n) el balance más alto. Sugerencia: use sub-consultas, primero encuentre el balance más alto, segundo encuentre los account_id con este balance (el más alto), y finalmente, encuentre el nombre de los clientes que tienes estas account_id. Alternativamente, usted puede combinar joins y subconsultas para obtener el mismo resultado.

cb_highestbal

GROUP BY

It displays summary information for groups and for subgroups. The column used in the GROUP BY statement MUST be included in the SELECT part of the query.
Permite mostrar un resumen informático por grupos o sub-grupos. La columna usada en el comando GROUP BY debe ser incluida en la parte SELECT de la consulta.

Problem 10
circuit_city > Test the following SQL command. Note that order_id appears in the SELECT part as well as in the GROUP by part of the query.
Pruebe el siguiente comando de SQL. Observe que order_id aparece en la parte del SELECT cómo también en la parte del GROUP BY de la consulta.

SQL
SELECT order_id,
     SUM(item_count) AS sum_ic,
     AVG(item_count) AS avg_ic,
     MIN(item_count) AS min_ic,
     MAX(item_count) AS max_ic
FROM ord_det
GROUP BY order_id;

cc_groupby

Problem 11
circuit_city > Write an SQL statement to display the number of different items in each order as shown.
Escriba un comando SQL para mostrar el número de artículos diferentes en cada orden como se muestra.

cc_diffcount

Problem 12
circuit_city > Write an SQL statement to display the total cost of each order as shown.
Escriba un comando SQL para mostrar el costo total de cada orden como se muestra.

cc_ordertotal

HAVING

The statement WHERE limits the number of rows to be displayed by a SELECT statement. On the other hand, HAVING limits the number of groups to be displayed following GROUP BY. Therefore, you can use HAVING when you are using GROUP BY. Therefore, I cannot use HAVING, if the query does not have a GROUP BY.
El comando WHERE limita el número de renglones a ser mostrados en un comando SELECT. Por otra parte, HAVING limita el número de grupos a ser mostrados en un comando GROUP BY. Por lo tanto, usted puede usar HAVING cuando usted usa GROUP BY. Por lo tanto, yo no puedo usar HAVING, si la consulta no tiene un GROUP BY.

Having

Problem 13
circuit_city > Test the following SQL command.
Pruebe el siguiente comando de SQL.

SQL
SELECT order_id, COUNT(order_id) AS diff_item
FROM ord_det
GROUP BY order_id
HAVING order_id>2001;

cc_having

Tip
You can use the OR, AND, etc., operators in a HAVING clause to limit the number of groups to be displayed following GROUP BY. Observe that you must use the same column in GROUP BY and in HAVING.
Es posible usar los operadores OR, AND, etc., con el comando HAVING para limitar los datos generados por GROUP BY. Observe que usted debe usar la misma columna en GROUP BY y en HAVING.

Problem 14
circuit_city > Write an SQL statement to display the total cost of orders 2000 and 2005.
Escriba un comando SQL para mostrar el costo total de las órdenes 2000 y 2005.

cc_2000_2005

Problem 15
city bank > Write an SQL statement to display the total balance for all the accounts each client has.
Escriba un comando SQL para mostrar el balance de todas las cuentas que cada cliente tiene.

cb_totalbal

Problem 16
city bank > Write an SQL statement to display summary information about the savings and checking accounts as shown.
Escriba un comando SQL para mostrar un resumen informativo de las cuentas de ahorros y cheques como se muestra.

cb_grouptype

Problem 17
city bank > Write an SQL statement to display summary information for each branch as shown.
Escriba un comando SQL para mostrar un resumen informativo de las sucursales como se muestra.

cb_groupbranch

Problem 18
city bank > Write an SQL statement to display the number of accounts each customer has.
Escriba un comando SQL para mostrar el número de cuentas que cada cliente tiene.

cb_groupcount

Tip
If you include several columns in a GROUP BY query, it is necessary to either:
  1. The column value is the same in the group
  2. One group functions such as: MIN, MAX, AVG, STDEV, ... is used to produce one value for the entire group
If each person appears once in the patient table, the first query is not correct while the second one is correct.
Si usted incluye varias columnas en una consulta que use GROUP BY, es necesario:
  1. El valor de la columna es el mismo en el grupo
  2. Una función de grupo tal como: MIN, MAX, AVG, STDEV, ... es usada para producir un valor para todo el grupo
Si cada persona aparece una sola vez en la tabla paciente, la primer consulta no es correcta mientras la segunda si lo es.

Incorrect.sql
SELECT first_name, last_name, AVG(weight)
FROM patient
GROUP BY last_name;


Correct.sql
SELECT last_name, AVG(weight)
FROM patient
GROUP BY last_name;

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home