일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Colaboratory 글자 깨짐
- JS 개념
- intllij 내 Bean을 찾지 못해서 발생하는 오류
- ReactDOM.render is no longer supported in React 18. Use createRoot instead
- vs code 내 node
- 인프런
- 자바스크립트
- intellij
- You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client"
- node.js로 로그인하기
- 리액트
- spring-boot
- react
- 거북이 대포 게임
- 모두의 파이썬
- 모던자바스크립트
- Concurrently
- 계산맞추기 게임
- 따라하며 배우는 노드 리액트 기본 강의
- Spring-Framework
- 타자 게임 만들기
- googleColaboratory
- 노드에 리액트 추가하기
- DB Browser
- react오류
- Do it 자바스크립트 + 제이쿼리 입문
- 웹 게임을 만들며 배우는 리액트
- props
- node.js 설치
- Python
- Today
- Total
프로그래밍 삽질 중
SQL 함수 설명 및 예제 본문
※ SQL 함수 설명
- CONCAT : 두 문자열 데이터를 합치는 함수
- || : 두 문자열 데이터를 합치는 함수
- LTRIM : 왼쪽에서 삭제할 문자열 지정 / RTRIM : 오른쪽에서 삭제할 문자열 지정
-ROUND : 반올림 하기
-TRUNC : 특정 위치에서 숫자 버리기(반올림)
- CEIL, FLOOR : 지정한 수와 가까운 정수를 찾는 것
- MOD : 숫자를 나눈 나머지 값
- SYSDATE : 별다른 데이터 없이 오라클 데이터베이스 서버의 현재 날짜와 시간정보 반환
- ADD_MONTHS() : 현재 날짜보다 몇 개월 이후 날짜(개월만 표현 가능 -> 10주년 : 12개월 * 10년)
- MONTHS_BETWEEN(날짜 1, 날짜2) : 두 날짜 간의 개월 수 차이를 구함
- NEXT_DAY() : 돌아오는 요일을 구함 / LAST_DAY() : 달의 마지막 날 구함
- ROUND, TRUNC : 날짜의 반올림, 버림 하는 함수
★ 자주 쓰임 1
- SUM : 데이터 합 반환
- COUNT : 데이터 개수 반환
- MAX / MIN : 데이터 중 최댓값 / 최솟값 반환
- AVG : 데이터 평균값 반환
★ 자주 쓰임 2
- TO_CHAR : 숫자 또는 날짜 데이터를 문자 데이터로 변환
- TO_NUMBER : 문자 데이터를 숫자로 변환
- TO_DATE : 문자 데이터를 날짜 데이터로 변환
- NVL : (NULL인지 여부를 검사할 데이터 또는 열1)(앞 데이터가 NULL인 경우 반환할 데이터)
- NVL2(NULL인지 여부 검사하는 열)(NULL이 아닐 경우 반환할 데이터)(NULL일경우 반환할 데이터)
- DECODE (자바의 IF나 SWITCH-CASE와 유사)
- CASE(DECODE와 유사)
★ 심화 : 그룹화
- GROUP BY : 여러 데이터에서 의미 있는 하나의 결과를 특정 열 값 별로 묶어서 출력
- 다중행 삼수를 사용하지 않은 일반 열은 GROUP BY절에 명시하지 않으면 SELECT 절 사용 불가
- HAVING절 함께 사용할 수 있음
WHERE 절 | HAVING절 |
출력 대상 행을 제한 GROUP BY, HAVING보다 먼저 사용됨 |
그룹화된 대상을 출력에서 제한 |
* 테이블 이름 : EMPLOYEES
[문제 1]
업무이름과 업무별로 동일한 업무를 하는 사원의 수를 출력하시오
열 이름은 각각 '업무 번호'와 '업무별 사원수'로 출력
[문제1 답]
1
2
3
4
5
|
SELECT
COUNT(DISTINCT JOB_ID) AS "업무 번호",
COUNT(JOB_ID) AS "업무별 사원수"
FROM EMPLOYEES
GROUP BY JOB_ID; //업무별로 동일한 업무를 하는 사람 수가 나옴
|
cs |
[문제 2]
평균 급여가 가장 높은 부서의 번호를 출력
* 급여 : SALARY / 부서 : DEPARTMENT_ID
[문제 2 답]
1
2
3
4
5
6
|
SELECT
ROUND(AVG(SALARY)) AS "AVG", DEPARTMENT_ID
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
ORDER BY "AVG" DESC;
|
cs |
[문제 3]
현재 날짜 타입을 함수를 통해 확인하고, 1988년 03월 17일부터 1997년 03월 17일 사이에
고용된 사원들의 이름(FIRST_NAME)과 성(Name)으로 별칭, 입사일(HIRE_DATE)을 출력하라
단 입사일이 빠른 순으로 정렬하기
[문제 3 답]
1
2
3
4
5
6
7
|
SELECT
CONCAT(FIRST_NAME, LAST_NAME) AS NAME, HIRE_DATE
FROM EMPLOYEES
WHERE HIRE_DATE BETWEEN TO_DATE('1998-03-17', 'YYYY-MM-DD') AND
TO_DATE('1997-03-17', 'YYYY-MM-DD')
ORDER BY HIRE_DATE;
|
cs |
[문제 4]
모든 사원의 연봉을 표시하는 보고서를 작성하려고 한다. 보고서의 사원의 이름과 성(Name으로 별칭), 급여, 수당여부에 따른 연봉을 포함하여 출력하시오
수당여부는 수당이 있으면 "SALARY + COMMISSION_PCT", 수당이 없으면 "SALARY ONLY'라고 표시하고
항목의 이름을 RESULT_SALARY라고 지정해라
또한 출력시 ABC 이름 순으로 정렬하시오
[문제 4 답]
1
2
3
4
5
6
|
SELECT
CONCAT(FIRST_NAME, LAST_NAME) AS NAME,
SALARY, COMMISSION_PCT,
NVL2(COMMISSION_PCT, TO_CHAR(SALARY + (SALARY*COMMISSION_PCT)), 'SALARY ONLY') AS RESULT_SALARY
FROM EMPLOYEES
ORDER BY NAME ASC;
|
cs |
[문제 5]
모든 사원의 이름, 입사일 그리고 입사일이 어떤 요일이었는지 출력하시오
이때 주(week)의 시작인 일요일부터 출력되도록 정렬하시오
[문제 5 답]
1
2
3
4
5
6
|
SELECT
FIRST_NAME, HIRE_DATE,
TO_CHAR(HIRE_DATE, 'DAY') AS 요일 --TO_CHAR : 숫자, 날짜를 문자형으로 바꿈
FROM EMPLOYEES
ORDER BY TO_CHAR(HIRE_DATE, 'D');
|
cs |
'과거 프로그래밍 자료들 > SQL(Oracle)' 카테고리의 다른 글
SQL INSERT, UPDATE, DELETE & DDL 설명 및 예제 (0) | 2021.03.22 |
---|---|
SQL 조인 설명 및 예제 (0) | 2021.03.22 |
SQL 기초 (2) 데이터 타입 및 출력방법 (결과 값 제외) (0) | 2021.03.16 |
SQL 기초 (1) 데이터 타입 및 출력방법 (결과 값 존재) (0) | 2021.03.16 |
데이터베이스 기본 개념 (2) 관계형 데이터베이스(스키마, 인스턴스 등) (0) | 2021.03.16 |