DB 간단 명령어 (Part7)

서재환·2022년 2월 8일
0

DB

목록 보기
7/13

테이블 두개를 합치고 order by로 깔끔하게 정리하기

이번 시간에는 테이블과 테이블을 연결하여 원하는 필드를 가져와서 특정 필드로 묶고 
결과 값을 보기 좋게 정렬하는 방법에 대해 알아보고자 한다.

앞선 파트에서 배운 명령어를 활용하는 시간이므로 다룬 내용이지만 원하는 데이터를 추출한 후
보기 좋게 정렬하기 위한 팁으로서 해당 단원을 다루고자 한다.
user 테이블이 있고 enrolleds 테이블이 있다. 각각의 테이블에는 user_id 라는 공통
필드를 가지고 있다.

따라서 우리는 두 테이블을 user_id field를 공통 부문으로 엮어 하나의 테이블을 만든다.
그 중 enrolleds 테이블에 강의를 듣지 않은 사용자를 뽑아 낼 것이므로 해당 정보를 갖고
있는 field를 추출 할 것이다.

강의를 들었다 듣지 않았다의 정보를 담고 있는 field는 is_registered 이다.
그래서 아직 강의를 듣지 않은 정보를 지정하고 성씨별로 나타낼 것이기 때문에 해당 정보를
담고 있는 name을 기반으로 grouping 한다.

추출한 정보를 보기 좋게 표시하기 위해 표시 할 필드 name, 그에 따른 cnt를 지정한다.

특히 각 테이블에 있는 필드 정보를 나타낼 때에는 별칭을 지정해줘서 별칭.field 이름으로
구체적으로 나타내야한다.

아래는 필요한 정보를 뽑아내기 위한 SQL 문이다.
users 테이블과 enrolleds 테이블을 user_id 라는 field로 연결한다. 해당 테이블
내 is_registered 필드가 0인 열을 추출하고 name으로 grouping 한다. 표시 할 정
보로는 name, 그리고 그에 따른 숫자를 표시할 것이고 이를 내림차순으로 정렬해서 표시 할
것이다.
select u.name, count(*) as cnt from users u
inner join enrolleds e
on u.user_id = e.user_id
where e.is_registered = 0
group by u.name
order by cnt desc

0개의 댓글