Programación Transact Estructura Condicional If
Programación Transact Estructura Condicional If
Scripts
Procedimientos Almacenados
Funciones
Triggers
Estructuras de Control:
Estructuras Secuenciales: Las instrucciones se ejecutan una a continuación de
otra.
Estructura Selectiva IF
La estructura IF evalúa una condición lógica y en función del resultado booleano
(true o false) se realiza una u otra expression.
IF <Condición_Lógica>
<BEGIN>
<Expresiones_CondiciónTrue>
<END>
ELSE
<BEGIN>
< Expresiones_CondiciónFalse>
<END>
Ejemplos:
Ejemplo 1:
Implementar un Script que permita insertar un nuevo registro en la tabla país, en
caso se registre duplicidad en el nombre de un país mostrar un mensaje de “país
ya registrado”, caso contrario insertar dicho registro y mostrar un mensaje de
“País registrado Correctamente”.
Tabla País
--Estructura Condicional IF
declare @idpais char(4)='0011',
@nombre varchar(30)='Argelia'
Ejemplo 2:
Implementar un Script que permita Mostrar el mensaje de No hay Pasajeros en
este país, solo cuando el total de pasajeros asignados a un determinado País no
tenga registros en la tabla pasajero. Caso contrarios determinar cuántos pasajeros
tiene dicho país.
Tabla Pais-Pasajero
declare @nombre char(40)='Bolivia'
AVG (Transact-SQL)
Otras versiones
Devuelve el promedio de los valores de un grupo. Se omiten los valores NULL.
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL
Database (Versión inicial a versión actual).
Convenciones de sintaxis de Transact-SQL
Sintaxis
AVG ( [ ALL | DISTINCT ] expression )
OVER ( [ partition_by_clause ] order_by_clause )
Argumentos
ALL
Especifica que AVG se ejecute solo en cada instancia única de un valor, sin importar el
número de veces que aparezca el valor.
expression
Tipos devueltos
El tipo de valor devuelto viene determinado por el tipo del resultado evaluado de expression.
tinyint int
smallint int
int int
bigint bigint
Comentarios
Si el tipo de datos de expression es un tipo de datos de alias, el tipo de valor devuelto es
también del tipo de datos de alias. No obstante, si se asciende el tipo de datos base del tipo de
datos de alias, por ejemplo, de tinyint a int, el valor devuelto es del tipo de datos ascendido, no
del tipo de datos de alias.
AVG () calcula la media de un conjunto de valores dividiendo la suma de estos valores por el
recuento de valores no NULL. Si la suma supera el valor máximo para el tipo de datos del valor
devuelto, se devolverá un error.
AVG es una función determinista cuando se utiliza con las cláusulas OVER y ORDER BY. Es no
determinista si se especifica con las cláusulas OVER y ORDER BY. Para obtener más información,
vea Funciones deterministas y no deterministas.
Ejemplos
A.Usar las funciones SUM y AVG para los cálculos
En el ejemplo siguiente se calcula el promedio de horas de vacaciones y la suma de horas de
baja por enfermedad que han utilizado los vicepresidentes de Adventure Works Cycles. Cada
una de estas funciones de agregado produce un valor único de resumen para todas las filas
recuperadas. En el ejemplo se usa la base de datos AdventureWorks2012.
SELECT AVG(VacationHours)AS 'Average vacation hours',
SUM(SickLeaveHours) AS 'Total sick leave hours'
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Vice President%';
El conjunto de resultados es el siguiente.
Average vacation hours Total sick leave hours
---------------------- ----------------------
25 97
(1 row(s) affected)
B.Usar las funciones SUM y AVG con una cláusula GROUP BY
Cuando se utiliza con una cláusula GROUP BY, cada función de agregado produce un solo valor
para cada grupo, en vez de para toda la tabla. En el ejemplo siguiente se obtienen valores de
resumen para cada territorio de ventas de la base de datos AdventureWorks2012. El resumen
muestra el promedio de bonificaciones recibidas por los vendedores de cada territorio y la suma
de las ventas realizadas hasta la fecha en cada territorio.
SELECT TerritoryID, AVG(Bonus)as 'Average bonus', SUM(SalesYTD) as
'YTD sales'
FROM Sales.SalesPerson
GROUP BY TerritoryID;
GO
El conjunto de resultados es el siguiente.
TerritoryID Average Bonus YTD Sales
----------- --------------------- ---------------------
NULL 0.00 1252127.9471
1 4133.3333 4502152.2674
2 4100.00 3763178.1787
3 2500.00 3189418.3662
4 2775.00 6709904.1666
5 6700.00 2315185.611
6 2750.00 4058260.1825
7 985.00 3121616.3202
8 75.00 1827066.7118
9 5650.00 1421810.9242
10 5150.00 4116871.2277