可以通過 “order by 字段名 asc (desc)” 命令進行排序。
目前成都創(chuàng)新互聯(lián)公司已為上千余家的企業(yè)提供了網站建設、域名、網絡空間、網站托管、服務器租用、企業(yè)網站設計、勉縣網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
sql:select * from tablename order by id DESC;
用 DESC 表示按倒序排序(即:從大到小排序) ,用 ACS 表示按正序排序(即:從小到大排序)。
1、首先在oracle建立數(shù)據(jù)表的時候,對表的命名有以下規(guī)范:以字母開頭表名長度不能超過30個字符,不能使用oracle保留關鍵字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接報錯的。如下圖使用了? *。
3、在建立表的時候,數(shù)字也是不能使用表名的開始的。
4、但如果使用雙引號對表名進行規(guī)范的話,是可以建立以數(shù)字或者包含特殊字符的表名的。
5、過這樣建立的表名,在查詢數(shù)據(jù)的時候是非常麻煩的,查詢時也要加雙引號。而且這樣建立的表名,在項目運行的過程中也非常容易造成各種麻煩,所以盡量不要使用。
對于排序分析,應用的業(yè)務分析場景很多,例如所有銷售大區(qū)的TOP5、按具體規(guī)則對數(shù)據(jù)集進行重新排序編號等,這些業(yè)務場景采用分析函數(shù)中排序函數(shù),將很方便簡單。
當前常用的排序類分析函數(shù)包括:row_number()、rank()、dense_rank(),這三個函數(shù)都可應用在排序場景中,但 又有些許不同。
特點:對分組后的排序結果進行遞增編號,出現(xiàn)同值的也是遞增處理。
rank()特點:按分組后的排序結果進行遞增編號,如出現(xiàn)相同值則序號一致,但相鄰出現(xiàn)的不同值序號將從rown+N開始(rown為前一個值的序號,N為前一個值相同的個數(shù))。
dense_rank()特點:和rank()相似,按分組后的排序結果進行遞增編號,如出現(xiàn)相同值則序號一致,但相鄰出現(xiàn)的不同值序號將從rown+1開始。
1.row_number()應用于 不區(qū)分同值排序 的業(yè)務場景;
2.rank()dense_rank()應用于 區(qū)分同值排序 的業(yè)務場景,至于用rank和dense_rank,則要看對同值排序后對序號遞增方式的具體要求來定。
有了上述三個函數(shù),對于日常公司分析大區(qū)銷售排名、銷售代表排名、部門費用項排名等等,將會非常的方便快捷。
DECLARE
A1 NUMBER;
TEMP VARCHAR2(120);
A2 NUMBER;
SIXNUM VARCHAR2(120);
TYPE EMP_SSN_ARRAY IS TABLE OF NUMBER
INDEX BY BINARY_INTEGER;
BEST_EMPLOYEES EMP_SSN_ARRAY;
BEGIN
SIXNUM:=' ';
TEMP:=' ';
A1:= 0;
WHILE (LENGTH(SIXNUM)14) LOOP
LOOP
--生成號碼
A1 := A1 + 1;
A2 := FLOOR( DBMS_RANDOM.VALUE(1,33));
IF A2 10 AND A2 0 THEN
BEST_EMPLOYEES(A1) :='0'||A2;
DBMS_OUTPUT.PUT_LINE(BEST_EMPLOYEES(A1));
ELSE
BEST_EMPLOYEES(A1) := A2;
DBMS_OUTPUT.PUT_LINE(BEST_EMPLOYEES(A1));
END IF;
IF INSTR(SIXNUM,BEST_EMPLOYEES(A1),1,1)=0 THEN --找不到
SIXNUM:=SIXNUM||' '||BEST_EMPLOYEES(A1);
EXIT;
END IF ;
END LOOP;
END LOOP;
DBMS_OUTPUT.PUT_LINE('--------------------------------');
FOR I IN 1..BEST_EMPLOYEES.COUNT - 1 LOOP
FOR II IN I..BEST_EMPLOYEES.COUNT LOOP
IF BEST_EMPLOYEES(I) BEST_EMPLOYEES(II) THEN
--DBMS_OUTPUT.PUT_LINE(BEST_EMPLOYEES(I));
TEMP := BEST_EMPLOYEES(I);
BEST_EMPLOYEES(I) := BEST_EMPLOYEES(II);
BEST_EMPLOYEES(II) := TEMP;
END IF;
END LOOP;
END LOOP;
FOR I IN 1..BEST_EMPLOYEES.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(BEST_EMPLOYEES(I));
END LOOP;
END;
/