My SQL Study - (2)

Geun Bo Kim·2023년 3월 23일
0

My SQL

목록 보기
2/6
post-thumbnail

My SQL 공부 Start

1.범주의 통계를 내주는 Group by

💡 Group by란?

동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것

👉예로 성씨별로 몇 명이 회원이 있는지 구하려고 where 절을 사용해서 수십개의 쿼리를 작성하는 것은 너무 비효율적입니다. 이러한 문제를 해결할 때 Group by를 사용

ex)select name, count(*) from users
group by name;

  • 위 쿼리가 실행되는 순서: from → group by → select
  1. from users: users 테이블 데이터 전체를 가져옵니다.
  2. group by name: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐줍니다.
  3. select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.

📚 Group by의 기능 알아보기

- Group by (범주의 통계를 내줄 때)

ex)select name, count(*) from users
group by name / (성씨별로 회원이 얼마나 있는지 구하기)

- Min (동일 범주 최솟값 구할 때)

ex) select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명

- Max (동일 범주 최댓값 구할 때)

ex) select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명

- Avg (동일 범주 평균 구할 때)

ex)select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명

- Sum (동일 범주 합 구할 때)

ex)select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명

  • 🧐 tip : round로 avg를 묶으면 원하는 소수점까지 잘라서 가져올 수 있다.

2.깔끔한 정렬이 필요할 땐? Order by

💡 Order by란?

Order by는 모든 SQL 쿼리에 적용될 수 있는 기능으로 깔끔하게 정렬할 때 사용함

👉 Order by 규칙

select * from 테이블명
order by 정렬의 기준이 될 필드명

  • 기본적으로 오름차순 정렬이지만 끝에 desc를 붙여주면 내림차순 정렬

Order by 제대로 알아보기: SQL 쿼리가 실행되는 순서

ex) select name, count() from users
group by name
order by count(
);

  • 위 쿼리가 실행되는 순서: from → group by → select → order by
  1. from users: users 테이블 데이터 전체를 가져옵니다.
  2. group by name: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐줍니다.
  3. select name, count(*): name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
  4. order by count(*): 합쳐진 데이터의 개수에 따라 오름차순으로 정렬해줍니다.

3. Where,Group by, Order by 함께 사용해보기

☑️원리는 간단하다. Where절로 조건이 하나 추가되고, 그 이후에 Group by, Order by가 실행되는 것!

ex) 웹개발 종합반의 결제수단별 주문건수 세어보기

[순서]
1. orders 테이블에서 주문 데이터를 읽어오고
2. 웹개발 종합반 데이터만 남기고
3. 결제수단(범주) 별로 그룹화하고
4. 결제수단별 주문건수를 세어준다!

답: select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method

  • 위 쿼리가 실행되는 순서: from → where → group by → select
  1. from orders: users 테이블 데이터 전체를 가져옵니다.
  2. where course_title = "웹개발 종합반": 웹개발 종합반 데이터만 남겨줍니다.
  3. group by payment_method: 같은 payment_method을 갖는 데이터를 합쳐줍니다.
  4. select payment_method, count(*): payment_method에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어줍니다.
    예) CARD, CARD, kakaopay 이렇게 데이터가 있었다면, CARD는 2개, kakaopay는 1개

4. 이외 유용한 문법들

- Alias(별칭 기능) : 쿼리가 점점 길어질 때 어떤 테이블의 데이터인지 구분하기 위함

ex)select * from orders o
where o.course_title = '앱개발 종합반' / ('o'가 orders의 타이틀, orders에 있는 코스타이틀 테이블에서 앱개발 종합반)

👉이렇게 테이블명 뒤에 as를 붙여서 별칭을 추가하는 것도 가능

ex) select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method

*Main Quiz.

  • 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기
    답:select payment_method, count(*) from orders
    WHERE course_title = '앱개발 종합반'
    and email like'%naver.com'
    GROUP by payment_method
profile
미래는 개발이다

0개의 댓글