Cálculo de Totales en ejecución usando SQL-Wagon

Cálculo de totales en ejecución usando SQL 20 de octubre de 2015 | Andy Granowitz

#sql

¿Cuántos usuarios se han unido en los últimos 5 meses? ¿Cuáles fueron las ventas totales en el Q2? ¿Cuántos ingresos se obtuvieron de la cohorte de inscripción de marzo?

Aunque estas preguntas se pueden responder con un solo número, puede ser útil ver un total continuo a lo largo del tiempo: cuántos usuarios únicos se unieron o cuántos ingresos acumulados se recibieron por día durante algún período.

Normalmente, los datos se almacenan de forma incremental. Por ejemplo, aquí hay una tabla de ventas por día:

Date Sales
10/1/2015 5
10/2/2015 3
10/3/2015 7
10/4/2015 8
10/5/2015 2
10/6/2015 3
10/7/2015 6

How do we generate the following table of cumulative sales over time? In SQL, there are two typical approaches: a self join or a window function.

Date Running Total of Sales
10/1/2015 5
10/2/2015 8
10/3/2015 15
10/4/2015 23
10/5/2015 25
10/6/2015 28
10/7/2015 34

A self join is a query that compares a table to itself. En este caso, estamos comparando cada fecha con cualquier fecha menor o igual a ella para calcular el total corriente. Concretamente, tomamos la suma de sales en la segunda tabla sobre cada fila que tiene una fecha menor o igual a la fecha que proviene de la primera tabla. Esta es la sintaxis Postgres / Redshift, pero otros dialectos SQL son muy similares.

Esto no es un mal enfoque; es una buena muestra de cómo extensible SQL se puede utilizar sólo selectfromjoin y group by estados de cuenta.

Pero es mucho código para una tarea sencilla. Probemos con una función de ventana. Están diseñados para calcular una métrica sobre un conjunto de filas. En nuestro caso, queremos sumar cada fila donde la fecha es menor o igual a la fecha en la fila actual.

La función de ventana puede filtrar y organizar el conjunto de filas para ejecutar la función. Aquí el order by date rows unbounded preceding limita la función suma a solo sales antes de la fecha de la fila actual. Las funciones de ventana son increíblemente útiles para consultas analíticas basadas en el tiempo; para obtener más información, los documentos de Postgres son un excelente lugar para comenzar.

El paso final de crear un gráfico y compartirlo triunfalmente con tus compañeros de equipo se logra fácilmente usando Wagon. Funciones de ventana para ganar!

Wagon es un editor SQL moderno para analistas e ingenieros: escriba consultas, visualice datos y comparta gráficos con su equipo. Registro gratis:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *