[MySQL] RANK() 로 구현하는 순위 계산

개발/MySQL 2023. 6. 27. 00:26

View 테이블을 사용하여 현재 특정 데이터들에 대한 순위를 계산해야하는 경우가 있었다. MySQL의 경우에는 RANK() 함수가 5.7버전부터 추가되어 특정 칼럼에 대해 값의 순위를 계산할 때 사용할 수 있다. RANK() 함수 사용 예시 사용시 문법은 다음과 같다. RANK() OVER (PARTITION BY [구분하려는 칼럼명] ORDER BY [정렬하려는 칼럼명] DESC/ASC) 해당 함수 사용시 PARTITION BY와 DESC/ASC는 생략이 가능하다. PARTION BY PARTITION BY는 특정 동일한 제약이 걸린 데이터 끼리의 순위를 얻고 싶을 때 사용가능하다. 예를 들어 근무 시간 테이블에서 지점명 A에 소속된 직원들의 근무 시간에 대해서만 순위를 얻고 싶다면 PARTITION ..

Article Thumbnail
[Prisma] prisma.$transction api 성능 이슈

개발/NestJS 2023. 6. 12. 08:20

NestJs + Prisma 조합으로 신규 프로젝트를 진행하던 중 매일 새벽 1시마다 해당 날짜의 유가/최저가 주유소 관련 정보를 각각 Opinet의 API로 조회해서 저장하는 독립된 배치 2개를 구현하였었다. 유가 정보 조회/저장 배치가 스테이지 환경에서 정상적으로 동작하는 것을 확인하고, 최저가 주유소 관련 배치를 스테이지 환경에 배포해둔 상황이었다. DB 최저가 주유소 관련 테이블에 row들이 정상적으로 저장된 것을 확인하고, 해당 배치 기능은 완료된 것으로 생각하고 있었다. 유가 정보를 저장하고 있는 테이블과 최저가 주유소 정보를 저장하고 있는 테이블이 서로 연관이 없고, 독립된 배치에서 실행되고 있는 상황이라 insert 관련 락이나 PK 관련 이슈가 없을 거라고 생각하면서 DB와 서버 로그를 ..

Article Thumbnail
[Prisma] TS2339: Property does not exist on type 배포 실패

개발/NestJS 2023. 5. 29. 23:59

기존의 NestJs + TypeORM 조합에서 NestJs + Prisma 도입을 위해 MVP 프로젝트에 적용하는 과정에서 위처럼 원격 환경에 배포시 빌드 과정에서 TS 컴파일 관련 에러가 발생하면서 node_modules 내부에 위치한 prisma client에 Schema Property가 없다는 에러가 발생하였다. 해당 에러가 로컬 환경의 빌드에서는 발생되지 않고, 해당 원격 환경에서 빌드시 발생하고 있었는데 해당 에러와 관련된 스택 오버플로우, 깃헙 이슈를 찾아보면 하나같이 "IDE를 재시작해라"와 같은 로컬 환경에서의 이슈에 대한 답변만 존재하였다. 현재 사용하고 있던 배포 플로우는 다음과 같았다. 원격 저장소의 지정된 브랜치에서 git pull yarn install rimraf로 기존 dis..

Article Thumbnail
[NodeJS] Volta로 프로젝트 개발환경 버전 Sync 맞추기

개발 2023. 5. 16. 00:06

프로젝트를 하다보면 로컬에 설치된 NodeJS의 버전이 달라 상대적으로 낮은 버전을 사용하는 사람의 로컬에서 해당 메소드의 부재로 인해 에러가 발생하는 경우가 종종 있다. 로컬의 NodeJS 버전을 변경하는 방법에는 nvm(Node Version Manager)가 있다. nvm을 사용하여 서로 로컬의 NodeJS 버전 sync를 맞출 수 있지만, 해당 방법을 사용하면 새로운 팀원이나 주 개발 환경이 아닌 곳에서 작업할 시, 매번 nvm을 사용해서 다시 버전 sync를 직접 맞춰야된다는 단점이 있다. Volta를 사용하여 node 버전을 맞추게되면 volta만 설치후 바로 프로젝트 패키지 설치 및 실행에 별다른 허들 없이 진행가능하다. Volta는 javascript 커맨드 관리 툴로 node 버전 syn..

Article Thumbnail