2010年8月21日

PostgreSQL--已經有rank()可以用了

PostgreSQL--已經有rank()可以用…太感動了
$query="SELECT raid,racenum,secsco,secsv,rank() OVER (PARTITION BY raid ORDER BY secsv ASC) FROM app_tbl WHERE secqua='1' AND secsv!='0' AND raid='$_GET[raid]'";
$sql =pg_query($query) or die($query);
 while($rows=pg_fetch_array($sql)){
  echo $rows[raid]."--".$rows[racenum]."--".$rows[secsco]."--".$rows[secsv]."--".$rows[rank]."
";
 }
語法中rank()在postgresql中稱為windows function,在windows function中會伴隨 OVE R語句,PARTITION語句可以幫我們在眾資料中進行分類,像上述PARTITION BY raid就是將raid欄位進行分類,在各raid分類中再依secsv進行排序,rank()再依 OVER()語句中的結果進行排名,會對各raid分類分別排名。
所以上述的查詢是說:從app_tbl表中找出raid,racenum,secsco,secsv欄位,其中以raid欄位分組以secsv進行rank()排序,再從中找出符合secqua欄位='1' AND secsv欄位!='0' AND raid欄位='$_GET[raid]'的列。

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。