1.排序列爲唯一標識
select * from bu_upload where
times in (select max(times) from bu_upload group by gs_no)
2.排序列非唯一標識 (server sql 2005以上也適用)
按gs_no 分組,按times 反向排序,生成行號rid ,取第一條(rid=1的)
SELECT * FROM
(
SELECT z.* ,ROW_NUMBER() OVER(PARTITION BY z.gs_no ORDER BY z.times desc) AS rid
FROM bu_upload z
)
WHERE rid =1;
OVER(PARTITION BY) 其他功能
-- select * from cte_child order by gro,level
-- select c.*,row_number() OVER(PARTITION BY gro ORDER BY level desc) AS rid from cte_child c --加行號
-- select c.*,DENSE_RANK() OVER(PARTITION BY gro ORDER BY level desc) AS rid from cte_child c --排名 並列不佔名次位
select c.*,RANK() OVER(PARTITION BY gro ORDER BY level asc) AS rid from cte_child c --排名 並列佔名次位
-- select c.*,NTILE(4) OVER(PARTITION BY gro ORDER BY level asc) AS rid from cte_child c --排名 將數據分成指定組數,併爲每一組生成一個序號
-- SELECT c.*,COUNT(1) OVER(PARTITION BY gro) AS rid from cte_child c --分組,獲取組內數據行數
-- SELECT c.*,COUNT(1) OVER() AS rid from cte_child c --不分組,獲取所有數據行數 --可和OVER(PARTITION BY gro)同時使用
-- SUM,AVG(平均),MAX,MIN 同上