簡體   English   中英

根據來自另一列的不同值對sql值求和,並將結果放入數組

[英]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

上面的查詢將按日歷月順序輸出課程總和。

SQLFIDDLE演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM