¸±¸®½º Á¤º¸


º¯°æ ½ÃÀÛ42.12 Subselect¿¡¼­ÀÇ ORDER BY

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

42.12.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.12.2 subselect

´ÙÀ½Àº order-by ÀýÀÇ À§Ä¡¸¦ Ç¥½ÃÇÏ´Â ¼öÁ¤µÈ 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.12.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.12.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.12.5 OLAP ÇÔ¼ö(window-order Àý)

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

window-order Àý
 
             .-,--------------------------------------------.
             V                        .-| asc option |--.   |
|--ORDER BY----+-sort-key-expression--+-----------------+-+-+---|
               |                      '-| desc option |-' |
               '-ORDER OF--table-designator---------------'
 
asc ¿É¼Ç
 
        .-NULLS LAST--.
|--ASC--+-------------+-----------------------------------------|
        '-NULLS FIRST-'
 
desc ¿É¼Ç
 
         .-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 ÂüÁ¶¼­¿¡¼­ "¸ðÈ£ÇÔÀ» ÇÇÇϱâ À§ÇÑ Ä÷³ À̸§ ±ÔÁ¤ÀÚ"¸¦ ÂüÁ¶ÇϽʽÿÀ.
º¯°æ ³¡


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