萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> group by 語句用法詳解

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

copyright © 萬盛學電腦網 all rights reserved