Está en la página 1de 18

Capitulo 4

Cláusula SELECT y acumulaciones

Objetivos: Al finalizar este capitulo usted será capaz


de:

•Reconocer expresiones aritméticas


•Usar funciones de acumulación en la declaración SELECT
•Usar la cláusula GROUP BY
•Usar la cláusula HAVING
•Colocar los datos resultado de la declaración
•SELECT en una tabla temporal con la cláusula INTO TEMP
Expresiones Aritméticas

SELECT stock_num, manu_code,


unit_price, unit_price * 1.05
FROM stock
ORDER BY unit_price DESC

stock_num manu_code unit_price (expression)


4 HSK $960.00 $1008.00
8 ANZ $840.00 $882.00
1 HSK $800.00 $840.00
113 SHM $685.90 $720.20
203 NKL $670.00 $703.50
7 HRO $600.00 $630.00
Las funciones ROUND y
TRUNC
SELECT stock_num, manu_code,
unit_price * 1.06,
ROUND (unit_price * 1.06,1),
TRUNC (unit_price * 1.06,1)
FROM stock

stock_num manu_code (expression) (expression) (expression)


1 HRO $265.00 265.0 265.0
1 HSK $848.00 848.0 848.0
1 SMT $477.00 477.0 477.0
2 HRO $133.56 133.6 133.5
3 HSK $254.40 254.4 254.4
3 SHM $296.80 296.8 296.8
4 HSK $1017.60 1017.6 1017.6
4 HRO $508.80 508.8 508.8
Desplegando Etiquetas

SELECT stock_num, manu_code,


unit_price, unit_price * 1.06 new_price
FROM stock
ORDER BY new_price DESC

stock_num manu_code unit_price new_price


4 HSK $960.00 $1017.60
8 ANZ $840.00 $890.40
1 HSK $800.00 $848.00
113 SHM $685.90 $727.05
203 NKL $670.00 $710.20
7 HRO $600.00 $636.00
La función COUNT

Dada la tabla de vuelos con los siguientes datos en la tabla:

numero_vuelo sale llega precio


1235 Kansas City Denver $393,85
1429 Denver Seattle $434.11
346 Los Angeles Seattle $232.78
1201 Seattle Honolulu $478.55
1366 Kansas City Chicago $353.40

SELECT COUNT(*) (count(*))


FROM vuelos 5

SELECT COUNT(DISTINCT sale) (count)


FROM vuelos 4
La función SUM
Usando la misma tabla vuelos
Numero_vuelo sale llega precio
1235Kansas City Denver $393,85
1429Denver Seattle $434.11
346Los Angeles Seattle $232.78
1201Seattle Honolulu $478.55
1 Kansas City Chicago $353.40

SELECT SUM(precio) (sum)


FROM vuelos $666.89
WHERE llega = ‘Seattle’;

SELECT SUM(precio) total total


FROM vuelos $666.89
WHERE llega = ‘Seattle’;
Funciones de acumulación
adicionales
SELECT MAX(unit_price) FROM stock;
(max)
$960.00
SELECT MIN(order_date) FROM orders;
(min)
05/20/1994
SELECT AVG(unit_price) from stock;
(avg)
$197.14
Resumen de funciones de
acumulación
COUNT(*)
COUNT(DISTINCT nombre-columna)
SUM(columna/expresión)
SUM(distinct nombre-columna)
AVG(columna/expresión)
AVG(DISTINCT nombre-columna)
MAX(columna/expresión)
MIN(columna/expresión)
Cláusulas de la función
SELECT
SELECT [ALL | DISTINCT | UNIQUE] select-list
FROM [OUTER] table-name [table-alias] [,...]
[WHERE condition]
[GROUP BY column-list]
[HAVING condition]
[ORDER BY column-name [ASC | DESC],...]
[INTO TEMP table-name]
GROUP BY
customer_num SELECT customer_num
101 FROM orders
104 GROUP BY customer_num
104
104
104
106 customer_num
106 101
110 104
110 106
111 110
112 111
115 112
116 115
117 116
… 117
SELECT order_num,sum(total_price) tot
FROM items
GROUP BY order_num
order_num tot
1001 $250.00
1002 $1200.00
1003 $959.00
1004 $1416.00
1005 $562.00
1006 $448.00
1007 $1696.00
1008 $940.00
Otro ejemplo

SELECT city,state,COUNT(*)
FROM customer
GROUP BY city,state
city state (count(*))
Cherry Hill NJ 1
Phoenix AZ 2
Los Altos CA 2
Oakland CA 1
Sunnyvale CA 3
San Francisco CA 1
Mountain View CA 2
Wilmington DE 1
Redwood City CA 5
Jacksonville FL 1
Ordenando los datos agrupados
SELECT city,state,COUNT(*)
FROM customer
GROUP BY city,state
ORDER BY city,state
city state (count(*))

Bartlesville OK 1
Blue Island NY 1
Brighton MA 1
Cherry Hill NJ 1
Denver CO 1
Jacksonville FL 1
Los Altos CA 2
Menlo Park CA 2
La cláusula HAVING

SELECT order_num, SUM(total_price) tot


FROM items
GROUP BY order_num
HAVING COUNT(*) > 2;
order_num tot
1003 $959.00
1004 $1416.00
1005 $562.00
1006 $448.00
1007 $1696.00
1013 $143.80
1016 $654.00
1017 $584.00
Otro ejemplo

SELECT stock_num,
AVG (unit_price) average,
MAX (unit_price) biggest,
MIN (unit_price) smaller
FROM stock
GROUP BY stock_num
HAVING MIN(unit_price) > 400
stock_num average biggest smaller
4 $720.00 $960.00 $480.00
7 $600.00 $600.00 $600.00
8 $840.00 $840.00 $840.00
111 $499.99 $499.99 $499.99
112 $549.00 $549.00 $549.00
113 $685.90 $685.90 $685.90
203 $670.00 $670.00 $670.00
La cláusula INTO TEMP

SELECT [ALL | DISTINCT | UNIQUE] select-list


FROM [OUTER] table-name [table-alias] [,...]
[WHERE condition]
[GROUP BY column-list]
[HAVING condition]
[ORDER BY column-name [ASC | DESC],...]
[INTO TEMP table-name] [WITH NO LOG]
SELECT stock_num, manu_code,
unit_price * 1.05 final_price
FROM stock
INTO TEMP stocktemp WITH NO LOG;
SELECT * FROM stocktemp;
74 row(s) retrieved into temp table.
stock_num manu_code final_price
1 HRO $262.50
1 HSK $840.00
1 SMT $472.50
2 HRO $132.30
3 HSK $252.00
3 SHM $294.00
4 HSK $1008.00
4 HRO $504.00

También podría gustarte