person_add表是加入会员表,有字段adddate(如:2012-10-01)
person_quit表是退出会员表,有字段quitdate(如:2012-12-01) 如何作出如下的格式(共12行,每月一行,加入或退出人数为空时显示0):月份 加入人数 退出人数
1月 3 0
2月 0 0
......
12月 5 2 下面的sql语句可以统计出person_add表的月份和加入人数,如下:
select DATE_FORMAT(adddate,'%Y-%m') as month,count(*) as add from person_add where DATE_FORMAT(adddate,'%Y')= year(curdate()) group by month order by month; 但是上面的sql存在两个问题:
1、没有把退出会员表的数据合并过来。
2、当加入人数的月份为空时,比如2月无人加入,则2月这一行不显示。 请教如何实现上面的格式? mysqldatesql
person_quit表是退出会员表,有字段quitdate(如:2012-12-01) 如何作出如下的格式(共12行,每月一行,加入或退出人数为空时显示0):月份 加入人数 退出人数
1月 3 0
2月 0 0
......
12月 5 2 下面的sql语句可以统计出person_add表的月份和加入人数,如下:
select DATE_FORMAT(adddate,'%Y-%m') as month,count(*) as add from person_add where DATE_FORMAT(adddate,'%Y')= year(curdate()) group by month order by month; 但是上面的sql存在两个问题:
1、没有把退出会员表的数据合并过来。
2、当加入人数的月份为空时,比如2月无人加入,则2月这一行不显示。 请教如何实现上面的格式? mysqldatesql
解决方案 »
- 数据库sql语句效率问题,求解
- sql求出差天数问题。看似简单
- 我好多个.txt文本数据,我想把它导入到MYSQL数据库中.请问务搞手帮帮忙.....我杨春在这多谢谢了!
- MT的mysql编码乱码问题
- 急问一个问题:XP下安装那个版本的mysql以及connetor for JDBC最好(把安装时要注意的事项说清楚)
- 对数据库进行多表联合查询,是不是有很大的性能影响?谢谢!
- 第一次安装mysql!!!!!!!!
- 两个不同的服务器数据库连接查询。
- sql 判断时候提示从数据类型 varchar 转换为 numeric 时出错.
- 为什么 我的MYSQL创建不了连接
- 数据库启动报错
- MySql插入触发器报错!!!
2.用此函数ifnull(adddate,0);select DATE_FORMAT(A.adddate,'%Y-%m') as month,count(*) as add from person_add A where DATE_FORMAT(A.adddate,'%Y')= year(curdate()) left join person_quit Q ON A.id=Q.id group by month order by month;
sum(a) as 加入人数,
sum(q) as 退出人数
from (
select adddate,1 as a,0 as q from person_add
union all
select quitdate,1 as a,1 as q from person_add
) t
group by DATE_FORMAT(adddate,'%Y-%m');
sum(a) as 加入人数,
sum(q) as 退出人数
from (
select adddate,1 as a,0 as q from person_add
union all
select quitdate,0 as a,1 as q from person_add
) t
group by DATE_FORMAT(adddate,'%Y-%m');
month 加入人数 退出人数
2012-01 0 0
2012-02 0 0
........................
2012-09 0 1
2012-10 2 0
2012-11 5 0
2012-12 8 1