根据另一列的不同值求和sql值,并将结果放入数组中


Sum sql values based on distinct values from another column and put the result in array

我正试图根据基于另一列的不同值的和值的结果创建一个数组

我有这两个专栏《月份》和《课程》。在列month是给出课程的月份名称(一月,二月…(。在列课程中,我有类似(12,7,6,9,11等(的值

示例值

Month    |lessons
------------------
January  |12 
January  |7
February |6
March    |9
March    |11

我想要实现的是对每个月的所有课程进行求和,然后将这些值放在一个数组中,例如($month_values=January sum,February sum,etc(。

示例结果

$month_values = 19,6,20;

我已经设法用这个查询获得了几个月

$sth = $db->prepare("SELECT DISTINCT month FROM acc where month!=''");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
$months = json_encode($result);

但我正在努力获得每个月的价值

我在这里搜索过,看看是否有人面临同样的挑战,但找不到任何可以帮助我的东西

有没有关于如何更改上面的查询并将课程值放入数组的建议?

感谢

SELECT month, SUM(lessons) 
FROM lessons_by_month 
GROUP BY month 
ORDER BY MONTH(STR_TO_DATE(month,'%M')) ASC

上述查询将按日历月份顺序输出课程总数。

SQLFIDDLE演示

select group_concat(month), group_concat(l) from (
    SELECT month, SUM(lessons) as l FROM lessons_by_month GROUP BY month
) foo

会给你

|   GROUP_CONCAT(MONTH) | GROUP_CONCAT(L) |
|-----------------------|-----------------|
| February,January,June |          2,6,10 |

简单地说,在这种情况下,您需要的是按月份列GROUP行。

SELECT month, SUM(lessons) AS lessons FROM lessons_by_month GROUP BY month

我还做了一个SQL Fiddle,如果需要的话,你可以用它来调整

以下是一个基于问题输入的示例输出:

month    | lessons
------------------
February | 6
January  | 19
March    | 20