oracle排序(oracle排序指定某些值排在前)

本篇文章给大家谈谈oracle排序,以及oracle排序指定某些值排在前对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Oracle分析函数之排序 row_number() & rank()

对于排序分析,应用的业务分析场景很多,例如所有销售大区的TOP5、按具体规则对数据集进行重新排序编号等,这些业务场景采用分析函数中排序函数,将很方便简谨滚碰单。

当前常用的排序类分析函数包括:row_number()、rank()、dense_rank(),这三个函数都可应用在排序场景中,但 又有些许不同。

特点:对分组后的排序结果进行递增编号,出现同值的也是递增处理。

rank()特点:按分组后的排序结果进行递增编号,如出现相同值则序号一致,但相邻出现的不同值序号将从rown+N开始(rown为前一个值的序号,N为祥谈前一个值相同的个数)。

dense_rank()特点:和rank()相似,按分组后的排备弊序结果进行递增编号,如出现相同值则序号一致,但相邻出现的不同值序号将从rown+1开始。

1.row_number()应用于 不区分同值排序 的业务场景;

2.rank()dense_rank()应用于 区分同值排序 的业务场景,至于用rank和dense_rank,则要看对同值排序后对序号递增方式的具体要求来定。

有了上述三个函数,对于日常公司分析大区销售排名、销售代表排名、部门费用项排名等等,将会非常的方便快捷。

Oracle中的中文排序方式

测试中文排序的数据库版本

SQL select * from v$version;

BANNER

Oracle Database g Enterprise Edition Release Production

PL/SQL Release Production

CORE          Production

TNS for Linux: Version Production

NLSRTL Version Production

创建测试表

create table player (id number( ) name varchar ( ));

检查字符集配置

确认数据库字符集 american_america AL UTF

SQL  select  name value$  from  props$;

NAME                      磨掘悔     VALUE$

DICT BASE                     

DEFAULT_TEMP_TABLESPACE        TEMP

DEFAULT_PERMANENT_TABLESPACE   USERS

DEFAULT_EDITION                ORA$BASE

Flashback Timestamp TimeZone   GMT

TDE_MASTER_KEY_ID

DEFAULT_TBS_TYPE               SMALLFILE

NLS_LANGUAGE                   AMERICAN

NLS_TERRITORY 瞎正                 AMERICA

NLS_CURRENCY                   $

NLS_ISO_CURRENCY               AMERICA

NLS_NUMERIC_CHARACTERS        

NLS_CHARACTERSET               AL UTF

NLS_CALENDAR                   GREGORIAN

NLS_DATE_FORMAT                DD MON RR

NLS_DATE_LANGUAGE              AMERICAN

NLS_SORT                       BINARY

NLS_TIME_FORMAT                HH MI SSXFF AM

NLS_TIMESTAMP_FORMAT           DD MON RR HH MI SSXFF AM

NLS_TIME_TZ_FORMAT             HH MI SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT        DD MON RR HH MI SSXFF AM TZR

NLS_DUAL_CURRENCY    散迟          $

NLS_P                       BINARY

NLS_LENGTH_SEMANTICS           BYTE

NLS_NCHAR_CONV_EXCP            FALSE

NLS_NCHAR_CHARACTERSET         AL UTF

NLS_RDBMS_VERSION             

GLOBAL_DB_NAME                 ORA G

EXPORT_VIEWS_VERSION          

WORKLOAD_CAPTURE_MODE

WORKLOAD_REPLAY_MODE

DBTIMEZONE                     :

rows selected

SQL

深入确认字符集

SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET

DECODE(TYPE#

DECODE(CHARSETFORM VARCHAR NVARCHAR UNKOWN )

DECODE(CHARSETFORM VARCHAR NCHAR VARYING UNKOWN )

DECODE(CHARSETFORM CHAR NCHAR UNKOWN )

DECODE(CHARSETFORM CLOB NCLOB UNKOWN )) TYPES_USED_IN

FROM SYS COL$

WHERE CHARSETFORM IN ( )

AND TYPE# IN ( );

确认操作系统字符集设置

[ora g@bj ~]$ export NLS_LANG=american_america al utf

填写测试数据

SQL insert into player values ( 下午啦 );

row created

SQL insert into player values ( 八千米死亡线 );

SQL set pagesize

SQL  select * from player;

ID NAME

中文

中文拼音

笔画输入法

测试啊

下午啦

八千米死亡线

rows selected

SQL

  开始测试 发现三个查询语句返回的结果一致

SQL select * from player order by    nlssort(name NLS_SORT=SCHINESE_RADICAL_M );

ID NAME

笔画输入法

中文

下午啦

中文拼音

测试啊

八千米死亡线

rows selected

SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_STROKE_M );

ID NAME

笔画输入法

中文

下午啦

中文拼音

测试啊

八千米死亡线

rows selected

SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_PINYIN_M );

ID NAME

笔画输入法

中文

下午啦

中文拼音

测试啊

八千米死亡线

rows selected

囧 疑似碰上bug 切换到 gR 下看看

SQL select * from v$version;

BANNER

Oracle Database g Enterprise Edition Release Prod

PL/SQL Release Production

CORE        Production

TNS for Linux: Version Production

NLSRTL Version Production

SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_PINYIN_M );

ID NAME

八千米死亡线

笔画输入法

测试啊

下午啦

中文

中文拼音

rows selected

SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_STROKE_M );

ID NAME

八千米死亡线

下午啦

中文

中文拼音

测试啊

笔画输入法

测试服务器

rows selected

SQL select * from player order by nlssort(name NLS_SORT=SCHINESE_RADICAL_M );

ID NAME

下午啦

中文

中文拼音

八千米死亡线

测试啊

笔画输入法

测试服务器

rows selected

SQL

这个结果似乎比较符合预期结果

NLS_SORT=SCHINESE_RADICAL_M  按照部首排序

NLS_SORT=SCHINESE_STROKE_M 按照笔画排序

lishixinzhi/Article/program/Oracle/201311/17664

[img]

oracle里面怎么多个字段分组排序

分组排序用group by,若需要条件则在后面加having。

多个字段的话用order by,比如:order by a,b

order by 可以让表毕逗雹按a排序,遇到重复的再按b再排一次序,做到把想要的指亩字段与其他无关字段分开比较手帆。

oracle 怎么指定排序?

可以通过 “order by 字段散丛宏名 asc (desc)”郑余 命令进行排序。

sql:select * from tablename order by id DESC;

用 DESC 表示按倒序排序(即冲册:从大到小排序) ,用 ACS 表示按正序排序(即:从小到大排序)。

如何实现Oracle的自定义排序

1

2

3

4

5

6

7

8

9

10

11

普通排序SQL是这样的:SELECT NAME FROM TABLE ORDER BY NAME;这时候我们需要按照自己定义的NAME的排序规则进行排序,如按照某个字典ARRAY进行排序,就需要用个临时表侍蠢来完成如建立表:C_SORT_Tcreatetable C_SORT_T

(

SORT_ID NUMBER(10),

SORT_NAME VARCHAR2(20),

SORT_SEQ NUMBER(10)

)然后把原有的SQL联合排序表进行查询,然后用SORT_SEQ排序就可以了。 如果是SORT array是不固定,而是在排序前传入SQL?该怎么办?如果排序的array不大的话,可以用DECODE来老谈毕达到要求,如下:SELECT NAME FROM TABLE排序:SELECT NAME,DECODE(NAME,"ARRAY[0]",1,"ARRAY[1]",2,....,9999) SEQ FROM TABLE ORDER BY SEQ

---

SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划侍芹(第二顺序)排序

SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序

SCHINESE_PINYIN_M 按照拼音排序

oracle中不用ORDER BY怎么实现排序?

ORDER BY的含义就是通过某个字段进行排序(默认是ASC,可以省略)。\r\nsql:select * from scores order by score DESC;\r\n以上语句就是通过score字段进行降序排序。\r\nsql:select * from scores order by score ;\r\n以上语句岁悔就是通过score字段进行纯链升序排乎裤正序。\r\n备注:DESC表示降序,ASC表示升序。

关于oracle排序和oracle排序指定某些值排在前的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

Powered By Z-BlogPHP 1.7.2

备案号:蜀ICP备2023005218号