sql >> Base de Datos >  >> RDS >> Database

Cómo calcular el total acumulado en corrimiento al rojo

El total acumulativo, también conocido como total acumulado, es una métrica de KPI útil para monitorear los valores totales de la suma a lo largo del tiempo. Si sus datos están almacenados en Amazon Redshift, entonces es muy fácil calcular la suma acumulada en Redshift. Veamos cómo calcular el total acumulado en Redshift.

Cómo calcular el total acumulado en corrimiento al rojo

Estos son los pasos para calcular el total acumulado en Redshift. Supongamos que tiene la siguiente tabla que contiene las ventas diarias

postgres-#> create table sales(order_date date,sale int);

postgres-#> insert into sales values('2020-03-01',30),
('2020-03-02',35),('2020-03-03',25),('2020-03-04',40),('2020-03-05',30);

postgres-#> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-03-01 |   30 |
| 2020-03-02 |   35 |
| 2020-03-03 |   25 |
| 2020-03-04 |   40 |
| 2020-03-05 |   30 |
+------------+------+

Digamos que desea calcular la suma acumulada de ventas, así,

+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-03-01 |   30 |              30 |
| 2020-03-02 |   35 |              65 |
| 2020-03-03 |   25 |              90 |
| 2020-03-04 |   40 |             130 |
| 2020-03-05 |   30 |             160 |
+------------+------+-----------------+

Aquí está la consulta SQL para calcular el total acumulado en Redshift. Dado que Redshift es básicamente PostgreSQL, todas sus funciones y expresiones están disponibles en PostgreSQL. Así que usaremos una función de ventana, disponible en PostgreSQL, para hacerlo.

postgres=# SELECT order_date
          , sum(sale) over (order by order_date asc rows between unbounded preceding and current row)
          FROM   sales
          ORDER  BY order_date;

 order_date | sum
------------+-----
 2020-03-01 |  30
 2020-03-02 |  65
 2020-03-03 |  90
 2020-03-04 | 130
 2020-03-05 | 160

Veamos la consulta anterior en detalle. La función SUMA anterior calcula la suma acumulada para cada fila. Sin embargo, usamos una función de ventana OVER que nos ayuda a definir el número de filas que se usarán para calcular el total acumulado en Redshift.

Lectura adicional:Cómo calcular la media móvil en corrimiento al rojo

Primero, ordenamos nuestros datos cronológicamente por order_date para asegurarnos de que sumamos las filas correctas para cada suma acumulada. A continuación, para cada fila, le decimos a Redshift que sume venta columna para todas las filas anteriores. Hacemos eso usando la función de ventana OVER, y mencionamos filas entre la fila anterior y la actual sin límites . Es decir, para cada fila, considere solo las filas anteriores para la suma acumulativa.

Como el marco de la ventana cambia para cada fila, solo las filas anteriores se utilizarán para calcular el total acumulado.

Si desea filtrar sus datos antes de calcular el total acumulado en Redshift, puede hacerlo agregando la cláusula WHERE, como se muestra a continuación.

postgres=# SELECT order_date
          , sum(sale) over (order by order_date asc rows between unbounded preceding and current row)
          FROM   sales
          ORDER  BY order_date
          WHERE <condition>;

Lectura adicional: Cómo crear una tabla dinámica en PostgreSQL

Además, dado que Redshift es básicamente PostgreSQL, también puede usar la consulta anterior para calcular el total acumulado en PostgreSQL.

Después de calcular la suma acumulada en Redshift, puede usar una herramienta de visualización de datos de Redshift para representarla en un gráfico de líneas. Este es un ejemplo de un gráfico de líneas para el total acumulado, creado con Ubiq.

Si desea crear gráficos y paneles a partir de la base de datos de Redshift, puede probar Ubiq. Ofrecemos una prueba gratuita de 14 días.