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 테이블명; // 중복된 데이터없이 카운트
select Count(컬럼명) from 테이블명; // null 값은 카운트 하지 않는다
select Count(Distinct 컬럼명) from 테이블명; // 중복된 데이터없이 카운트
728x90
'SQL' 카테고리의 다른 글
MySQL 테이블 이름변경, 삭제, 칼럼삭제, 칼럼추가 (0) | 2014.12.08 |
---|---|
phpMyAdmin 을 이용한 테이블 등록 (0) | 2014.12.01 |
MySQL 인덱스 (0) | 2014.11.25 |
MySQL 테이블간 데이터 복사(구조가 다른 경우 포함) (0) | 2014.11.12 |
[보안] MySQL의 root 패스워드 분실시 대처법 (0) | 2014.11.09 |