SQL 공부 - 2

이용만·2022년 4월 25일
0

1)최소값
min(필드명)
ex) SELECT week, MIN(likes) from checkins
group by week

2) 최대값
max(필드명)
ex) SELECT week, MAX(likes) from checkins
group by week

3) 평균
avg(필드명)
ex) SELECT week, AVG(likes) from checkins
Group by week

  • 반올림을 하고 싶을 때 round(avg(필드명),0(그냥반올림),1(첫째자리),2(둘째자리),3(셋째자리))
    SELECT week, ROUND(AVG(likes)) from checkins
    group by week

4) 합계
sum(필드명)
ex) SELECT week, SUM(likes) from checkins
group by week

깔끔한 정렬이 필요할 땐 Order by
정렬은 언제 해야 할까? 뭔가 다 되고 맨 마지막에 하는게 정렬이다.
ex) ELECT name, COUNT() from users
group by name
order by count(
)
기본적으로 오름차순이 적용된다.

  • 내림차순 desc
    ex) SELECT name, COUNT() from users
    group by name
    order by count(
    ) desc
    실행순서
    from users : users 테이블 데이터 전체를 가져온다.
    gorup by name : users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐준다.
    select name, count() : name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어준다.
    group by와 꼭 함께 있어야 하는 것은 아니다.

Where와 Group by, Order by 사용하기
1) group by
SELECT payment_method,COUNT(*) from orders
where course_title = '웹개발 종합반'
group by payment_method

2) 여기서 정렬 하고 싶을 때 Order by
SELECT payment_method,COUNT() from orders
where course_title = '웹개발 종합반'
group by payment_method
order by count(
)
실행되는 순서
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개겠죠!

문자열 기준으로 정리
SELECT
from users
order by email desc

쿼리 꿀팁

1) show tables로 어떤 테이블이 있는지 살펴보기
2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기
3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
4) 테이블을 찾았다! 범주를 나눠서 보고싶은 필드를 찾기
5) 범주별로 통계를 보고싶은 필드를 찾기
6) SQL 쿼리 작성하기!

  • 이외 유용한 문법
    별칭 기능 : Alias
    쿼리가 점점 길어지면 헷갈리는 일이 생길 수 있다. 그래서 SQL은 Alias라는 별칭 기능을 지원한다.
    ex) SELECT * from orders o
    where o.course_title = '앱개발 종합반'

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

profile
성장하는 개발자가 되고자 합니다.

0개의 댓글