211228

조영혜·2021년 12월 28일
0

SQL

Q.각 직업별, 최대 급여, 최소급여, 급여 총 합 및 평균 급여를 출력하시오. 단, 최대 급여는 MAX MIN SUM AVG로 출력하고, 직업을 오름차순으로 정렬하시오.
Q.동일한 직업을 가진 사원들의 총 수를 출력하시오.
Q.매니저로 근무하는 사원들의 총 수를 출력하시오.

Q.사내의 최대 급여 및 최소 급여의 차이를 출력하시오.

Q.매니저의 사번 및 그 매니저 밑 사원들 중 최소 급여를 받는 사원의 급여를 출력하시오.
-매니저가 없는 사람들은 제외한다. -> manager_id is not null

Q. Zlotkey와 동일한 부서에 근무하는 다른 모든 사원들의 사번 및 고용날짜를 출력하시오.

select employee_id, hire_date
from employees
where department_id in 
(select department_id
from employees
where last_name = 'Zlotkey')
and last_name!='Zlotkey'; 

괄호 안에 있는 게 서브쿼리. -> 질로키라는 이름을 가진 사원의 부서이름을 찾음.
중복이 있을 수도 있으니까 in써야함!!!!

Q.회사 전체 평균 급여보다 더 급여를 많이 받는 사원들의 사번 및 이름을 출력하시오.

select employee_id, last_name
from employees
where salary >
(select avg(salary)
from employees); 

Q.이름에 u가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 이름을 출력하시오.

select employee_id, last_name
from employees
group by department_id in 
(select department_id
from employees
where last_name like '%u%');  

// ★ 일부찾는 건 like

Q. 시애틀에 근무하는 사람 중 커미션을 받지않는 모든 사람들의 이름, 부서명, 지역아이디를 출력하시오.

서브쿼리 : 특정 값을 모를 때 사용.
서브쿼리가 먼저 실행. 메인 쿼리가 받아주는 역할.

select last_name
from employees
where salary >
               (select salary
                from employees
                where last_name - 'Abel')

=> 'Abel'이라는 사원의 급여보다 많이 받는 사원의 이름 출력.

  1. 내가 뭘 모르는지. <- 서브쿼리 통해 찾기.
    서브쿼리의 값이 하나인지, 여러개인지 확인.
  2. 모르는 값을 서브쿼리에 SELECT LIST 절에 어떤 컬럼으로 찾을 지 결정.
  3. 서브쿼리의 값을 메인쿼리의 어떤 컬럼이 받을 것인지 결정.
  4. 서브쿼리의 결과를 넘겨주는 연산자 결정.
    (*서브쿼리를 먼저 적어주는 게 편함)

서브쿼리의 결과와 메인쿼리의 받는 컬럼의 데이터타입은 반드시 동일해야함.
컬럼 이름은 달라도 무방하지만 대부분 동일한 경우가 많음.
서브쿼리는 연산자 다음에 오고, 서브쿼리는 괄호로 묶임.
오더바이절은 서브쿼리 안에 쓰지 않는 걸 권장. -> 서브쿼리의 결과가 출력되지는 않으니 정렬의 기능을 하는 오더바이절은 굳이.. 성능이 떨어짐.
서브쿼리는 갯수 제한 X
★ 단일 행 서브쿼리(=,>,<)에는 단일 행 연산자를 사용하고 다중 행 서브쿼리(IN)에는 다중 행 연산자를 사용한다.
★ 서브쿼리의 결과가 복수일 때는 "=" 말고 "in".
IN (30,40) -> 30, 40 의 결과값 출력

AND 모두(최댓값 40) 보다 큰 값 -> 50,60
<ALL 모두(최솟값 30)보다 작은 값 -> 10,20
ANY 최소값 30보다 큰 값 -> 40,50,60
<ANY 최대값 40보다 작은 값 -> 10,20,30**

널값 출력 X 따로 써줘야함.

  • 오류코드
    invalid ralational operator : 잘못된 연산
    missing expression :, 빼먹음
    not a GROUP BY expression
    zero iteration count
    missing right parenthesis : 오른쪽 괄호 빠짐
    invalid characters

JAVA

int num;

자료형:변수가 담을 자료(데이터)의 형태.
ex.정수형, 실수형, 문자형, 논리형 ect.

  • primitive type : 기본타입. 자바언어에 내장된 기본유형.
    ex. 숫자형, 논리형 boolean-ture/false (switch), 문자형 (문자 하나를 표현) - 문자, 유니코드, 아스키코드 표현가능.
    정수형 - byte, short, int(기본타입), long
    실수형 - float, double(기본타입).

  • reference type : 기본타입 외 모든 타입.
    상수:데이터를 담을 수 있는 공간.(값 변경 불가) ->final 키워드 사용.
    변수명은 대소문자 구분. 같은 클래스 내에서 같은 변수명 선언(재선언)불가.
    기본타입으로는 같은 하나의 문자열을 표현할 수 없음.

  • 타입변환(형변환) : 변수나 상수 타입을 다른 타입으로 바꾸는 것.

String s = "Hello World!";
System.out.println(s.substring(0,5)); -> 0번째부터 5번째까지 문자열 출력
=> Hello

int num = 1;
int money = 20000;
System.out.printf("%d. 오늘 점심값 : %d원", num, money); -> %d는 정수형 자리. 
=> 1. 오늘 점심값 : 20000int num = 1;
int money = 20000;
String won = "원";
System.out.printf("%d. 오늘 점심값 : %d%s", num, money, won); ->%s는 문자형 자리.
=> 1. 오늘 점심값 : 20000
  • 입력
//읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴하는 클래스.
Scanner s = new Scanner(System.in); -> 스캐너 도구 생성 (메모리상의 주소) 
->Scanner: 입력받은 값을 사용할 수 있도록 해주는 도구. 
->(System.in)은 키보드로 입력할 수 있도록 해주는 도구.

//입력한 값을 돌려줌.
String s = s.next() -> 다음 토큰을 문자열로 리턴 (공백을 기준으로 분리됨) 
int s = s.nextIn() -> 다음 토큰은 INT 타입으로 리턴 
s.nextLine() -> 공백이 낀 문자열을 리턴. 
★ 리턴하는 값이랑 도구 꼭 일치해야함! 
  • 연산자
    정수-정수 -> 정수
    피연산자가 하나라도 실수 -> 실수

주석처리 단축키 ctrl /
여러줄 주석처리 ctrl shift /
실행 단축키 ctrl F11
변수이름 일괄변경 alt shift r
코드 옮기기 alt 방향키
코드 복사 ctrl alt 방향키
코드 정리 ctrl shift f
자동 완성 ctrl space bar
system.out.println->syso ctrl space bar

0개의 댓글