Publicado el Dejar un comentario

SQL intermedio: Subconsultas en la cláusula FROM.

Las subconsultas también pueden aparecer en la cláusula FROM de un instrucción SELECT. Las subconsultas en la cláusula FROM pueden ser de tipo multi columna y multi fila o escalares. La instrucción SELECT ve como una tabla más los resultados de las subconsultas. Veamos un ejemplo:

Subconsulta en cláusula FROM.

En el ejemplo anterior la subconsulta obtiene el valor promedio del todos los totales de las facturas (tabla Invoice) que da como resultado la columna con alias “promedio” con valor 5.65194174757283 y le asigna el alias “promedio_total” a la subconsulta. El SELECT ve la subconsulta como si fuera una tabla llamada “promedio_total”.

La consulta hace un producto cruzado entre “promedio_total” y la tabla “invoice” con alias “factura” y filtra las filas mostrando sólo aquellas que el total de la factura sea mayor al promedio.

En este caso la consulta sólo hace un producto cruzado entre la subconsulta y la tabla, pero puede también ser usado en uniones o concatenaciones tanto internas como externas.

Espero y les sea útil este artículo. ¡Hasta la próxima!

Publicado el 1 comentario

DB Browser for SQLite: Cómo habilitar las funciones matemáticas.

Por defecto, la versión 3.12.2 de DB Browser for SQLite (DB4S), que es la versión más reciente de este software a la fecha de publicación de esta artículo, tiene incluido una versión de SQLite que no implementa las funciones matemáticas de SQLite. Si queremos ejecutar alguna de éstas funciones matemáticas, por ejemplo la función que obtiene la raíz cuadrada SQRT(), la aplicación nos arroja el mensaje de que dicha función no existe.

En el siguiente video, veremos un truco de cómo instalar la versión más reciente de SQLite, que ya incluye las funciones SQL matemáticas, en la aplicación DB Browser for SQLite.

Aquí te dejo el video:

Espero y les sea útil.

¡Hasta pronto!

Publicado el 1 comentario

SQL básico: Operadores y funciones matemáticas.

En la sección pasada vimos las funciones SQL que se usan con cadenas de texto más comunes. Ahora veremos las funciones SQL matemáticas más comunes y que son estándar entre los diferentes motores de base de datos. Recuerda que cada motor de datos puede implementar las suyas propias así que es mejor revisar la documentación de cada una de ellas.

Operadores matemáticos SQL en SQLite.

OperadorDescripción
+Suma
Resta
/División
*Multiplicación
%Módulo (residuo)
Operadores matemáticos.

Escribe y ejecuta la siguiente sentencia SQL de ejemplo donde se usan los operadores matemáticos anteriores.

Operadores matemáticos.

En la imagen anterior vemos el uso de los operadores matemáticos en la cláusula SELECT. Los operadores también pueden usarse en otras cláusulas como en la cláusula WHERE.

Si observa en los resultados de la operación de división verá un detalle, la operación 10 entre 4 debería dar como resultado 2.5 y no 2. Esto se debe a que cuando SQLite detecta que ambos operadores son de tipo entero, el resultado de la división será entero.

Para que el resultado lo de con decimales, es necesario que uno de los operadores sea de tipo REAL (con decimales). Veamos el siguiente ejemplo:

División con número REAL.

En el ejemplo anterior, SQLite detecta que el número 10 es de tipo real debido a que tiene el punto decimal y por lo tanto el resultado lo arroja como el número real 2.5. ¿Cómo hacerlo con los valores de tipo entero de una tabla? Observa la siguiente sentencia:

División con columnas de tipo entero.

En el ejemplo anterior las columnas “InvoiceId” y “TrackId” están definidas como de tipo entero, por lo tanto la división entre estos dos campos da como resultado un número entero, el número 0. ¿Cómo hacer para que SQL de SQLite reconozca una columna de tipo entero como real? Es ahí donde entra el operador o función CAST de SQL. CAST convierte de un tipo de dato a otro, en el ejemplo convierte el valor de la columna “InvoiceId” que es de tipo INTEGER (entero) a tipo REAL. Una vez hecha esta conversión y hacer la división el resultado lo arrojará como un número REAL (con decimales); en el ejemplo nos arroja 0.1875

Funciones matemáticas SQL en SQLite.

En esta sección veremos sólo algunas funciones matemáticas, la lista completa de las funciones matemáticas que implementa SQLite las puedes consultar aquí, sin embargo esas funciones son sólo incluidas en la versión más reciente de SQLite, la versión SQLite incluida con DB4S no incluye las funciones matemáticas aún.

Actualización: En este artículo se explica los pasos para ejecutar las funciones matemáticas de SQLite en DB4S.

Función SQL ROUND()

Regresa un número redondeado a entero o al decimal más próximo.

Sintaxis: ROUND(expresión-numérica, número-decimales)

La función ROUND(), sin el segundo parámetro, redondea al entero; si se agrega el segundo parámetro número-decimales redondea a este número de dígitos a la derecha del punto decimal. Veamos el siguiente ejemplo:

Función SQL ROUND().

En el primer ejemplo, se redondea al entero, en el segundo se redondea a tres dígitos después del punto decimal.

Función SQL SQRT()

Regresa la raíz cuadrada del número dado.

Sintaxis: SQRT(expresión-numérica)

Función SQRT()

En el ejemplo, se obtiene la raíz cuadrada de 10.

Función SQL CEILING()

Regresa el entero inmediato superior del número dado.

Sintaxis: CEILING(expresión-numérica)

Función CEILING()

El entero inmediato superior de 10.234 es 11.

Función SQL FLOOR()

Regresa el entero inmediato inferior del número dado.

Sintaxis: FLOOR(expresión-numérica)

Función FLOOR()

El entero inmediato inferior de 10.234 es 10.

Función SQL POWER()

Regresa el valor de un número elevado a la n potencia.

Sintaxis: POWER(expresión-numérica)

Función POWER()

El número 10 elevada al cubo o a la potencia 3 es 1000.

Función SQL PI()

Regresa el valor de Pi.

Sintaxis: PI()

Función PI()

Regresa el valor aproximado de ¶ (pi).

En esta sección vimos algunas de las funciones matemáticas que implementa el SQL de SQLite. En la próxima sección veremos algunas funciones de fechas y tiempo.

¡Hasta a próxima!

IR A LA PAGINA DEL CURSO.