SQL --------------- GROUP BY 函数
Aggregate 函数常常需要添加 GROUP BY 语句,Aggregate函数也就是常说的聚和函数,也叫集合函数
GROUP BY语句通常与集合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以按一个或多个列对结果集进行分组。
语法:
select 聚合函数(字段),字段 from 表名 group by 字段
建个表,弄点数,为了方便对照
分组查询银行统计名字相同的有几个
select COUNT(字段) as 个数,字段a from 表名 group by 字段a
其中count 中的字段可以随意填,一般为id
有可能的报错:
只又分组查询的那个字段可以不用聚合函数
可以稍加修改:
分组查询银行,并统计工资总数
与top 一块进行查询
语法:
select top 查询前几行 COUNT(字段) as 个数,字段a from 表名 group by 字段a
与排序 order by 一块
语法: 字段要一致
select top 查询前几行 COUNT(字段) as 个数,字段a from 表名 group by 字段a order by 字段a desc
如果不一致
与where 字句一块使用
语法: count() 里面没有什么限制,放啥都行
select top 查询前几行 COUNT(0) as 个数,字段a from 表名 where 条件 group by 字段a order by 字段a desc
多表查询
语法:
SELECT 表1.name,COUNT(表2.aid) AS nums FROM 表2 INNER JOIN 表1 ON 表2.site_id=表1.id GROUP BY 表1.name;
select * from obgetest -- 分组查询 银行,,其中名字是 obge 的有两个 select COUNT(Gids) as 个数,Bank from obgetest group by Bank --- 可以看出,多个字段时,只有需要分组查询的那个字段可以不用使用聚合函数 select COUNT(Gids)as 个数,Bank,Gongzi from obgetest group by Bank -- 可以修改为分组查询银行,并统计工资总总数 select COUNT(Gids)as 个数,Bank,sum(Gongzi)as 总数 from obgetest group by Bank -- 与top 一块查询,count 里面放入bank 字段和 gids 字段的作用一致 select top 5 COUNT(Bank) as 个数,Bank from obgetest group by Bank -- 与order by 一块,分组查询工资相同个数, 并按照倒序排列,查前5 行 ----- 一定要注意 排序的字段和分组字段要一致 select top 5 COUNT(rem) as 个数,Gongzi from obgetest group by Gongzi order by Gongzi desc --- 有错误 select top 5 COUNT(rem) as 个数,Gongzi from obgetest group by Gongzi order by Gids desc ---- 与where字句 注意语法位置 select COUNT(0) as 个数,Gongzi from obgetest where Gongzi > 1000 group by Gongzi order by Gongzi desc