当先锋百科网

首页 1 2 3 4 5 6 7

一、相同id个数统计

select count(*),id from ta WHERE group by (id)

二、按天统计数据个数

select count(*),DATE_FORMAT(end_time,'%Y-%d-%m')
from cpt_end_rec
group by year(end_time),month(end_time),day(end_time)

这种方法比较通用,也可以按照年、月,日,小时,分钟,秒来统计

 

三、多列统计

    有时候我们需要同时统计多个数据放在一个表里面

-- 统计所有列数,然后是三种类型得到个数
select count(1),sum(case when id='0' then 1 ELSE 0 end) a,
sum(case when id='1' then 1 ELSE 0 end) b,
sum(case when id='2' then 1 ELSE 0 end) c,
sum(case when id='3' then 1 ELSE 0 end) d
from person_table
group by q_list

四、分组内部的排名

按照名字分组,对probability进行排序

SELECT * FROM t_prize m
 where(
 select COUNT(*) from t_prize n
     where m.NAME = n.NAME and n.PROBABILITY > m.PROBABILITY)<2

五、多分组数据

解决A字段、对应不同B字段的统计

select A,B,count(1) from t_table group by A,B;

六、分组和过滤的先后关系

  • 在查询之前需要先考虑,到底是先分组,还是先筛选条件
    如果是先筛选,后分组where+group by
    如果是先分组,再筛选group by+having