SQL 57

SQL 16(데이터 분석 함수로 바로 전 행과 다음 행 출력하기 LAG / LEAD)

1. 사원 번호, 이름, 월급을 출력하고 그 옆에 바로 전 행의 월급을 출력하고, 또 옆에 바로 다음 행의 월급 출력하기 ●LAG - 바로 전 행의 데이터 출력하는 함수 - 숫자 1을 사용하면 바로 전 행이 출력된다 - 숫자 2를 사용하면 바로 전전 행이 출력된다 ●READ - 바로 다음 행의 데이터 출력하는 함수 - 숫자 1을 사용하면 바로 다음 행이 출력된다 - 숫자 2를 사용하면 바로 다음 다음 행이 출력된다 처음 실행해본 코드, 오류가 떡하니 나와버렸다 왜 오류가 생길까 하나하나 뜯어보다가 as 전행과, as 다음행에서 오류가 생겼다 제외하고 코드 입력하니 값이 출력되었고, "전행" , "다음행" 을 통해 고쳐주었다. 2. 직업이 ANALYST 또는 MANAGER인 사원들의 사원번호, 이름, 입사..

SQL 2023.05.16

SQL 15(데이터 분석 함수로 데이터를 가로로 출력하기/ LISTAGG)

1. 부서 번호를 출력하고, 부서번호 옆에 해당 부서에 속하는 사원들의 이름을 가로로 출력해보기 ●LISTAGG -데이터를 가로로 출력하는 함수 -구분자로 ( , ) , ( /) 사용 - withn group: '~이내의' 라는 뜻으로 group 다음에 나오는 괄호에 속한 그룹의 데이터를 출력하겠다는 뜻 -group by 절이 listagg 함수사용에 필수로 동반되어야 함 2. 직업과 그 직업에 속한 사원들의 이름을 가로로 출력하기

SQL 2023.05.15

SQL 13(데이터 분석 함수로 등급 출력하기 / NTILE)

1. 이름과 월급, 직업, 월급의 등급을 출력하고자 한다. -월급의 등급은 4들급으로 나눠 1등급(0~25%), 2등급(25~50%), 3등급(50~75%), 4등급(75~100%)으로 나누기 -> select ename, sal, job ntile을 이용한 등급 나누기 -> ntle(원하는 n등분의 숫자 쓰기) 첫시도 : 단순히 NTILE(n)을 사용하여 쿼리 작성 했더니, 윈도우에 대한 지정이 없단 결과가 나왔다 ●NTILE NTILE(bucket_count) OVER (PARTITION BY partition_expression ORDER BY sort_expression) -bucket_count는 결과를 분할할 버킷(그룹)의 수를 지정 -partition_expression은 옵션으로, 결과를 ..

SQL 2023.05.11

SQL 12(데이터 분석 함수로 순위 출력하기/DENSE_RANK + extract)

1. 직업이 ANALST, MANAGER 인 사원들의 이름, 직업, 월급, 월급의 순위를 출력하고자 한다 순위 1위인 사람이 2명일때 다음 순위가 3위가 아닌 2위가 되도록 출력하기 rank는 1 1 ->3 dense rank 는 1 1 ->2 로 출력해준다 2. 81년도에 입사한 사원들의 직업, 이름, 월급, 순위를 출력하는데, 직업별로 월급이 높은 순서대로 순위 부여하기 1981년에 입사한 사원들에 대한 조건을 간단히 해보고 싶어 작성해본 hiredate = to_date('1980', 'RRRR') 쿼리가 오류가 발생했다. 어떻게 입력해야 가능할라나,, ##공부하다가 알아냈는데 첫 줄 쿼리터 잘못짰다 직업별 월급이 높은 순서니까 dense_rank() over(partition by job orde..

SQL 2023.05.10

SQL 11(데이터 분석 함수로 순위 출력하기 RANK: rank() over (order by ~) , PARTITION BY)

1. 직업이 analyst, manager인 사람들의 이름, 직업, 월급, 월급의 순위 출력하기 where 로 job = 'analyst', 'manager' 조건 걸어주기 순위 출력 rank로 해주기 ● RANK()는 순위를 출력하는 데이터 분석 함수 rank() 뒤 over 다음 나오는 괄호 안에 출력하고 싶은 데이터 정렬하는 sql 문장 넣으면, 그 칼럼 값에 대한 데이터의 순위가 출력된다 처음 작성한 쿼리 rank() over (sal) 만 작성해서 오류가 발생했다. over() 함수는 순위를 지정하는 기준이 필요하다, 즉 어떤 열이 기준이 될 것인가가 명시되어야 한다 -> 결과를 정렬하는 order by와 같이 써준다 위 쿼리에서 직업을 대문자로 안 써줘서 선택된 레코드가 없다는 결과가 나왔었다..

SQL 2023.05.09

SQL 10(COUNT 건수 출력하기)

1 전체 사원 수 출력하는 쿼리 짜보기 = select count(*) 2. comm(커미션)이 NULL이 아닌 사원 카운트하는 쿼리 짜보기 ●그룹 함수 COUNT는 NULL값을 count하지 않는다 => 그룹함수로 sql 작성할 때 null값 연산에 포함시키지 않음을 염두하기 *평균값 출력할 때 값이 달라질 수 있다 ex) NVL 함수 사용하지 않았을 때, NULL값을 무시하고 평균값을 계산했기 때문에 결과값의 차이가 발생한다

SQL 2023.05.08

SQL 9( 평균값 AVG / 토탈값 SUM)

● avg 평균값 출력하기 : avg 명령어를 사용하여 출력한다 1. 사원 테이블의 평균 월급을 출력하고자 한다 →avg 월급의 평균만을 출력했더니 다음과 같은 결과가 도출되었다 그리고 답안지엔 나와 다른 결과가 나와있었다. 왜일까? 테이블에 입력이 잘못되어있는지 보려고 sal을 모두 출력해서 직접 계산해봤다 위와같은 월급으로 계산기와 같은 값이 나왔다 그럼 왜 답은 avg(comm) 값을 계산한걸까 comm 을 출력해보았다 그럼 평균 월급이 comm이 맞다는건데,, 일단 이건 책 만드신 분 카페에 문의를 남겨놓았다 그리고 답변 ●SUM 토탈값을 모두 출력하는 명령어는 SUM을 사용한다 2. 부서번호와 부서 번호별 토탈 월급을 출력하는 쿼리 작성하기 부서 '별' → group by 로 묶어주기 토탈 월급..

SQL 2023.05.04

SQL 8(최대값 출력 MAX / 최소값 출력 MIN)

1.사원테이블에서 가장 많은 월급을 출력하고자 한다 ●MAX MAX 함수를 이용하면 최대값을 출력 할 수 있다 2.직업이 salesman 인 사람 중에 가장 많은 월급을 출력하고자 한다 where 문을 사용해 조건을 충족시킨다 3.직업이 salesman인 사원 중 최대월급을 직업과 같이 출력하고자 한다 * 쿼리문에 job 컬럼도 추가하면 에러가 발생한다. -> job 칼럼의 값은 여러개의 행이 출력되려고 하는데 MAX(sal)값은 하나만 출력되기 때문에 이때 데이터를 그룹핑해주는 GROUP BY가 필요하다 2.이번에는 가장 적은 월급을 출력하고자 한다 ●MIN MIN함수를 이용하면 최소값을 출력 할 수 있다 2. 직업과 직업별 최소 월급을, 최소 월급이 높은 순으로 정렬하여 출력 하고자 한다, - 정렬하..

SQL 2023.05.03