miércoles, 21 de enero de 2015

Funciones LAG y LEAD en SQL Server


Recientemente hice el examen 70-461 Querying Microsoft SQL Server 2012, una de las preguntas se refería a las función LAG, en este video de 8 minutos se explica su funcionamiento.
La funciones LAG y LEAD en SQL Server permiten obtener de un campo el valor anterior (LAG) a la fila o el valor posterior (LEAD) a la fila.
En la imagen de abajo tomando como referencia el campo precio de la fila tres podemos ver como estas funciones me permiten tomar el precio de la fila anterior o sea la fila 2 y llamarlo “PrecioAnterior” y luego tomar el precio de la fila siguiente es decir la fila 4 y llamar al resultado “Precio Siguiente”
test
El scrip del ejemplo es el siguiente:
CREATE TABLE PreciosProducto
(NombreProducto VARCHAR(100), FechaEvaluacion DATETIME, Precio MONEY)
GO
INSERT INTO PreciosProducto (NombreProducto,FechaEvaluacion, Precio) VALUES
(‘Pintura Spray Rojo Fuego’,’01-01-2015′, 23.32),
(‘Pintura Spray Rojo Fuego’,’01-02-2015′, 26.11),
(‘Pintura Spray Rojo Fuego’,’01-03-2015′, 25.26),
(‘Pintura Spray Rojo Fuego’,’01-04-2015′, 30.45),
(‘Pintura Spray Rojo Fuego’,’01-05-2015′, 30.20),
(‘Pintura Spray Rojo Fuego’,’01-06-2015′, 31.12),
(‘Pintura Spray Rojo Fuego’,’01-07-2015′, 25.75),
(‘Pintura Spray Rojo Fuego’,’01-08-2015′, 24.21),
(‘Pintura Spray Rojo Fuego’,’01-09-2015′, 25.12),
(‘Pintura Spray Rojo Fuego’,’01-10-2015′, 28.26)
GO
El Query con las funciones de ejemplo que genera la imagen de ejemplo anterior es:
SELECT NombreProducto,FechaEvaluacion,Precio
,LAG(Precio) OVER (ORDER BY FechaEvaluacion) AS PrecioAnterior
,LEAD(Precio) OVER (ORDER BY FechaEvaluacion) AS PrecioSiguiente
FROM PreciosProducto
ORDER BY FechaEvaluacion

martes, 13 de enero de 2015

Funcion BuscarV en Microsoft Excel 2013

La función BUSCARV en Excel nos permite buscar un valor dentro de una tabla de datos, es decir, nos ayuda a obtener el valor de una columna de la tabla que coincide con el código que estamos buscando. Un ejemplo sencillo que podemos resolver con la función BUSCARV es la búsqueda dentro de información de una persona, ingresamos a la formula el número de identificación y nos devolverá el nombre de la persona.

Sintaxis
=BUSCARV(valor_buscado , matriz_buscar , indicador_columnas , ordenado)

Valor_buscado     Valor que se va a buscar en la primera columna de la matriz de tabla. Valor_buscado puede ser un valor o una referencia. Si valor_buscado es inferior al menor de los valores de la primera columna de matriz_buscar_en, BUSCARV devuelve al valor de error #N/A.

Matriz_buscar    Dos o más columnas de datos. Use una referencia a un rango o un nombre de rango. Los valores de la primera columna de matriz_buscar_en son los valores que busca valor_buscado. Estos valores pueden ser texto, números o valores lógicos. Las mayúsculas y minúsculas del texto son equivalentes.

Indicador_columnas    Número de columna de matriz_buscar_en desde la cual debe devolverse el valor coincidente. Si el argumento indicador_columnas es igual a 1, la función devuelve el valor de la primera columna del argumento matriz_buscar_en; si el argumento indicador_columnas es igual a 2, devuelve el valor de la segunda columna de matriz_buscar_en y así sucesivamente. Si indicador_columnas es:

Si es inferior a 1, BUSCARV devuelve al valor de error #VALUE!
Si es superior al número de columnas de matriz_buscar_en, BUSCARV devuelve el valor de error #REF!

Ordenado    Valor lógico que especifica si BUSCARV va a buscar una coincidencia exacta o aproximada:
  • Si se omite o es VERDADERO, se devolverá una coincidencia exacta o aproximada. Si no localiza ninguna coincidencia exacta, devolverá el siguiente valor más alto inferior a valor_buscado.
  • Los valores de la primera columna de matriz_buscar deben estar clasificados según un criterio de ordenación ascendente; en caso contrario, es posible que BUSCARV no devuelva el valor correcto.
  • Si es FALSO, BUSCARV sólo buscará una coincidencia exacta. En este caso, no es necesario ordenar los valores de la primera columna de matriz_buscar. Si hay dos o más valores en la primera columna de matriz_buscar_en, se utilizará el primer valor encontrado. Si no se encuentra una coincidencia exacta, se devolverá el valor de error #N/A.

Observaciones
  • Al buscar valores de texto en la primera columna de matriz_buscar_en, asegúrese de que los datos de ésta no tienen espacios al principio ni al final, de que no hay un uso incoherente de las comillas rectas ( ' o " ) ni tipográficas ( ‘ o “), y de que no haya caracteres no imprimibles. En estos casos, BUSCARV puede devolver un valor inesperado o incorrecto. 
  • Al buscar valores de fechas o números, asegúrese de que los datos de la primera columna de matriz_buscar_en no se almacenen como valores de texto, ya que, en ese caso, BUSCARV puede devolver un valor incorrecto o inesperado. Para obtener más información.
  • Si Ordenado es FALSO y valor_buscado es un valor de texto, se pueden utilizar los caracteres comodín de signo de interrogación (?) y asterisco (*) en el argumento valor_buscado. El signo de interrogación corresponde a un solo carácter cualquiera y el asterisco equivale a cualquier secuencia de caracteres. Si lo que desea buscar es un signo de interrogación o un asterisco, escriba una tilde (~) antes del carácter.

Función DESREF en Microsoft Excel

La función DESREF en Excel nos devuelve una referencia a una celda o  rango de celdas que ha sido desplazado con respecto a otra celda o rango de celdas.

Sintaxis

=DESREF(ref , filas , columnas , alto , ancho)

Ref     es la referencia en la que se desea basar la desviación. Ref debe referirse a una celda o rango de celdas adyacentes; en caso contrario, DESREF devuelve el valor de error #¡VALOR!

Filas     es el número de filas, hacia arriba o hacia abajo, al que se desea que haga referencia la celda superior izquierda. Si el argumento filas es 5, la celda superior izquierda de la referencia pasa a estar cinco filas más abajo que la referencia. Filas puede ser positivo (lo que significa que está por debajo de la referencia de inicio) o negativo (por encima).

Columnas     es el número de columnas, hacia la derecha o izquierda, al que se desea que haga referencia la celda superior izquierda del resultado. Si el argumento columnas es 5, la celda superior izquierda de la referencia pasa a estar cinco columnas hacia la derecha de la referencia. Columnas puede ser positivo (lo que significa a la derecha de la referencia de inicio) o negativo (a la izquierda).

Alto     es el alto, en número de filas, que se desea que tenga la referencia devuelta. El alto debe ser un número positivo.

Ancho     es el ancho, en número de columnas, que se desea que tenga la referencia devuelta. El argumento ancho debe ser un número positivo.

Observaciones


  • Si los argumentos filas y columnas colocan la referencia más allá del borde de la hoja de cálculo, DESREF devuelve el valor de error #¡REF!
  • Si los argumentos alto o ancho se omiten, los valores predeterminados serán los del argumento ref.
  • DESREF en realidad no desplaza celdas ni modifica la selección, simplemente devuelve una referencia. Se puede utilizar la función DESREF con cualquier función que necesite una referencia como argumento. Por ejemplo, la fórmula SUMA(DESREF(C2;1;2;3;1)) calcula el valor total de un rango de tres filas por una columna que se encuentra por debajo una fila y dos columnas a la derecha de la celda C2.