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