基于来自另一列的不同值汇总sql值并将结果放入数组中

时间:2014-06-14 08:00:46

标签: php mysql

我正在尝试根据来自另一列的不同值的和值结果创建一个数组

我有两个列Month和Lessons。列中的月份是课程的月份名称(1月,2月......)。在专栏课程中,我有类似(12,7,6,9,11等)的值

示例值

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

我想要实现的是每月汇总所有课程,然后将值放在数组中(例如$ month_values = 1月Sum,2月Sum等)。

示例结果

$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);

但我很难获得每个月的价值

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

有关如何更改上述查询以及将课程值放在数组中的任何建议吗?

由于

3 个答案:

答案 0 :(得分:2)

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 |

答案 1 :(得分:2)

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

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

我还制作了SQL Fiddle,如果需要的话,你可以调整它。

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

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

答案 2 :(得分:2)

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

上述查询将输出日历月订单中的课程总和。

<强> SQLFIDDLE DEMO