ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL] 스파르타 코딩클럽 "엑셀보다 쉬운 SQL" 2주차
    DataBase/RDBMS 2022. 9. 4. 19:32

    이번주는 SQL 쿼리를 이용해 보고싶은 raw data를 의미를 갖는 '정보'로 변환시키는 법을 익혔다. 그 방법은 바로 '통계'를 내고 '정렬'을 하는 것이다. 통계를 내기 위해서는 GROUP BY, 정렬을 하기 위해서는 ORDER BY를 사용한다. 

     

    1. GROUP BY

    : GROUP BY를 기반으로 '개수', '최대값', '최소값', '합계', '평균값'등을 구해 통계를 낼 수 있다. 

    SELECT 필드명, method(*) FROM 테이블명

    GROUP BY 필드명;  

     : 특정 필드별로 통계치를 보겠다!

      💡 쿼리가 실행되는 순서는 FROM → GROUP BY → SELECT라는 것을 기억!

      💡 어떤 기준으로 통계를 냈는지 확인할 수 있도록 SELECT로 출력할 내용에 통계치를 낼 method

           지정하는 것 뿐만 아니라 GROUP BY로 묶은 필드명포함시키는 것이 좋다!

           (포함시키지 않는다고 해서 오류가 나지는 않음)

     

     1-1. 개수

     : 'count' 사용

     SELECT 범주별로 세고싶은 필드명, count(*) as 별칭 FROM 테이블명

     GROUP BY 범주별로 세고싶은 필드명;

     ※ Alias 기능을 통해 보여줄 필드의 별칭을 지정할 수 있다!
      - 사용법: 보여줄 필드 뒤에 'as 별칭'을 붙여준다. 
      - EX: count(*)의 별칭을 cnt로 보여주고 싶다면 " count(*) as cnt "를 활용하면 된다. 

      EX) SELECT name, count(*) as cnt FROM users   

             GROUP BY name; # 성씨별 회원수(필드명은 cnt로 지정)를 구함

     

     1-2. 최대값

     : 'max' 사용

     SELECT 통계치의 범주가 될 필드명, max(최대값을 알고싶은 필드명) FROM 테이블명

     GROUP BY  통계치의 범주가 될 필드명;

      EX) SELECT week, max(likes) FROM checkins 

             GROUP BY week; # 주차별 좋아요 수의 최대값

     

     1-3. 최소값

     : 'min' 사용

     SELECT  통계치의 범주가 될 필드명, min(최소값을 알고싶은 필드명) FROM 테이블명

     GROUP BY  통계치의 범주가 될 필드명;

      EX) SELECT week, min(likes) FROM checkins

             GROUP BY week; # 주차별 좋아요 수의 최소값

     

     1-4. 합계

     : 'sum' 사용

     SELECT 통계치의 범주가 될 필드명, sum(합계를 알고싶은 필드명) FROM 테이블명

     GROUP BY 통계치의 범주가 될 필드명;

      EX) SELECT week, sum(likes) FROM checkins  

             GROUP BY week; # 주차별 좋아요 수의 합계

     

     1-5. 평균값

     : 'avg' 사용('round'로 한번 더 감싸 출력할 소수점 자리수를 지정할 수 있음)

     SELECT 통계치의 범주가 될 필드명, round(avg(평균값을 알고싶은 필드명), 출력할 소수점 자리수) FROM 테이블명

     GROUP BY 통계치의 범주가 될 필드명;

      EX) SELECT week, avg(likes) FROM users 

             GROUP BY week; # 주차별 좋아요 수의 평균값

      EX) SELECT week, round(avg(likes), 2) FROM users

             GROUP BY week; # 주차별 좋아요 수의 평균값을 소수점 둘째자리까지 나타냄

     

     

    2. ORDER BY

    SELECT * FROM 테이블명

    ORDER BY 필드명;

    💡 정렬 기준의 default는 asc(오름차순))  

      EX) SELECT * FROM checkins

             ORDER BY likes; # 좋아요를 받은 순서대로 checkins 테이블의 모든 필드를 출력

      EX) SELECT * FROM checkins

             ORDER BY likes desc; # 좋아요를 많이 받은 순서대로 checkins 테이블의 모든 필드를 출력

     

     

    3. GROUP BY + ORDER BY

    SELECT 필드명, method(*) FROM 테이블명

    GROUP BY 필드명

    ORDER BY method(*);

      💡 쿼리가 실행되는 순서는 FROM → GROUP BY → SELECT → ORDER BY!

      EX) SELECT name, count(*) FROM users

             GROUP BY name

             ORDER BY count(*); # 성씨별 회원수를 오름차순으로 정렬

     

     

    4. WHERE절 + GROUP BY + ORDER BY 

    SELECT 필드명, method(*) FROM 테이블명

    WHERE 조건

    GROUP BY 필드명

    ORDER BY method(*);

      💡 쿼리가 실행되는 순서는 FROM → WHERE GROUP BY → SELECT → ORDER BY!

      EX) SELECT name, count(*) FROM users

             WHERE email like '%gmail%' 

             GROUP BY name

             ORDER BY count(*) desc; # gmail을 사용하는 회원 중 성씨별 회원수를 내림차순으로 정렬

     

    댓글

Designed by Tistory.