본문 바로가기

전체 글

SUBSTR, RPAD, CASE AND문 SELECT RPAD(SUBSTR(JUMIN,1,8),14,'*') JUMIN FROM CUSTOM; SELECT REGEXP_SUBSTR(JUMIN,'[^-]+') 생일 FROM CUSTOM; CASE AND문 SELECT CASE SEX --성별이 오면 WHEN '1' THEN '남자' -- 1이 오면 남자로 바꿔라 WHEN '0' THEN '여자' -- 0이 오면 여자로 바꿔라 END GENDER, --별칭을 하나 써줘야함 COUNT(*) 인원수 FROM CUSTOM GROUP BY SEX; 더보기
분석함수- ORDER BY, PARTITION BY,GROUP BY / IF문(DECODE) / 정렬 OVER 부서별 평균 구하기 SELECT * FROM PERSONNEL ORDER BY DNO; SELECT DISTINCT DNO, TRUNC(AVG(PAY) OVER (PARTITION BY DNO)) FROM PERSONNEL; -- OVER는 정렬하고 그 다음에 어떤 작업을 하라는 뜻 -> PAY의 평균을 구하고, DNO는 하나씩만 보여라 -- 부서번호는 하나씩만 보여지게 DISTINCT 씀 월급 전체 등수 SELECT PNAME, PAY, RANK() OVER(ORDER BY PAY DESC) AS RANK FROM PERSONNEL; -- DESC 한 결과 위에 RANK를 붙여라 (PAY를 찍은 다음에 RANK인 1,2,3,4로 덮어씌운거라고 생각하면 됨) DECODE(IF문) --각 사원의 급여를 부.. 더보기
OUTER JOIN, INNER JOIN, SUBQUERY (EXISTS, IN) OUTER JOIN Equi Join은 조인을 생성하려는 두 개의 테이블의 한쪽 컬럼에서 값이 없다면 데이터를 반환하지 못한다. 동일 조건에서 조인 조건을 만족하는, 값이 없는 행들을 조회하기 위해 Outer Join을 사용 한다. Outer Join 연산자는 "(+)" 이다. SELECT A.USERID,USERNAME,ADDR1,COMPANY,DEPT FROM CUSTOM A, COMPANY B ON A.USERID(+)=B.USERID -- (+)의 대각선 방향인 COMPANY가 기준이 되어 나옴 ORDER BY B.COMPANY; -- 494개의 데이터가 나옴. COMPANY가 기준이니깐 INNER JOIN (EQUI JOIN) 두 개의 테이블을 하나로 결합하는 구문 SELECT A.USERID,.. 더보기
[개념] 피보나치 수열 알고리즘 피보나치 수열 알고리즘 (1) 재귀(recursion) (2) 동적 프로그래밍(Dynamic Programming) (3) 반복(For문) 피보나치 수열의 BigO()는 방식에 따라 다름. (1) 재귀: BigO(2^n) (2) 동적: BigO(n^2) (3) 반복: BigO(n) 안정성 문제로 가장 좋은 방법은 바로 반복이다. import java.util.Scanner; public class Pibo { Scanner s = new Scanner(System.in); System.out.print("정수 입력 : "); int j=s.nextInt(); int num1,num2,sum; num1=0; // 첫번째와 두번째 값이 1이어야 하므로 초기값을 0과 num2=1; // 1로 준다 sum=1;.. 더보기
S&OP란 제조업 SCM 혁신의 중심 'S&OP' 판매 부서 - 실제 고객 수요보다 더 많은 양을 생산 부서에 요구 생산 부서 - 생산 효율을 고려해서 판매 부서에서 주문하는 양보다 덜 생산함 S&OP는 고객의 수요와 기업의 공급을 일치 시켜 불필요한 재고를 최소화하는 것 Sales(판매) - 수요 측면 Operations(운영) - 공급 측면 S&OP의 핵심은 단일 계획(Single Plan)에 의한 실행 이를 위해 회사의 경영 목표를 달성하는 최선의 계획이 수립되어야 하는데 판매, 생산, 구매, 개발, 재무 등 회사 내의 모든 계획이 동기화되어야 한다. S&OP가 잘못 시행되고 있는 예 보고에 집중: 주로 생산, 판매 동향을 요약하고 리더에게 데이터(특히 겨롸 측면)를 전달하는 데 초점을 맞추고 있으며, 실질적.. 더보기
추상클래스와 인터페이스 추상 클래스 추상클래스는 new 연산자를 사용해서 인스턴스를 생성시키지 못한다. Animal animal = new Animal(); // (X) 추상 클래스는 새로운 실체 클래스를 만들기 위해 부모 클래스로만 사용된다. 코드로 설명하면 extends 뒤에만 올 수 있는 클래스이다. class Ant extends Animal {...} // (O) 추상 클래스도 생성자가 반드시 있어야 한다. - 자식 객체가 생성될 때 super(..)를 호출해서 추상 클래스 객체를 생성하기 때문. 추상 클래스의 용도 - 실체 클래스마다 다른 점만 실체 클래스에 선언하게 되면 실체 클래스를 작성하는데 시간을 절약할 수 있다. 인터페이스 - 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제한다. - 인터.. 더보기
Comparator<T> 인터페이스 - 정렬문제에서 자주 쓰이는 기법 Comparator 인터페이스 이용 만약 알파벳의 사전편찬 순이라던가 숫자 오름차순 같이 natural order 대로의 정렬 말고 사용자가 원하는 임의의 정렬 기준(가령 이름의 문자열 길이 순서)대로 정렬하고 싶으면 어떻게 해야할까? 이럴땐 정렬이 되는 기준을 개발자가 직접 정의해주어야 한다. 이때 기준이 되는 것이 Comparator 인터페이스를 구현하는 것이다. 즉, compare() 메소드를 오버라이딩 해주는 것이다. Comparator 인터페이스는 compare() 메소드와 equals() 메소드 두 가지를 갖고 있지만 사실 이를 구현 하는 모든 클래스는 Object클래스를 상속한다. 그런데 Object클래스에서 equals() 메소드를 구현하고 있기 때문에, Comparator 인터페이스를 구.. 더보기
[개념] KMP 알고리즘 KMP 알고리즘은 문자열 A와 문자열 B가 있을 때, 문자열 A에서 문자열 B를 찾아주는 알고리즘 입니다. KMP는 KMP를 만든 사람의 이름인 Knuth, Morris, Prett 세 사람의 앞 글자를 따서 KMP 알고리즘이라고 불립니다. 1) 모든 경우를 다 탐색할 경우 문자열 A의 길이가 N,문자열 B의 길이가 M이라면 O(N*M)의 시간 복잡도를 가지게 됩니다. 만약 N,M이 10만인 문제가 주어진다면 시간 초과를 보게 됩니다. 2) KMP 알고리즘을 사용할 경우 놀랍게도 O(N+M)의 시간복잡도만에 문자열 A에서 문자열 B를 검색 할 수 있습니다. 그러면 AKAKA라는 문자의 pi[4]는 1일까요? 아닙니다 절반을 넘는경우도 세줍니다. AKA==AKA이기 때문에 pi[4]는 3이되겠군요. fai.. 더보기