728x90


728x90
반응형

'small steps > 운동 - 체력이 국력' 카테고리의 다른 글

22.10.07 운동기록  (0) 2022.10.07
22.10.05 운동기록  (0) 2022.10.05
22.10.02 운동기록 3대 가볍게  (0) 2022.10.02
22.10.01 운동기록  (0) 2022.10.01
22.09.30 운동기록  (0) 2022.10.01
728x90

 

 

https://github.com/neverGiveUpppppp/Comento_SQL_Oracle

 

GitHub - neverGiveUpppppp/Comento_SQL_Oracle: 직무부트캠프 Comento

직무부트캠프 Comento. Contribute to neverGiveUpppppp/Comento_SQL_Oracle development by creating an account on GitHub.

github.com

 
 
1)아래와 같이 최종 결과를 추출하는 sql을 작성해보세요. 이미 70% 정도 짜여진 SQL을 완성하세요. (SQL DEVELOPER에 다음 장에 있는 SQL붙여넣기 하여 실행하시면서 최종 SQL을 작성해보세요.
 

    - 추출조건 :  현재 재직중인 직원생년월일이 201211일 부터 20151231일 인 자녀 모두추출.

    - 추출조건2 : 쌍둥이의 경우 두명 모두 추출하고, 쌍둥이 여부에  ‘Y’ 표시 요망.

    - 추출조건3 : 사내부부인 경우도 예외 없이 직원과 자녀를 모두 추출하고, 이 때 상대 배우자의 직원번호를 추출 요망.

   -  추출 요청 컬럼 → 직원번호 / 직원성명 / 배우자성명 (사내부부일 때만) / 배우자직원번호 / 자녀성명 / 자녀성별 / 자녀생년월일 / 쌍생아여부

 

힌트

더보기

SELECT

EMP.EMP_NO AS 직원번호

,EMP.EMP_NM AS 직원성명

,-- --> ★★★ 배우자 직원번호 완성하세요!!

,FAM.FAM_NM AS 자녀성명

,FAM.GENDER_CD AS  자녀성별

,FAM.BIRTH_YMD AS 자녀생년월일

,-- --> ★★★ CASE WHEN을 사용하여 쌍둥이 여부를 표시해보세요.

        FROM EMP_C EMP,

        FAM_C FAM,

        FAM_REL_C FAMR,

        (

              SELECT

                TWIN1.EMP_NO

                ,TWIN1.FAM_NM AS TWIN1

                ,TWIN2.FAM_NM AS TWIN2

                FROM

                   FAM_C TWIN1 , FAM_C TWIN2

                WHERE TWIN1.EMP_NO = TWIN2.EMP_NO

                AND TWIN1.REL_TYPE_CD = TWIN2.REL_TYPE_CD

                AND TWIN1.REL_TYPE_CD = 'A27'

                AND TWIN2.REL_TYPE_CD = 'A27'

                AND TWIN1.FAM_NM <> TWIN2.FAM_NM-- 이름이 다른 조건

                AND TWIN1.BIRTH_YMD = TWIN2.BIRTH_YMD -- 생년월일이 같을 조건

        ) TWIN

WHERE EMP.EMP_NO = FAM.EMP_NO

AND -- --> ★★★ 현재 재직자만 추출 되도록 조건을 넣으세요.

AND FAM.REL_TYPE_CD  = 'A27'

AND -- --> ★★★ 2012년 1월 1일 부터 2015년 12월 31일 생년월일 조건을 넣으세요.

AND EMP.EMP_NO = FAMR.EMP_NO (+)

AND FAMR.REL_TYPE_CD (+) IN ('A02','A18')

AND EMP.EMP_NO = TWIN.EMP_NO (+)

AND FAM.FAM_NM = TWIN.TWIN1 (+)

;

 


 조건 brainstorming
 재직중 : RETIRE 99/12/31 조건
 자녀 생년월일 2012.01.01~2015.12.31 : BETWEEN 20120101 AND 20151231
 쌍둥이의 경우 두명 모두 추출 : FAM_C SELF JOIN FAM_NM을 F1,F2 따로 조회 및 조건에 NM <>추가
쌍둥이 여부 표시 'Y' : 리터럴 작성
 사내부부의 경우, 상대 배우자의 직원번호 추출 : ?
 조회 목록 : EMP_NO, EMP_NM, CASE(SPOUSE_EMP_NO 사내부부일때,일반일때), CHILD_NM, CHILD_GENDER, CHILD_BIRTH_YMD, TWIN_YN
(직원번호 / 직원성명 / 배우자성명 (사내부부일 때만) / 배우자직원번호 / 자녀성명 / 자녀성별 / 자녀생년월일 / 쌍생아여부)

 

--- 추출조건1
--- 현재 재직중인 직원의 생년월일이 2012년 1월 1일 부터 2015년 12월 31일 인 자녀 모두추출
SELECT *
FROM FAM_C
WHERE REL_TYPE_CD = 'A27'
AND BIRTH_YMD BETWEEN 20120101 AND 20151231
;

--- 추출조건2
--- 쌍둥이의 경우 두명 모두 추출하고, 쌍둥이 여부에 'Y' 표시 요망
SELECT F1.EMP_NO 직원번호, F1.FAM_NM 쌍둥이1, F2.FAM_NM 쌍둥이2, 'Y' "쌍둥이 여부"
FROM FAM_C F1
    JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
AND F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD
;
    
 
 
 
--- 추출조건1 + 추출조건2
--- 현재 재직중인 직원의 생년월일이 2012년 1월 1일 부터 2015년 12월 31일 인 자녀 모두추출
--- 쌍둥이의 경우 두명 모두 추출하고, 쌍둥이 여부에 'Y' 표시 요망
SELECT *
FROM FAM_C
WHERE REL_TYPE_CD = 'A27' 
AND BIRTH_YMD BETWEEN 20120101 AND 20151231
;

SELECT F1.EMP_NO 직원번호, F1.FAM_NM 쌍둥이1, F2.FAM_NM 쌍둥이2, 'Y' "쌍둥이 여부"
FROM FAM_C F1
    JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
AND F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD
;

-- FROM절의 AND조건들을 WHERE절로 돌려서 넣으면 뭐가 다를까?
SELECT F1.EMP_NO 직원번호, F1.FAM_NM 쌍둥이1, F2.FAM_NM 쌍둥이2, 'Y' "쌍둥이 여부"
FROM FAM_C F1
    JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
WHERE F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD    
;

 

 

 

2) LISTAGG를 활용하여 직원번호가 10001483 인 자녀의 성명이 한줄로 추출 되도록 SQL을 작성해 보세요

HINT : LISTAGG 활용 --> https://gent.tistory.com/328

 

 

 

 

 

728x90
반응형
728x90

 

조건 brainstorming

재직중 : RETIRE 99/12/31 조건
자녀 생년월일 2012.01.01~2015.12.31 : BETWEEN 20120101 AND 20151231
쌍둥이의 경우 두명 모두 추출 : FAM_C SELF JOIN FAM_NM을 F1,F2 따로 조회 및 조건에 NM <>추가
쌍둥이 여부 표시 'Y' : 리터럴 작성
사내부부의 경우, 상대 배우자의 직원번호 추출 : ?
조회 목록 : EMP_NO, EMP_NM, CASE(SPOUSE_EMP_NO 사내부부일때,일반일때), CHILD_NM, CHILD_GENDER, CHILD_BIRTH_YMD, TWIN_YN
(직원번호 / 직원성명 / 배우자성명 (사내부부일 때만) / 배우자직원번호 / 자녀성명 / 자녀성별 / 자녀생년월일 / 쌍생아여부)

 

 

 

--1)아래와 같이 최종 결과를 추출하는 sql을 작성해보세요
--이미 70% 정도 짜여진 SQL을 완성하세요. (SQL DEVELOPER에 다음 장에 있는 SQL을 붙여넣기 하여 실행하시면서 최종 SQL을 작성해보세요.
--- 추출조건1 :  현재 재직중인 직원의 생년월일이 2012년 1월 1일 부터 2015년 12월 31일 인 자녀 모두추출
--- 추출조건2 : 쌍둥이의 경우 두명 모두 추출하고, 쌍둥이 여부에  ‘Y’ 표시 요망
--- 추출조건3 : 사내부부인 경우도 예외 없이 직원과 자녀를 모두 추출하고, 이 때 상대 배우자의 직원번호를 추출 요망
--- 추출 요청 컬럼 → 직원번호 / 직원성명 / 배우자성명 (사내부부일 때만) / 배우자직원번호 / 자녀성명 / 자녀성별 / 자녀생년월일 / 쌍생아여부

-- 조건 brainstorming
-- 재직중 : RETIRE 99/12/31 조건
-- 자녀 생년월일 2012.01.01~2015.12.31 : BETWEEN 20120101 AND 20151231
-- 쌍둥이의 경우 두명 모두 추출 : FAM_C SELF JOIN FAM_NM을 F1,F2 따로 조회 및 조건에 NM <>추가
--쌍둥이 여부 표시 'Y' : 리터럴 작성
-- 사내부부의 경우, 상대 배우자의 직원번호 추출
-- 조회 목록 : EMP_NO, EMP_NM, CASE(SPOUSE_EMP_NO 사내부부일때,일반일때), CHILD_NM, CHILD_GENDER, CHILD_BIRTH_YMD, TWIN_YN
--(직원번호 / 직원성명 / 배우자성명 (사내부부일 때만) / 배우자직원번호 / 자녀성명 / 자녀성별 / 자녀생년월일 / 쌍생아여부)


--- 추출조건1
--- 현재 재직중인 직원의 생년월일이 2012년 1월 1일 부터 2015년 12월 31일 인 자녀 모두추출
SELECT *
FROM FAM_C
WHERE REL_TYPE_CD = 'A27'
AND BIRTH_YMD BETWEEN 20120101 AND 20151231
;

--- 추출조건2
--- 쌍둥이의 경우 두명 모두 추출하고, 쌍둥이 여부에  ‘Y’ 표시 요망
SELECT F1.EMP_NO 직원번호, F1.FAM_NM 쌍둥이1, F2.FAM_NM 쌍둥이2, 'Y' "쌍둥이 여부"
FROM FAM_C F1
    JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
AND F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD
;
728x90
반응형
728x90
728x90
반응형

'small steps > 운동 - 체력이 국력' 카테고리의 다른 글

22.10.05 운동기록  (0) 2022.10.05
22.10.03 운동기록  (0) 2022.10.03
22.10.01 운동기록  (0) 2022.10.01
22.09.30 운동기록  (0) 2022.10.01
22.09.29 운동기록  (0) 2022.09.29
728x90


728x90
반응형

'small steps > 운동 - 체력이 국력' 카테고리의 다른 글

22.10.03 운동기록  (0) 2022.10.03
22.10.02 운동기록 3대 가볍게  (0) 2022.10.02
22.09.30 운동기록  (0) 2022.10.01
22.09.29 운동기록  (0) 2022.09.29
22.09.28 운동기록  (0) 2022.09.28
728x90


728x90
반응형

'small steps > 운동 - 체력이 국력' 카테고리의 다른 글

22.10.02 운동기록 3대 가볍게  (0) 2022.10.02
22.10.01 운동기록  (0) 2022.10.01
22.09.29 운동기록  (0) 2022.09.29
22.09.28 운동기록  (0) 2022.09.28
22.09.27 운동기록  (0) 2022.09.27
728x90

Properties prop = new Properties();
key와 value를 String으로 제한시켜놓은 Map구조의 컬렉션

Properties prob = new Properties();
prob.setProperty("ㄱ","1");
prob.setProperty("ㄴ","2");
System.out.println(prob.getProperty("ㄱ","1")); // 1 : getProperty 밸류값1을 반환

System.out.println(prob.get("ㄱ")); // 1 : get()은 키값으로 밸류값 가져옴
System.out.println(prob.contains("ㄱ")); // false

 

HashMap

1.put(K key, V value):V

// put(K key, V value):V
// 반환타입 : value
HashMap hMap = new HashMap();
hMap.put("ㄱ",1);
hMap.put("ㄱㄱ","1");
System.out.println(hMap); // {ㄱ=1, ㄱㄱ=1}
System.out.println(hMap.put("ㄴ",2)); // null
System.out.println(hMap); // {ㄱ=1, ㄴ=2, ㄱㄱ=1}

 

2.containsKey(Object key)
키나 값이 들어가 있는지를 확인하는 메소드

// containsKey(Object key):boolean
// containsValue(Object value):boolean
hMap.containsKey("ㄴ");
System.out.println(hMap.containsKey("ㄴ")); // true

 

3.get()
key값에 맞는 'value값 반환'

// get(Object key) : v
// key값에 맞는 'value값 반환'
System.out.println(hMap.get("ㄴ")); // 2 : ㄴ키에 밸류인 2가 반환된 것

 

전체코드

// Properties prop = new Properties();
// key와 value를 String으로 제한시켜놓은 Map구조의 컬렉션
Properties prob = new Properties();
prob.setProperty("ㄱ","1");
prob.setProperty("ㄴ","2");
System.out.println(prob.getProperty("ㄱ","1")); // 1 : getProperty 밸류값1을 반환

System.out.println(prob.get("ㄱ")); // 1 : get()은 키값으로 밸류값 가져옴
System.out.println(prob.contains("ㄱ")); // false


// 1.HashMap
// put(K key, V value):V
// 반환타입 : value
HashMap hMap = new HashMap();
hMap.put("ㄱ",1);
hMap.put("ㄱㄱ","1");
System.out.println(hMap); // {ㄱ=1, ㄱㄱ=1}
System.out.println(hMap.put("ㄴ",2)); // null
System.out.println(hMap); // {ㄱ=1, ㄴ=2, ㄱㄱ=1}


// 2.containsKey(Object key)
// 키나 값이 들어가 있는지를 확인하는 메소드
// containsKey(Object key):boolean
// containsValue(Object value):boolean
hMap.containsKey("ㄴ");
System.out.println(hMap.containsKey("ㄴ")); // true


// 3.get()
// get(Object key) : v
// key값에 맞는 'value값 반환'
System.out.println(hMap.get("ㄴ")); // 2 : ㄴ키에 밸류인 2가 반환된 것


// 4-1.remove(Object key):V
// 4-2.remove(Object key, Object value):default boolean
System.out.println(hMap); // {ㄱ=1, ㄴ=2, ㄱㄱ=1}
System.out.println(hMap.remove("ㄴ"));  // 2 : 지운 키의 밸류값 반환
System.out.println(hMap.remove("ㄱㄱ","1")); // true


// 5.keySet() & entrySet()
// keySet()
// keySet():Set<K>
// 맵에 있는 key들을 set에 담아 반환
System.out.println("keySet() : "+hMap.keySet()); // [ㄱ]
// set의 []를 빼고 값을 뽑고 싶다면?


// size():int
System.out.println(hMap.size()); // 1


// TreeMap
// 정렬 가능
// putAll()
// putAll(Map<? extends K,? extends V> m):void
// 다른 맵의 값을 추가
TreeMap<String, Snack> treeMap = new TreeMap<>(hMap);
treeMap.put("ㄴㄴ",new Snack("맛1",100));
treeMap.put("ㄷㄷ",new Snack("맛2",200));
System.out.println(treeMap);
// {ㄱ=1, ㄴㄴ=Snack{flavor='맛1', price=100}, ㄷㄷ=Snack{flavor='맛2', price=200}}

// remove(Object key):V
// remove(Object key, Object value):boolean
System.out.println(treeMap.remove("ㄱ")); // 1
System.out.println(treeMap.remove("ㄷㄷ",new Snack("맛2",200))); // true

// replace(K key, V oldValue, V newValue):boolean
treeMap.replace("ㄴㄴ",new Snack("맛1",100),new Snack("맛11",1000));
System.out.println(treeMap); // {ㄴㄴ=Snack{flavor='맛11', price=1000}}
728x90
반응형
728x90

 

문제 : 2753번: 윤년 (acmicpc.net)

 

2753번: 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서

www.acmicpc.net

 

 

// brain Storming
// 조건
// 윤년 == 4의배수인 연도 중 100의 배수가 아닌 연도 or 400의 배수인 연도
// 4의 배수이면서 100의 배수가 아님 : (year%4 == 0) and !(year%100 == 0)

풀이

4배수인지를 구하는 방법은 num%4를 해서 나머지가 0이 나오면 해당 배수이고 다른 수가 나오면 4의 배수가 아니다

그렇기에 year%4 == 0이면 이라는 조건과 동시에 100의 배수가 아니어야 하기에 &&(and)조건으로 100의 배수가 아닌 조건 !(year%100 == 0)을 주어서 윤년을 구했고

마찬가지로 400의 배수도 year%400 == 0으로 구했다

이외의 나머지 else는 전부 평년

 

 

정답

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int year = Integer.parseInt(br.readLine());

        if(((year%4 == 0) && !(year%100 == 0))){
            System.out.println("1");
        }else if(year%400 == 0){
            System.out.println("1");
        }else{
            System.out.println("0");
        }
    }
}

 

 

728x90
반응형
728x90


728x90
반응형

'small steps > 운동 - 체력이 국력' 카테고리의 다른 글

22.10.01 운동기록  (0) 2022.10.01
22.09.30 운동기록  (0) 2022.10.01
22.09.28 운동기록  (0) 2022.09.28
22.09.27 운동기록  (0) 2022.09.27
22.09.26 운동기록  (0) 2022.09.26
728x90

입력 받은 수가 짝수면 짝수라는 문구를 출력하는 메소드를 호출

입력 받은 수가 홀수면 홀수라는 문구를 출력하는 메소드를 호출

 

※ 홀짝 구하는 로직은 2로 나눈 나머지가 0이면 짝수 1이면 홀수이다

 

나중에 메뉴 주문 프로그램을 만든다면 저 홀짝 메소드 안에는 더 많은 코드와 함께 기능들이 들어갈 수 있게 되는 것

응용!

 

전체 코드

    Scanner sc = new Scanner(System.in);

    public void switch01() {
        System.out.println("정수 입력 : ");
        int num = sc.nextInt();
        int lastNum = num % 2;

        switch(lastNum) { // switch조건문 안에는 정수,문자,문자열 3가지 가능
            case 0 : even(); break;
            case 1 : odd(); break;
            default : System.out.println("잘못입력");
        }
    }
    private void even() {
        System.out.println("짝수입니다");
    }
    private void odd() {
        System.out.println("홀수입니다");
    }
728x90
반응형

+ Recent posts