강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

:: ORDER BY, GROUP BY ::
작성자 : 13 김영철
등록날짜 : 2009.01.24 23:09
2,479

1. ORDER BY의 사용

데이터를 검색할 떄 특정 컬럼을 기준으로 정렬을 하여 보고자 하는 경우가 많습니다. 예를 들어 사원정보를 검색했는데 그 결과를 부작위로 보는게 아니라 이름순으로 정렬을 하거나 부서별로 정렬을 하거나 할 수 있습니다. 또는 이름순으로 정렬을 할 때 오름차순이나 내림차순을 정하여 검색 할 수도 있습니다. 이러한 목적으로 사용되는 것이 ORDER BY 입니다. SELECT 문의 마지막에 ORDER BY '컬럼명' 을 하게 되면 지정된 컬럼으로 정렬이 됩니다. 자세한 사용 방법을 알아 보도록 하겠습니다.

[예제1]

다음의 예는 Titles 테이블에서 데이터를 검색하는데 가격을 기준으로 정렬을 하는 것을 보여 줍니다.

USE Pubs
GO

SELECT title_id, pub_id, price FROM titles
ORDER BY price -- 1)

o 1)의 ORDER BY price 부분이 가격을 기준으로 정렬하라고 지시하고 있습니다.
o 오름차순이나 내림차순이 지정되지 않았으므로 기본적으로 오름차순으로 정렬됩니다. 즉 가격이 작은것부터 큰순으로 보여집니다.

[예제2]

다음의 예는 [예제1]의 결과를 가격이 큰것 부터 작은 순으로(내림차순) 표시하도록 정렬 방식을 지정한 예입니다.

USE Pubs
GO

SELECT title_id, pub_id, price FROM titles
ORDER BY price DESC

위 [예제1]의 경우 정렬 방식이 지정되지 않으면 기본적으로 오름 차순이 된다고 있습니다. 이는 다음과 같이 ASC를 이용하여 지정할 수도 있으나 대부분 생락하게 됩니다.

USE Pubs
GO

SELECT title_id, pub_id, price FROM titles
ORDER BY price ASC

이제 ORDER BY의 사용 방법을 알았습니다. 그런데 만일 컬럼이 하나가 아닌 여러개를 기준으로 동시에 정렬을 하고 싶다면 어떻게 하면 될까요?

[예제3]

다음의 예는 우선 pub_id를 기준으로 오름차순으로 정렬하고, 같은 pub_id이면 price를 기준으로 내림차순으로 정렬하는 예를 보여주고 있습니다.

USE Pubs
GO

SELECT title_id, pub_id, price FROM titles
ORDER BY pub_id ASC, price DESC

2. GROUP BY의 사용

어떤 컬럼을 기준으로 합을 구하거나 평균을 구하거나 또는 최대값이나 최소값을 구할 수 있는데 이때 사용되는 것이 GROUP BY 입니다. 예를 들어 대리점의 실적을 구하는데 각 대리점별로 소계를 내고 싶은 경우가 있습니다. 이런때 사용하시면 됩니다. 예를 들어 사용 방법을 알아보도록 하겠습니다.

[예제1]

다음은 pub_id와 price를 검색하는 일반적인 쿼리문입니다.

USE Pubs
GO

SELECT pub_id, price FROM titles
ORDER BY pub_id

실행 결과는 다음과 같습니다.

pub_id
------
price
---------------------
0736
0736
0736
0736
0736
0877
0877
0877
0877
0877
0877
0877
1389
1389
1389
1389
1389
1389

2.9900
10.9500
7.0000
19.9900
7.9900
20.9500
21.5900
19.9900
2.9900
NULL
11.9500
14.9900
22.9500
19.9900
19.9900
11.9500
20.0000
NULL


(18개 행 적용됨)

이제 저희가 보고 싶은 것은 각 pub_id별로 price의 합을, 즉 소계를 보고자 합니다. 다음과 같이 GROUP BY를 사용하시면 됩니다.

USE Pubs
GO

SELECT pub_id, SUM(price) AS tot_price FROM titles
GROUP BY pub_id

실행 결과는 다음과 같습니다.

pub_id
------
tot_price
---------------------
0736
0877
1389

48.9200
92.4600
94.8800


(3개 행 적용됨)

경고: 집계 또는 다른 SET 연산에 의해 Null 값이 제거되었습니다.

"경고: 집계 또는 다른 SET 연산에 의해 Null 값이 제거되었습니다." 문구가 표시된 이유는 price 컬럼에 NULL 값이 포함되어 있어 이를 무시했다는 의미입니다.

[예제2]

다음의 예는 COUNT 함수를 이용하여 레코드의 갯수를 구하는 예입니다..

USE Pubs
GO

SELECT pub_id, COUNT(*) AS cnt_price FROM titles
GROUP BY pub_id

실행 결과는 다음과 같습니다.

pub_id
------
cnt_price
---------------------
0736
0877
1389

5
7
6


(3개 행 적용됨)

[예제3]

다음의 예는 COUNT 함수를 이용하여 레코드의 갯수를 구하는데, 갯수가 5보다 큰것만을 표시하는 예입니다. HAVING을 사용했습니다.

USE Pubs
GO

SELECT pub_id, COUNT(*) AS cnt_price FROM titles
GROUP BY pub_id
HAVING COUNT(*) > 5

실행 결과는 다음과 같습니다.

pub_id
------
cnt_price
---------------------
0877
1389

7
6


(2개 행 적용됨)

이렇든 HAVING은 GROUP BY와 항상 같이 사용되며 GROUP BY를 사용할 때 조건을 주는 방법입니다.

기억하세요! HAVING은 GROUP BY와 같이 사용된다!

--------------------------------------------------------------------------------------

출처 : http://www.sqlworld.pe.kr

 

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2715 MySQL 에서 사용되는 sql문 정리 M 최고의하루 12.19 2743
2714 [ MySQL ] MySQL 기본적으로 익혀야할 과제 M 최고의하루 12.18 2501
2713 [ MySQL ] MySql4.x / PHP4.x / Apache 한글깨짐 M 최고의하루 12.18 3258
2712 [ MySQL ] MySQL 5 한글 UTF8 한글 깨짐 분석 (Windows 용) M 최고의하루 12.04 5731
2711 MySQL 명령어 정리 M 최고의하루 12.04 2389
2710 MSSQL 페이징 13 김영철 01.24 2488
2709 mssql 암호화 13 김영철 01.24 2487
2708 mysql과 mssql의 변환시 유의사항 13 김영철 01.24 2673
2707 mssql 백업방법 13 김영철 01.24 2773
2706 데이터 정보 확인방법 13 김영철 01.24 2355
2705 MS-SQL JDBC "ResultSet Can Not Re-Read Row Data" 예외 처리 방법 13 김영철 01.24 3284
2704 IDENTITY 속성 13 김영철 01.24 2161
2703 Jsp + Mssql Long타입 데이타 사용시 문제점 13 김영철 01.24 2764
2702 PWDENCRYPT와 PWDCOMPARE를 통해 암호화 기능 13 김영철 01.24 3471
2701 MSSQL 기본값 13 김영철 01.24 3037
2700 :: 데이터베이스의 종류 :: 13 김영철 01.24 2350
2699 :: 데이터베이스의 객체 :: 13 김영철 01.24 2635
2698 :: Transact-SQL 이란 :: 13 김영철 01.24 2887
2697 :: 단순 SELECT 문 :: 13 김영철 01.24 2368
2696 :: WHERE 절 :: 13 김영철 01.24 2804
열람중 :: ORDER BY, GROUP BY :: 13 김영철 01.24 2480
2694 :: 조인(Join) 이란? :: 13 김영철 01.24 2182
2693 :: 조인(Join)의 사용 예 :: 13 김영철 01.24 2343
2692 :: SELECT INTO 와 INSERT INTO :: 13 김영철 01.24 2576
2691 :: 데이터베이스의 구조 :: 13 김영철 01.24 2307
2690 :: 데이터베이스 생성 :: 13 김영철 01.24 2113
2689 :: 데이터 무결성 :: [출처] :: 데이터 무결성 :: (쇼핑몰 대박못내는 진짜이유!) |작성자 프런티어 13 김영철 01.24 3177
2688 :: 인덱스(Index) :: 13 김영철 01.24 2091
2687 :: 뷰(View) :: 13 김영철 01.24 2817
2686 :: 저장프로시저 (Stored Procedure) :: 13 김영철 01.24 2784
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취