모든 유저를 지역별로, 연령별로 정렬하여 유저 수를 통계를 내야되는 이슈가 있었다.
연령별로 묶어서 Count를하여 aged_user: [{age:'21', age_count:'10'}, {age: '22', age_count:'12'}]의 형식으로 프론트에 리턴해주는 것을 목표로 typeorm QueryBuilder를 사용하여 쿼리를 구성하였다.
const userByAge = await this.repository .createQueryBuilder('user') // 유저 테이블을 지칭하는 이름을 'user'로 한다. .select('user.age') // 정렬할 유저 테이블의 칼럼만 select한다. .orderBy('user.age', 'DESC') // select한 칼럼을 내림차순으로 정렬한다. .addSelect('COUNT(*) AS ageCount') // ageCount라는 이름으로 COUNT를 한다. .groupBy('user.age') // 유저 나이별로 묶는다. .getRawMany(); // Raw data 형식으로 리턴한다.
유저 테이블에서 나이 칼럼을 Select해와서 내림차순으로 정렬한 후, COUNT(*)를 통해 개수를 카운트 하고 .groupBy('user.age')를 통해 유저 나이별로 묶어서 .getRawMany()로 Raw data 형식으로 리턴하였다.
해당 쿼리가 리턴한 값은 아래처럼 예상대로 출력되었다.
TypeORM GroupBy를 사용하여 정렬 Count하기
모든 유저를 지역별로, 연령별로 정렬하여 유저 수를 통계를 내야되는 이슈가 있었다.
연령별로 묶어서 Count를하여 aged_user: [{age:'21', age_count:'10'}, {age: '22', age_count:'12'}]의 형식으로 프론트에 리턴해주는 것을 목표로 typeorm QueryBuilder를 사용하여 쿼리를 구성하였다.
유저 테이블에서 나이 칼럼을 Select해와서 내림차순으로 정렬한 후, COUNT(*)를 통해 개수를 카운트 하고 .groupBy('user.age')를 통해 유저 나이별로 묶어서 .getRawMany()로 Raw data 형식으로 리턴하였다.
해당 쿼리가 리턴한 값은 아래처럼 예상대로 출력되었다.
'개발 > TypeORM' 카테고리의 다른 글