mysql - 如何正确获取图表值统计

标签 mysql charts group-by

我需要获取每天的销售额总和...按天分组...并按项目分组。 我尝试过各种查询,但不确定是否需要进行联接。

这是我的 table

Item | Price | Day
Apple    2      May1
Banana   3      May1
Apple    2      May1
Banana   3      May2
Apple    2      May2
Banana   3      May2

我需要将其返回到我的图表中...

{period: '5 月 1 日', '苹果': '4', '香蕉': '3'}, {period:'May2', 'apple':'2', 'banana':'6'}

如果有人能引导我朝正确的方向前进,那就太好了。

现在我得到的最远的是按天分组......但我似乎无法按天分组,并按项目分开。

我必须为每个项目运行单独的查询吗?如果是这样...我最终如何将它们结合在一起?

最佳答案

尝试

SELECT CONCAT('{\'period\':\'', day, '\',', GROUP_CONCAT(itemprice ORDER BY itemprice), '}') row
  FROM (SELECT day, CONCAT('\'', item, '\':\'', SUM(price), '\'') itemprice
          FROM table1
         GROUP BY day, item) n
GROUP BY day

输出:

|                                              ROW |
----------------------------------------------------
| {'period':'2013-05-01','Apple':'4','Banana':'3'} |
| {'period':'2013-05-02','Apple':'2','Banana':'6'} |

<强> SQLFiddle

更新:获取每天的所有元素

SELECT CONCAT('{\'period\':\'', day, '\',', GROUP_CONCAT(itemprice ORDER BY itemprice), '}') row
  FROM (
SELECT day, CONCAT('\'', item, '\':\'', SUM(price), '\'') itemprice
  FROM (
SELECT a.day, a.item, IFNULL(t.price, 0) price
  FROM (SELECT day, item FROM
        (
         (SELECT DISTINCT item FROM table1) i CROSS JOIN
         (SELECT DISTINCT day FROm table1) d
        )) a LEFT JOIN
       table1 t ON a.day = t.day AND a.item = t.item    
       ) m
 GROUP BY day, item) n
GROUP BY day

输出:

|                                              ROW |
----------------------------------------------------
| {'period':'2013-05-01','Apple':'4','Banana':'3'} |
| {'period':'2013-05-02','Apple':'2','Banana':'6'} |
| {'period':'2013-05-03','Apple':'2','Banana':'0'} |

<强> SQLFiddle

关于mysql - 如何正确获取图表值统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493710/

相关文章:

mysql - 向该表添加信息是否会使其失去 3NF

python - 缺少多天数据时用 NaN 填充数据框

php - MySQL 计数/求和性能

父子关系的 MySql 查询优化

javascript - Chart.js 2.1.3 中的自定义图例

javascript - 悬停时如何在chart.js中的特定点添加水平线?

Javascript流解析xml

python - Groupby 两列忽略对的顺序

mysql - 消除 GROUP_CONCAT 中的重复行

sql - 快速检查 SQL 数据库中条目是否存在