-
[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에는 다양한 내장 함수가 있으며, 이를 활용하면 데이터를 더욱 효율적으로 관리하고 분석할 수 있습니다. 필요할 때마다 참고해서 활용해 보세요!
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[2월 4주차-2/28]항공 데이터 분석: 지연 패턴과 인사이트 도출💦 (0) 2025.02.28 [2월 4주차-2/27(2)]📌2024년 국내 항공 노선 이용률 분석 🛫 (1) 2025.02.27 [2월 4주차-2/26(2)]MySQL 연동하기: Python으로 MySQL 데이터 가져오기+실습 (0) 2025.02.26 [2월 4주차-2/26(1)]SQL JOIN과 서브쿼리 정리 (0) 2025.02.26 [2월 4주차-2/25(2)]🎓학사 관리 테이블 실습 - SQL 문제 풀이 (0) 2025.02.25