比如现有表Ad_inf
_id name describe
1 test1 d1
2 test2 d2
3 test2 d2
4 test2 d3
5 test3 d2
6 test4 d4
执行select * from Ad_inf group by name,describe 得到的是什么样的?
select * from Ad_inf group by name,describe
如果你是使用oracle查询,这个句子会报错。
group by 的字段需要在sql中查询出来,分组字段可以不用聚合,如果报错,根据错误提醒就能搞定,
建议查找group by 知识点实践一下,例如:
select min( _id),name,describe from Ad_inf group by name,describe
得到的结果跟你写出的结果一样。
应该还是你现在查的格式,.group by一般是用在sum,count这样的函数里面的
group by一般要用sum,count这样的聚合函数
这个地方要报错,建议你看看相关的书籍
group by name,首先要看你的name是定义什么以及如何定义的,我之前在SQL Sever中做的实验是定义商场名,这条语句的执行结果会将对应结果按字母顺序排列。至于你的describe我不是很懂
我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。我们可以将Group By操作想象成如下的一个过程,首先系统根据SELECT 语句得到一个结果集,如最开始的那个水果、出产国家、单价的一个详细表。然后根据分组字段,将具有相同分组字段的记录归并成了一条记录。这个时候剩下的那些不存在于Group By语句后面作为分组依据的字段就有可能出现多个值,但是当前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)了。--百度百科
会报错 select * from Ad_inf group by name,describe
一般group by 会配合聚合函数 count(--) ,avg(--),sum()
select name.describe, count(_id)from Ad_inf group by name,describe 表示 name,describe一样的有多少人
会报错 select * from Ad_inf group by name,describe
一般group by 会配合聚合函数 count(--) ,avg(--),sum()
select name.describe, count(_id)from Ad_inf group by name,describe 表示 name,describe一样的有多少人
结果应该还是现在的顺序,
如果是用的 mysql 的话会查出 name 和 describe 各自分组后各自所有相同列值的首条记录列表然后合并成一个新个列表
例:
group by name
id name
1 test1
2 test2
5 test3
6 test4
group by describe
id describe
1 d1
2 d2
4 d3
6 d4
合并后为
group by name,describe
1 test1 d1
2 test2 d2
4 test2 d3
5 test3 d2
6 test4 d4
举个例子:按公司部分分组,统计一个公司每个部门的人数
公司表:create table company(
dept_id number(11), --部门id
name varchar2(50) --员工姓名
);
插入几条数据:
insert into company values(1,'1_one');--一号部门一个人
insert into company values(1,'1_two');--一号部门的另外一个人
insert into company values(2,'2_one');--二号部门一个人
insert into company values(2,'2_two');--二号部门的另外一个人
select count(1) from company; --这样统计得到的是整个公司的所有人 4个人
select dept_id,count(1) from company group by dept_id;--按部门分组统计每个部门有多少人
结果:
1 2 --一号部门两人
2 2 --二号部门两人
这就是分组的意义,顾名思义,就是把一堆东西按某个特性分离开来统计,这里就是按部门分开,统计出每个部门有多少人,直接统计就是整个公司的全体人数。