본문 바로가기
SQL

[SQL] 기본함수, ORDER BY

by 장찐 2023. 3. 5.

📚 WHERE 조건 

✅ LIKE  에서 와일드 카드 

• LIKE 사용 시 %는 매칭되는 문자의 수 상관없을 때, _ 는 1개의 문자에만 매칭해서 사용함 

% 0개 이상의 문자 (정확한 길이 알 수 없음)
1개
__ 2개
_% 1개 이상의 문자 (정확한 길이 알 수 없음) 


📚데이터 정렬 

✅ ORDER BY 

📌컬럼 여러개 기준으로 정렬하는 경우 

SELECT * FROM TMP_TABLE 
WHERE ~~ 
ORDER BY 컬럼1 DESC, 컬럼2 ;

위와 같이 여러 개의 컬럼에 대해서 정렬하는 경우, 컬럼1을 기준으로 먼저 내림차순으로 정렬한 후에, 

컬럼1의 값이 동일한 row에 대해서만 컬럼2 오름차순 기준으로 정렬한다. 

 

 

✅ RANK

📌순위를 정해서 가져오는 경우 

• 항상 ORDER BY랑 함께 사용함. 

• SELECT 절에서 사용함. 테이블 실제 데이터에는 영향을 미치지 않음 

• 값이 높은 순서대로 순위를 만들어서 가져오려면, ORDER BY 에서 DESC 사용해야 함 

SELECT [col1], [col2], 
    RANK() OVER (ORDER BY col1 DESC) AS col1_rank
FROM [테이블];

 

✅ vs DENSE_RANK  vs ROW_NUMBER 

함수 설명 
RANK 공동 순위가 있으면 다음 순서로 건너뜀 
DENSE_RANK 공동순위가 있어도 다음 순위 안 건너뜀 
ROW_NUMBER 공동 순위 무시  

📌예시 

이름 성적 rank_rank rank_dense_rank rank_row_number
A 90 1 1 1
B 55 2 2 2
C 55 2 2 3
D 49 4 3 4
E 30 5 4 5

 

 


📚문자형 데이터 다루기 

📌문자열 관련 함수 

함수 사용법  설명  
LOCATE LOCATE('A', 컬럼명)  • “ABC”컬럼에서“A”가 몇번째에 위치하는지 반환 
• 문자가 여러개면 가장 먼저 찾은 문자의 위치 반환 
• 찾는 문자 없으면 0 반환 
SUBSTRING SUBSTRING(컬럼명, 2)  • “ABC”에서 2번째 문자부터 반환
• 입력한 숫자 > 문자열 길이 : 아무것도 반환 안 함 
RIGHT RIGHT(컬럼명, 2) • 컬럼에서 오른쪽 2번째 문자까지 반환 
LEFT LEFT(컬럼명, 2) • 컬럼에서 왼쪽 2번째 문자까지 반환 
UPPER UPPER(컬럼) • 컬럼을 모두 대문자로 바꿔 반환 
LOWER LOWER(컬럼) • 컬럼을 모두 소문자로 바꿔 반환 
LENGTH LENGTH(컬럼) • 컬럼의 글자 수 반환 
CONCAT CONCAT(컬럼1, 컬럼2) • 두 개의 문자열을 합쳐서 반환 (컬럼도 가능) 
REPLACE REPLACE(컬럼, 'A', 'B') • 컬럼에서 A를 B로 바꿔서 반환 

 


📚숫자 다루기 

📌숫자 관련 함수 

함수 사용법 설명 
ABS ABS(숫자) • 절대값 반환 
CEILING CEILING(숫자) • 정수로 올림 
FLOOR FLOOR(숫자) • 정수로 내림 
ROUND ROUND(숫자, 자릿수) • 숫자를 소수점 자릿수까지 반올림해서 반환 
TRUNCATE TRUNCATE(숫자, 자릿수) • 숫자를 소수점 자릿수까지 버림해서 반환 
POWER POWER(숫자1, 숫자2) • 숫자1의 숫자2 제곱 반환 
MOD MOD(숫자1, 숫자2) • 숫자1을 숫자2로 나눈 후 나머지 반환 

 


📚날짜 다루기 

📌날짜 관련 함수 

함수 사용법 설명 
NOW NOW() 현재 날짜와 시간 반환 (입력값 없이 사용) 
CURRENT_DATE CURRENT_DATE() 현재 날짜 반환
CURRENT_TIME CURRENT_TIME() 현재 시간 반환
YEAR YEAR(날짜) 날짜의 연도반환
MONTH MONTH(날짜) 날짜의 월반환
MONTHNAME MOTHNAME(날짜) 날짜의 월을 영어로 반환
DAYNAME DAYNAME(날짜) 날짜의 요일을 영어로 반환
DAYOFMONTH DAYOFMONTH(날짜) 날짜의 일 반환
DAYOFWEEK DAYOFWEEK(날짜) 날짜의 요일을 숫자로 반환
일요일 = 1 / 월요일 = 2 
WEEK WEEK(날짜) 날짜가 해당연도에 몇번째 주인지 반환
HOUR HOUR(시간) 시간의 시반환
MINUTE MINUTE(시간) 시간의 분반환
SECOND SECOND(시간) 시간의 초반환
DATE_FORMAT DATEFORMAT(날짜/시간, 형식) 날짜/시간의 형식을 '형식'으로 바꿔반환
DATEDIFF DATEDIFF(날짜1, 날짜2) 날짜1과 날짜2의 차이 반환 (날짜1 ‒날짜2)
TIMEDIFF TIMEDIFF(시간,1시간2) 시간1과 시간2의 차이 반환 (시간1 ‒시간2)

 

📌DATE_FORMAT 함수에 들어가는 형식 세부 분류 

'SQL' 카테고리의 다른 글

[SQL] CASE WHEN / CREATE FUNCTION  (0) 2023.05.09
[SQL] GROUP BY  (0) 2023.03.08
[SQL] 데이터베이스 다루기  (0) 2023.02.28
[SQL] 서브쿼리 기본 개념  (0) 2023.02.06

댓글