2012-01-10 4 views
-2

SQL Server ROW_NUMBER() 함수를 사용하지 않습니다. 그래서 나는 ROW_NUMBER(), PARTITION & RANK() 등등에 관한 기사를 읽었으나 여전히 나에게 명확하지 않다. SQL 서버 ROW_NUMBER() 및 순위() 함수 세부 ... 작동 원리

은 내가 몇 질문

1) what over() function does. why we need to specify column name in over function like OVER(ORDER BY JID DESC) 

2) i saw sometime people use PARTITION keyword. what it is? 
it is also used in over function like OVER(PARTITION BY JID ORDER BY JID DESC) 
3) in what type of situation we have to use PARTITION keyword 
4) when we specify PARTITION keyword in over then also we need to specify order by also why. only PARTITION keyword can not be used in over clause. 
5) what type of situation one should use RANK function 
6) what is CTE and what is the advantage of using CTE. it is just like temporary view. 
anyone get any performance boost if he/she use CTE other than reusability? 

구체적으로 내 포인트를 논의하시기 바랍니다에게이

SELECT top 10 ROW_NUMBER() OVER(ORDER BY JID DESC) AS 'Row Number', 
JID,Specialist, jobstate, jobtype FROM bbajobs 

SELECT top 10 ROW_NUMBER() OVER(PARTITION BY JID ORDER BY JID DESC) AS 'Row Number', 
JID,Specialist, jobstate, jobtype FROM bbajobs 

같은 구문은 발견했다. 어떤 사람이 ROW_NUMBER(), PARTITION & RANK()와 같은 모든 키워드에 대해 작은 & 쉬운 예를 들어 이해하면 도움이 될 것입니다. 감사

답변

1
  1. 세트에는 순서가 없으므로 ORDER BY가 필요합니다. 당신은

  2. 참조 당신은 SUM을 위해 자체적으로 파티션을 사용할 수있는 포인트 1. 등

  3. COUNT 재설정에 의해

  4. 많은 파티션 당 COUNT를

  5. 파티션을 선택 표준에 대한 필요 MSDN 참조

  6. 별도 질문

+0

PARTITION BY는 GROUP BY 절과 같이 사용합니까? – Thomas

+0

CTE를 사용하면 어떤 이점이 있습니까? 그것은 일시적인 관점과 같습니다. CTE를 사용하면 어떤 추가 이점이 있습니까? – Thomas

+0

@ 토마스 : 아니요. PARTITION BY는 "인라인"집계 또는 다중 GROUP BY를 허용합니다. 예 : http://stackoverflow.com/a/8324882/27535 및 http://stackoverflow.com/a/6219064/27535 – gbn

관련 문제