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

 

posted on 2019-10-22 11:50  obge  阅读(3675)  评论(0编辑  收藏  举报