ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2월 4주차-2/27(1)]다양한 SQL 함수 정리
    Why Not SW CAMP 5기/수업 기록 2025. 2. 27. 11:47

    SQL을 사용할 때 자주 활용되는 문자열, 날짜, 집계 및 순위 함수에 대해 정리해보았습니다. 이를 통해 데이터를 보다 효과적으로 다룰 수 있습니다.


    1. 문자열 함수

    문자열 연결 함수 - CONCAT, CONCAT_WS

    -- CONCAT: 문자열 연결
    SELECT CONCAT(first_name, ', ', last_name) AS customer_name FROM customer;
    
    -- CONCAT_WS: 여러 개의 문자열을 구분자로 연결
    SELECT CONCAT_WS(',', first_name, last_name, email) AS customer_name FROM customer;
    

    데이터 형 변환 함수 - CAST, CONVERT

    -- CAST 사용 예시
    SELECT CAST(NOW() AS SIGNED);  -- '20250227092908'
    SELECT CAST(20250227092908 AS DATE);  -- '2025-02-27'
    
    -- CONVERT 사용 예시
    SELECT CONVERT(col, DATA_TYPE) FROM table;
    

    NULL을 대체하는 함수 - IFNULL, COALESCE

    -- IFNULL: NULL이면 지정한 값으로 대체
    SELECT col_1, IFNULL(col_2, '') AS col_2 FROM doitnull;
    
    -- COALESCE: NULL이 아닌 첫 번째 값을 반환
    SELECT COALESCE(col1, col2, col3) FROM table;
    

    소문자/대문자로 변경하는 함수 - LOWER, UPPER

    SELECT LOWER('HELLO'), UPPER('hello');
    

    공백 제거하는 함수 - LTRIM, RTRIM, TRIM

    SELECT LTRIM('   SQL');  -- 'SQL'
    SELECT RTRIM('SQL   ');  -- 'SQL'
    SELECT TRIM('   SQL   ');  -- 'SQL'
    

    문자열 크기 또는 개수 반환하는 함수 - LENGTH, CHAR_LENGTH

    -- 바이트 반환
    SELECT LENGTH('ABC');  -- 3
    
    -- 문자 개수 반환
    SELECT CHAR_LENGTH('ABC');  -- 3
    

    특정 문자까지의 문자열 길이를 반환하는 함수 - POSITION

    SELECT POSITION('!' IN 'Do it!! SQL');  -- 6
    

    지정한 길이만큼 문자열을 반환하는 함수 - LEFT, RIGHT

    SELECT LEFT('Do it!! SQL', 2), RIGHT('Do it!! SQL', 2);
    

    지정한 범위의 문자열을 반환하는 함수 - SUBSTRING

    SELECT SUBSTRING('Do it!! SQL', 4, 2);  -- 'it'
    SELECT SUBSTRING('abc@email.com', 1, POSITION('@' IN 'abc@email.com') - 1);  -- 'abc'
    

    특정 문자를 다른 문자로 대체하는 함수 - REPLACE

    SELECT REPLACE('SQL is Fun', 'Fun', 'Awesome');  -- 'SQL is Awesome'
    

    문자를 반복하는 함수 - REPEAT

    SELECT REPEAT('0', 10);  -- '0000000000'
    

    공백 문자를 생성하는 함수 - SPACE

    SELECT CONCAT('SQL', SPACE(5), 'Database');  -- 'SQL     Database'
    

    문자열을 역순으로 출력하는 함수 - REVERSE

    SELECT REVERSE('Do it!! SQL');  -- 'LQS !!ti oD'
    

    문자열을 비교하는 함수 - STRCMP

    SELECT STRCMP('SQL', 'SQL');  -- 0 (동일할 때)
    

    2. 날짜 함수

    현재 날짜 및 시간 반환 함수

    SELECT CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP(), NOW();
    

    날짜 더하기/빼기 함수 - DATE_ADD, DATE_SUB

    SELECT NOW(), DATE_ADD(NOW(), INTERVAL 1 YEAR);
    SELECT NOW(), DATE_SUB(NOW(), INTERVAL 1 MONTH);
    

    날짜 차이 계산 함수 - DATEDIFF, TIMESTAMPDIFF

    SELECT DATEDIFF('2024-01-01', '2023-01-01');  -- 365
    SELECT TIMESTAMPDIFF(MONTH, '2023-01-01', '2024-01-01');  -- 12
    

    지정한 날짜의 요일 반환 함수 - DAYNAME

    SELECT DAYNAME('2023-08-20');  -- 'Sunday'
    

    날짜에서 연, 월, 주, 일 추출 함수 - YEAR, MONTH, WEEK, DAY

    SELECT YEAR('2025-02-27'), MONTH('2025-02-27'), WEEK('2025-02-27'), DAY('2025-02-27');
    

    날짜 형식 변환 함수 - DATE_FORMAT, GET_FORMAT

    SELECT DATE_FORMAT('2025-02-27', '%m/%d/%Y');  -- '02/27/2025'
    SELECT GET_FORMAT(DATE, 'USA');  -- '%m.%d.%Y'
    

    3. 집계 함수

    데이터 개수 세는 함수 - COUNT

    SELECT store_id, COUNT(*) AS cnt FROM customer GROUP BY store_id;
    

    합계 구하는 함수 - SUM

    SELECT SUM(amount) FROM payment;
    

    평균 구하는 함수 - AVG

    SELECT AVG(amount) FROM payment;
    

    최솟값/최댓값 구하는 함수 - MIN, MAX

    SELECT MIN(amount), MAX(amount) FROM payment;
    

    부분합과 총합을 구하는 함수 - ROLLUP

    SELECT customer_id, staff_id, SUM(amount)
    FROM payment
    GROUP BY customer_id, staff_id WITH ROLLUP;
    

    4. 순위 함수

    순위 관련 함수

    -- ROW_NUMBER: 유일한 순위 부여
    SELECT customer_id, amount, ROW_NUMBER() OVER (ORDER BY amount DESC) AS ranking FROM payment;
    
    -- RANK: 동일한 순위 부여, 순위 건너뛰기 가능
    SELECT customer_id, amount, RANK() OVER (ORDER BY amount DESC) AS ranking FROM payment;
    
    -- DENSE_RANK: 동일한 순위 부여, 순위 건너뛰지 않음
    SELECT customer_id, amount, DENSE_RANK() OVER (ORDER BY amount DESC) AS ranking FROM payment;
    

    이처럼 SQL에는 다양한 내장 함수가 있으며, 이를 활용하면 데이터를 더욱 효율적으로 관리하고 분석할 수 있습니다. 필요할 때마다 참고해서 활용해 보세요!

Designed by Tistory.