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