SELECT 문의 실행 순서
FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 순으로 실행
1. FROM 대상 테이블 참조
2. WHERE 조건
3. GROUP BY: 특정 컬럼을 기준으로 그룹화합니다. (행들을 소그룹화)
4. HAVING: 그룹에 대한 조건절, 그룹 중 조건에 맞는 그룹만 남깁니다.
5. SELECT 질의/출력
6. ORDER BY 데이터 정렬
내림차순 DESC , 오르차순 ASC (DEFAULT)
ASC (오름차순) : Default 알파벳순 A-Z
DESC(내림차순) : 알파벳순 Z-A
여러개의 컬럼으로 정렬이 필요할 경우 컬럼을 순서대로 기술하면 된다.
TO_CHAR(변수, 형식)
날짜형과 숫자형 데이터를 문자형으로 변환하여 출력
SELECT TO_CHAR(SYSDATE, 형태),
TO_CHAR(숫자, 형태),
FROM 테이블;
SELECT SYSDATE
, TO_CHAR(SYSDATE, 'YYYYMMDD') AS 형태1
, TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS 형태2
, TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS 형태3
, TO_CHAR(SYSDATE, 'YYYYMMDD HH24:MI:SS') AS 형태4
FROM DUAL;
참고 문제 : 조건에 부합하는 중고거래 댓글 조회하기 LV1
ROUND(N, 반올림 할 위치)
--아무것도 없으면 소수점 첫째 자리에서 반올림
SELECT ROUND(57.2742) FROM DUAL; -- 57
SELECT ROUND(57.8742) FROM DUAL; -- 58
--0를 적으면 소수점 첫째 자리에서 반올림
SELECT ROUND(57.2742, 0) FROM DUAL; --57
--2를 적으면 소수점 셋째 자리에서 반올림
SELECT ROUND(57.2742, 2) FROM DUAL; --57.27
--정수 반올림
SELECT ROUND(6757.2742, -1) FROM DUAL; --6760
SELECT ROUND(6757.2742, -3) FROM DUAL; --7000
평균 요금 구하고 소수 첫번 째 자리에서 반올림
SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';
NVL()함수
NVL (값, '지정값')
값이 null 인 경우, 지정 값을 출력하고 그렇지 않으면 원래 값 출력
SELECT PT_NAME, PT_NO, GEND_CD, AGE, NVL(TLNO,'NONE') AS TLNO
FROM PATIENT
WHERE GEND_CD = 'W' AND AGE <= 12
ORDER BY AGE DESC, PT_NAME ASC;
참고 문제 12세 이하인 여자 환자 목록 출력하기 ( https://school.programmers.co.kr/learn/courses/30/lessons/132201 )
SUM, MAX, MIN
ROWNUM
특정 개수의 행만 조회하기
SELECT DATETIME AS 시간
FROM (SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME DESC)
WHERE ROWNUM<2;
참고 문제 (최대값 구하기) : https://school.programmers.co.kr/learn/courses/30/lessons/59415?language=oracle
Distinct
중복 제거!
select count(distinct name)
from animal_ins
기본적으로 집계함수(Count, Sum..등)는 NULL 값에 대해 처리하지 않는다
GROUP BY
가격대별 상품 개수 구하기
그리고 LEVEL 3~4는 JOIN 풀어보고 다시 다음에 풀기
.
ISNULL
유형 모음
https://donotknowwhat.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F
NVL(값, '지정값')
값이 null 인 경우, 지정 값을 출력하고 그렇지 않으면 원래 값 출력
IS NULL
NULL 인 값 찾기
WHERE 컬럼 IS NULL
.
JOIN
참고
https://donotknowwhat.tistory.com/153
STRING, DATE
https://donotknowwhat.tistory.com/154
CASE WHEN
SELECT ename
, deptno
, CASE WHEN deptno = '1' THEN 'seoul'
WHEN deptno = '2' THEN 'busan'
ELSE 'Unknown'
END AS loc_name
FROM emp
WHERE job = 'MANAGER'
END AS 컬럼명
where 절 안에서도 사용 가능하다.
다시 풀어보기: 자동차 대여 기록에서 장기/단기 대여 구분하기 https://school.programmers.co.kr/learn/courses/30/lessons/151138
날짜 계산 ORACLE
종료일 - 시작일 +1
ROUND 함수
ROUND(DATE, FORMAT)
ROUND(192.283) -> 192
ROUND(192.283, 2) -> 192.28
ROUND(192.283, 1) -> 192.3
SUBSTR
오라클 문자열 자르는 방법이다
SUBSTR(문자열, 시작위치)
SUBSTR(문자열, 시작위치, 길이)
* 시작 위치는 추출 시작 자리 위치, 추출할 길이
SELECT SUBSTR('ABCDEFGH',4) "Substring" FROM DUAL;
--결과 : DEFGH
SELECT SUBSTR('ABCDEFGH',-4) "Substring" FROM DUAL;
--결과 : EFGH
--길이를 지정한 경우
SELECT SUBSTR('ABCDEFGH',4,2) "Substring" FROM DUAL;
--결과 : DE
SELECT SUBSTR('ABCDEFGH',4,0) "Substring" FROM DUAL;
--결과 : NULL
SELECT SUBSTR('ABCDEFGH',-4,2) "Substring" FROM DUAL;
--결과 : EF
SELECT SUBSTR('ABCDEFGH',-4,-1) "Substring" FROM DUAL;
--결과 : NULL
'프로그래머스 > SQL' 카테고리의 다른 글
SELECT 유형 모음 [프로그래머스.oracle] (SQL 고득점 키트) (0) | 2024.03.14 |
---|---|
GROUP BY 유형 모음 [프로그래머스].ORACLE (SQL 고득점 키트) (1) | 2023.10.21 |
STRING/DATE 유형 모음 [프로그래머스.oracle] (SQL 고득점 키트) (0) | 2023.10.20 |
오라클 JOIN 정리 (1) | 2023.10.19 |
JOIN 유형 모음 [프로그래머스].oracle (SQL 고득점 키트) (1) | 2023.10.19 |