¿ä¾à Å×À̺í ÀÛ¼ºÀ» À§ÇÑ SQL ½ºÅ©¸³Æ®ÀÇ ¿¹

ÃÖÀûÈ­ ¾îµå¹ÙÀÌÀú ¸¶¹ý»ç´Â Çϳª ÀÌ»óÀÇ ¿ä¾à Å×À̺íÀ» ºôµåÇϱâ À§ÇØ ÇÊ¿äÇÑ SQL ¸í·ÉÀ» Æ÷ÇÔÇÏ´Â ¿ä¾à Å×À̺í ÀÛ¼º SQL ½ºÅ©¸³Æ®¸¦ Á¦°øÇÕ´Ï´Ù. ±×¸² 27Àº ÇϳªÀÇ ¿ä¾à Å×À̺íÀ» ÀÛ¼ºÇÏ´Â »ùÇà ¿ä¾à Å×À̺í ÀÛ¼º SQL ½ºÅ©¸³Æ®ÀÇ ÀϺθ¦ º¸¿©ÁÝ´Ï´Ù. SQL ½ºÅ©¸³Æ® »ùÇÿ¡¼­ ¿ä¾à Å×À̺í À̸§Àº DB2INFO.MQT0000000021T01ÀÌ¸ç ¿©±â¼­ 21Àº Å¥ºê ¸ðµ¨ IDÀ̰í T01Àº ¿ä¾à Å×À̺í IDÀÔ´Ï´Ù. Å¥ºê ¸ðµ¨ ID´Â 10ÀÚ¸®¼ö±îÁö °¡´ÉÇÕ´Ï´Ù. ¿ä¾à Å×À̺í ID´Â Å¥ºê ¸ðµ¨ÀÇ ¿ä¾à Å×À̺íÀ» ½Äº°ÇÕ´Ï´Ù. ¿ä¾à Å×À̺í ID´Â ÇÑ °³ÀÇ Å¥ºê ¸ðµ¨¿¡ ÃÖ´ë 99°³ÀÇ ¿ä¾à Å×À̺íÀ» Çã¿ëÇÕ´Ï´Ù. ÃÖÀûÈ­ ¾îµå¹ÙÀÌÀú ¸¶¹ý»ç°¡ Á¤ÀÇÇÑ ¿ä¾à Å×À̺í À̸§À» º¯°æÇÏÁö ¸¶½Ê½Ã¿À. Å×À̺í À̸§À» º¯°æÇϸé, DB2 Cube Views°¡ Å¥ºê ¸ðµ¨À» À§ÇØ ÀÛ¼ºÇÑ ¿ä¾à Å×À̺íÀÇ Æ®·¢À» À¯ÁöÇÒ ¼ö ¾ø½À´Ï´Ù.

±×¸² 27. »ùÇà ¿ä¾à Å×À̺í ÀÛ¼º SQL ½ºÅ©¸³Æ®ÀÇ ºÎºÐ

´ÙÀ½ ¼½¼Ç¿¡¼­ ¼³¸íµÇ´Â SQLÀ» Ç¥½ÃÇÏ´Â ´ÙÀ̾î±×·¥.

Å¥ºê ¸ðµ¨¿¡ ´ëÇØ µÎ °³ ÀÌ»óÀÇ ¿ä¾à Å×À̺íÀÌ ±ÇÀåµÇ´Â °æ¿ì, ¿ä¾à Å×À̺í ÀÛ¼º SQL ½ºÅ©¸³Æ®¿¡´Â °¢ ¿ä¾à Å×ÀÌºí¿¡ ´ëÇÑ ¸í·É¹®ÀÇ ¼¼Æ®°¡ Æ÷ÇԵ˴ϴÙ.

´ÙÀ½ ¼½¼ÇÀº »ùÇà ¿ä¾à Å×À̺í ÀÛ¼º SQL ½ºÅ©¸³Æ®ÀÇ ¸í·É¹®¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

DROP TABLE ¹®

ÀÛ¼ºµÇ´Â °¢ ¿ä¾à Å×À̺íÀº ÇØ´ç À̸§À» °¡Áø Å×À̺íÀÌ ÀÌ¹Ì Á¸ÀçÇÏÁö ¾Êµµ·Ï È®ÀÎÇϱâ À§ÇØ ¸ÕÀú »èÁ¦µË´Ï´Ù. ±×¸² 27¿¡¼­, DB2INFO.MQT0000000021T01 Å×À̺íÀº ´ÙÀ½ÀÇ ¹®À¸·Î »èÁ¦ÇÕ´Ï´Ù. DROP TABLE DB2INFO.MQT0000000021T01;.

CREATE TABLE ¹®

½ºÅ©¸³Æ®´Â CREATE TABLE ¹®À» »ç¿ëÇÏ¿© ¿ä¾à Å×À̺íÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ ¸í·É¹®Àº ½ºÅ©¸³Æ®ÀÇ °¡Àå ¸¹Àº ºÎºÐÀ¸·Î SELECT, FROM, WHERE ¹× GROUP BY ÀýÀÌ ÀÖ´Â SELECT¹®°ú ¾÷µ¥ÀÌÆ® ¸Þ¼Òµå Á¤ÀǸ¦ Æ÷ÇÔÇÕ´Ï´Ù. ¿ä¾à Å×À̺íÀº »ç½Ç ¹× Â÷¿ø Å×ÀÌºí¿¡¼­ Áý°èµÈ µ¥ÀÌÅÍ·Î ÀÛ¼ºµÇ¹Ç·Î, CREATE TABLE ¹®Àº ¿ä¾à Å×À̺íÀ» ºôµåÇϱâ À§ÇØ À̵é Å×ÀÌºí¿¡¼­ µ¥ÀÌÅ͸¦ °¡Á®¿É´Ï´Ù.

Å×À̺í À̸§Àº CREATE TABLE ¹®ÀÇ Ã¹ ¹øÂ° ¶óÀο¡ Á¤Àǵ˴ϴÙ. CREATE SUMMARY TABLE DB2INFO.MQT0000000021T01

±×¸² 27¿¡ Ç¥½ÃµÈ SELECTÀýÀº SUMÀ¸·Î ½ÃÀÛÇÏ´Â Àϰö °³ÀÇ ¶óÀÎÀÌ ÀÖ½À´Ï´Ù. °¢ ¶óÀÎÀº Å¥ºê ¸ðµ¨ÀÇ Ä¡¼ö Áß Çϳª¿¡ ¸ÅÇε˴ϴÙ. ¿¹¸¦ µé¾î, SUM(T2."MARKETING"+T2."PAYROLL") AS "EXPENSE"´Â Áý°è ÇÔ¼ö SUMÀ¸·Î Expense °á°ú°ª¿¡ ¸ÅÇÎÇÕ´Ï´Ù. ¿ä¾à Å×À̺íÀÌ ÀÛ¼ºµÇ´Â Å¥ºê ¸ðµ¨¿¡´Â °á°ú°ªÀÎ COGS, Expense, Marketing, Payroll, Profit, ProfitMargin ¹× Sales¸¦ °¡Áý´Ï´Ù. °è»êÀ» ¼öÇàÇÏÁö ¾Ê°í Ä÷³À» °¡Á®¿À´Â ´ÙÀ½ÀÇ ³× ¶óÀÎÀº ¼Ó¼º¿¡ ¸ÅÇε˴ϴÙ. ¿¹¸¦ µé¾î, T4."REGION" AS "REGION"Àº Region ¼Ó¼º¿¡ ¸ÅÇε˴ϴÙ. ¿ä¾à Å×À̺íÀÌ ÀÛ¼ºµÇ´Â Å¥ºê ¸ðµ¨Àº Region, Director, Family ¹× FamilyName ¼Ó¼ºÀ» °®½À´Ï´Ù.

FROMÀýÀÇ Å×À̺íÀº Å¥ºê ¸ðµ¨¿¡¼­ »ç¿ëµÇ´Â »ç½Ç ¹× Â÷¿ø Å×À̺íÀÔ´Ï´Ù. ÀÌ ¿¹Á¦´Â Market, SalesFact, Product, Region ¹× Family Å×À̺íÀ» »ç¿ëÇÕ´Ï´Ù.

WHEREÀýÀº »ç½Ç ¹× Â÷¿ø Å×ÀÌºí °£ÀÇ Á¶ÀÎÀ» Á¤ÀÇÇÏ°í °¢ Á¶ÀÎÀº Å¥ºê ¸ðµ¨ÀÇ Á¶ÀÎ ¿ÀºêÁ§Æ®¿¡ ¸ÅÇε˴ϴÙ. Å¥ºê ¸ðµ¨ÀÌ ´«¼ÛÀÌÇü ½ºÅ°¸¶¸¦ ±â¹ÝÀ¸·Î ÇÏ´Â °æ¿ì, Â÷¿ø ´ë Â÷¿ø Á¶Àεµ WHERE Àý¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

GROUP BY GROUPING SETSÀýÀº Å¥ºê ¸ðµ¨¿¡ ´ëÇØ Á¤ÀÇµÈ ½½¶óÀ̽º¿¡ ¸ÅÇε˴ϴÙ. ±×¸² 27Àº °¢°¢ ´Ù¸¥ ½½¶óÀ̽º¿¡ ¸ÅÇεǴ µÎ °³ÀÇ ±×·ìÈ­ ¼¼Æ®¸¦ º¸¿© ÁÝ´Ï´Ù. ±×·ìÈ­´Â ½½¶óÀ̽º¸¦ Á¤ÀÇÇϱâ À§ÇØ ¼¼ °¡Áö À¯ÇüÀÇ ¸ÞŸµ¥ÀÌÅ͸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù.

º¸¿©Áö´Â ¿¹Á¦¿¡¼­´Â ÃÖÀûÈ­ ÁßÀΠťºê ¸ðµ¨ÀÌ Region [Region, State], Product [Family, SKU], ¹× Time [Year, Quarter, Month, Day] °èÃþ ±¸Á¶¸¦ °¡Áý´Ï´Ù. °èÃþ ±¸Á¶ÀÇ ÇÑ ·¹º§ÀÌ ±×·ìÈ­ ¼¼Æ®¿¡ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ¸¸é, ½½¶óÀ̽º´Â ¸ðµç Time, ¸ðµç Region ¶Ç´Â ¸ðµç Product¿Í °°ÀÌ °¡Àå ³ôÀº ·¹º§¿¡ ÀÖ½À´Ï´Ù. GROUP BYÀýÀÇ Ã¹ ¹øÂ° ½½¶óÀ̽º´Â Region-All Products-All Time ½½¶óÀ̽ºÀ̸ç Region ¹× Director ¼Ó¼ºÀ» Æ÷ÇÔÇÕ´Ï´Ù. RegionÀº Region °èÃþ ±¸Á¶¿¡¼­ °¡Àå ³ôÀº ·¹º§À̹ǷΠÃß°¡ÀûÀÎ ·¹º§ ¼Ó¼ºÀÌ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. Director´Â Region°úÀÇ ¼Ó¼º °ü°è¿¡¼­ »ç¿ëµÇ¹Ç·Î ½½¶óÀ̽º Á¤ÀÇ¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. µÎ ¹øÂ° ½½¶óÀ̽º´Â Region-Family-All Time ½½¶óÀ̽ºÀ̸ç Region, Director, Family ¹× FamilyName ¼Ó¼ºÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. Region ¹× Family´Â ·¹º§ ¼Ó¼ºÀÔ´Ï´Ù. Director´Â Region°úÀÇ ¼Ó¼º °ü°è¿¡ »ç¿ëµÇ¸ç FamilyNameÀº Family¿ÍÀÇ ¼Ó¼º °ü°è¿¡¼­ »ç¿ëµÇ¹Ç·Î Director¿Í FamilyName ¸ðµÎ ½½¶óÀ̽º Á¤ÀÇ¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ½½¶óÀ̽ºÀÇ ·¹º§ ¼Ó¼º °¢°¢Àº SELECTÀýÀÌ ¸ÅÇεǴ ¼Ó¼ºÀÔ´Ï´Ù.

CREATE TABLE ¹®ÀÇ ¸¶Áö¸· ºÎºÐÀº ¾÷µ¥ÀÌÆ® ¸Þ¼Òµå Á¤ÀÇÀÔ´Ï´Ù. ±×¸² 27¿¡¼­ CREATE TABLE ¹®ÀÇ ¸¶Áö¸· ¼¼ ¶óÀÎÀº ¿ä¾à Å×À̺íÀ» Áö¿¬ »õ·Î °íħÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.

DATA INITIALLY DEFERRED
REFRESH DEFERRED
NOT LOGGED INITIALLY;

¿ä¾à Å×À̺íÀ» Áï½Ã »õ·Î °íħÀ¸·Î Á¤ÀÇÇÏ´Â °æ¿ì, ¸í·É¹®Àº ´ÙÀ½°ú °°½À´Ï´Ù.

DATA INITIALLY DEFERRED
REFRESH IMMEDIATE
NOT LOGGED INITIALLY;

CREATE INDEX¹®

ÃÖÀûÈ­ ¾îµå¹ÙÀÌÀú ¸¶¹ý»ç´Â ¿ä¾à Å×ÀÌºí¿¡ ´ëÇØ Çϳª ÀÌ»óÀÇ À妽º¸¦ ±ÇÀåÇϸç, À妽º´Â ¿ä¾à Å×À̺íÀÌ ÀÛ¼ºµÈ ÈÄ¿¡ ÀÛ¼ºµË´Ï´Ù. ±×¸² 27¿¡¼­ Ŭ·¯½ºÅÍµÈ »öÀΰú Ŭ·¯½ºÅ͵ÇÁö ¾ÊÀº »öÀÎÀÌ ¸ðµÎ ÀÛ¼ºµË´Ï´Ù. À妽º¸¦ ÀÛ¼ºÇÑ ÈÄ, REORG¹®Àº Ŭ·¯½ºÅ͸µ À妽º¿¡ µû¶ó Å×À̺íÀ» À籸¼ºÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¾î¶² °æ¿ì¿¡´Â À妽º°¡ Å×À̺íÀÇ Àб⠼º´ÉÀ» Çâ»óÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

RUNSTATS¹®

¿ä¾à Å×ÀÌºí¿¡ ´ëÇØ ±ÇÀåµÇ´Â ¸ðµç Ãø¸éÀÌ ÀÛ¼ºµÈ ÈÄ¿¡, RUNSTATS¹®Àº DB2 ¿ÉƼ¸¶ÀÌÀú°¡ Äõ¸® °æ·Î ÀçÁöÁ¤À» À§ÇØ ¿ä¾à Å×À̺í°ú À妽º¸¦ °í·ÁÇϱâ À§ÇØ »ç¿ëÇÏ´Â DB2 ¿ÉƼ¸¶ÀÌÀú Åë°è¸¦ ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù. °¢ ¿ä¾à Å×À̺íÀÇ ¸¶Áö¸· ¸í·É¹®Àº COMMIT¹®À¸·Î ÇÑ ¹ø¿¡ ¸ðµç ³»¿ëÀÌ µ¥ÀÌÅͺ£À̽º¿¡ ¿Ï·áµÇµµ·Ï ÇÕ´Ï´Ù.