MySQL:查询每月新增用户数

(4399的)一道大题,直接在网页上写。又不能调试 -_-! 简直…


1. 设计一张表t,有如下字段。

用户名,密码,性别,年龄,注册时间。


2. 统计每个月新增的年龄大于18岁的男性用户。

纯SQL查询

可以写一段很长的SQL语句出来,但太麻烦。如果能创建视图,就很好了。

第一步,建视图。

根据第1个问题的表,可以造一张这样的表出来。

m (时间) num (成年男性用户总数)
2017-01 34
2017-02

46

… create view xxx as (xxx);

SELECT CONCAT(YEAR(t.m),MONTH(t.m)) AS m, COUNT(*) as num FROM t WHERE 条件
GROUP BY YEAR(t.m), MONTH(t.m);

第二步,自连接。

SELECT STR_TO_DATE(CONCAT(YEAR(t1.m),MONTH(t1.m)+1), '%Y%m') AS 时间, 
t2.num-t1.num AS 新增人数 FROM t t1, t t2
WHERE CONCAT(YEAR(t1.m),MONTH(t1.m)+1) = CONCAT(YEAR(t2.m),MONTH(t2.m));


Python操作

新增3列,一列是年份,一列是月份,最后一列是 “年月”

然后df2 = df1.groupby('年月').sum()['人数']

再df1['人数'].diff()即可…

猜你喜欢

转载自blog.csdn.net/qcyfred/article/details/79478536
今日推荐