我需要获取每天的销售额总和...按天分组...并按项目分组。 我尝试过各种查询,但不确定是否需要进行联接。
这是我的 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/