php – 计算MySQL中的每日销售额
发布时间:2020-12-13 17:30:37 所属栏目:PHP教程 来源:网络整理
导读:我有一个简单的表格,其中包含某个组的日期和总销售额: date | totalsales=======================2014-05-01 | 30002014-05-02 | 31002014-05-03 | 35002014-05-04 | 3650 我喜欢计算一些东西: 每天销售额 平均销售额 增长% 结果应该看起来像(手动计算所
我有一个简单的表格,其中包含某个组的日期和总销售额:
date | totalsales ======================= 2014-05-01 | 3000 2014-05-02 | 3100 2014-05-03 | 3500 2014-05-04 | 3650 我喜欢计算一些东西: >每天销售额 结果应该看起来像(手动计算所以可能错了:)) date | sales | average | growth ======================================= 2014-05-01 | 0 | 0 | 0 2014-05-02 | 100 | 50 | 100 2014-05-03 | 400 | 166.66 | 400 2014-05-04 | 150 | 162.5 | 37.5 这甚至可以在sql语句中使用,还是应该用PHP或其他服务器软件计算? 解决方法
这是完整的查询,每行没有子选择:(感谢@nmarsh编写最难的部分)
请参阅SQL小提琴:http://sqlfiddle.com/#!2/be4654/34/0 SELECT t1.Date,CASE WHEN t2.date IS NULL THEN 0 ELSE (t1.totalSales - t2.totalSales) END AS sales,CASE WHEN t2.date IS NULL THEN 0 / (@curRow := @curRow + 1) ELSE ((@curSum := @curSum + (t1.totalSales - t2.totalSales)) / (@curRow := @curRow + 1)) END AS average,CASE WHEN t3.date IS NULL AND t2.date IS NULL THEN 0 WHEN t3.date IS NULL THEN (t1.totalSales - t2.totalSales) WHEN t2.date IS NULL THEN 0 ELSE ((t1.totalSales - t2.totalSales) * 100) / (t2.totalSales - t3.totalSales) END AS growth FROM test t1 LEFT JOIN test t2 ON t2.date = DATE_ADD(t1.Date,INTERVAL -1 DAY) LEFT JOIN test t3 ON t3.date = DATE_ADD(t2.Date,INTERVAL -1 DAY) JOIN (SELECT @curRow := 0) r JOIN (SELECT @curSum := 0) ct ORDER BY 1; 原表: date | totalsales ======================= 2014-05-01 | 3000 2014-05-02 | 3100 2014-05-03 | 3500 2014-05-04 | 3650 OUTPUT date | sales | average | growth ======================================= 2014-05-01 | 0 | 0 | 0 2014-05-02 | 100 | 50 | 100 2014-05-03 | 400 | 166.66 | 400 2014-05-04 | 150 | 162.5 | 37.5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |