MS-SQL > Rank() - ºÐ¼®ÇÔ¼ö (mssql 2005 ÀÌ»ó) µî·ÏÀÏ : 2017-06-30 18:57 Á¶È¸¼ö : 53,039SQL Server¸¦ »ç¿ëÇÏ´Ùº¸¸é ¾÷¹«»ó ƯÁ¤ µ¥ÀÌÅ͵鿡 ´ëÇÑ ¼ø¹ø ¶Ç´Â ¼øÀ§¸¦ ¸Å°Ü¾ß ÇÏ´Â °æ¿ì°¡ Á¾Á¾ ¹ß»ýÇÑ´Ù.
ÀÌ·²°æ¿ì SQL Server 2000¹öÁ¯À» »ç¿ëÇÒ¶§ ÂüÀ¸·Î ³°¨ÇØ ÇÏ¸é¼ "¼ºêÄõ¸®+Ä«¸£Æ¼¼Ç°ö Á¶ÀÎ" ÄÞº¸¸¦ »ç¿ëÇÑ ½´ÆÛÄõ¸®·Î ¼ø¹ø 󸮸¦ ÇϰԵȴÙ. ¹°·Ð Äõ¸®¼º´ÉÀº ¾Èµå·Î¸Þ´Ù·Î ³¯·Áº¸³»¸ç ¸Ó¸® ¼Ó¿¡´Â ¿À¶óŬÀÇ ROWNUMÀ» ºñ·ÔÇÑ ´Ù¼öÀÇ ºÐ¼®ÇÔ¼öµéÀ» ±×¸®¿ö ÇÑ´Ù. ÀÌ·± SQL Server »ç¿ëÀÚµéÀÇ ºÒ¸¸À» ¾Ë¾Ò´ÂÁö ¸ô¶ú´ÂÁö MS¿¡¼´Â SQL Server 2005¹öÁ¯¿¡¼ ´Ù¾çÇÑ ºÐ¼®ÇÔ¼öµéÀ» Á¦°øÇØÁØ´Ù. ¸ÕÀú ¿¹Á¦ µ¥ÀÌÅ͸¦ ¸¸µé¾î º¸ÀÚ. ¾Æ·¡´Â SM ¿£ÅÍÅ×ÀθÕÆ®ÀÇ ±Þ¿© ³»¿ª ÀÌ´Ù. ¹°·Ð Á÷¿øÀº ¼Ò³à½Ã´ë´Ù~~@.@ CREATE TABLE ±Þ¿© ( À̸§ nvarchar(10), ºÎ¼ nvarchar(10), Á÷Ã¥ nvarchar(10), ±Þ¿© int ) GO INSERT ±Þ¿© VALUES ('À¯¸®','°³¹ßºÎ','»ç¿ø',300) INSERT ±Þ¿© VALUES ('Å¿¬','Áö¿øºÎ','»ç¿ø',250) INSERT ±Þ¿© VALUES ('¼¿¬','°³¹ßºÎ','´ë¸®',350) INSERT ±Þ¿© VALUES ('¼ö¿µ','¿µ¾÷ºÎ','°úÀå',380) INSERT ±Þ¿© VALUES ('À±¾Æ','Áö¿øºÎ','»ç¿ø',200) INSERT ±Þ¿© VALUES ('È¿¿¬','°ü¸®ºÎ','°úÀå',320) INSERT ±Þ¿© VALUES ('Á¦½ÃÄ«','¿µ¾÷ºÎ','»ç¿ø',220) INSERT ±Þ¿© VALUES ('ƼÆÄ´Ï','°ü¸®ºÎ','»ç¿ø',220) INSERT ±Þ¿© VALUES ('½á´Ï','°³¹ßºÎ','´ë¸®',330) 1. ROW_NUMBER() ROW_NUMBER()ÇÔ¼ö´Â µ¥ÀÌÅ͵éÀÇ °¢°¢ÀÇ Çà¿¡ ´ëÇÑ ÀÏ·ÃÀÇ ¹øÈ£¸¦ ºÙ¿©ÁÖ´Â ±â´ÉÀÌ´Ù. ÁÖ·Î À¥ °³¹ß½Ã ÆäÀÌ¡¿¡ ÇÊ¿äÇÑ À¯¿ëÇÑ ÇÔ¼ö ÀÌ´Ù. SELECT ROW_NUMBER() OVER (ORDER BY ±Þ¿© desc) as ¼øÀ§, À̸§, ºÎ¼, Á÷Ã¥, ±Þ¿© FROM ±Þ¿© - °á°ú.. ¼øÀ§ À̸§ ºÎ¼ Á÷Ã¥ ±Þ¿© 1 ¼ö¿µ ¿µ¾÷ºÎ °úÀå 380 2 ¼¿¬ °³¹ßºÎ ´ë¸® 350 3 ½á´Ï °³¹ßºÎ ´ë¸® 330 4 È¿¿¬ °ü¸®ºÎ °úÀå 320 5 À¯¸® °³¹ßºÎ »ç¿ø 300 6 Å¿¬ Áö¿øºÎ »ç¿ø 250 7 Á¦½ÃÄ« ¿µ¾÷ºÎ »ç¿ø 220 8 ƼÆÄ´Ï °ü¸®ºÎ »ç¿ø 220 9 À±¾Æ Áö¿øºÎ »ç¿ø 200 2. RANK() ÇÔ¼ö ROW_NUMBER¿Í °°Àº ÀÏÁ¾ÀÇ ¼ø¹øÀÌÁö¸¸ ROW_NUMBER´Â ¹«Á¶°Ç 1¿¡¼ ºÎÅÍ ¼øÂ÷ÀûÀÎ ¼ø¹øÀ» ¸Å±â´Â ÀϹæÀûÀÎ ¹æ½ÄÀÌÁö¸¸ RANK()´Â ¼ø¼öÇÏ°Ô ¼øÀ§¿¡ ´ëÇÑ ¼ø¹øÀ¸·Î µ¿·üÀÏ°æ¿ì °°Àº ¼ø¹øÀ¸·Î 󸮵ȴÙ. ±×·³ ¼Ò³à½Ã´ëÀÇ ±Þ¿© ¼øÀ§¸¦ º¸ÀÚ. SELECT RANK() OVER (ORDER BY ±Þ¿© desc) as ¼øÀ§, À̸§, ºÎ¼, Á÷Ã¥, ±Þ¿© FROM ±Þ¿© - °á°ú.. ¼øÀ§ À̸§ ºÎ¼ Á÷Ã¥ ±Þ¿© 1 ¼ö¿µ ¿µ¾÷ºÎ °úÀå 380 2 ¼¿¬ °³¹ßºÎ ´ë¸® 350 3 ½á´Ï °³¹ßºÎ ´ë¸® 330 4 È¿¿¬ °ü¸®ºÎ °úÀå 320 5 À¯¸® °³¹ßºÎ »ç¿ø 300 6 Å¿¬ Áö¿øºÎ »ç¿ø 250 7 Á¦½ÃÄ« ¿µ¾÷ºÎ »ç¿ø 220 7 ƼÆÄ´Ï °ü¸®ºÎ »ç¿ø 220 9 À±¾Æ Áö¿øºÎ »ç¿ø 200 °á°ú¸¦ º¸´Ï Á¦½ÃÄ«¿Í ƼÆÄ´Ï°¡ ³ª¶õÈ÷ 7À§¸¦ ¾Ë¼ö ÀÖ´Ù. 3. DENSE_RANK() RANK()ÇÔ¼ö À¯»ç ÇÏÁö¸¸ µ¿·ü ¼ø¹øÀÌ ÀÖÀ»°æ¿ì ±× ´ÙÀ½ ¼ø¹øÀ¸·Î ¸Å°ÜÁø´Ù´Â ´Ù¸¥Á¡ÀÌ ÀÖ´Ù. SELECT DENSE_RANK() OVER (ORDER BY ±Þ¿© desc) as ¼øÀ§, À̸§, ºÎ¼, Á÷Ã¥, ±Þ¿© FROM ±Þ¿© - °á°ú.. ¼øÀ§ À̸§ ºÎ¼ Á÷Ã¥ ±Þ¿© 1 ¼ö¿µ ¿µ¾÷ºÎ °úÀå 380 2 ¼¿¬ °³¹ßºÎ ´ë¸® 350 3 ½á´Ï °³¹ßºÎ ´ë¸® 330 4 È¿¿¬ °ü¸®ºÎ °úÀå 320 5 À¯¸® °³¹ßºÎ »ç¿ø 300 6 Å¿¬ Áö¿øºÎ »ç¿ø 250 7 Á¦½ÃÄ« ¿µ¾÷ºÎ »ç¿ø 220 7 ƼÆÄ´Ï °ü¸®ºÎ »ç¿ø 220 8 À±¾Æ Áö¿øºÎ »ç¿ø 200 RANK()ÇÔ¼ö¿Í´Â ´Ù¸£°Ô 7À§·Î µ¿·üÀÎ Á¦½ÃÄ«,ƼÆÄ´Ï µÚ¿¡ À±¾Æ°¡ 8À§·Î ³ª¿À´Â°É ¾Ë¼ö ÀÖ´Ù. 4. NTILE ÇÔ¼ö ¾ÕÀÇ ÇÔ¼öµé °ú´Â Á¶±Ý ´Ù¸¥ °³³äÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ÁöÁ¤µÈ ¼ýÀÚ¿¡ ¸Â°Ô Á¤·ÄµÈ µ¥ÀÌÅÍ´Â ±ÕµîÇÏ°Ô ±×·ìÇÎÇÏ¿© ¼ø¹øÀ» ¸Å±â¸ç ³²´Â °³¼ö´Â ¾Õ¿¡¼ ºÎÅÍ Çϳª¾¿ ´õÇؼ ±×·ìÇÎÀÌ µÈ´Ù. SELECT NTILE(4) OVER (ORDER BY ±Þ¿© desc) as ¼øÀ§, À̸§, ºÎ¼, Á÷Ã¥, ±Þ¿© FROM ±Þ¿© - °á°ú..NTILE() ¼øÀ§ À̸§ ºÎ¼ Á÷Ã¥ ±Þ¿© 1 ¼ö¿µ ¿µ¾÷ºÎ °úÀå 380 1 ¼¿¬ °³¹ßºÎ ´ë¸® 350 1 ½á´Ï °³¹ßºÎ ´ë¸® 330 2 È¿¿¬ °ü¸®ºÎ °úÀå 320 2 À¯¸® °³¹ßºÎ »ç¿ø 300 3 Å¿¬ Áö¿øºÎ »ç¿ø 250 3 Á¦½ÃÄ« ¿µ¾÷ºÎ »ç¿ø 220 4 ƼÆÄ´Ï °ü¸®ºÎ »ç¿ø 220 4 À±¾Æ Áö¿øºÎ »ç¿ø 200 ÃÑ 9°³ÀÇ µ¥ÀÌÅ͸¦ ±ÕµîÇÏ°Ô 4·Î ³ª´«ÈÄ ³ª¸ÓÁö 1ÀÇ µ¥ÀÌÅÍ´Â À§¿¡ ¼ø¹ø¿¡ Æ÷ÇÔ ½ÃŲ°É ¾Ë¼ö ÀÖ´Ù. 5. PARTITION BY À§ÀÇ ÇÔ¼öµé°ú °áÇÕ ÇÏ¿© »ç¿ëÇÏ´Â ÀÏÁ¾ÀÇ ¿É¼ÇÀ¸·Î ´ë»ó ÇàµéÀÇ °á°ú ÁýÇÕÀ» ÆÄƼ¼ÇÀ» ³ª´©¾î ±× ÆÄƼ¼Ç ¾È¿¡¼ ¼øÀ§¸¦ ¸Å±â±â À§ÇØ »ç¿ëµÈ´Ù. SELECT RANK() OVER (PARTITION BY ºÎ¼ ORDER BY ±Þ¿© desc) as ¼øÀ§, À̸§, ºÎ¼, Á÷Ã¥, ±Þ¿© FROM ±Þ¿© - °á°ú.. ¼øÀ§ À̸§ ºÎ¼ Á÷Ã¥ ±Þ¿© 1 ¼¿¬ °³¹ßºÎ ´ë¸® 350 2 ½á´Ï °³¹ßºÎ ´ë¸® 330 3 À¯¸® °³¹ßºÎ »ç¿ø 300 1 È¿¿¬ °ü¸®ºÎ °úÀå 320 2 ƼÆÄ´Ï °ü¸®ºÎ »ç¿ø 220 1 ¼ö¿µ ¿µ¾÷ºÎ °úÀå 380 2 Á¦½ÃÄ« ¿µ¾÷ºÎ »ç¿ø 220 1 Å¿¬ Áö¿øºÎ »ç¿ø 250 2 À±¾Æ Áö¿øºÎ »ç¿ø 200 À§ÀÇ °á°ú´Â ºÎ¼º° ±Þ¿© ¼øÀ§¸¦ ¸Å±ä °ÍÀÌ´Ù. º¸´Â ¹Ù¿Í °°ÀÌ ºÎ¼º°·Î ±Þ¿©¿¡ µû¶ó ¼øÀ§¸¦ ¸Å±â¸ç À̸¦ ÀÀ¿ëÇÏ¸é ºÎ¼º°,Á÷Ã¥º° µîÀÇ ´ÙÁß ±×·ì¿¡ ´ëÇØ ÆÄƼ¼ÇÀ» ³ª´«ÈÄ ¼øÀ§¸¦ ³ªÅ¸³¾¼ö ÀÖ´Ù. ¶ÇÇÑ ÀζóÀÎ ºä¸¦ È°¿ëÇÏ¸é ºÎ¼º° ƯÁ¤ µî¼öµîÀÇ Á»´õ ¼¼ºÐÈµÈ ¼øÀ§ µ¥ÀÌÅ͸¦ ÃßÃâÇØ ³¾ ¼ö ÀÖ´Ù. ÀÌ»óÀ¸·Î SQL Server 2005ÀÇ »õ·Î¿î ¼øÀ§ÇÔ¼ö(ºÐ¼®ÇÔ¼ö)¸¦ ¾Ë¾Æº¸¾Ò´Ù!!!
|