Sunteți pe pagina 1din 5

Gua practica nmero 6.

--Desarrollo
--Paso 1 ABS
select ABS(-1.0), ABS(1.0)
--resultados: 1.0 - 1.0--

--Paso 2 SQRT
DECLARE @myvalue float
SET @myvalue=1.00
while @myvalue <10.00
begin
SELECT SQRT(@myvalue)
SET @myvalue=@myvalue+1
END
GO
--devuelve raiz cudrada de numeros enre 1-10

--Paso 3
DECLARE @fecha varchar(20)
--convertimos un valor varchar a datatime
--el 103 indica el formato en el que esta escrita la fecha
--103 == dd/mm/aa
SET @fecha =CONVERT(datetime, '19/03/2008',103)
SELECT @fecha
--valor devuelto Mar 19 2008 12:00AM


DECLARE @fecha2 datetime, @fechaFormateada varchar(20)
--convertimos ahora una fecha varchar y la formateamos
--3= dd/mm/aa
SET @fecha2 =GETDATE()
SET @fechaFormateada= CONVERT(varchar(20),@fecha2,3)
SELECT @fecha2, @fechaFormateada
--|| 2012-03-03-18:26:07.577 | 03/03/12 ||
--el primer valor solo mostramos lo que obtiene la quefuncion GETDATE()
Originalmente!!
--el segundo valor damos formato a la variable @fecha con CONVERT =3
que es igual a dd/mm/aa_
--y lo guardamos en variable @fechaFormateada

-- Un ejemplo utilizando CAST
DECLARE @dato varchar(2),
@dato2 int
SET @dato = '27'
SET @dato2 = cast(@dato AS int)
SELECT @dato2
--Convertimos valor de @dato a int (ENTERO) y asignamos a variable @dato2


--Paso 4 IsNulll--
DECLARE @datoInt int, @datoVarchar varchar (100)
SET @datoInt =NULL
SET @datoVarchar=NULL
SELECT ISNULL(@datoInt, -1),
ISNULL(@datoVarchar,'No hay dato')
--Resultados Obtenidos--
--||-1 | No hay dato||--

--Paso 5 COALESCE--
DECLARE @dato1 int,@dato2 int,@dato3 int,@dato4 int,@dato5 int
SET @dato1 = null
SET @dato2 = NULL
SET @dato3 = NULL
SET @dato4 = 100
SET @dato5 = 125
SELECT COALESCE(@dato1,@dato2,@dato3,@dato4,@dato5)
--aca COALESCE OBTIENE EL DISTINTO DE NULL que sera @dato4 por lo tanto
devolvera 100, que es el valor de dicha variable..
--GetDate y GetUTCDate
DECLARE @fechaLocal datetime,
@fechaUTC datetime
SET @fechaLocal = getdate()
SET @fechaUTC = GETUTCDATE()
SELECT @fechaLocal,@fechaUTC
--datos Obtenidos ||2012-03-03 19:15:51.037 | 2012-03-03 01:15:51.030
||

--Paso 6 Funcin esacalar--
CREATE DATABASE Prueba
use Prueba
CREATE TABLE CUENTAS(
IDCUENTA decimal (10,2),
SALDO decimal (10,2),
NUMCUENTA decimal(10,2),
FXALTA char(2)
)
insert into CUENTAS values(1,150.25,111.11,'HB')
insert into CUENTAS values(2,350.25,222.22,'GN')

CREATE FUNCTION fn_MultiplicaSaldo
(
@NumCuenta VARCHAR(20),
@Multiplicador DECIMAL(10,2)
)
RETURNS DECIMAL(10,2)
AS
BEGIN
DECLARE @Saldo DECIMAL(10,2),
@Return DECIMAL(10,2)
SELECT @Saldo = SALDO
FROM CUENTAS
WHERE NUMCUENTA = @NumCuenta
SET @Return = @Saldo * @Multiplicador
RETURN @Return
END

SELECT IDCUENTA,NUMCUENTA,SALDO,FXALTA,--funcion!
dbo.fn_MultiplicaSaldo(NUMCUENTA,IDCUENTA) AS RESULT FROM CUENTAS

-- Paso 8 funcin escalar en un script Transact SQL. --

DECLARE @NumCuenta VARCHAR(20),@Resultado DECIMAL(10,2)
SET @NumCuenta = '222.22'
SET @Resultado = dbo.fn_MultiplicaSaldo(@NumCuenta, 30.5)
PRINT @Resultado

-----ANALISIS DE RESULTADO------
CREATE FUNCTION FNsalarios
(
@Salario varchar (10),
@Hora varchar (6)
)
RETURNS Decimal(6,2)
AS
BEGIN
DECLARE @Return DECIMAL(6,2),@SalariosC decimal, @HorasC decimal
set @SalariosC= CAST(@Salario as decimal )
set @HorasC = CAST(@Hora as decimal)
SET @Return=@SalariosC*@HorasC
RETURN @Return
END

DECLARE @SalarioSemanal DECIMAL(6,2)
SET @SalarioSemanal = dbo.FNsalarios('22.18','38.5')
PRINT 'El salario total: ' + CAST(@SalarioSemanal as varchar)


--Square: Devuelve el cuadrado del valor de tipo flotante especificado.--

CREATE FUNCTION FNsquare(
@VarLado varchar(10)
)
RETURNS Decimal(10,3)
AS
BEGIN
Declare @Lado decimal(10,3), @Area decimal (10,3)
set @Lado = CAST( @VarLado as decimal)
--set @Perimetro =@Lado*4
set @Area = Square(@Lado)
RETURN @Area
END

--funcion para perimetro
CREATE FUNCTION FN_Perimetro(
@VarLado varchar(10)
)
RETURNS Decimal(10,3)
AS
BEGIN
Declare @Lado decimal(10,3), @Perimetro decimal (10,3)
set @Lado = CAST( @VarLado as decimal)
set @Perimetro =@Lado*4
RETURN @Perimetro
END

--MOSTRANDO DATOS--
--mostrando area
DECLARE @Area decimal (10,3),@lado varchar (10)
set @lado ='48.126'
SET @Area =dbo.FNsquare(@lado)
--Mostrando perimetro
DECLARE @Perimetro decimal (10,3)
set @Perimetro =dbo.FN_Perimetro (@lado)
print'Longitud del lado: ' + CAST (@lado as varchar)
print 'Longitud del Area ' + CAST (@Area as varchar)
print'Longitud del Perimetro '+ CAST(@Perimetro as varchar)
--fin


INVESTIGACION COMPLEMETARIA.
Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un
nico valor que se aplica a un grupo de registros.
Las funciones de agregado realizan un clculo sobre un conjunto de valores y devuelven un solo valor. Si
exceptuamos la funcin COUNT, todas las funciones de agregado ignoran los valores NULL. Las funciones de
agregado se suelen usar con la clusula GROUP BY de la instruccin SELECT.
Todas las funciones de agregado son deterministas. Esto significa que las funciones de agregado devuelven
el mismo valor cada vez que se las llama con un conjunto especfico de valores de entrada. Para obtener ms
informacin acerca del determinismo de las funciones, vea Funciones deterministas y no deterministas.
La clusula OVER puede seguir a todas las funciones de agregado, excepto CHECKSUM.
Las funciones de agregado slo se pueden usar como expresiones en:
La lista de seleccin de una instruccin SELECT (en una subconsulta o en la consulta externa).
Clusulas COMPUTE o COMPUTE BY.
Clusulas HAVING.

Funcin Descripcin
AVG Utilizada para calcular el promedio de los valores de un campo determinado
COUNT Utilizada para devolver el nmero de registros de la seleccin
SUM Utilizada para devolver la suma de todos los valores de un campo determinado
MAX Utilizada para devolver el valor ms alto de un campo especificado
MIN Utilizada para devolver el valor ms bajo de un campo especificado
--EJEMPLOS
use Northwind
--FUNCIONES DE SUMARIZACION
--uso de funcion count
SELECT COUNT(*) as 'Total Filas' from Categories
--uso de funcion AVG
SELECT AVG(unitprice) as 'Promedio de precios' from Products
--uso de funcion MAX
SELECT MAX (unitprice) as 'Precio Mayor' from Products
--uso de funcion MIN
SELECT MIN(unitprice) as 'Precio Menor' from Products
--uso de funcion SUM
SELECT SUM(unitprice) as 'Suma de Precios' from Products
--funcion de agrupacion..
SELECT OrderID , SUM(quantity) as total from [order Details]
group by OrderID
having SUM (quantity)>300

S-ar putea să vă placă și