¸±¸®½º Á¤º¸


|42.8 Subselect¿¡¼­ÀÇ ORDER BY

|DB2´Â ÀÌÁ¦ subselect ¹× fullselect¿¡¼­ ORDER BY¸¦ |Áö¿øÇÕ´Ï´Ù.

|42.8.1 fullselect

|´ÙÀ½Àº order-by ÀýÀÇ À§Ä¡¸¦ Ç¥½ÃÇÏ´Â ¼öÁ¤µÈ fullselectÀÇ ºÎºÐ ±¸¹® ´ÙÀ̾î±×·¥ÀÔ´Ï´Ù.

|>>-+-subselect---------+---------------------------------------->
|   +-(fullselect)------+
|   '-| values-clause |-'
| 
|   .----------------------------------------------.
|   V                                              |
|>----+------------------------------------------+-+------------->
|     '-+-UNION---------+--+-subselect---------+-'
|       +-UNION ALL-----+  +-(fullselect)------+
|       +-EXCEPT--------+  '-| values-clause |-'
|       +-EXCEPT ALL----+
|       +-INTERSECT-----+
|       '-INTERSECT ALL-'
| 
|>--+-----------------+-----------------------------------------><
|   '-order-by-clause-'
| 
| 

|ORDER BY ÀýÀ» Æ÷ÇÔÇÏ´Â fullselect¸¦ |´ÙÀ½¿¡¼­ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù. |

|fullselect¿¡¼­ ORDER BY ÀýÀº Á¶È¸·Î ¸®ÅϵǴ ÇàÀÇ ¼ø¼­¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. |ORDER BY ÀýÀÌ °¡Àå ¿ÜºÎ fullselect¿¡¼­ ÁöÁ¤µÇ´Â °æ¿ì ¸®ÅϵǴ ÇàÀÇ ¼ø¼­¿¡¸¸ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

|42.8.2 subselect

|´ÙÀ½Àº order-by Àý ¹× fetch-first ÀýÀÇ À§Ä¡¸¦ Ç¥½ÃÇÏ´Â ¼öÁ¤µÈ subselectÀÇ Àüü ±¸¹® ´ÙÀ̾î±×·¥ÀÔ´Ï´Ù.

|>>-select-clause--from-clause--+--------------+----------------->
|                               '-where-clause-'
| 
|>--+-----------------+--+---------------+----------------------->
|   '-group-by-clause-'  '-having-clause-'
| 
|>--+-----------------+-----------------------------------------><
|   '-order-by-clause-'
| 
| 

|subselect ÀýÀº ´ÙÀ½ ¼ø¼­·Î 󸮵˴ϴÙ. |

  1. |FROM Àý
  2. |WHERE Àý
  3. |GROUP BY Àý
  4. |HAVING Àý
  5. |SELECT Àý
  6. |ORDER BY Àý |

|ORDER BY ÀýÀ» Æ÷ÇÔÇÏ´Â subselect¸¦ |´ÙÀ½¿¡¼­ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.

|¿¹¸¦ µé¾î, ´ÙÀ½Àº À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù(SQLSTATE 428FJ SQLCODE -20211).

|SELECT * FROM T1
|   ORDER BY C1
|UNION
|SELECT * FROM T2
|   ORDER BY C1

|´ÙÀ½ ¿¹´Â |À¯È¿ÇÕ´Ï´Ù.

|(SELECT * FROM T1
|   ORDER BY C1)
|UNION
|(SELECT * FROM T2
|   ORDER BY C1)

|subselect¿¡¼­ ORDER BY ÀýÀº Á¶È¸·Î ¸®ÅϵǴ ÇàÀÇ ¼ø¼­¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. |ORDER BY ÀýÀÌ °¡Àå ¿ÜºÎ fullselect¿¡¼­ ÁöÁ¤µÇ´Â °æ¿ì ¸®ÅϵǴ ÇàÀÇ ¼ø¼­¿¡¸¸ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

|42.8.3 order-by Àý

|´ÙÀ½Àº ¼öÁ¤µÈ order-by ÀýÀÇ Àüü ±¸¹® ´ÙÀ̾î±×·¥ÀÔ´Ï´Ù.

|             .-,------------------------------.
|             V             .-ASC--.           |
|>>-ORDER BY----+-sort-key--+------+---------+-+----------------><
|               |           '-DESC-'         |
|               '-ORDER OF--table-designator-'
| 
|sort-key
| 
||--+-simple-column-name--+--------------------------------------|
|   +-simple-integer------+
|   '-sort-key-expression-'
| 
| 
|

|ORDER OF table-designator
|table-designator¿¡¼­ »ç¿ëµÇ´Â µ¿ÀÏÇÑ ¼ø¼­°¡ subselectÀÇ |°á°ú Å×ÀÌºí¿¡ Àû¿ëµÇ¾î¾ß ÇÔÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ÀýÀ» ÁöÁ¤ÇÏ´Â subselectÀÇ |FROM Àý¿¡´Â table-designator°ú ÀÏÄ¡ÇÏ´Â Å×À̺í ÂüÁ¶°¡ ÀÖ¾î¾ß |ÇÕ´Ï´Ù(SQLSTATE 42703). ÁöÁ¤µÈ table-designator¿¡ ÇØ´çÇÏ´Â |subselect(¶Ç´Â fullselect)´Â µ¥ÀÌÅÍ¿¡ Á¾¼ÓÇÏ´Â ORDER BY ÀýÀ» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù(SQLSTATE 428FI SQLCODE -20210). Àû¿ëµÇ´Â ¼ø¼­´Â |ÁßøµÈ subselect(¶Ç´Â fullselect)¿¡¼­ ORDER BY ÀýÀÇ Ä÷³ÀÌ ¿ÜºÎ |subselect(¶Ç´Â fullselect) Àý¿¡ Æ÷ÇԵǾúÀ¸¸ç ÀÌ Ä÷³ÀÌ |ORDER OF Àý ´ë½Å ÁöÁ¤µÈ °æ¿ì µ¿ÀÏÇÕ´Ï´Ù. |Å×À̺í ÁöÁ¤ÀÚ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â SQL ÂüÁ¶¼­¿¡¼­ "¸ðÈ£ÇÔÀ» ÇÇÇϱâ À§ÇÑ |Ä÷³ À̸§ ±ÔÁ¤ÀÚ"¸¦ ÂüÁ¶ÇϽʽÿÀ.

|ÀÌ ¾ç½ÄÀº fullselect(fullselectÀÇ ÅðÈ­ ¾ç½Ä°ú ´Ù¸¥)¿¡¼­ Çã¿ëµÇÁö ¾ÊÀ½À» ÁÖÀÇÇϽʽÿÀ. |¿¹¸¦ µé¾î, ´ÙÀ½Àº À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.

|(SELECT C1 FROM T1
|   ORDER BY C1)
|UNION
|SELECT C1 FROM T2
|   ORDER BY ORDER OF T1

|´ÙÀ½ ¿¹´Â |À¯È¿ÇÕ´Ï´Ù.

|SELECT C1 FROM
|   (SELECT C1 FROM T1
|      UNION
|    SELECT C1 FROM T2
|    ORDER BY C1 ) AS UTABLE
|ORDER BY ORDER OF UTABLE
|

|42.8.4 select¹®

|´ÙÀ½Àº ¼öÁ¤µÈ select¹®ÀÇ Àüü ±¸¹® ´ÙÀ̾î±×·¥ÀÔ´Ï´Ù.

|>>-+-----------------------------------+--fullselect------------>
|   |       .-,-----------------------. |
|   |       V                         | |
|   '-WITH----common-table-expression-+-'
| 
|>--fetch-first-clause--*--+--------------------+---------------->
|                          +-read-only-clause---+
|                          |               (1)  |
|                          '-update-clause------'
| 
|>--*--+---------------------+--*--+--------------+-------------><
|      '-optimize-for-clause-'     '-WITH--+-RR-+-'
|                                          +-RS-+
|                                          +-CS-+
|                                          '-UR-'
| 
| 

|ÁÖ:

  1. |updateÀýÀº fullselect°¡ order-byÀýÀ» Æ÷ÇÔÇÏ´Â °æ¿ì |ÁöÁ¤µÉ ¼ö ¾ø½À´Ï´Ù. |

|SELECT INTO¹®

|±¸¹®

|                        .-,-------------.
|                        V               |
|>>-select-clause--INTO----host-variable-+--from-clause---------->
| 
|>--+--------------+--+-----------------+--+---------------+----->
|   '-where-clause-'  '-group-by-clause-'  '-having-clause-'
| 
|>--+-----------------+--+--------------+-----------------------><
|   '-order-by-clause-'  '-WITH--+-RR-+-'
|                                +-RS-+
|                                +-CS-+
|                                '-UR-'
| 
| 

|42.8.5 OLAP ÇÔ¼ö(window-order Àý)

|´ÙÀ½Àº ¼öÁ¤µÈ window-order ÀýÀ» Ç¥½ÃÇÏ´Â OLAP ÇÔ¼ö¿¡ ´ëÇÑ ºÎºÐ ±¸¹® ´ÙÀ̾î±×·¥ÀÔ´Ï´Ù.

|window-order Àý
| 
|             .-,--------------------------------------------.
|             V                        .-| asc option |--.   |
||--ORDER BY----+-sort-key-expression--+-----------------+-+-+---|
|               |                      '-| desc option |-' |
|               '-ORDER OF--table-designator---------------'
| 
|asc option
| 
|        .-NULLS LAST--.
||--ASC--+-------------+-----------------------------------------|
|        '-NULLS FIRST-'
| 
|desc option
| 
|         .-NULLS FIRST-.
||--DESC--+-------------+----------------------------------------|
|         '-NULLS LAST--'
| 
| 
|

|ORDER BY (sort-key-expression,...)
|OLAP ÇÔ¼öÀÇ °ªÀ» °áÁ¤ÇÏ´Â ÆÄƼ¼Ç ³»¿¡¼­ ÇàÀÇ ¼ø¼­¸¦ Á¤ÀÇÇϰųª |window-aggregation-group Àý¿¡¼­ ROW °ªÀÇ Àǹ̸¦ Á¤ÀÇÇÕ´Ï´Ù. (Á¶È¸ °á°ú ¼¼Æ®ÀÇ |¼ø¼­´Â Á¤ÀÇÇÏÁö ¾Ê½À´Ï´Ù.)

|sort-key-expression
|â ÆÄƼ¼Ç ³»¿¡¼­ ÇàÀÇ ¼ø¼­¸¦ Á¤ÀÇÇÏ´Â µ¥ »ç¿ëµÇ´Â Ç¥Çö½ÄÀÔ´Ï´Ù. |sort-key-expression¿¡¼­ |ÂüÁ¶µÇ´Â °¢ Ä÷³ À̸§Àº OLAP ÇÔ¼ö¸¦ Æ÷ÇÔÇÏ¿© subselectÀÇ °á°ú ¼¼Æ® Ä÷³À» ¸íÈ®ÇÏ°Ô ÂüÁ¶ÇØ¾ß |ÇÕ´Ï´Ù(SQLSTATE 42702 ¶Ç´Â 42703). °¢ sort-key-expressionÀÇ ±æÀÌ´Â |255¹ÙÀÌÆ®º¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù(SQLSTATE 42907). sort-key-expressionÀº |½ºÄ®¶ó fullselect¸¦ Æ÷ÇÔÇÒ ¼ö ¾øÀ¸¸ç(SQLSTATE 42822) |°áÁ¤ÀûÀÌÁö ¾Ê°Å³ª ¿ÜºÎ Á¶Ä¡°¡ ÀÖ´Â ¸ðµç ÇÔ¼ö¸¦ Æ÷ÇÔÇÒ ¼ö ¾ø½À´Ï´Ù(SQLSTATE 42845). ÀÌ ÀýÀº |RANK ¹× |DENSE_RANK ÇÔ¼ö¿¡ ÇÊ¿äÇÕ´Ï´Ù(SQLSTATE 42601).

|ASC
|¿À¸§Â÷¼øÀ¸·Î sort-key-expressionÀÇ °ªÀ» »ç¿ëÇÕ´Ï´Ù.

|DESC
|³»¸²Â÷¼øÀ¸·Î sort-key-expressionÀÇ °ªÀ» »ç¿ëÇÕ´Ï´Ù.

|NULLS FIRST
|â ¼ø¼­´Â Á¤·Ä ¼ø¼­¿¡¼­ ¸ðµÎ ³Î(NULL)ÀÌ ¾Æ´Ñ °ª ÀÌÀü¿¡ ³Î(NULL) °ªÀ» |µÎ´Â °ÍÀ¸·Î °í·ÁÇÕ´Ï´Ù.

|NULLS LAST
|â ¼ø¼­´Â Á¤·Ä ¼ø¼­¿¡¼­ ¸ðµÎ ³Î(NULL)ÀÌ ¾Æ´Ñ °ª ÀÌÈÄ¿¡ ³Î(NULL) °ªÀ» |µÎ´Â °ÍÀ¸·Î °í·ÁÇÕ´Ï´Ù.

|ORDER OF table-designator
|table-designator¿¡¼­ »ç¿ëµÇ´Â µ¿ÀÏÇÑ ¼ø¼­°¡ subselectÀÇ |°á°ú Å×ÀÌºí¿¡ Àû¿ëµÇ¾î¾ß ÇÔÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ÀýÀ» ÁöÁ¤ÇÏ´Â subselectÀÇ |FROM Àý¿¡´Â table-designator°ú ÀÏÄ¡ÇÏ´Â Å×À̺í ÂüÁ¶°¡ ÀÖ¾î¾ß |ÇÕ´Ï´Ù(SQLSTATE 42703). ÁöÁ¤µÈ table-designator¿¡ ÇØ´çÇÏ´Â |subselect(¶Ç´Â fullselect)´Â µ¥ÀÌÅÍ¿¡ Á¾¼ÓÇÏ´Â ORDER BY ÀýÀ» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù(SQLSTATE 428FI SQLCODE -20210). Àû¿ëµÇ´Â ¼ø¼­´Â ÁßøµÈ subselect(¶Ç´Â fullselect)¿¡¼­ ORDER BY ÀýÀÇ Ä÷³ÀÌ ¿ÜºÎ |subselect(¶Ç´Â fullselect) Àý¿¡ Æ÷ÇÔµÈ °æ¿ì µ¿ÀÏÇϸç, ÀÌ Ä÷³ÀÌ ORDER OF Àý ´ë½Å ÁöÁ¤µÈ °æ¿ì µ¿ÀÏÇÕ´Ï´Ù. |Å×À̺í ÁöÁ¤ÀÚ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â SQL ÂüÁ¶¼­¿¡¼­ "¸ðÈ£ÇÔÀ» ÇÇÇϱâ À§ÇÑ |Ä÷³ À̸§ ±ÔÁ¤ÀÚ"¸¦ ÂüÁ¶ÇϽʽÿÀ. |


[ ÆäÀÌÁöÀÇ ¸Ç À§ | ÀÌÀü ÆäÀÌÁö | ´ÙÀ½ ÆäÀÌÁö | ¸ñÂ÷ | »öÀÎ ]