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

统计分析在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!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值