[ 2. 안드로이드 JDK 설치 ]

 

 

1. JDK download

     - URL : http://www.oracle.com/technetwork/java/javase/downloads/index.html

   

 

 

 

2. JDK Download

    - 무료지만 기본 License 동의 필요

    - (o) Accept License Agreement

    - Windows 사용자는 Version과 관계 없고  bit만 중요.

       . 32bit 운영체제는 : Windows x86 download

       . 64bit 운영체제는 : Windows x86 또는 Windows x64  둘 중 하나 download

 

    - jdk 가능 version : jdk1.7.0_75 이상 가능. (이전도 될지 모르지만  1.7부터 해 봤음)

 

 

 

3. 설치시작

    - 실행파일 : jdk-8u121-windows-x64.exe

 

4. 실행파일 선택

    - 전체 선택

    - 설치 폴더 : 난 항상 C root [  C:\jdk1.8.0_121 ]

                        또는 주로        [  C:\jdk\jdk1.8.0_121 ]  <- 이게 좋을 듯 ^^

 

 

6. 설치 start

 

7. jre설치

    - jre란 : JRE는 JVM(Java 가상 시스템), Java 플랫폼 핵심 클래스 및 Java 플랫폼 지원 라이브러리로 구성되어 있음.
                 JRE는 Java 소프트웨어의 런타임 부분으로, 웹 브라우저에서 Java 소프트웨어가 실행되는 데 필요함.

 

 

8. 설치 확인

    - 왼쪽 하단 windows 시작 icon 클릭  -> cmd  입력 후 enter

 

9. cmd창이 뜸

    - java -version 후 enter

    - 설치된  jdk version이 보임

 

Posted by 농부지기
,

[ 1. 안드로이드 스튜디오 설치하기 ]

 

 

=== [ 1단계 파일 다운로드 ]  ============================================================================

 

1. Explorer에서 안드로이드 스튜디오 다운로드

    - URL : https://developer.android.com/studio/index.html

    - 그런데, 난 Explorer 11 인데  안드로이드 스튜디오가 다운로드가 안됨

       아~~ 아무리 클릭해도 반응이 없음.

    - 그래서 난, Chrome을 설치해서 다운로드 수행

     

 

2. Chrome 다운로드

    - URL : https://www.google.com/chrome/browser/desktop/index.html

 

    

 

 

3. Chrome에서 안드로이드 스튜디오 다운로드

     - URL : https://www.google.com/chrome/browser/desktop/index.html

     - 안드로이드 스튜디오 는 32bit,64bit 설치 파일이 별도로 존재하지 않고 하나로 되어 있다.

        차후 설치 완료 후 [D:\android\studio\bin] 폴더에 가보면 아래 2개의 파일이 존재.

              . studio.exe     : 32bit 버전

              . studio64.exe : 64bit 버전

         - 개인PC 및 jdk bit와 맞추어서실행하면 됨

 

   

 

 

=== [ 2단계 설치 시작  ]  ============================================================================

 

1. 안드로이드 설치 파일 실행

    - 파일명 : android-studio-bundle-145.3537739-windows.exe

   

 

 

2. [Next]버튼 클릭

    

 

3.  설치옵션 - [v]Android SDK

                    [v]Android Virtual Devie

     - 기본으로 둘다 체크. (AVD는 PC와 스마트폰을 연결해서 개발한다면 필요 없음)

   

 

4. License 는 [I Agree]  버튼 클릭

    - 무료겠지 ^^

 

 

5. 설치파일 위치 > [Next]버튼

    - Android Studio 설치 위치 :   ㅇ:\android\studio

       프로젝트등이 같이 존재하도록 d Drive에 위치

       차후 window가 format되도 계속 유지용

    - sdk설치 위치 : c:\Users\kyh\AppData\Local\Android\sdk

       차후 window가 format되면 살아짐

 

 

6. Menu Folder 명 > [Install]버튼

    - Android Studio

 

7. 설치 시작

 

8. 설치 완료 > [Next]버튼

 

=== [ 3단계 기초 환경 설정  ]  ============================================================================

1. Setup 시작

 

2. 이전에 설치된 버전이 존재 시 설정을 가져올 것인지를 묻는 부분.

    - 있으면 위쪽(o) I want to import ...

    - 없으면 아래쪽(o) I do not have

 

3. 설치 기본 설명

 

4. Install Type

    - (o) Standard : 난 표준이 좋아.

 

5. 설치 경로, SDK download 목록 확인

 

 

6. download시작

    - 이때 PC성능에 따라서 약 30~1시간 소요  (PC가 죽은게 아님)

    - 거의 SDK 초기 용량 이 약 4.6G

 

7. Download 완료 후 첫 Android 대망에 Start

     - [Start a new Android Studio project] 클릭

     - 설치 완료.  안드로이드 스튜디오 개발시작은 다음에...

 

 

 

 

 

Posted by 농부지기
,

[  ◎ 모든 테이블에서 특정 컬럼에 대한 특정값 찾기  ]     

 

 

☞   모든 테이블에서 PLAN_ID = 9 인 값 찾기

 


SELECT table_name
     , TO_NUMBER ( dbms_xmlgen.getxmltype( 'SELECT COUNT(*) c FROM ' || table_name || ' WHERE PLAN_ID = ' || '9' ).Extract('//text()') ) cnt
  FROM user_tables
 --WHERE table_name in ( 특정스키마 )
  ;
 

Posted by 농부지기
,

                        [  ◎ PARTITION BY OUTER JOIN ]     
 

 

 

☞  요청사항 : 매장, 년월, 매출액이 존재 하는 테이블 있다.
               2014년도 매장별, 월별, 매출액을 조회하라.
               이때 2014년도 상반기 자료를 조회 하는데, 각 매장별 매출액이 없는 월도 0 으로 조회 되어야 된다.
               즉, 모든 매장에 2014.01 ~ 2014.06 월까지 모두 조회 되어야 한다.   

 


첫 번째 방법 : 아래 처럼 단순 JOIN으로 할 경우 모든월이 조회 되지 않는다.

WITH SALE (SHOP, YM, AMT) AS
   (
SELECT '동대문', '201401',  12800 FROM DUAL UNION ALL
     
SELECT '동대문', '201403',  22700 FROM DUAL UNION ALL
     
SELECT '동대문', '201403',  22700 FROM DUAL UNION ALL
     
SELECT '동대문', '201404',  32350 FROM DUAL UNION ALL
     
SELECT '동대문', '201405',  22000 FROM DUAL UNION ALL
     
SELECT 'GS마켓', '201401',  13020 FROM DUAL UNION ALL
     
SELECT 'GS마켓', '201404',  14100 FROM DUAL
   )
,  YM AS
   (
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201401', 'YYYYMM'), LEVEL - 1), 'YYYYMM') AS YM
       
FROM DUAL
      
CONNECT BY LEVEL <= 06
   )
SELECT A.SHOP, B.YM, SUM(A.AMT) AS MM_AMT
  
FROM YM B JOIN SALE A
         
ON (A.YM = B.YM)
 
GROUP BY
A.SHOP, B.YM ;
 
-

 


두 번째 방법 : 모든매장, 모든월이 존재 하는 테이블 만들어서 OUTER JOIN으로 한다.
               이때 불필요하게 매장목록만 존재하는 테이블이 별도로 존재해야 된다..

WITH SALE (SHOP, YM, AMT) AS
   (
SELECT '동대문', '201401',  12800 FROM DUAL UNION ALL
     
SELECT '동대문', '201403',  22700 FROM DUAL UNION ALL
     
SELECT '동대문', '201403',  22700 FROM DUAL UNION ALL
     
SELECT '동대문', '201404',  32350 FROM DUAL UNION ALL
     
SELECT '동대문', '201405',  22000 FROM DUAL UNION ALL
     
SELECT 'GS마켓', '201401',  13020 FROM DUAL UNION ALL
     
SELECT 'GS마켓', '201404',  14100 FROM DUAL
   )
,  SHOP_LIST(SHOP) AS
   (
SELECT '동대문' FROM DUAL UNION ALL
     
SELECT 'GS마켓' FROM DUAL
   )

,  YM AS
   (
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201401', 'YYYYMM'), LEVEL - 1), 'YYYYMM') AS YM
       
FROM DUAL
      
CONNECT BY LEVEL <= 06
   )
SELECT X.SHOP, Y.YM, SUM(A.AMT) AS MM_AMT
  FROM SHOP_LIST X JOIN YM Y
              ON (1=1)
                   
LEFT OUTER JOIN SALE A
              
ON (    A.SHOP = X.SHOP
                  
AND A.YM   = Y.YM )
 
GROUP BY X.SHOP, Y.YM
 
ORDER BY X.SHOP, Y.YM ;

 

☞   

 

세 번째 방법 : PARTITION BY OUTER JOIN을 사용하여 처리한다.

- 중요 : 이때 LEFT OUTER JOIN 이라는 문구와  PARTITON BY 절의 위치가 변경되면 안된다.

WITH
SALE (SHOP, YM, AMT) AS
   (
SELECT '동대문', '201401',  12800 FROM DUAL UNION ALL
     
SELECT '동대문', '201403',  22700 FROM DUAL UNION ALL
     
SELECT '동대문', '201403',  22700 FROM DUAL UNION ALL
     
SELECT '동대문', '201404',  32350 FROM DUAL UNION ALL
     
SELECT '동대문', '201405',  22000 FROM DUAL UNION ALL
     
SELECT 'GS마켓', '201401',  13020 FROM DUAL UNION ALL
     
SELECT 'GS마켓', '201404',  14100 FROM DUAL
   )
,  YM AS
   (
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201401', 'YYYYMM'), LEVEL - 1), 'YYYYMM') AS YM
       
FROM DUAL
      
CONNECT BY LEVEL <= 06
   )
SELECT A.SHOP, B.YM, SUM(A.AMT) AS MM_AMT
  
FROM 
YM B LEFT OUTER JOIN SALE A PARTITION BY (A.SHOP)
         
ON (A.YM = B.YM)
 
GROUP BY A.SHOP, B.YM
 ORDER BY A.SHOP, B.YM;

 

     

  

 

 

Posted by 농부지기
,

[ Oracle - 정규식 - AND, OR 검색 ]

 

 

 

☞ 1. OR 검색 : 문자열에서 'CD  or  12  or  가나' 인 경우 찾기

 


WITH A AS
  (
SELECT 'ABCD 1234 가나다라' AS ald UNION ALL
   
SELECT 'CDEF 3456 다라마바' AS ald UNION ALL
   
SELECT 'EFGH 5678 마바사아' AS ald
  )
SELECT * FROM A
 
WHERE REGEXP_LIKE ( ald, 'CD|12|가나' );
 

☞ 2. AND 검색 : 문자열에서 'C  and  13 and  마' 인 경우 찾기

 

 


WITH A AS
  (
SELECT 'ABCD 1234 가나다라' AS ald UNION ALL
   
SELECT 'CDEF 3456 다라마바' AS ald UNION ALL
   
SELECT 'EFGH 5678 마바사아' AS ald
  )
SELECT *
  
FROM (SELECT REGEXP_COUNT ( ald, 'C|3|마' ) n
             , ald
          
FROM A
       ) B
 
WHERE B.n = REGEXP_COUNT ( 'C|3|마', '\|' ) + 1 ;
 

 

 

 

'(DB) Oracle > SELECT-정규식' 카테고리의 다른 글

Oracle - 정규식이란?  (0) 2017.01.19
Posted by 농부지기
,

                   [  ◎ 정규식이란? ]     

☞ 정의
   

기본 메타 문자

 

 .

 모든 문자 일치

 |

 OR 왼쪽 문자(혹은 패턴) 혹은 오른쪽 문자(혹은 패턴)과 일치

 []

 문자 집합 구성원 중 하나와 일치
 예) [abc] : a 혹은 b 혹은 c

 [^]

 문자 집합 구성원을 제외하고 일치, [^abc] : a,b,c 제외한 모든 문자

 -

 범위 정의 ([A-Z]와 같은 형태로 대문자 A에서 Z사이의 문자를 의미)

 \

 다음에 오는 문자를 이스케이프1

기본 메타 문자는 글자 하나의 의미를 말한다. 이자체만으로는 큰 활용도가 없고 다른 기능들과 같이 쓰일때 의미가 있다. 일단 이런게 있구나 하고 넘어가고, 밑에 같이 사용될 때 다시와서 참조해야 제대로 이해 할 수 있을 것이다.

수량자

 

 *

 앞의 문자나 부분식2이 0개 이상 탐욕적으로 찾기

 *?

 탐욕적 수량자 *를 게으른(lazy) 수량자로 바꿔 찾기

 +

 앞의 문자나 부분식을 하나 이상 탐욕적으로 찾기

 +?

 탐욕적 수량자 +를 게으른(lazy) 수량자로 바꿔 찾기

 ?

 앞의 문자나 부분식을 0개나 1개 찾기

 {n}

 앞의 문자나 부분식이 정확히 n번 일치하는 경우 찾기

 {m,n}

 앞의 문자나 부분식이 m번에서 n번 일치하는 경우 찾기

 {n,}

 앞의 문자나 부분식이 n번 이상인 경우를 탐욕적으로 찾기

 {n,}?

 탐욕적 수량자 {n,}를 게으른(lazy) 수량자로 바꿔 찾기

문자 하나가 아니라 조건에 해당하는 붙어있는 여러개의 문자를 찾는다는 것이 핵심이다. *, + 의 차이를 이해해야 한다. *는 없는 경우가 포함되고, +는 무조건 하나는 있어야 한다는 의미다. 예를 들어, a*4와 a+4 모두 "123aaa456"를 빨간색처럼 찾는다.  하지만 "123456" 인 경우에는 a*4인 경우에만 4를 찾고(123456), a+4는 아무것도 찾지 못한다. 왜냐하면 *는 "a" 없이 "4"만 있어도 되지만 +는 a가 반드시 하나는 있어야 하기 때문이다.

 

다음으로 탐욕적 수량자와 게으른 수량자를 이해해야 한다. 이부분은 매우 중요하면서도 처음엔 어려울 수 있는 부분이다. 탐욕적 수량자의 핵심은 조건에 맞지 않을 때까지 하나의 패턴으로 인식하는 것이고, 게으른 수량자의 핵심은 조건에 맞으면 욕심부리지 말고 거기서 끝내는 것이다. 다음의 예제를 보자.

 

Test0<div>Test1</div>Test<div>Test2</div>Test4

다음은 정규표현식에 따른 결과다.

  • <div>.*</div> : Test0<div>Test1</div>Test<div>Test2</div>Test4 => <div>를 처음 발견한 후 </div>를 발견했지만 탐욕적으로 그 다음 </div>가 없는지 찾는다. 로직 상에는 <div>를 찾으면 </div>를 뒤에서부터 찾는다고 한다.
  • <div>.*?</div> : Test0<div>Test1</div>Test<div>Test2</div>Test4 => <div>를 발견한 이후에 </div>를 만나면 욕심부리지 않고 여기서 끝낸다.

 

여기서는 "?"의 의미가 헷갈리지 않도록 정리를 잘 해야 한다.*, +, {} 다음에 나오는 물음표(?)는 탐욕적 수량자를 게으른 수량자로 바꾸는 의미를 가지지만, 패턴 다음에 오는 물음표는 해당 패턴이 있을 수도 있다의 의미를 가진다. 전후방탐색에서도 물음표의 의미가 달라지므로 확실한 의미를 파악해두는 것이 좋다.

위치 지정

 

 ^

 입력 문자열의 시작 부분에서 그 다음 나오는 문자나 부분식과 일치하는지 검사

 \A

 어떤 정규식에서는 ^의 역할을 함

 $

 문자열의 끝과 일치

 \Z

 어떤 정규식에서는 $의 역할을 함

 \b

 단어 경계(단어와 공백 사이의 위치)와 일치
 예) 'st\b'는 "test"의 st는 찾지만, "tester"의 st는 찾지 않음
 
!주의! test test 에서 test 사이의 빈공간인 space와는 다른 의미

 \B

 \b와 반대(비단어 경계)로 일치. 즉 "\b"의 예제의 반대 결과가 나옴

말이 좀 어려운데, 결국은 글자자체를 찾는 물리적 의미가 아니라 내부적인 의미를 찾는 논리적 수행만 한다. 이것도 이자체만으로는 의미가 없으며  ^, \b, \B 다음이나 \b, \B, $ 전에 나오는 문자나 부분식과 함께 동작한다.

특수한 문자

 

 [\b]

 역스페이스

 \cx

 x로 표시된 제어문자 찾기. x는 [A-Za-z] 이어야 함. 아니면 c는 리터럴 'c'로 간주

 예) \cM = Control-M 이나 캐리지 리턴 문자. 

 \d

 모든 숫자와 일치. [0-9]와 동일

 \D

 \d와 반대. [^0-9]와 동일

 \f

 용지 공급 문자 찾기. 페이지 넘기기(formfeed) = \x0a3, \cL

 \n

 줄 바꿈 문자 찾기. \x0a, \cJ

 \r

 캐리지 리턴. \x0d, \cM

 \s

 공백, 탭, 용지 공급 등과 같은 문자 찾기. [\f\n\r\t\v]

 \S

 \s와 반대로 일치. [^\f\n\r\t\v]

 \t

 탭 문자 찾기. \x09, \cI

 \v

 세로 탭 문자 찾기. \x0b, \cK

 \w

 영숫자 문자나 밑줄과 일치. [a-zA-Z0-9_]

 \W

 \w와 반대로 일치. [^a-zA-Z0-9_]

 \xn

 n으로 표시된 16진수 이스케이프 값과 일치. 16진수는 정확히 2자리여야 함

 \0n

 n으로 표시된 8진수 숫자와 일치. 가급적 사용하지 않는 것이 좋음

하나하나 [] 안에 넣어주어야 하는 문자들을 미리 정의해둔 것으로 이해하면 된다. []를 사용하는 것과 동작의 차이는 없지만 패턴 글자의 수를 줄일 수 있기 때문에 알아두면 보기 편하다.

역참조와 전후방탐색

 

(pattern)

 하위 표현식 정의. 패턴을 찾아 일치하는 항목을 캡처하는 부분식. 가로 자체 '('나 ')'를 찾고 싶으면 '\'를 붙여 이스케이프하면 된다. '\(', '\)'

\1

 첫 번째 일치한 하위 표현식, 두 번째 일치한 하위 표현식은 \2로 표기

 (?=pattern)

 전방탐색

 (?!pattern)

 부정형 전방탐색

 ?(BR4)true

 조건 지정

 ?(BR)true|false

 else 표현식 조건 지정

()는 []와 전혀 다른 의미라는 사실을 머리에 각인해야 한다. 이 파트가 정규표현식에서 가장 어려운 부분이며 프로그래밍 할 때 가장 많이 사용되는 부분이기도 하다. 가로로 묶은 하위표현식은 역참조 시 사용하기도 하지만, 프로그래밍에서는 하위표현식에 해당하는 문자열을 배열이나 그룹으로 따로 제공해 주기 때문에 유용하게 사용할 수 있다. 

대소문자 변환

 

 \E

 \L 혹은 \U 변환을 끝냄

 \l

다음에 오는 글자를 소문자로 변환 

 \L

 \E를 만날 때까지 모든 문자를 소문자로 변환

 \u

 다음에 오는 글자를 대문자로 변환

 \U

 \E를 만날 때까지 모든 문자를 대문자로 변환

문자열을 찾은 후 이를 바꾸는 용도로 사용한다. 찾기만 하려고 정규식을 사용한다면 필요없는 부분이기도 하다. 

옵션

 

i

 ignore case, 대소문자를 무시하여 찾음. 굳이 [a-zA-Z]라고 할 필요가 없음

 g

 global, 찾는 패턴을 하나만 찾지 말고 계속 해서 찾음. 탐욕적 수량자처럼 일치하는 구간을 늘리는 것이 아니라 일치하는 패턴의 개수가 늘어남

 m

 multiline, 다중행 모드라고도 하며 라인 별로 처리하는 것이 아니라 입력 문자열에 줄바꿈이 있어도 이를 특수문자로 변환하여 하나로 봄. 가장 큰 차이를 경험할 수 있는 기능은 ^와 $임.

 
 
 

1. [] : 대괄호 안에 값을 넣은 기준으로 찾을 범위를 지정
        예) [abc], [ABC], [0123]
2. -  : 마이너스 앞뒤에 존재하는 내에서 찾을 범위를 지정
        예) 1-5,  A-C, A-Z, a-m, 가-힝, ㄱ-ㅎ
3.

  1. [/^] : 정규식 선언의 시작을 알림.
2. [$/] : 정규식 선언의 끝을 알림

☞ 정규식 Function

 

1. REGXP_REPLACE :
2. REGXP_SUBSTR  :
3. REGEXP_COUNT  :
4. REGEXP_LIKE   :

  참고 URL : http://skillsocius.com/220184877136

'(DB) Oracle > SELECT-정규식' 카테고리의 다른 글

Oracle - 정규식 - AND, OR 검색  (0) 2017.01.19
Posted by 농부지기
,

[ Oracle - 금액배분 후 남은 잔여분 재일 큰 거래처에 가감  ]

 

 

--문제 : 거래처 구분별로 100,000만원을 각 거래처에 배분하여 인센티브를 지급하려고 한다.
--       단, 배분시 매출액대비 지급율을 계산하여 인센티브를 지급하는데
--       거래처 구분별로 100,000만원이 넘어가거나, 남을 경우  제일 많이 지급되는 거래처에서 가감한다.

 

 

 

Posted by 농부지기
,

[ Oracle- 자료 복제 기본 ]

 

 

--http://www.gurubee.net/article/55635#comment_116470

--http://rwijk.blogspot.kr/2007/11/interval-based-row-generation.html

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기9 ]

 

일별 월누적매출 구하기

실 데이터는 <표1-실데이터>처럼 존재하며, <표2-결과>와 같은 결과 데이터를 조회

 

<표1-실데이터>

기준일자

코드

금액

2009-01-01

A

100

2009-01-01

B

200

2009-01-02

A

150

2009-01-02

B

200

2009-01-02

C

100

2009-01-03

A

300

2009-01-03

B

100

<표2-결과>

기준일자

코드

금액

누적금액

2009-01-01

A

100

100

2009-01-01

B

200

200

2009-01-02

A

150

250

2009-01-02

B

200

400

2009-01-02

C

100

100

2009-01-03

A

300

550

2009-01-03

B

100

500

2009-01-03

C

100

100

 

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기8 ]

 

Posted by 농부지기
,