Добавить 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