[TIL]격파르타SQLD: 단일행 함수 + Speak + 코맥 매카시 논문

2025. 3. 1. 23:58·DA 커리어

7. 2과목: SQL 기본, SQL 활용, 관리 구문 

 

7-2. 함수 - 단일행 함수

-- 7-2. 함수: 내장 함수-단일행 함수
-- 1) 문자형 함수
-- ①LOWER(문자열) / UPPER(문자열) / CONCAT(문자열1, 문자열 2)
SELECT LOWER('SQL EXPERT') FROM DUAL;
SELECT UPPER('sql expert') FROM DUAL;
SELECT CONCAT('RDBMS', ' SQL') FROM DUAL;
SELECT CONCAT(UPPER('sqld '), LOWER('COMPLETED!')) from DUAL

-- ②ASCII(문자) ③Oracle: CHR / SQL Server: CHAR(ASCII 번호) → 이런 게 있구나!
-- ④Oracle : SUBSTR
SELECT SUBSTR('SQL Expert', 5, 5) FROM DUAL;
SELECT SUBSTR('SQL is a standard language for accessing and manipulating  
databases.', 19, 8)
From Dual;

-- ⑤Oracle : LENGTH
SELECT LENGTH('SQL Expert') FROM DUAL;

-- ⑥LTRIM(문자열[, 지정문자]) / RTRIM(문자열[, 지정문자]) / TRIM([leading|trailing|both] 지정문자 FROM 문자열)
SELECT LTRIM('xxxYYZZxYZ', 'x') FROM DUAL; 
SELECT RTRIM('XXYYzzXYzz', 'z') FROM DUAL;
SELECT TRIM('x' FROM 'xxYYZZxYZxx') FROM DUAL;
-- leading: 왼쪽 제거 / trailing: 오른쪽 제거

-- ⑦LPAD(문자열1,n[,문자열2]) / RPAD(문자열1,n[,문자열2])
SELECT LPAD('ABC',8,'Z') FROM dual;
SELECT RPAD('ABC',8) FROM dual;

--2) 숫자형 함수
-- ①ABS(숫자) → 절대값
SELECT ABS(-15) FROM DUAL;
-- ②SIGN(숫자) → 부호판단: 숫자가 양수이면 1, 0이면 0,  음수면 -1을 리턴 
SELECT SIGN(-10) FROM DUAL;

-- ③MOD(숫자1, 숫자2) → 숫자1을 숫자2로 나누어 나머지 값을 계산
SELECT MOD(7, 3) FROM DUAL;
--> 1

-- ④CEIL(숫자) / FLOOR(숫자) → 올림 / 내림
SELECT CEIL(-38.567) FROM DUAL; 
--> -38
SELECT FLOOR(38.567) FROM DUAL; 
--> 38

-- ⑤ ROUND(숫자 [, m]) / TRUNC(숫자 [, m]) → 자를 소수점 m자리에서 반올림 / 버림하여 리턴
SELECT ROUND(38.564, 2) FROM DUAL; 
--> 38.57
SELECT TRUNC(38.567, 2) FROM DUAL; 
--> 38.56

-- ⑥ SIN, COS, TAN(숫자)
SELECT SIN(1.5708) FROM DUAL;
--> 0.99999

-- ⑦ EXP, POWER, SQRT, LOG, LN → 이런 게 있다!  

--3) 날짜형 함수
-- ①‘DATE_FORMAT’ 함수(MySQL 기준)
SELECT DATE_FORMAT(’2024-11-02’, ‘%Y-%m-%d’) FROM DUAL;
--> 2024-11-02

-- ② SYSDATE / EXTRACT(시간날짜단위 FROM 시간날짜)
SELECT SYSDATE FROM DUAL;
--> 01-MAR-25
SELECT EXTRACT(YEAR FROM DATE '2023-10-10') FROM DUAL;
--> 2023

--4) 변환형 함수 → 특정 데이터 타입을 다른 형태로 출력
-- ①명시적 데이터 유형 변환
SELECT TO_NUMBER('888') + TO_NUMBER('111') FROM dual;
--> 999

-- ②암시적(묵시적) 데이터 유형 변환 → 성능 저하 가능하므로 지양

--*5) NULL 관련 함수 → NULL은 아직 정의되지 않은 값을 의미(0, 공백 등과는 다름). 어떠한 값과 NULL과의 연산은 항상 NULL 값이 나온다
SELECT NULL + 100 FROM DUAL;
--> _
-- ①Oracle: NVL / SQL Server: ISNULL 함수 → 결괏값을 NULL 아닌 다른 값 얻고자 할 때 
SELECT NVL(NULL, 'NVL-OK') FROM DUAL;
--> NVL-OK
SELECT NVL(100, 0) FROM DUAL;
--> 100

-- 연습문제
CREATE TABLE pokemon (  
    pm_id NUMBER PRIMARY KEY NOT NULL,  
    name VARCHAR2(20) NOT NULL,  
    attr VARCHAR2(20), 
      weight NUMBER 
);

INSERT INTO pokemon VALUES (1, 'Bulbasaur', 'Grass', 30);
INSERT INTO pokemon VALUES (4, 'Charmander', 'Fire', 80);
INSERT INTO pokemon VALUES (25, 'Pikachu', 'Electric', 15);
INSERT INTO pokemon (pm_id, name) VALUES (54, 'Psyduck');
INSERT INTO pokemon (pm_id, name, attr) VALUES (76, 'Golem', 'Rock');

SELECT  
pm_id,  
name,  NVL(attr, '알 수 없음'),  NVL(weight, 999) 
FROM pokemon;

-- ②NULL과 공집합 → 일치되는 데이터가 없는 것이 공집합, 값 자체가 정의되지 않 은 것이 NULL
SELECT NVL(MGR, 9999) FROM EMP WHERE ENAME='JSC';
--> ...does not exist

-- ③NULLIF(EXPR1, EXPR2) → 특정 값을 NULL로 대체. 1,2 비교해 같다면 NULL을 리턴하고, 다르면 첫 번째 EXPR1 리턴
--연습문제
CREATE TABLE pokemon2 (
  pm_id NUMBER PRIMARY KEY NOT NULL,
  name VARCHAR2(20) NOT NULL,
  attr VARCHAR2(20) DEFAULT 'normal',
	weight NUMBER
);

INSERT INTO pokemon2 VALUES (1, 'Bulbasaur', 'Grass', 30);
INSERT INTO pokemon2 VALUES (4, 'Charmander', 'Fire', 80);
INSERT INTO pokemon2 VALUES (25, 'Pikachu', 'Electric', 15);
INSERT INTO pokemon2 (pm_id, name) VALUES (54, 'Psyduck');
INSERT INTO pokemon2 (pm_id, name, attr) VALUES (76, 'Golem', 'Rock');
INSERT INTO pokemon2 (pm_id, name, weight) VALUES (86, 'Seel', 85);

SELECT name, NULLIF(attr, 'normal') FROM pokemon2;
--> normal은 _로 출력

-- ④COALESCE(EXPR1, EXPR2,...) → 여러 값 중에서 NULL이 아닌 첫 번째 값을 찾을 때

--6) CASE 표현 → 주로 SELECT 문에서, 특정 조건에 따라 다른 결과를 반환하거나 처리할 때

-- ①SIMPLE_CASE_EXPRESSION

-- 연습문제
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_status VARCHAR(50)
);

INSERT INTO orders (order_id, order_status) VALUES (1, '주문 완료');
INSERT INTO orders (order_id, order_status) VALUES (2, '주문 취소');
INSERT INTO orders (order_id, order_status) VALUES (3, '주문 완료');
INSERT INTO orders (order_id, order_status) VALUES (4, '배송 완료');
INSERT INTO orders (order_id, order_status) VALUES (5, '주문 완료');
--
SELECT order_id, order_status,
    CASE
        WHEN order_status = '주문 완료' THEN '배송 준비 중'
        ELSE '배송 완료'
    END AS delivery_status
FROM orders;

-- ②CASE SEARCHED_CASE_EXPRESSION → 다양한 조건에 대한 결과를 설정
--ex)
SELECT name, grade,
    CASE
        WHEN grade >= 90 THEN 'A'
        WHEN grade >= 80 THEN 'B'
        WHEN grade >= 70 THEN 'C'
        WHEN grade >= 60 THEN 'D'
        ELSE 'F'
    END AS grade_letter
FROM Bclass_students;

-- ③DECODE 함수 → 조건을 평가하여 값을 반환. 간단하게 쓰기 좋음.
SELECT employee_id, first_name, last_name,
    DECODE(job_id, 'ST_MAN', 'Store Manager',
                     'SA_MAN', 'Sales Manager',
                     'IT_PROG', 'IT Programmer',
                     'Other Job')
    AS job_title
FROM employees;

 

'DA 커리어' 카테고리의 다른 글

[TIL]SQLD: SQL 기본 문법 2(JOIN, 표준조인)+ Speak + 매카시 논문  (0) 2025.03.05
[WIL]SQLD: SQL 기본 문법 1(WHERE, GROUP BY, HAVING, ORDER BY)+ Speak + 매카시 논문  (0) 2025.03.03
[TIL]SQL 공부 / Speak  (0) 2025.02.13
[TIL]인지추론 공부 / <더 배트맨>  (1) 2025.01.13
[WIL] ①데이터 분석 이력서, 자소서, 포트폴리오 작성 / ②캐릭터 컨텐츠 감상 및 분석 / ③Speak(고객과 회의, 다음 회의 일정 잡기, 일정 변경하기)  (0) 2025.01.12
'DA 커리어' 카테고리의 다른 글
  • [TIL]SQLD: SQL 기본 문법 2(JOIN, 표준조인)+ Speak + 매카시 논문
  • [WIL]SQLD: SQL 기본 문법 1(WHERE, GROUP BY, HAVING, ORDER BY)+ Speak + 매카시 논문
  • [TIL]SQL 공부 / Speak
  • [TIL]인지추론 공부 / <더 배트맨>
kimble
kimble
감(感)으로 평가되던 콘텐츠를 데이터로. 영문학 베이스로 K-콘텐츠 분석 알고리즘을 짭니다. 완성된 분석은 miru의 콘텐츠 숲에서 👉
  • ↳ 페어 블로그 분석가의 콘텐츠 감상은
    미루의 콘텐츠 숲 에서.
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Tasks
      • Project
      • DA 커리어
      • DAta 이론
        • 데이터 분석 알아보기
        • SQL
        • AI
      • DA 에세이
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ai어시스턴트
    프롬프트엔지니어링
    HitPredictor
    오블완
    SQL
    티스토리챌린지
    내일배움캠프
    인과추론
    인과머신러닝
    프로젝트
    데이터분석
    생성형AI
    ai
    머신러닝
    gpt-4
    코멘토 직무부트캠프
    에이리언로물루스
    콘텐츠데이터분석
    미디어분석
    흥행예측
    데이터분석가
    데이터분석가 #사용자행동데이터
    llm
    인공지능
    코딩 #컴퓨터공학
    마누스 #Manus #AI도구 #비즈니스시뮬레이션 #PM #데이터분석가 #AI싱크클럽 #크레딧절약모드
    causalml
    파이썬
    데이터시각화
    sql #데이터분석가 #내일배움캠프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
kimble
[TIL]격파르타SQLD: 단일행 함수 + Speak + 코맥 매카시 논문
상단으로

티스토리툴바