要解決的問題:我們想對查詢出來的資料進行排名統計,但又不想在源資料中插入相應的字段。
解決方法:[color=red]以oracle中scott使用者下的emp表為例演示[/color]
對所有員工的工資進行統計排名,查詢語句如下:
select empno,sal,[color=red]rank() over(order by sal desc)[/color] as sal_rank from emp;
結果如下圖:
[img]
select empno,sal,[color=red]dense_rank() over(order by sal desc)[/color] as sal_rank from emp;
結果如下圖:
[img]
以上兩種情況演示了不同排名演算法時對結果的操作,接下來考慮這麼一種情況:對指定部門員工的薪水進行排名統計。
解決方法如下:
select empno,deptno,sal,[color=red]rank() over(partition by deptno order by sal desc)[/color] as sal_rank from emp;
結果如下圖:
[img]
[color=darkblue]rank:處理等值排名時佔位顯示;
dense_rank:處理等值排名時不佔位;
partition by column_name:指定在某範圍內進行排名;
over(order by column_name):指定以哪個字段進行排名統計。[/color]
對查詢結果進行排序
order by 列名 asc desc 公升序或降序排序單列排序 多列排序 指定排序方向 一 單列排序 select from bookinfo order by price desc 注意 預設為公升序排序 二 多列排序 按照多個列進行排序,預設公升序,如 相同 時,按庫存排序 select f...
如何將查詢結果進行排名
於是乎我就開始寫,嘿,奇怪,我還真沒有寫過,於是找了寫資料,借鑑了一下別人的,結果如下 create procedure csp getoperatorscorebydate begindate datetime,enddate datetime ascreate table temp 定義臨時表,...
mysql中對查詢結果進行排序
在進行web開發時,獲取結果排序大部分時候要麼正序排esc,要麼反序排desc,但有時候會出現比較複雜的排序,比如查詢參加培訓的學生所在的學校,部分學生並沒有獲取到其所在的學校資訊,排序的時候需要根據學校學生人數倒排序,同時對於不知道學校的統一記為其他,放在最後面。實現方式之一 select cas...