Добавить Mysql кумулятивное поле частоты, используя любой метод

У меня есть "таблица" продаж, и из нее я создал "представление" под названием dailyactivity, которое дает мне общий объем продаж за каждый день. я пытаюсь добавить кумулятивное поле частоты, но оно возвращает пустой столбец. Может ли любой указать мне в правильном направлении. Это то, что у меня естьвведите описание изображения здесь

Это то, что я хотел бывведите описание изображения здесь

1 ответ

Решение

Запрос:

SELECT
d1.Date_TR,
sum(d1.Sales) AS Daily_Sales,
(SELECT SUM(d2.Sales)
 FROM dailyactivity d2
 WHERE d2.Date_TR <= d1.Date_TR) AS cumulative_sum
FROM dailyactivity d1
GROUP BY d1.Date_TR
ORDER BY d1.Date_TR ASC

Этот скрипт создаст требуемый запрос кумулятивной функции распределения (CDF) для любой таблицы:

    #!/bin/bash

tableName=$1
cdfParam=$2
otherParams=$3

usage(){
    echo "Usage: $0 <Table name> <Column/Columns for CDF> [Additional parameters to output]"
    echo ""
    echo "Get CDF of the Age column from the Persons table and print the Name and Gender of each person"
    echo "e.g., $0 Persons Age Name,Gender"
    echo ""
    echo "Get CDF of the difference between Salary & profil from the Persons table and print the Name and Gender of each person"
    echo "e.g., $0 Persons 'Salary-Profit' Name,Gender"
    echo ""
    echo "Get CDF of Age from a derived table called employeeTable"
    echo "e.g., $0 '(select * from Employees) as employeeTable' Age"
    exit 1
}

[[ $# -lt 2 ]] && usage

if [ -z "$otherParams" ]
then
    echo "SELECT $cdfParam as cdf_paramValue, (SELECT count(*) FROM $tableName WHERE $cdfParam <= cdf_paramValue) AS cumulative_sum FROM $tableName ORDER BY ($cdfParam) desc";
else
    echo "SELECT $otherParams,$cdfParam as cdf_paramValue, (SELECT count(*) FROM $tableName WHERE $cdfParam <= cdf_paramValue) AS cumulative_sum FROM $tableName ORDER BY ($cdfParam) desc";
fi
Другие вопросы по тегам