¸ßЧµÄSQLÓï¾äÖ®·ÖÎöº¯Êý
¸ßЧµÄSQLÓï¾äÖ®·ÖÎöº¯Êý--row_number() /rank()/dense_rank
Oracle·ÖÎöº¯ÊýRANK(),ROW_NUMBER(),LAG()µÈµÄʹÓ÷½·¨
ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)
±íʾ¸ù¾ÝCOL1·Ö×飬ÔÚ·Ö×éÄÚ²¿¸ù¾Ý COL2ÅÅÐò
¶øÕâ¸öÖµ¾Í±íʾÿ×éÄÚ²¿ÅÅÐòºóµÄ˳Ðò±àºÅ£¨×éÄÚÁ¬ÐøµÄΨһµÄ£©
RANK() ÀàËÆ£¬²»¹ýRANK ÅÅÐòµÄʱºò¸úÅÉÃû´ÎÒ»Ñù£¬¿ÉÒÔ²¢ÁÐ2¸öµÚÒ»ÃûÖ®ºó ÊǵÚ3Ãû
LAG ±íʾ ·Ö×éÅÅÐòºó £¬×éÄÚºóÃæÒ»Ìõ¼Ç¼¼õÇ°ÃæÒ»Ìõ¼Ç¼µÄ²î£¬µÚÒ»Ìõ¿É·µ»Ø NULL
BTW: EXPERT ONE ON ONE ÉϽ²µÄ×îÏêϸ,»¹ÓкܶàÏà¹ØÌØÐÔ£¬Îĵµ¿´ÆðÀ´±È½Ï·Ñ¾¢
row_number()ºÍrownum²î²»¶à£¬¹¦Äܸüǿһµã£¨¿ÉÒÔÔÚ¸÷¸ö·Ö×éÄÚ´Ó1¿ªÊ±ÅÅÐò£©
rank()ÊÇÌøÔ¾ÅÅÐò£¬ÓÐÁ½¸öµÚ¶þÃûʱ½ÓÏÂÀ´¾ÍÊǵÚËÄÃû£¨Í¬ÑùÊÇÔÚ¸÷¸ö·Ö×éÄÚ£©
dense_rank()lÊÇÁ¬ÐøÅÅÐò£¬ÓÐÁ½¸öµÚ¶þÃûʱÈÔÈ»¸ú×ŵÚÈýÃû¡£
Ïà±ÈÖ®ÏÂrow_numberÊÇûÓÐÖØ¸´ÖµµÄ
lag£¨arg1,arg2,arg3):
arg1ÊÇ´ÓÆäËûÐзµ»ØµÄ±í´ïʽ
arg2ÊÇÏ£Íû¼ìË÷µÄµ±Ç°ÐзÖÇøµÄÆ«ÒÆÁ¿¡£ÊÇÒ»¸öÕýµÄÆ«ÒÆÁ¿£¬Ê±Ò»¸öÍù»Ø¼ìË÷ÒÔǰµÄÐеÄÊýÄ¿¡£
arg3ÊÇÔÚarg2±íʾµÄÊýÄ¿³¬³öÁË·Ö×éµÄ·¶Î§Ê±·µ»ØµÄÖµ¡£
ÓÐЩʱºòÎÒÃÇÏ£ÍûµÃµ½Ö¸¶¨Êý¾ÝÖеÄǰnÁУ¬Ê¾ÀýÈçÏ£º
µÃµ½Ã¿¸ö²¿ÃÅнˮ×î¸ßµÄÈý¸ö¹ÍÔ±£º
ÏÈ´´½¨Ê¾Àý±í
create table emp
as
select * from scott.emp;
alter table emp
add constraint emp_pk
primary key(empno);
create table dept
as
select * from scott.dept;
alter table dept
add constraint dept_pk
primary key(deptno);
ÏÈ¿´Ò»ÏÂrow_number() /rank()/dense_rank()Èý¸öº¯ÊýÖ®¼äµÄÇø±ð
select emp.deptno,emp.sal,emp.empno,row_number() over (partition by deptno order by sal desc) row_number, --1,2,3
rank() over (partition by deptno order by sal desc) rank, --1,1,3
dense_rank() over (partition by deptno order by sal desc) dense_rank from emp --1,1,2
½á¹ûÈçÏÂ:
10 5000.00 7839 1 &nbs
Ïà¹ØÎĵµ£º
ÊìϤSQL SERVER 2000µÄÊý¾Ý¿â¹ÜÀíÔ±¶¼ÖªµÀ£¬ÆäDTS¿ÉÒÔ½øÐÐÊý¾ÝµÄµ¼Èëµ¼³ö£¬Æäʵ£¬ÎÒÃÇÒ²¿ÉÒÔʹÓÃTransact-SQLÓï¾ä½øÐе¼Èëµ¼³ö²Ù×÷¡£ÔÚTransact-SQLÓï¾äÖУ¬ÎÒÃÇÖ÷ҪʹÓÃOpenDataSourceº¯Êý¡¢OPENROWSET º¯Êý£¬¹ØÓÚº¯ÊýµÄÏêϸ˵Ã÷£¬Çë²Î¿¼SQLÁª»ú°ïÖú¡£ÀûÓÃÏÂÊö·½·¨£¬¿ÉÒÔÊ®·ÖÈÝÒ×µØÊµÏÖSQL SERVER¡¢ACCESS¡¢EXCELÊý¾Ýת»»£ ......
1¡¢¾µäµÄ²éѯÓï¾ä
2¡¢¾µäµÄ×Ö¶¨Ò庯Êý
3¡¢¾µäµÄÓëÒµÎñÏà¹ØµÄ´æ´¢¹ý³Ì
µÈµÈ
1¡¢ ¸ú×Ùµ±Ç°¶Ô»°ÏÂÓû§µÄSQL½Å±¾
select sql_text from v$sqltext_with_newlines where (hash_value,address)
in (select sql_hash_value,sql_address from v$session where sid=&sid)
order by address,piece;
SID
ÓÉÕâ ......
н¨±í£º
create table [±íÃû]
(
[×Ô¶¯±àºÅ×Ö¶Î] int IDENTITY (1,1) PRIMARY KEY ,
[×Ö¶Î1] nVarChar(50) default 'ĬÈÏÖµ' null ,
[×Ö¶Î2] ntext null ,
[×Ö¶Î3] datetime,
[×Ö¶Î4] money null ,
[×Ö¶Î5] int default 0,
[×Ö¶Î6] Decimal (12,4) default 0,
[×Ö¶Î7] image null ,
)
ɾ³ý±í£º
Drop table [±í ......
--ÇóÌõsqlÓï¾ä£º
-- ÒªÇó£º1.°´ÕÕGroup_OutDate×Ö¶ÎÅÅÐò £¬µÃµ½Ç°5Ìõ¼Ç¼
-- 2.Group_Name×ֶεÄÖµ²»ÄÜÖØ¸´
SELECT TOP 5 * from
( SELECT DISTINCT Group_Name ,
(SELECT TOP 1 Group_ID from AA_Sell_Group AS b WHERE b.Gro ......