2012-01-10 9 views
-2

SQL ServerのROW_NUMBER()関数を使用していません。だから、ROW_NUMBER()、PARTITION & RANK()などの記事を読んでいますが、それでも私にはわかりません。Sql server ROW_NUMBER()&Rank()関数の詳細....動作方法

私はいくつかの質問

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. COUNT、多くの

  3. あなたはSUMのためにそれ自体でPARTITIONを使用することができますポイント1を参照してください。パーティションごとにリセットされ、カウントを

  4. パーティションを選択

  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

関連する問題