본문 바로가기

SQL 공부(ft.sparta)/3주차

(9)
3주차 끝 숙제 숙제
3-7. 결과물 합치기 - Union 배우기 위 사진을 보면 노란색은 7월 , 파란색은 8월이라고 하면 저렇게 보는 것보다 위아래로 나란히 모아서 보는게 더 편하다. 그래서 우리가 만들고 싶은것은 아래 사진과 같다. 7월에 8월을 밑에 붙여주자는 거다. 그러니 일단 아래 코드를 복사해서 붙여넣자. select c1.title, c2.week, count(*) as cnt from courses c1 inner join checkins c2 on c1.course_id = c2.course_id inner join orders o on c2.user_id = o.user_id where o.created_at >= '2020-08-01' group by c1.title, c2.week order by c1.title, c2.week 전에 작성했던거다..
3-6. Left Join - 복습해보기 left join은 이럴때 쓴다. 한쪽에는 있는데 한쪽에는 없는것을 가지고 통계내고 싶을때 먼저 users를 기점으로 point_users를 붙이겠다. 현제 표를 보면 null 값들도 있다. 이제 이런거 가지고 뭘 할 수 있냐, 일단 null인것만 추려내보겠다. NULL은 대문자로 표기해줘야한다. 이제 이거를 가지고 group by를 할 수도 있다. 이름으로 group by 해주겠다. 지금 위 사진에 나오는 사람들은 null값이기 때문에 강의 시작을 안한 사람들이다. 즉 포인트가 없는 사람들이다. 이번엔 반대로 무조건 시작한 사람들만 추출한다면 위 사진과 같이 not을 넣어주면 된다. 이렇게 null과 관련된 것들을 가지고 통계를 내고싶다거나 이럴때 left join을 사용하면 된다. left join ..
3-5. 한번 더 총 복습 여기서 한가지 짚고 넘어가야할것이 있다. 한가지 결과에 도달하는 방법은 여러가지 방법이 있다. 꼭 위와 같이 똑같이 작성하지 않아도 된다는 거다. 지금 위 결과들만 나와있지만 내가 작업할때도 왔다 갔다하면서 작성했다. 이제 다음 시간엔 left join을 복습해보겠다.
3-4. 실전, 본격 쿼리 작성해보기 그다음 이어서 퀴즈 두개 마저 풀러 가보겠다.
3-3. 배웠던 문법을 Join과 함께 사용해보기 자 이제 Join한 테이블을 가지고 우리가 원하는 통계치라던가 아니면 원하는 데이터들만 추출하는 방법을 알아보겠다. 1. checkins 테이블에 courses 테이블 연결 - 과목별 오늘의 다짐 갯수 세어보기. 먼저 과목이 있는 courses 테이블과 다짐이 있는 checkins 테이블을 join 해준다. 그다음 과목별(course_id)로 group by해준다. 그리고 과목별로 개수를 세주자. 좀 더 나아가서는 아래와 같이 작성할수도 있다. 2. point_users 테이블에 users 테이블 연결 - 많은 포인트를 얻은 순서대로 유저 데이터 정렬해서 보기. 먼저 point_users 테이블과 users 테이블을 join 해준다. 그리고 point를 가지고 내림차순으로 정렬하라고 했다. 좀 더 깔끔하..
3-2. Join 본격 사용해보기 Join을 연습해보자. 먼저 첫번째는 같이 해봤다. 보면 user_id로 붙였기 때문에 이사람이 어떤 결제수단으로 뭘 결제했는지를 확인할 수 있다. 우린 inner join으로 먼저 해볼꺼다. 왜냐하면 inner join은 순서가 바뀌어도 상관없기 때문에 좀 더 쉽게 사용할 수 있는 반면, left join은 순서가 중요하기 때문에 오류가 날 수 있어서이다. 두번째는 아래와 같다. 세번째도 아래와 같다. 이렇게 테이블을 이을 수 있다. 다음 시간에도 또 연습하러 가보자.
3-1. 여러 테이블을 연결해보자: Join 이란? Join 이란 두테이블의 공통된 정보(key 값)를 기준으로 테이블을 연결해서 하나의 테이블처럼 보는 것을 의미 혹시 엑셀을 잘 쓰신다면? SQL의 Join은 엑셀의 vlookup과 동일하다고 생각하면 된다. join이 vlookup보다 쉽다. Join 종류 : Left Join , Inner Join Left Join - A테이블 기준으로 B를 붙이는거다. 한번 해보겠다. 먼저 users 테이블에 point_users 테이블을 붙여보자. select * from users u left join point_users pu on u.user_id = pu.user_id 위 코드를 보면 이런 뜻이다. select * from users u //users에 u라는 별칭을 만들어준다. left join poin..