一、相同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