如何从我在 codeigniter 中的 mysql
数据库中获取每季度的(3 个月)
销售趋势?
我有一个数据表
order
-id
-paid_date
-order_total
我想要接收的数据是总订单值(value)的斜率,而不是过去 3 个月的订单数量。
模型代码
$results = $this->db->query("SOME_SQL");
我开始写下面的内容,但对如何将结果显示为斜率感到困惑 ::其中 90 代表大约 3 个月
$day_seconds = 86400;
$period = 90 * $day_seconds;
$this->db->select('COUNT(*) AS total', false);
$this->db->select("FROM_UNIXTIME(`paid_date`, '%Y-%m-%d') AS date", false);
$this->db->where('paid_date >', time()-$period);
示例预期输出
输出应该只有 2 个值以显示趋势。
$results = [ [ 0 => 44 ], [1=>88] ];
理想情况下需要知道销售总收入是向上倾斜还是向下倾斜,较高的正斜率表示销售额大幅增加
例如:
//Dramatic Increase of sales
$results = [ [ 0 => 22 ], [1=>150] ];
//Slow Increase of sales
$results = [ [ 0 => 50 ], [1=>55] ];
//Slow Decrease of sales
$results = [ [ 0 => 64 ], [1=>55] ];
最佳答案
试试这个:
SELECT
*,
CASE WHEN last_3 > prev_3 THEN
'sales up'
ELSE
'sales down'
END AS sales_change,
(
CONCAT(((last_3 - prev_3) * 100) / last_3, '%')
) AS precentage_change
FROM
(
SELECT
SUM(order_total) AS last_3
FROM
TB
WHERE
paid_date > UNIX_TIMESTAMP(CURDATE() - INTERVAL 3 MONTH)
) AS tb1,
(
SELECT
SUM(order_total) AS prev_3
FROM
TB
WHERE
paid_date < UNIX_TIMESTAMP(CURDATE() - INTERVAL 3 MONTH)
AND paid_date > UNIX_TIMESTAMP(CURDATE() - INTERVAL 6 MONTH)
) AS tb2
这应该给你 4 个值:
- last_3 - 最近 3 个月的订单总和
- prev_3 - 之前3个月的订单总和
- sales_change - 过去 3 个月销售额上升或下降时发送的短信
- precentage_change - 数值(带百分比)以显示过去 3 个月和之前 3 个月之间销售额百分比的变化
在 mySQL 中使用 INTERVAL,您可以根据需要使用几天或几周来调整它
INTERVAL 1 DAY
INTERVAL 1 WEEK
关于php - 从mysql获取季度销售趋势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30594658/