Skip to main content

DIFFERENCE IN USING ROW_NUMBER AND RANK ( )


When I wanted to know how to remove duplicates or in more sense, If i wanted to get Unique records, I went through a post which suggested to go for Rank function to find unique records. 
Well some suggested to for Row_number function. Here is a example where I worked on both the types and let you the differences.

CREATE TABLE Table1 (ID INT, employee VARCHAR(100), sal INT, dept VARCHAR(100))
GO
INSERT INTO Table1

SELECT 1, 'dhinakaran', 100, 'finance'
UNION ALL
SELECT 2, 'bharath', 100, 'marketing'
UNION ALL
SELECT 3, 'job', 100, 'accounts'
UNION ALL
SELECT 4, 'job', 100, 'markting'
UNION ALL
SELECT 5, 'job', 200, 'infrastruture'
UNION ALL
SELECT 6, 'raghu', 300, 'markting'
UNION ALL
SELECT 7, 'raghu', 400, 'finance'
GO
SELECT employee, sal, dept
FROM Table1
GO













we can observe that Employee JOB varies in dept and we can see salary.
Select the data without duplicate records as well select the data with maximum Sal.


By using Rank ( ) Function, If we try, by following query, we will get Following result.

select employee, sal, dept from  (select employee, sal, dept, rank () over
 (partition by employee order by sal desc) Rank from table1 ) a where Rank=1


 The same result will be obtained even If we try using ROW_NUMBER ( ). The snippet is shown Below.




 The real Difference between ROW_NUMBER and RANK ( ) function will come When I insert a data of similar Type.

For example, Let me insert one more value:

insert INto table1 values(8,'Job',200,'infrastruture')
 select * from table1
 go
























Now For this table, If I use, RANK ( ) function, Then result is not we are expecting it. It is perfectly obtained by Using ROW_NUMBER ( ) only.

Result of both Snippets is as follows:




















Comments

Popular posts from this blog

Zip/Unzip multiple files and also include password for zipped file using SSIS

We have many scenario that we need to Zip many files which we come across and then so some operations like either sending it as a email or just moving zipped file to some other destinations etc. But we were using manual method to zip multiple files. In this post, I tried to create a package which will zip multiple files using SSIS. Here for Zipping files purpose, I'm using 7-ZIP which is free software available in google sites. Download files and install onto your system. First let me show how to Zip on file and later I will show how to zip multiple files using SSIS and 7Zip tool. Compressing Single file. Here I'm trying to Zip one single flat file which is of 40MB size. I kept this file in C:\Documents and Settings\\Desktop\test\source folder. Now to compress this file, I will open my SSIS and I'm dragging and dropping EXECUTE PROCESS TASK from Control Flow. Now right click on Execute Process task and go for edit and select Process option. In process tab,

SSIS: The Value Was Too Large To Fit In The Output Column

I had a SSIS package where I was calling a stored procedure in OLEDB Source and it was returning a “The Value Was Too Large to Fit in the Output Column” error. Well, My Datatype in OLEDB source was matching with my OLEDB Destination table. However, when I googled, we got solutions like to increase the output of OLEDB Source using Advanced Editor option . I was not at all comfortable with their solution as my source, destination and my intermediate transformation all are having same length and data type and I don’t want to change. Then I found that I was missing SET NOCOUNT ON option was missing in Stored Procedure. Once I added it, my data flow task ran successfully. 

How to move multiple files in ssis and also rename simultaneously

There are two ways to achieve this. 1) We can move the flat files and then rename it. 2) While moving files itself, automatic rename should be done. We will do the second type. The criteria is to rename the files while moving from source to destination. So for that, we need FILE SYSTEM TASK to be included. Secondly since we need to move many files, we will use FOR EACH LOOP CONTAINER. To fetch all the files, we can use FOR EACH LOOP task in SSIS. In collection tab, we can select FOREACH FILE enumerator option for fetching files and we can change enumerator configuration Folder option: Points to source where we need to fetch files. Files: will give us idea whether we need to fetch all the files (*.*) or if we give extension like *.txt, it is going to fetch only  .txt files . Once I give Source name in FOR EACH LOOP container, It is going to fetch all the files corresponding to that path. Retrieve file name: This option is used to let the variables mentioned in VARIA