오늘은 SQL 공부를 하다가 LAG와 LEAD라는 윈도우 함수를 알게되었다. 그 내용을 정리해보았다. 1. LAG LAG와 LEAD는 모두 특정 위치의 행을 출력하는 윈도우 함수이다. LAG는 이전 행의 값을 가져오고 LEAD는 다음 행의 값을 가져온다는 차이가 있다. LAG의 사용법은 다른 윈도우 함수들과 똑같다. LAG(칼럼명) OVER (PARTITION BY ... ORDER BY ... ) LAG를 그냥 사용하게 되면 이전 행의 값을 가져온다. 예시로 살펴보자. 예시 테이블 숫자 한글 1 가 7 사 3 다 6 바 5 마 4 라 2 나 SELECT 숫자, 한글, LAG(한글) OVER () AS LAG FROM 숫자한글 결과 테이블 숫자 한글 LAG 1 가 [null] 7 사 가 3 다 사 6 바..
전체 글
백엔드 개발자배열을 문자열로 출력하는 함수인 joinToString()에 대해서는 문제를 풀다가 알게 되었고 그 내용을 정리도 해보았다. 그러다가 문제를 풀다가 다시 사용해아하는 상황이 오게 되었는데 지난번 정리했을 때 완벽히 이해하지 못해 정리하지 못했던 내용들을 이번에 사용하면서 알게되어 그 내용을 정리해보았다. 지난번에 정리해두었던 내용 https://moomoo11.tistory.com/10 1. 풀어본 문제 프로그래머스에 있는 문제 'JadenCase 문자열 만들기' 문제를 풀어보았다. 1-1. 문제 [문제] 문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출..
오늘도 SQL 문제 풀이 과정에서 알게된 내용들을 정리해보았다. 문제를 보자마자 내가 아는 걸로는 풀기 어렵겠구나라는 생각이 들었고, 함수를 찾아 공부한 내용을 정리해보았다. 1. GROUP_CONCAT GROUP_CONCAT은 MySQL에서 사용가능한 함수이다. GROUP_CONCAT은 GROUP BY로 그룹화를 시켜준 테이블에서 특정 조건에 맞는 값들을 모두 묶어 출력해준다. SELECT 칼럼1, GROUP_CONCAT(칼럼2) FROM 테이블 GROUP BY 칼럼1 사용법은 위와 같이 단순하다. 설명만 가지고는 감이 잘 오지 않기 때문에 예시로 직접 살펴보는 것이 빠르다. 테이블 제품명 제품종류 새우깡 스낵류 보석바 빙과류 감자깡 스낵류 누가바 빙과류 쌍쌍바 빙과류 먹태깡 스낵류 참이슬 주류 스크류..
SQL 문제를 풀다보니 표준 SQL만 가지고는 해결하기 다소 어려운 문제들을 마주하게 되었고, 편리한 함수들을 더 찾아보게 되었다. LIMIT, OFFSET이라는 편리한 함수를 알게되어 여기에 정리해본다. 1. LIMIT, OFFSET LIMIT과 OFFSET은 MySQL과 PostgreSQL에서 사용가능한 함수이다. 먼저 LIMIT은 출력하는 행의 개수를 제한한다. 사용법은 다음과 같이 아주 간단하다. SELECT 칼럼 FROM 테이블 LIMIT N 위와 같이 사용하면 결과 테이블의 행이 N개만 나오게 된다. OFFSET을 LIMIT 뒤에 사용하게 되며 어느 행부터 출력할지를 정해주는 역할을 한다. SELECT 칼럼 FROM 테이블 LIMIT N OFFSET M 위와 같이 사용하면 (M+1)번째 행부터..
SQL 문제 풀이를 하면서 순위를 매기는 함수가 단순히 Rank만 있는 것이 아니라 여러 종류가 있다는 사실을 알게되었다. 새로 알게된 부분들을 정리해보았다. 1. SQL 순위를 매기는 3가지 방법 다음 아래의 테이블을 이용해 Rank, Dense_Rank, Row_Number의 차이를 알아보자. 테이블 제품명 가격 새우깡 1300 보석바 900 감자깡 1500 누가바 1000 쌍쌍바 1000 먹태깡 1700 참이슬 1900 스크류바 1000 고구마깡 1500 처음처럼 1900 옥수수깡 1600 바밤바 900 하이트 2000 1-1. Rank 먼저 rank를 사용해서 순위를 매겨 보았다. 가격을 내림차순으로 정렬해 가격이 가장 높은 것이 1등이 된다. select 제품명, 가격, rank() over (..
정규 표현식을 배웠으니 문제에 활용해 볼 수 있게 되었다. 마침 관련 문제를 몇 풀게 되어서 정리해본다. 1. Kotlin 문제 1-1. 문제 프로그래머스에 있는 문제 '옹알이 (2)'를 풀어보았다. [문제] - 문제 설명 머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye', "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution함수를 완성해주세요. - 제한사항 1 ≤ babbling의 길이 ≤ 100 1 ≤ babbling[i]의 길이 ≤ 30..
Kotlin에서 정규 표현식 사용하는 법에 대해 어제까지 미처 정리하지 못했던 부분을 모두 정리해보았다.1. Kotlin에서 정규 표현식 사용하기1-1. 그룹핑지난 번에 정리해두었던 matchAt(), MatchEntire(), find(), findAll() 같은 함수를 이용하면 MatchResult의 인스턴스가 반환된다고 했었는데, 이 MatchResult의 속성중에 groups와 groupValues 라는 것이 있다. groups 속성을 이용하면 매치된 부분 전체와 소괄호 안에 들어있는 그룹핑한 부분의 MatchGroup들을 리스트로 얻을 수 있다. groupValues는 리스트로 0번 인덱스에는 매치 전체가, 그 다음 인덱스부터는 서브 패턴() 안에 있는 그룹핑이 되어있는 부분이 들어가게 된다. ..
어제 정리하다 끝마치지 못했던 Kotlin에서 정규 표현식 사용하는 법에 대해 정리해보았다.1. Kotlin에서 정규 표현식 사용하기1-1. matchEntire(), matchAt(), find(), findAll()위 4개의 함수는 정규식을 검사하여 매치되는 것이 있다면 MatchResult의 인스턴스를 반환하고 만약 매치되는 것이 없다면 null을 반환하는 함수들이다. 직접 예시를 들어 설명하는 것이 가장 이해가 빠르고 쉬웠기 때문에 다른 설명없이 함수를 하나하나 살펴보는 것이 좋을 것 같다. - matchEntire() matchEntire()는 입력값 전체에 대해 정규식을 검사하여 전체가 매치된다면 MatchResult의 인스턴스를 반환하고 매치되지 않으면 null을 반환한다.fun main()..