group by 语句用法详解
将 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
补充:数据库,mysql教程