DISTINCT statement with Order by clause

SQL> desc test;
Name       Type         Nullable Default Comments
---------- ------------ -------- ------- --------
LAST_NAME  VARCHAR2(40) Y                        
FIRST_NAME VARCHAR2(40) Y                        
ACCOUNT_ID NUMBER       Y                        

SQL>
SQL> select last_name
  2        ,first_name
  3        ,account_id
  4    from test
  5   order by upper(last_name),upper(first_name)
  6  ;

LAST_NAME                                FIRST_NAME                               ACCOUNT_ID
---------------------------------------- ---------------------------------------- ----------
Chantemsin                               HELEN                                       4523765
GONZALES                                 TIFFANY                                     4523771
GRIFFITTS                                MIMI                                        4523766
Hill                                     Dennis                                      4523770
JONES                                    WAYNE                                       4523772
Lindom                                   ARNOLD                                      4523764
MCCLAIN                                  Janet                                       4523779
MURRAY-BRESLOW                           Spencer                                     4523769
Sharick                                  Ernest                                      4523776
Slaughter                                MARK                                        4523767
Walker-Trumble                           DANIEL                                      4523778

11 rows selected

SQL>
SQL> select last_name
  2        ,first_name
  3        ,account_id
  4        ,count(account_id) over() member_cnt
  5  from (
  6  select last_name
  7        ,first_name
  8        ,account_id
  9    from test
 10   order by upper(last_name),upper(first_name)
 11   );

LAST_NAME                                FIRST_NAME                               ACCOUNT_ID MEMBER_CNT
---------------------------------------- ---------------------------------------- ---------- ----------
Chantemsin                               HELEN                                       4523765         11
GONZALES                                 TIFFANY                                     4523771         11
GRIFFITTS                                MIMI                                        4523766         11
Hill                                     Dennis                                      4523770         11
JONES                                    WAYNE                                       4523772         11
Lindom                                   ARNOLD                                      4523764         11
MCCLAIN                                  Janet                                       4523779         11
MURRAY-BRESLOW                           Spencer                                     4523769         11
Sharick                                  Ernest                                      4523776         11
Slaughter                                MARK                                        4523767         11
Walker-Trumble                           DANIEL                                      4523778         11

11 rows selected

SQL>
SQL> select last_name
  2        ,first_name
  3        ,account_id
  4        ,count(distinct account_id) over() member_cnt
  5  from (
  6  select last_name
  7        ,first_name
  8        ,account_id
  9    from test
 10   order by upper(last_name),upper(first_name)
 11   );

LAST_NAME                                FIRST_NAME                               ACCOUNT_ID MEMBER_CNT
---------------------------------------- ---------------------------------------- ---------- ----------
Lindom                                   ARNOLD                                      4523764         11
Chantemsin                               HELEN                                       4523765         11
GRIFFITTS                                MIMI                                        4523766         11
Slaughter                                MARK                                        4523767         11
MURRAY-BRESLOW                           Spencer                                     4523769         11
Hill                                     Dennis                                      4523770         11
GONZALES                                 TIFFANY                                     4523771         11
JONES                                    WAYNE                                       4523772         11
Sharick                                  Ernest                                      4523776         11
Walker-Trumble                           DANIEL                                      4523778         11
MCCLAIN                                  Janet                                       4523779         11

11 rows selected

SQL>
SQL> select *
  2    from (select last_name,
  3                 first_name,
  4                 account_id,
  5                 rownum row_number_seq,
  6                 count(distinct account_id) over() member_cnt
  7            from (select last_name, first_name, account_id
  8                    from test
  9                   order by upper(last_name), upper(first_name)))
 10   order by row_number_seq;

LAST_NAME                                FIRST_NAME                               ACCOUNT_ID ROW_NUMBER_SEQ MEMBER_CNT
---------------------------------------- ---------------------------------------- ---------- -------------- ----------
Chantemsin                               HELEN                                       4523765              1         11
GONZALES                                 TIFFANY                                     4523771              2         11
GRIFFITTS                                MIMI                                        4523766              3         11
Hill                                     Dennis                                      4523770              4         11
JONES                                    WAYNE                                       4523772              5         11
Lindom                                   ARNOLD                                      4523764              6         11
MCCLAIN                                  Janet                                       4523779              7         11
MURRAY-BRESLOW                           Spencer                                     4523769              8         11
Sharick                                  Ernest                                      4523776              9         11
Slaughter                                MARK                                        4523767             10         11
Walker-Trumble                           DANIEL                                      4523778             11         11

11 rows selected

SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/45259/viewspace-629775/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/45259/viewspace-629775/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值