码迷,mamicode.com
首页 > 数据库 > 详细

最近用到的 sql 统计操作

时间:2018-12-08 18:03:26      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:ase   left join   name   case when   关联   并且   运行时   分享   block   

统计操作

1、分组统计group by

select id,name,count(*) as ‘总数‘  from test1 group by id,name     --group by   分组字段需要和显示字段一至  并且可以直接使用count(*)统计各有多少数量

2、case when 对数据进行分组

select
  case when (id<‘1‘) then ‘1‘ when(id>=‘1‘ and id<=‘3‘) then ‘2‘
  else ‘3‘
  end ‘work_age‘
from test1
group by
  case when (id<‘1‘) then ‘1‘ when(id>=‘1‘ and id<=‘3‘) then ‘2‘
    else ‘3‘  --group by 跟前面的一样。
  end

3、综合汇总操作

      1、直接分类统计

select
count(*) as 总人数,
sum(case when gender=1 then 1 else 0 end) as ‘男生人数‘, --男生为1 女生为2
sum(case when gender=2 then 1 else 0 end) as ‘女生人数‘
from test1

     2、分组后在进行分类统计

select  id,
    count(*) as 总人数,

    sum(case when id=‘1‘ then 1 else 0 end) as ‘男生人数‘,    --男生为1 女生为2

    sum(case when id=‘2‘ then 1 else 0 end)  as ‘女生人数‘,

    sum(case when id not in (‘1‘,‘2‘) then 1 else 0 end)  as ‘不男不女人数‘
from test1
group by id   

--这里的ID可以当成班级

技术分享图片

 

4、汇总条件及运行时间

--通过子查询进行汇总
select userid,username,count(*) from (
select userid,username,cdid,cdname from test2 where cdid=‘110‘
) a
groupby userid,username
--0.12S
--直接通过关联查询后进行汇总
select userid,username,count(*) from test1 as a left join test2 on a.userid=b.userid where b.cdid=‘110‘ group by a.userid,a.username
--0.23S
--上面这两个汇总在不同情况下,运行时间各有长段,在当前情况下选择第一种比较好。
--在使用时根据不同情况选择不同的方式进行汇总。

 

 

 

最近用到的 sql 统计操作

标签:ase   left join   name   case when   关联   并且   运行时   分享   block   

原文地址:https://www.cnblogs.com/mfdwg/p/10088222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!