我正在尝试根据来自另一列的不同值的和值结果创建一个数组
我有两个列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);
但我很难获得每个月的价值
我在这里搜索过,看看是否有人面临同样的挑战,但找不到任何可以帮助我的东西
有关如何更改上述查询以及将课程值放在数组中的任何建议吗?
由于
答案 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 强>