MySQL 통계 Group by

SQL 2014. 11. 30. 00:30
728x90

MySQL 통계 Group by


문제 : 판매자별 상품 판매건수를 구하라.

SQL 문 : Group by 문을 활용하고, 판매자 ID 별로 건수를 SUM하면 된다. 만약 테이블 레코드가 한줄씩 들어간 경우라면 SUM 대신에 Count(goods_code) 를 하면 된다.

SELECT sales_name, SUM (goods_code)

FROM orders

GROUP BY sales_name;


집계함수
  • COUNT : 행의 개수를 센다.
  • AVG : 행들의 값들을 평균낸다.
  • SUM : 행들의 값을 모두 더한다.
  • MAX : 최대값을 구한다.
  • MIN : 최소값을 구한다.
  • STDEV : 표준편차를 구한다.

FROM 절에서 여러 개의 테이블 명세가 사용되는 경우에 가명(alias)를 사용하는 것이 더 편리할 때가 있다. 가명(alias)는 FROM 절에서 선언한다. 가명이 정의되면 다른 절에서 실제 테이블 이름 대신에 가명을 사용할 수가 있다.

가명(alias)이 FROM 이 나오기 전에 SELECT 절에서 사용하지만 FROM 절이 먼저 처리되기 때문에 아무런 문제가 없다.
가명(alias)은 256문자까지 사용 가능하며, 첫글자는 반드시 영문으로 시작해야 하고, 영문자, 숫자, 밑줄 문자를 사용할 수 있다.

동일한 테이블을 이용해서 가명(alias)를 2개 사용하여 원하는 결과를 얻어야 하는 경우가 있다. 

문제 : 홍길동 판매자보다 더 많은 상품을 판매한 사람을 출력(조회)
분석 : 홍길동 판매자가 몇 건을 판매했는지를 알아야 한다는 점, 그리고 홍길동보다 판매건수가 더 많은 걸 구해야 한다는 점이다.
SQL 코드 
SELECT s.sales_name, s.goods_code FROM orders s, orders t WHERE t.sales_name = '홍길동' and s.goods_code > t.goods_code

select Count(컬럼명) from 테이블명; // null 값은 카운트 하지 않는다
select Count(Distinct 컬럼명) from 테이블명; // 중복된 데이터없이 카운트


블로그 이미지

Link2Me

,