设为首页 加入收藏

TOP

group by 语句用法详解
2011-06-12 21:47:57 来源: 作者: 【 】 浏览:429次 评论:0

将 where 子句与 group by 子句一起使用

分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 where 子句。必须在group by 子句之前指定 where 子句

 

$result = mysql教程_query("select groups教程,name,goods from table group by groups,name order by name");
$arr = array();
$i = 0;
while($row = mysql_fetch_array($result)){
$arr[] = $row;
}

$m = $i - 1;
foreach($arr as $k=>$v){
if($v[$i]['groups'] <> $v[$m]['groups']){
echo '分割符号';
}
echo $v['name'],$v['goods'];
}

看个应用实例

group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。

select子句中的列名必须为分组列或列函数。列函数对于group by子句定义的每个组各返回一个结果。

某个员工信息表结构和数据如下:

 

id  name  dept  salary  edlevel  hiredate 
      1 张三 开发部 2000 3 2009-10-11
      2 李四 开发部 2500 3 2009-10-01
      3 王五 设计部 2600 5 2010-10-02
      4 王六 设计部 2300 4 2010-10-03
      5 马七 设计部 2100 4 2010-10-06
      6 赵八 销售部 3000 5 2010-10-05
      7 钱九 销售部 3100 7 2010-10-07
      8 孙十 销售部 3500 7 2010-10-06

例如,我想列出每个部门最高薪水的结果,sql语句如下:

select dept, max(salary) as maximum
from staff
group by dept

查询结果如下:
      dept  maximum 
      开发部 2500
      设计部 2600
      销售部 3500

我们现在回到函数上。记得我们用 sum 这个指令来算出所有的 sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于 store_name 及 sales 这两个栏位都要选出。第二,我们需要确认所有的 sales 都要依照各个 store_name 来分开算。这个语法为: 

  

select "栏位1", sum("栏位2") from "表格名" group by "栏位1"

  select store_name, sum(sales) from store_information group by store_name

  在我们的示范上, 

  store_information 表格

  store_name sales date 

  los angeles $1500 jan-05-1999 

  san diego $250 jan-07-1999 

  los angeles $300 jan-08-1999 

  boston $700 jan-08-1999 

  我们就打入
select store_name, sum(sales) from store_information group by store_name 

  结果: 

  store_name sum(sales)

  los angeles $1800

  san diego $250

  boston $700

您看到此篇文章时的感受是:
Tags: 责任编辑:administrator
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇mysql group by 先排序与分组同时.. 下一篇获取mysql数据库所有表名的php程序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

相关栏目

最新文章

图片主题

热门文章

推荐文章

相关文章

广告位