Escolar Documentos
Profissional Documentos
Cultura Documentos
1.
2.
3.
4.
USANDO TRANSACT-SQL
USANDO TRANSACT-SQL
Objetivos
Ayudarles a aprender el
mecanismo de utilizar
funciones de todos los tipos.
USANDO TRANSACT-SQL
25/03/2010
Categoras de Funciones - 1
Categora
Propsito
Agregacin
Conversin
Fecha y hora
Manipulacin
de texto
Matemticas
Ranking
USANDO TRANSACT-SQL
Categoras de Funciones - 2
Categora
Propsito
Metadata
Seguridad
Sistema
Funcin de utilidad usada para llevar a cabo una variedad de tareas. Estos
incluye comparacin de valores y prueba de tipo de valores. Esta categora es
tambin utilizada para incluir otras funcionalidades
Estadstica del
sistema
Cursor
Configuracin de
variables
USANDO TRANSACT-SQL
25/03/2010
Caractersticas de un Funcin
Su propsito es regresar un valor
Result = Function()
En T-SQL , los valores son tpicamente entregados usando la instruccin SELECT
SELECT Function()
SQL Server - Programacin
USANDO TRANSACT-SQL
Algunos pueden
ser requeridos y
otros opcionales.
Los argumentos
opcionales se
dejan de ltimo
en la lista
Los argumento
opcionales se les
pone corchetes
cuando son
definidos
Ejemplos
Definicin:
Ejemplo 1:
Ejemplo 2:
'03/21/2010'
USANDO TRANSACT-SQL
25/03/2010
Funciones no Deterministas
Ejemplos
Ejemplo
GETDATE()
@@ERROR
@@SERVICENAME
CURSORSTATUS()
RAND
USANDO TRANSACT-SQL
SELECT @MyResult
SQL Server - Programacin
USANDO TRANSACT-SQL
25/03/2010
USANDO TRANSACT-SQL
Funciones Anidadas
SELECT
CONVERT(varchar(20), GETDATE(), 101)
USANDO TRANSACT-SQL
10
25/03/2010
Funciones Agregadas
Estas contestan las siguientes preguntas:
Cules fueron las ventas totales de la molleja de pollo por productos para el
mes pasado?
Cul es el precio medio pagado por los condimentos de alimentos por los
brasileos de sexo masculino entre las edades 19 y 24?
Cul fue el ms larga duracin entre la orden y el envo de todos los pedidos
en el ltimo trimestre?
Quin es el empleado ms antiguo que an trabajan en la sala de correo?
USANDO TRANSACT-SQL
11
Donde
ALL - Aplica la funcin de agregado a todos los valores. ALL es
el valor predeterminado
DISTINCT - Especifica que AVG se realizar slo en cada caso
nico de un valor, independientemente de cuntas veces
el valor se encuentra
expresin - Es una expresin que regresa un valor numrico,
excepto para el tipo de datos bit. Las funciones de
agregado y subconsultas no estn permitidos.
SQL Server - Programacin
USANDO TRANSACT-SQL
12
25/03/2010
Sintaxis:
Donde
Puede comprobar
haciendo un SELECT * a la
tabla sin las funciones
para obtener los registros
que se estn procesando
y despus hacer los
clculos
USANDO TRANSACT-SQL
13
Sintaxis:
Donde
PRCTICA 4.2:
1. Ejecute la siguiente consulta usando la funcin COUNT con DISTINCT y sin
DISTINCT. Realice los clculos manualmente para comprobar.
SELECT COUNT(DISTINCT Title)
FROM HumanResources.Employee;
2.
USANDO TRANSACT-SQL
25/03/2010
Sintaxis:
Donde
PRCTICA 4.3:
1. Ejecute la siguiente consulta usando la funcin MIN y MAX. Realice los
clculos manualmente para comprobar.
SELECT
MAX(TaxRate)
, MIN(TaxRate)
FROM Sales.SalesTaxRate;
15
Funciones de Conversin
Convierte una expresin de un tipo de dato a otro. Se puede
lograr con las funciones CAST() y CONVERT()
Sintaxis:
CAST ( expresin AS data_type [ (length ) ])
CONVERT ( data_type [ ( length ) ] , expresin [ , style ] )
Donde
expresin - Es una expresin vlida
data_type Es el tipo de dato a obtener
length Es un entero opcional que especifica la longitud de el tipo de
dato a obtener. El valor por defecto es 30
style Es un entero que especifica como la funcin CONVERT formatear
la expresin a obtener. Depende del data_type. Ver detalle a
continuacin.
SQL Server - Programacin
USANDO TRANSACT-SQL
16
25/03/2010
Dgitos
ao
Formato
Hora
Descripcin
Ejemplo
0
100
2
4
12
Por defecto
(mon dd yyyy hh:miAM o PM)
Apr 25 05 1:05 PM
Apr 25 2005 1:05 PM
1
101
2
4
US (mm/dd/yy)
04/25/05
04/25/2005
2
102
2
4
ANSI (yy.mm.dd)
05.04.25
2005.04.25
3
103
2
4
UK/French (dd/mm/yy)
25/04/05
25/04/2005
4
104
2
4
German (dd.mm.yy)
25.04.05
25.04.2005
12
112
2
4
ISO (yymmdd)
050425
20050425
Hh:mi:ss:mmm(24h)
13:05:35:123
14
114
24
USANDO TRANSACT-SQL
17
Resultado Esperado
123
123.40
2.
3.
SELECT ProductNumber
+ -
+ ProductLine
+ -
+ ProductModelID AS BikeSerialNum
FROM Production.Product
WHERE ProductSubCategoryID < 4
USANDO TRANSACT-SQL
18
25/03/2010
Instruccin
Resultado Esperado
SELECT US Date: +
CONVERT(varchar(50), GETDATE(), 101)
US Date: 04/25/2005
UK/French Date:
25/04/2005
USANDO TRANSACT-SQL
19
Donde
float_expresin - Es una expresin de tipo numrico con un punto decimal.
length Es la longitud total. Incluye punto decimal, signo, dgitos y espacios. El valor por
defecto es 10
decimal Es el nmero de espacios a la derecha del punto decimal. decimal >= 16.
PRCTICA 4.6:
1. Ejecutar las siguientes instrucciones y analizar el resultado.
No Instruccin
Resultado Esperado
SELECT STR(123.4, 8, 4)
'123.4000'
SELECT STR(123.456789, 8, 4)
'123.4568'
SELECT STR(1, 6, 4)
'1.0000'
'
USANDO TRANSACT-SQL
1.0000'
20
10
25/03/2010
Funciones de Fecha
Funciones DATEADD y DATEDIFF
USANDO TRANSACT-SQL
21
2.
3.
4.
5.
10:30 AM')
USANDO TRANSACT-SQL
22
11
25/03/2010
Descripcin
Ejemplo
Resultado
esperado
DATEPART
Regresa un entero
representando parte de la
fecha
DATENAME
Regresa un nombre
descriptivo representando
parte de la fecha
April
GETDATE()
SELECT GETDATE()
Fecha actual
SELECT GETUTCDATE()
Fecha actual ms 6
horas
GETUTCDATE()
SELECT
Year: +
CONVERT(varchar(4) , YEAR(GETDATE()))
+ , Month: +
CONVERT(varchar(2), MONTH(GETDATE()))
+ , Day: +
CONVERT(varchar(2), DAY(GETDATE()))
USANDO TRANSACT-SQL
23
Funciones de Manipulacin de
Cadenas de caracteres
PRCTICA 4.9: Ejecutar los ejemplos con diferentes funciones para convertir
un carcter
Funcin
Descripcin
Ejemplo
ASCII()
SELECT ASCII(A)
65
CHAR()
SELECT CHAR(65)
Resultado
esperado
SELECT UNICODE()
233
SELECT NCHAR(233)
USANDO TRANSACT-SQL
24
12
25/03/2010
PATINDEX ( '%pattern%' ,
expression )
Argumentos
expression1 es una expresin de
caracteres
expression2 es una expresin de
caracteres a buscar.
start_location es un entero que indica
la posicin donde empieza la bsqueda
Argumentos
pattern es una expresin de caracteres a
buscar. Puede utilizar comodines pero
debe escribir el carcter % antes y
despus.
expression es la expresin donde se busca
SELECT
PATINDEX('%ensure%', DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
SELECT
PATINDEX('%en_ure%', DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
USANDO TRANSACT-SQL
25
Descripcin
Ejemplo
LEN(
SELECT LEN('FirstName')
Expresin)
LEFT(
expresin,
NumeroCaracteres)
RIGHT(
expresin,
NumeroCaracteres)
SUBSTRING(
expresin,
inicioParte,
NumeroCaracteres)
SQL Server - Programacin
Resultado=9
Resultado=First
SELECT
RIGHT('FirstName,4)
Resultado=Name
SELECT
SUBSTRING('FirstName,2
,4)
USANDO TRANSACT-SQL
Resultado=irst
26
13
25/03/2010
Descripcin
Ejemplo
LTRIM(
SELECT
LTRIM( FirstName )
Resultado=FirstName
expresin)
SELECT
RTRIM( FirstName )
Resultado= FirstName
LOWER(
expresin)
SELECT LOWER('FirstName')
Resultado=firstname
UPPER(
SELECT UPPER('FirstName')
Resultado=FIRSTNAME
SELECT
REPLACE('abcdefghicde','c
de','xxx')
Resultado=abxxxfghixxx
expresin)
RTRIM(
expresin)
REPLACE(
expresin,
buscar, reemplazar)
SQL Server - Programacin
USANDO TRANSACT-SQL
27
Descripcin
Ejemplo
REPLICATE(
SELECT REPLICATE(0',4) +
F
Resultado=0000F
EspaciosaRepetir)
SELECT SPACE(4) + F
Resultado=
F
REVERSE(
expresin)
SELECT
REVERSE('FirstName')
Resultado=emaNtsriF
STUFF(
SELECT
STUFF('abcdef', 2, 3,
'ijklmn')
SELECT
QUOTENAME('FirstName')
Resultado=[FirstName]
expresin,
VecesaRepetir)
SPACE(
Expresin,
inicioParte,
NumeroCaracteres)
QUOTENAME()
USANDO TRANSACT-SQL
Resultado=aijklmnef
28
14
25/03/2010
Funciones Matemticas - 1
Funcin
Descripcin
ABS()
ACOS()
ASIN()
ATAN()
ATN2()
CEILING()
COS ()
COT ()
DEGREES ()
EXP ()
FLOOR()
LOG ()
USANDO TRANSACT-SQL
29
Funciones Matemticas - 2
Funcin
Descripcin
LOG10 ()
PI ()
POWER ()
ROUND ()
SIGN ()
SIN ()
SQRT ()
SQUARE ()
TAN ()
USANDO TRANSACT-SQL
30
15
25/03/2010
a)
CEILING
SELECT
CEILING($123.45),
CEILING($-123.45),
CEILING($0.0)
c)
RAND
DECLARE @counter smallint;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT
RAND() Random_Number
SET @counter = @counter + 1
END;
FLOOR
SELECT
FLOOR($123.45),
FLOOR($-123.45),
FLOOR($0.0)
USANDO TRANSACT-SQL
31
La funcin ROUND
ROUND ( numeric_expression , length [ ,function ] )
Argumentos
Resultado
750.00
700.00
SELECT ROUND(123.9994, 3)
123.9990
SELECT ROUND(123.9995, 3)
124.0000
SELECT ROUND(150.75, 0)
151.00
SELECT ROUND(150.75, 0, 1)
150.00
USANDO TRANSACT-SQL
32
16
25/03/2010
Funciones de Ranking
Funcin
Descripcin
ROW_NUMBER()
RANK()
DENSE_RANK()
NTILE(n)
33
2.
3.
4.
USANDO TRANSACT-SQL
34
17
25/03/2010
2.
3.
4.
USANDO TRANSACT-SQL
35
Name
LocID
Quantity
ROW_NUMBER
RANK
DENSE_RANK
NTILE
494
495
493
496
492
495
496
493
492
494
Paint - Silver
Paint - Blue
Paint - Red
Paint - Yellow
Paint - Black
Paint - Blue
Paint - Yellow
Paint - Red
Paint - Black
Paint - Silver
3
3
3
3
3
4
4
4
4
4
49
49
41
30
17
35
25
24
14
12
1
2
3
4
5
1
2
3
4
5
1
1
3
4
5
1
2
3
4
5
1
1
2
3
4
1
2
3
4
5
1
1
1
2
2
1
1
1
2
2
USANDO TRANSACT-SQL
36
18
25/03/2010
INTO
INTO
INTO
INTO
INTO
#ProductPrices
#ProductPrices
#ProductPrices
#ProductPrices
#ProductPrices
4. COALESCE tambin puede utilizarse para poner un valor por defecto cuando se
tiene un valor nulo. Ejecutar y revisar resultados
SELECT ProductName, SuperSalePrice, SalePrice, ListPrice ,
COALESCE(SuperSalePrice, 0) AS CurrentPrice
FROM #ProductPrices
USANDO TRANSACT-SQL
37
USANDO TRANSACT-SQL
38
19
25/03/2010
Ejercicios 1/3
Ejercicio 4.1: Escribir una consulta para devolver el peso promedio de todas las
bicicletas de paseo (touring bike) vendido por Adventure Works Cycles que lista
de ms de $ 2.500. Utilice la tabla ProductSubCategory para determinar cmo se
debe filtrar estas productos.
Ejercicio 4.3: Calcular la raz cuadrada del valor absoluto del coseno del PI
Ejercicio 4.4: Cuntos das ha pasado desde la firma del Tratado de Versalles el
28 de junio de 1919, que termin la Segunda Guerra Mundial 1? Calcular la
respuesta usando T SQL
USANDO TRANSACT-SQL
39
Ejercicios 2/3
Ejercicio 4.6:
Ejercicio 4.7: Escriba y ejecute un cdigo para obtener el nmero de das que
pasaron entre cuando la orden fue puesta y cuando fue embarcada (shipped).
Utilizar tabla [Sales.SalesOrderHeader] e incluir la columna [SalesOrderID].
Ejercicio 4.8: Escriba y ejecute un cdigo para obtener el nmero de das que
pasaron entre cuando la orden fue puesta y cuando fue embarcada (shipped).
Utilizar tabla [Sales.SalesOrderHeader] e incluir la columna [SalesOrderID].
Ejercicio 4.9: Escriba y ejecute un cdigo para obtener una columna llamada
[Employee Code] que es hecha de los tres primeros caracteres del nombre y
apellido de un empleado. Utilizar tabla [Person.Contact].
USANDO TRANSACT-SQL
40
20
25/03/2010
Ejercicios 3/3
Ejercicio 4.10: Escriba y ejecute un cdigo para reemplazar la palabra bike
con la
palabra BICICLETA en todos la descripcin de los productos. Para visualizar los
resultados filtre solo los registros cuya descripcin contiene la palabra bike. Utilizar
tabla [Product.ProductDescription].
Ejercicio 4.11:
Ejercicio 4.12:
USANDO TRANSACT-SQL
41
21