<2018.5.28 - join> ÇϳªÀÌ»óÀÇ Å×À̺íÀ» ƯÁ¤ Ä÷³À» »ç¿ëÇÏ¿© ÇϳªÀÇ Å×À̺í·Î ÇÕÄ¡´Â °Í (¿·À¸·Î...) »ç¿ø(»ç¹ø,À̸§,ºÎ¼­¹øÈ£,¿ù±Þ) ºÎ¼­(ºÎ¼­¹øÈ£,ºÎ¼­¸í) »ç¹ø,À̸§,ºÎ¼­¸í select »ç¹ø,À̸§,ºÎ¼­¸í from »ç¿ø join ºÎ¼­ using(ºÎ¼­¹øÈ£); select »ç¹ø,À̸§,ºÎ¼­¸í from »ç¿ø join ºÎ¼­ on(»ç¿ø.ºÎ¼­¹øÈ£ = ºÎ¼­.ºÎ¼­¹øÈ£); select »ç¹ø,À̸§,ºÎ¼­¸í from »ç¿ø, ºÎ¼­ where »ç¿ø.ºÎ¼­¹øÈ£ = ºÎ¼­.ºÎ¼­¹øÈ£; outer join left out join -Á¶ÀÎÇÏ´Â ¿ÞÂÊ¿¡ ÀÖ´Â Å×À̺íÀÇ ÀÚ·á´Â ´Ù ³ª¿È select »ç¹ø, À̸§, ºÎ¼­¸í from »ç¿ø right outer join ºÎ¼­ using(ºÎ¼­¹øÈ£); select »ç¿ø,À̸§,ºÎ¼­¸í from »ç¿ø full outer join ºÎ¼­ using (ºÎ¼­¹øÈ£); ¿©·¯Å×À̺í Á¶ÀÎ--------------------- select »ç¹ø,À̸§,ºÎ¼­¸í,Á÷±Þ¸í from (»ç¿ø join ºÎ¼­ using(ºÎ¼­¹øÈ£)) temp join Á÷±Þ on(temp.Á÷±Þ¹øÈ£ = Á÷±Þ.Á÷±Þ¹øÈ£); Å×À̺í À̸§ÀÌ ±æ °æ¿ì º°¸íÀ» ÁÖ¾î Æí¸®ÇÏ°Ô »ç¿ë°¡´É => ¼º´É Çâ»ó ±â´ë select »ç¿ø.»ç¹ø,»ç¿ø.À̸§, ºÎ¼­.ºÎ¼­¸í, Á÷±Þ.Á÷±Þ¸í from (»ç¿ø join ºÎ¼­ usgin(ºÎ¼­¹øÈ£)) join Á÷±Þ using(Á÷±Þ¹øÈ£); select a.»ç¹ø,a.À̸§, b.ºÎ¼­¸í, Á÷±Þ.Á÷±Þ¸í from (»ç¿ø a join ºÎ¼­ b usgin(ºÎ¼­¹øÈ£)) join Á÷±Þ cusing(Á÷±Þ¹øÈ£); create table dept as select * from "20152518".dept; create table emp as select * from "20152518".emp; select last_name,dname from emp e join dept d on(e.department_id = d.deptno); -------------------------- ¼­ºê Äõ¸®: sub qeury -¸ÞÀÎÄõ¸®¾È¿¡ ÀÖ´Â ¼­ºê Äõ¸® -¼­ºêÄõ¸®´Â ¸ðµç Àý¿¡ ¿Ã ¼ö ÀÖµû -¼­ºêÄõ¸®´Â ()·Î °¨½Ñ´Ù -¼­ºêÄõ¸® ¸ÕÀú ½ÇÇàÇÏ¿© ¸ÞÀÎ Äõ¸®·Î °á°ú¸¦ ³Ñ±ä´Ù. update »ç¿ø set ¿ù±Þ = Æò±Õ¿ù±Þ where »ç¹ø =123; 'Chen' °ú °°Àº ºÎ¼­¿¡ ±Ù¹«ÇÏ´Â »ç¿øÀÇ À̸§ select last_name from emp where department_id = (select department_id from emp where last_name='Chen'); ¼­ºê Äõ¸®ÀÇ °á°ú°¡ ´ÙÁßÇàÀÏ °æ¿ì ´ÙÁßÇà ¿¬»êÀÚ¸¦ »ç¿ëÇÑ´Ù. -in -any,all select last_name from emp where department_id = (select department_id from emp group by department_id having avg(salary)>=8000); ±×¹ÛÀÇ »ç¿ëºóµµ ³ôÀº ÇÔ¼ö nvl (Ä÷³¸í,null Àϰæ¿ì ´ë½Å Ç¥½ÃÇÒ°ª) select last_name, salary, salary *commission_pct as ÆÇ¸Å¼ö´ç, salary + (salary * commission_pct) as½ÇÁö±Þ¾× from emp; case ¹® »ç¿øÀ̸§,¿ù±Þ,º¸³Ê½º ´Ü,º¸³Ê½º ºÎ¼­º°·Î ´Ù¸£°Ô Áö±ÞÇϰíÀÚ ÇÑ´Ù. 30 ºÎ¼­´Â 200% ,40ºÎ¼­´Â 300% ³ª¸ÓÁö ºÎ¼­´Â 100 % select last_name, salary, case department_id when 30 then salary *2 when 40 then salary *3 else salary * 1 end bonus from emp; ---------------------- °í°´(°í°´¹øÈ£,°í°´À̸§,°í°´µî±Þ,¸¶Àϸ®Áö,»ýÀÏ,°¡ÀÔÀÏ,¼ºº°) »óǰ(»óǰ¹øÈ£,»óǰ¸í,»óǰÁ¾·ù,µî·ÏÀÏ,°¡°Ý,¿ø»êÁö,ÇÒÀÎÀ²) ¸ÅÃâ(°í°´¹øÈ£,¸ÅÃâÀÏÀÚ,¸ÅÃâÃѱݾ×,°áÀç¹æ¹ý) ¸ÅÃâ¼¼ºÎ(¸ÅÃâ¹øÈ£,»óǰ¹øÈ£,¼ö·®,ÇÒÀξ×,°³º°»óǰ,¸ÅÃâ±Ý¾×) 1. 2. 3. 4.Ä«µå ¶Ç´Â ¸¶Àϸ®Áö·Î °áÁ¦ÇÑ ¸ÅÃâÁ¤º¸ °Ë»ö select * from ¸ÅÃâ where °áÀç¹æ¹ý in(2,3); 5.°¡°ÝÀÌ 1000¿ø ¹Ì¸¸À̰ųª ¿ø»êÁö°¡ Ç¥½Ã ¾ÈµÈ »óǰÁ¤º¸ select * from »óǰ where °¡°Ý< 1000 or ¿ø»êÁö is null; 6.»ýÀÏ ¿ùº° °í°´ Àοø¼ö ´Ü, Àοø¼ö°¡ ¸¹Àº ¿ùºÎÅÍ Ãâ·Â select to_char(»ýÀÏ,'mm')as »ýÀÏ¿ù, count(*) as ¿ùº°°í°´¼ö from °í°´ group by to_char(»ýÀÏ,'mm') order by count(*) desc; 7.¿ùº° ¸ÅÃ⠰Ǽö ´Ü,¸ÅÃâ°Ç¼ö ¸¹Àº ¿ùºÎÅÍ Ãâ·Â select to_char(¸ÅÃâÀÏÀÚ,'mm')as ¸ÅÃâ¿ù, count(*) as ¿ùº°¸ÅÃâ°Ç¼ö from ¸ÅÃâ group by to_char(¸ÅÃâÀÏÀÚ,'mm') order by count (*) desc; 8.¿À´Ã ±âÁØ 2ÁÖ À̳» µî·ÏµÈ ½Å»óǰÀÇ »óǰÀ̸§,¿ø»êÁö¸í,°¡°Ý »óǰ(»óǰ¹øÈ£,»óǰ¸í,»óǰÁ¾·ù,µî·ÏÀÏ, °¡°Ý, ¿ø»êÁö,ÇÒÀÎÀ²) select b.»óǰÀ̸§,a.¿ø»êÁö¸í,b.°¡°Ü from ¿ø»êÁöa join( select »óǰÀ̸§, ¿ø»êÁö, °¡°Ý from »óǰ where µî·ÏÀÏ > sysdate -14 ) b on(a.¿ø»êÁöÄÚµå = b.¿ø»êÁö) order by µî·ÏÀÏ desc; 9.30%ÀÌ»ó ÇÒÀÎÇÏ´Â »óǰÀÇ Á¤º¸ select * from »óǰ where ÇÒÀÎÀ²>=0.3; 10.¿ø»êÁö°¡ 'Áß±¹' ÀÎ »óǰÁ¤º¸ select * from »óǰ where ¿ø»êÁö =(select ¿ø»êÁöÄÚµå from ¿ø»êÁö where ¿ø»êÁö¸í ='Áß±¹'); 11.»óǰº° ÆÇ¸Å¼ö·®ÀÇ ÇÕ°è ´Ü, ÆÇ¸Å¼ö·®ÀÌ ¸¹Àº »óǰºÎÅÍ Ãâ·Â... Ãâ·Â¿¹) »óǰÀ̸§, ÃÑÆÇ¸Å°³¼ö select a.»óǰ¹øÈ£, b.¸ÅÃâ¼ö·® from »óǰ a join( select »óǰ¹øÈ£, sum(¼ö·®) as ¸ÅÃâ¼ö·® from ¸ÅÃâ¼¼ºÎ group by »óǰ¹øÈ£ having sum(¼ö·®)>1000 order by sum(¼ö·®) desc ) b using(»óǰ¹øÈ£); 12.'ÀÌÁ¾¼®' 2017³â 3¿ù¿¡ ±¸ÀÔÇÑ ¸ÅÃâÁ¤º¸ select * from ¸ÅÃâ where °í°´¹øÈ£=(select °í°´¹øÈ£ from °í°´ where °í°´À̸§ ='ÀÌÁ¾¼®' and to_char(¸ÅÃâÀÏÀÚ,'yyyymm') ='201703';