我正试图根据基于另一列的不同值的和值的结果创建一个数组
我有这两个专栏《月份》和《课程》。在列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