Welcome! Everything is fine.

[TIL] 241122 - SQL / Java 공부 본문

TIL

[TIL] 241122 - SQL / Java 공부

개발곰발 2024. 11. 23.
728x90

사전캠프를 시작하면서 다시 시작하게된 TIL...

글쓰는 시간이 오래 걸려서 쉽지 않지만 꾸준히 나아가자.👊🏻  

✅ SQL 문제 풀기

날짜 관련 함수

  1. CURRENT_DATE() / CURDATE() : 현재 날짜(YYYY-MM-DD)를 반환한다.
  2. NOW() : 현재 날짜와 시간(YYYY-MM-DD HH:MM:SS)을 반환한다.
  3. YEAR() / MONTH() / DAY() : 날짜의 연도, 월, 일을 추출한다.
  4. DATEDIFF() : 두 날짜 간의 차이를 일수로 반환한다.
  5. DATE_ADD() / DATE_SUB() : 날짜에 특정 간격을 추가하거나 뺀다.
  6. LAST_DAY() : 주어진 날짜가 속한 달의 마지막 날짜를 반환한다.
  7. STR_TO_DATE() : 문자열을 날짜로 변환한다.
  8. DATE_FORMAT() : 날짜를 특정 형식으로 변환한다.

윈도우 함수

  • 윈도우 함수 : SQL에서 그룸화 없이도 데이터 집합의 각 행에 대해 계산을 수행할 수 있는 함수. OVER() 절과 함께 사용된다.

윈도우 함수 중에서도 이번 퀘스트에서 나온 순위 관련 함수를 보자.


1. ROW_NUMBER(): 그룹 내에서 각 행에 고유한 순위를 부여한다.
2. RANK(): 동일한 값에 동일한 순위를 부여하며, 이후 순위를 건너뛴다.
3. DENSE_RANK(): 동일한 값에 동일한 순위를 부여하지만, 이후 순위를 건너뛰지 않는다.

 

각 유저의 레이팅 순위를 계산하는 쿼리를 작성하는 문제가 있었다. 해당 문제에서 순위를 계산하기 위해 RANK() 함수를 사용했다. 다음과 같이 하면 rating 순으로 내림차순 정렬 후, 순위를 매기게 된다.

SELECT 
    id,
    name,
    region,
    rating,
    RANK() OVER (ORDER BY rating DESC) AS ranking
FROM lol_users;

✅ 자바 강의 듣기

String

자바에서는 문자열을 더 쉽게 다룰 수 있도록 String 클래스를 제공한다. String 클래스 내부를 보면, char[]에(자바 9이후부터는 효율성을 위해 byte[]을 사용) 문자가 하나하나 보관된다. String 클래스가 없다면 char[]에 한 글자씩 저장해야 했을지도 모른다.

✔️ String 클래스의 기능(메서드)

  • length() : 문자열의 길이를 반환한다.
  • charAt(int index) : 특정 인덱스의 문자를 반환한다.
  • substring(int beginIndex, int endIndex) : 문자열의 부분 문자열을 반환한다.
  • indexOf(String str) : 특정 문자열이 시작되는 인덱스를 반환한다.
  • toLowerCase() , toUpperCase() : 문자열을 소문자 또는 대문자로 변환한다.
  • trim() : 문자열 양 끝의 공백을 제거한다.
  • concat(String str) : 문자열을 더한다.

String은 클래스, 즉 참조형이기 때문에 실제 값이 아닌 참조값(주소값)이 들어있다. 따라서 +와 같은 연산은 원칙적으로 사용할 수 없지만, 사람들이 많이 쓰기 때문에 특별히 + 연산을 제공한다.