最近用到的 sql 统计操作

时间:2024-01-17 08:15:20

统计操作

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可以当成班级

最近用到的 sql 统计操作

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
--上面这两个汇总在不同情况下,运行时间各有长段,在当前情况下选择第一种比较好。
--在使用时根据不同情况选择不同的方式进行汇总。