mysql - SQL查询计算并显示一年中每个月的总和数据
问题描述
我有一些数据如下的“订单”表:
--------------------------------- 编号 | 金额 | 订购日期 --------------------------------- 1 | 100.00 | 2018-03-12 2 | 120.00 | 2018-03-25 3 | 200.00 | 2018-04-10 4 | 250.00 | 2018-04-20 5 | 300.00 | 2018-05-02
我想显示当年每个月的 SUM('amount'),我想稍后使用这些数据创建图表。
我想达到这样的结果。
--------------------------------- 月 | 总和(金额) --------------------------------- 一月 | 0.00 二月 | 0.00 三月 | 320.00 四月 | 450.00 麦 | 300.00 六月 | 0.00 七月 | 0.00 八月 | 0.00 九月 | 0.00 十月 | 0.00 十一月 | 0.00 十二月 | 0.00
我创建了一个单独的表“月”,其中包含一年中的所有月份,然后我留下了加入“订单”,但它没有用,这是我使用的查询。
请帮忙。
SELECT months.month, IFNULL( sum(orders.amount), 0 ) AS amount
FROM months
LEFT OUTER JOIN orders ON month(orders.order_date) = months.month
GROUP BY months.month
更新
最后我让它工作了这是我的查询
SELECT IFNULL( sum(orders.amount), 0 ) 作为金额 从几个月 左外连接订单 on monthName(orders.order_date) = months.month 按月分组 按字段排序(月,'一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月', '十二月')
解决方案
month()函数返回一个数字,而不是月份的名称。
要么使用monthname()函数,要么将月份的数字存储在帮助表中,而不是月份的名称。后者稍微可靠一些,因为 mysql 的语言设置会影响 monthname() 函数的返回值。
推荐阅读
- docker - 在 docker-compose.yml 文件中为卷添加标签或名称
- json - 限制在单独的 JSONschema 中定义的枚举值
- javascript - 使用 async/await 模型转换嵌套的 .map 方法
- python-3.x - 使用 python-pptx 绘制多个折线图时如何处理缺失的 x 轴值
- docker - Docker - 如何在 SSL 上连接到 host.docker.internal?
- python - 如何在其他函数中使用返回的变量。Python
- sql-server - SQL Server:为失败的登录创建登录触发器
- scala - Scala-Spark 开发人员是否必须在他的计算机上安装 Spark 和 Hadoop?
- r - 根据 col.names 中的 row.names 和条件汇总行 - R
- java - Java参数化方法解释