如何从mysql中选择一年内按月分组、一个月求和的值?

如何从mysql中选择一年内按月分组、一个月求和的值?,mysql,Mysql,这是我的数据库表,名为“payment”,它的结构和数据 现在,当用户从日历中选择年份时,我想在我的php网页中显示如下所述的表格数据(我使用了Zebra日期选择器)。斑马日期选择器给出年份 在这个场景中,用户选择2020年,它应该显示如下值 received_amount | updated_at ---------------------------- 4000 | 2020-11-02 2000 | 2020-11-03 1000

这是我的数据库表,名为“payment”,它的结构和数据

现在,当用户从日历中选择年份时,我想在我的php网页中显示如下所述的表格数据(我使用了Zebra日期选择器)。斑马日期选择器给出年份

在这个场景中,用户选择2020年,它应该显示如下值

received_amount | updated_at
----------------------------
4000            | 2020-11-02
2000            | 2020-11-03
1000            | 2020-12-02
1000            | 2020-12-04
3000            | 2021-01-02
2000            | 2020-01-02

您可以像这样在查询中使用group by

Year  | Month   | Monthly Total
----------------------------
2020  | November| 6000
2020  | December| 2000
然后像这样选择

GROUP BY EXTRACT(YEAR FROM updated_at), EXTRACT(MONTH FROM updated_at)
你可以做:

SELECT EXTRACT(YEAR FROM updated_at) as Year,
       EXTRACT(MONTH FROM updated_at) as Month,
       SUM(received_amount) as Monthly_Total
结果:

select year, month, monthly_total
from (
  select
    extract(year from updated_at) as year,
    extract(month from updated_at) as m,
    monthname(updated_at) as month,
    sum(receive_amount) as monthly_total
  from t
  where extract(year from updated_at) = 2020
  group by year, month, m
) x
order by year, m

参见运行示例。

2020年1月怎么样?我可以在数据中看到。如果用户选择了年份,那么为什么您的预期结果行中有超过1年的数据?@TheImpler Ahha。错过了。Thanks@forpas只应显示所选年份。谢谢,你好。查询在我的数据库表中按预期工作。但是如何将结果放入php页面中的表中呢?我试过了,但有错误。请帮助我。你的代码也帮助了我。非常感谢你。
 year  month     monthly_total 
 ----- --------- ------------- 
 2020  January   2000          
 2020  November  6000          
 2020  December  2000