[英]Sum sql values based on distinct values from another column and put the result in array
我正在嘗試基於總和值的結果創建一個數組,該總和值基於另一列的不同值
我有這兩列“月份”和“課程”。 月份中的列是上課的月份名稱(一月,二月...)。 在專欄中的課程中,我的值是(12,7,6,9,11等)
值示例
Month |lessons
------------------
January |12
January |7
February |6
March |9
March |11
我要實現的是匯總每個月的所有課程,然后將值放入數組中(例如,$ month_values =一月總和,二月總和等)。
結果示例
$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 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
SELECT month, SUM(lessons)
FROM lessons_by_month
GROUP BY month
ORDER BY MONTH(STR_TO_DATE(month,'%M')) ASC
上面的查詢將按日歷月順序輸出課程總和。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.