mysql 如何按月分组查询出当前年度每个月的短信数量(数据库中这个月要是为空的话就用0条怎么显示出来)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 如何按月分组查询出当前年度每个月的短信数量(数据库中这个月要是为空的话就用0条怎么显示出来)相关的知识,希望对你有一定的参考价值。

以下是我的sql:(我写的这条不能显示没有数据的这个月的数量 0)
SELECT
DATE_FORMAT(createTime, '%Y-%m') AS date,
count(*) AS count
FROM
data_shortmessage
WHERE
createTime > (
CONCAT(
DATE_FORMAT(now(), '%Y'),
'-01-01'
)
)
AND createTime <= (
CONCAT(
DATE_FORMAT(now(), '%Y'),
'-12-31'
)
)
GROUP BY
YEAR (createTime),
MONTH (createTime);

可以加个时间维度表,以时间维度表为主表!(id,month)id 是和你的表左连接,month是1到12月,一楼说的几个方法!应该不好实现的吧?不用写存储过程那么复杂!举个例子
select a.rq,
b.xssr
from date_table a left jion table1 b
on a.id=b.id
参考技术A 可以考虑用NVL函数或者case语句实现追问

我自己就在尝试用case语句写的,在数据库执行,就是不出来为0数量的这个月,所以才来求教高手帮忙搞定一下

追答

我理解了,标准根本就不存在这个数据对吧,这样你想显示是这个意思吧

追问

对的,比如查询2015年的,我数据库有1月 2月 5月数据 我需求是,同时也要统计出3 ,4 月的数量,只不过是用0显示出来

追答

这个就没办法了,除非数据库存在这个数据,否则那就得用存储过程实现或者SQL取到值后外部程序进行处理

追问

哦,那我就去找找存储的吧,谢谢你指导啊

以上是关于mysql 如何按月分组查询出当前年度每个月的短信数量(数据库中这个月要是为空的话就用0条怎么显示出来)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 获取按月分组的过去 12 个月的数量

NSFetchRequest 按月分组

获取按月分组的最近 12 个月的数据,即使为 0

sql中如何把具体日期转化为按月排序?

oracle中group by按月分组统计

在 sqlite 中按月分组