Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择sum并按种类分组_Php_Mysql_Json_Morris.js - Fatal编程技术网

Php 选择sum并按种类分组

Php 选择sum并按种类分组,php,mysql,json,morris.js,Php,Mysql,Json,Morris.js,我试图用MySql数据库中的数据填充Morris图表的数据数组 我有这样的“布琼根”桌子: ID Value Kind Date 1 200 L 2016-01-01 2 250 B 2016-01-01 3 250 L 2016-01-01 4 200 B 2016-02-01 5 250 B 2016-02-01 6 200 L 2016

我试图用MySql数据库中的数据填充Morris图表的数据数组

我有这样的“布琼根”桌子:

ID   Value   Kind   Date
1    200     L      2016-01-01
2    250     B      2016-01-01
3    250     L      2016-01-01
4    200     B      2016-02-01
5    250     B      2016-02-01
6    200     L      2016-02-01
我想做一个查询,让我得到如下输出:

ID   Value   Kind   Date
1    200     L      2016-01-01
2    250     B      2016-01-01
3    250     L      2016-01-01
4    200     B      2016-02-01
5    250     B      2016-02-01
6    200     L      2016-02-01
值的总和,按数据和种类分组

一月份:450、L和250 B

二月份:450 B和200 L

所需结构:

[{"m":"1","a":"450","b":"250},{"m":"2","a":"200","b":"450}]
我的问题是:

SELECT MONTH( date ) AS m, SUM( value ) AS a
FROM  `buchungen`
WHERE YEAR( date ) = YEAR( CURDATE( ) )
GROUP BY MONTH( date )
我得到以下结构:

[{"m":"4","a":"476852.64"},{"m":"5","a":"851866.74"}]
我有一个问题,我不知道如何考虑“善良”的领域。我该怎么做

谢谢

试试这个:

SELECT MONTH( date ) AS m, 
       SUM(CASE WHEN Kind = 'L' THEN value ELSE 0 END) AS a,
       SUM(CASE WHEN Kind = 'B' THEN value ELSE 0 END) AS b
FROM  `buchungen`
WHERE YEAR( date ) = YEAR( CURDATE( ) )
GROUP BY MONTH( date )
试试这个:

SELECT MONTH( date ) AS m, 
       SUM(CASE WHEN Kind = 'L' THEN value ELSE 0 END) AS a,
       SUM(CASE WHEN Kind = 'B' THEN value ELSE 0 END) AS b
FROM  `buchungen`
WHERE YEAR( date ) = YEAR( CURDATE( ) )
GROUP BY MONTH( date )

正如您提到的,您需要按日期和种类分组的值总和,请尝试以下方法:

SELECT MONTH( date ) AS m, kind, SUM( value ) AS a FROM  `buchungen` WHERE YEAR( date ) = YEAR( CURDATE( ) ) GROUP BY MONTH( date ), kind;

正如您提到的,您需要按日期和种类分组的值总和,请尝试以下方法:

SELECT MONTH( date ) AS m, kind, SUM( value ) AS a FROM  `buchungen` WHERE YEAR( date ) = YEAR( CURDATE( ) ) GROUP BY MONTH( date ), kind;

虽然有点多嘴,但我想
在CONCAT(YEAR(CURDATE()),'-01-01')和CONCAT(YEAR(CURDATE()),'-12-31')之间的日期应该更快这工作正常。谢谢是否还有一种方法可以输出“空”月份的值?比如说,如果“布琼根”一月份什么都没有,只输出第01个月,a 0,b 0?@FlorianSauerwein你必须使用日历表。我有一个所有月份的表。我可能需要在那张桌子上做一个外部连接。我可以扩展上面的查询吗,或者我必须做一个完整的新查询吗?@FlorianSauerwein你可以做类似于
的事情。从日历c左键在c.month=b.month(date)…上加入buchungen b
虽然有点多,但我猜
在CONCAT(YEAR(CURDATE(),'-01-01')和CONCAT(YEAR(CURDATE(),'-12-31')之间的日期)
会更快这工作正常。谢谢是否还有一种方法可以输出“空”月份的值?比如说,如果“布琼根”一月份什么都没有,只输出第01个月,a 0,b 0?@FlorianSauerwein你必须使用日历表。我有一个所有月份的表。我可能需要在那张桌子上做一个外部连接。我可以扩展上面的查询吗,或者我必须创建一个完整的新查询吗?@FlorianSauerwein您可以执行类似于
的操作。从日历c左键在c.month=b.month(date)加入buchungen b)