본문 바로가기

데이터베이스68

SQL 순위출력 RANK, DENSE_RANK - 데이터의 순위를 출력하는 함수 ▼ 직업이 analyst, manager인 사원들의 이름, 직업, 월급, 월급의 순위를 출력하면 다음과 같음 ▶ RANK() 뒤에 OVER 다음에 나오는 괄호 안에 출력하고 싶은 데이터를 정렬하는 SQL 문장을 넣으면 그 컬럼 값에 대한 데이터 순위가 출력됨 ▷ 위에서는 월급이 높은 사원부터 출력되게 ORDER BY절을 사용했으니까 높은 순서부터 순위가 부여됨 ▶ 직업별로 묶어서 순위를 부여하기 위해 ORDER BY 앞에 PARTITION BY job 을 사용해서 해봄 - 데이터 순위를 상세하게 출력하는 함수 위에서는 1등이 2명이여서 바로 1다음에 3으로 갔는데 ▶ 바로 2등을 출력하고자 한다면 DENSE_RANK 함수를 사용하면됨 맨 끝에 컬럼 2개를 보면 확인해볼 .. 2023. 11. 28.
SQL 그룹함수 MAX, MIN, AVG, SUM, COUNT ▷ 위와 같은 내용으로 좀 더 있음 - 최댓값을 출력하는 함수이다. ▷ 직업이 SALESMAN인 사원들 중 최대 월급을 출력해보기 ▶ 조건으로 세일즈맨을 잡아주면된다 만약 직업도 같이 출력해주려면 평소하던것처럼 이렇게...했더니 넹 단일 그룹의 그룹함수가 아니래여 이유는.. job에 대한 컬럼은 여러 개가 나오려고하는 MAX는 하나만 나오려고해서..! 그래서 GROUP BY절을 사용해서 데이터를 그룹핑해야한다고 한다. 풀어서 실행 순서를 이야기하자면 FROM emp에서 WHERE job='SALESMAN'의 조건을 가진 GROUP BY job으로 그룹핑해서 SELECT job, MAX(SAL)을 출력해라 - 이것은 바로 최소값 출력하기 위에서 한 MAX와 유사하게 MIN을 통해 최소값을 출력할 수 있다... 2023. 11. 26.
SQL IF문을 SQL로 해보자 DECODE, CASE - IF문을 SQL로 하는 것이다. ▶ deptno가 10이라면 300, 20이라면 400, 그 외에는 0을 출력해라 이거다 ▷ 맨 끝에 0은 디폴트값이다. (파이썬에서 else와 같은 건가) ▷ IF deptno = 10 then 300 / else if deptno = 20 then 400 / else 0 정리하자면 요고 또 다른 예시 ▷ 저기서 MOD가 뭐였는지 기억안난다면 다시 보고와라 https://dev-adela.tistory.com/250 ▶ 여기에서는 0과 1, 두가지밖에 없기 때문에 첫번째 예시의 0처럼 디폴트값을 지정해주지 않아도된다.(생략가능하단얘기) 또 다른 예시..! ▶ IF JOB='SALESMAN' THEN 5000, else 2000 - 이것도 IF문을 SQL 문으로 바꾼거.. 2023. 11. 23.
SQL NULL값을 다르게 출력해주기 NVL, NVL2 - NULL 값 대신에 다른 값을 출력하기 위해서 NVL 함수를 사용한다. ▷ 2번째 COMM 보면 NULL인 사원들은 NULL로 나오는데 3번째 컬럼을 보면 NULL대신 0으로 출력된다. ▶ NVL을 사용하면 실제로 데이터가 0으로 변경된거는 아니고 출력만 0으로 출력되어 보여진다. 만약 ▽ 이름, 월급, 커미션 월급+커미션을 출력해보면 ▶FORD랑 SCOTT는 COMM이 NULL이기 때문에 SAL+COMM 도 NULL이 된다. ▷ 그래서 위에서 써본 NVL을 써서 커미션의 NULL을 0으로 바꾼다면...! ▶ 맨 마지막 컬럼인 SAL+NVL이 계산이 된다는 것이다. ▶ ▶ 다음!!!! NVL2을 함수 사용! 커미션이 NULL이 아닌 사람들은 SAL이랑 COMM을 알아서 더해주고 NULL인 사원들은 S.. 2023. 11. 23.