您的位置:首页 > 数据库 > MySQL

统计分析类目下mysql快速查询应用

2017-11-15 11:41 381 查看
统计分析在web开发中必不可少,往往网上说的都太过于松散,没有集中总结归纳,博主不才,整理了一下相关得sql语句,方便博主日后查看,更为了帮助一些需要得人,共勉。

根据各时间段进行统一查询

#本周数据
insert into my_tab VALUES(now(),2);
insert into my_tab VALUES(DATE_ADD(now(),INTERVAL -1 DAY),3);
insert into my_tab VALUES(DATE_ADD(now(),INTERVAL -2 DAY),4);

#本月数据(包括上面的数据)
insert into my_tab VALUES(DATE_ADD(now(),INTERVAL -8 DAY),3);
insert into my_tab VALUES(DATE_ADD(now(),INTERVAL -10 DAY),4);

#三月数据(包括上面的数据)
insert into my_tab VALUES(DATE_ADD(now(),INTERVAL -1 MONTH),3);
insert into my_tab VALUES(DATE_ADD(now(),INTERVAL -2 MONTH),4);

#本年数据(包括上面的数据)
insert into my_tab VALUES(DATE_ADD(now(),INTERVAL -4 MONTH),8);
insert into my_tab VALUES(DATE_ADD(now(),INTERVAL -6 MONTH),8);

select * from my_tab
/*
dt                cnt
2017-11-15    2
2017-11-14    3
2017-11-13    4
2017-11-07    3
2017-11-05    4
2017-10-15    3
2017-09-15    4
2017-07-15    8
2017-05-15    8
*/
select * from (
select sum(cnt) as 本周数据 from my_tab
where DATE_FORMAT(dt,'%y%m%d')  between DATE_FORMAT(subdate(now(),date_format(curdate(),'%w')-1),'%y%m%d')
and DATE_FORMAT(subdate(now(),date_format(curdate(),'%w')-7),'%y%m%d')
#以上where本周数据统计的是本周一到这周日的数据和,如果你要统计今天往前7天的数据,用下面的where
#where DATE_FORMAT(dt,'%y%m%d')+7>DATE_FORMAT(now(),'%y%m%d')
)a,(
select sum(cnt) as 本月数据 from my_tab
where month(dt)=MONTH(now())
) b,(
select sum(cnt) as 三月数据 from my_tab
where month(dt)+3>MONTH(now())
) c,(
select sum(cnt) as 本年数据 from my_tab
where YEAR(dt)=YEAR(now())
) d




如果需要查询具体信息,比如发布了一些文章,然后根据时间查询文章数,则将sum(cnt)改为count(文章所对应字段),则可以查询出相对应得数据总和。

如果需要根据条件查询,在后面加入相应条件即可

例:

select * from (
select sum(cnt) as 本周数据 from my_tab
where DATE_FORMAT(dt,'%y%m%d')  between DATE_FORMAT(subdate(now(),date_format(curdate(),'%w')-1),'%y%m%d')
and DATE_FORMAT(subdate(now(),date_format(curdate(),'%w')-7),'%y%m%d')
以上where本周数据统计的是本周一到这周日的数据和,如果你要统计今天往前7天的数据,用下面的where
where DATE_FORMAT(dt,'%y%m%d')+7>DATE_FORMAT(now(),'%y%m%d')
)a,(
select sum(cnt) as 本月数据 from my_tab
where month(dt)=MONTH(now())
) b,(
select sum(cnt) as 三月数据 from my_tab
where month(dt)+3>MONTH(now())
) c,(
select sum(cnt) as 本年数据 from my_tab
where YEAR(dt)=YEAR(now())
) d,(
select 条件字段 from 子表 LEFT JOIN 关联表 on 关联条件
) e




希望可以帮助到大家,我们不止会New!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: