$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]'的列。
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。