(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()即可…