GROUP BY的用法

来源:互联网 发布:mac版的优酷能缓存吗 编辑:程序博客网 时间:2024/05/22 22:36
sql语句Group By用法一则
2007-10-25 12:00
sql语句GroupBy用法一则
如果我们的需求变成是要算出每一间店(store_name) 的营业额(sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于store_name 及 Sales 这两个栏位都要选出。第二,我们需要确认所有的sales 都要依照各个 store_name来分开算。这个语法为:   

SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUPBY"栏位1"   

在我们的示范上,   

Store_Information 表格
store_nameSalesDateLosAngeles$1500Jan-05-1999SanDiego$250Jan-07-1999LosAngeles$300Jan-08-1999Boston$700Jan-08-1999我们就打入, SELECT store_name,SUM(Sales)   FROM Store_Information GROUP BYstore_name   

结果:   

store_nameSUM(Sales)Los Angeles$1800San Diego$250Boston$700

 

SQL之GROUP BY 之二

首先讲讲GROUP BY 子句语法:



SELECT column1, SUM(column2)



FROM "list-of-tables"



GROUP BY "column-list";

例子如下:
一个销售表sales:
workernamesalemoneya13000a22000a31000a23000

sql要求,查询每个员工的总销售总额:

select workername,sum(salemoney) from sales group byworkername

sql要求,查询总销售额最大的员工姓名跟销售额:

select workername,max(salemoney) from sales group byworkername

sql要求,查询总销售额大于等于2000的员工姓名跟销售额:

select workername,sum(salemoney) from sales group by workernamehaving sum(salemoney)>=2000

 



group by 有一个原则,就是 select后面的所有列中,没有使用聚合函数的列,必须出现在 group by后面 

说白了就是select 所取出的字段 在分组里必须有

但是排除被合计的字段

比如 select a,b,c from table group by a,b,c

这里 group by 里 必须有a,b,c

如果改成 select a,b,sum(c) from table groupby a,b
这里 因为c被合计了 所以按照a,b分组就可以了

同样的合计函数还包括max count 等等!

 

 

group by

    在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

   在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数

   select max(sal),job emp group by job;
   (注意max(sal),job的job并非一定要出现,但有意义)

   查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。

  select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

  当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件
 
  where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
  having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

  查询每个部门的每种职位的雇员数
  select deptno,job,count(*) from emp group by deptno,job

0 0
原创粉丝点击