지난 번 2017/05/02 - [SQL] - [SQL] MS Access 에서 연습 환경 구축하기 에 이어
다음과 같이 명령어를 넣어 보자.
SELECT
count(name)
FROM
product_data
;
name 열에 있는 항목의 개수를 세라는 명령이다.
20개라고 알려준다.
제조사manufacturer 도 세 보자.
역시 20이라는 결과가 나온다. 말하자면 행이 20개라는 이야기다.
하지만 제조사의 종류가 몇 종류인지 알아보고 싶다면?
중복을 제거하고 세야 할 것이다.
이럴 때 DISTINCT 명령어를 사용한다.
SELECT
DISTINCT manufacturer
FROM
product_data
;
대소문자의 구별은 편의를 위한 것일 뿐, 큰 의미는 없다.
중복을 제거하고 항목이 표시된다.
개수를 세고 싶다면 count와 연결시키면 된다.
SELECT
COUNT(DISTINCT manufacturer)
FROM
product_data
;
쨘? 에러가 난다 -_-
Access의 엔진은 다른 SQL들과는 달리 COUNT(DISTINCT) 를 지원하지 않는다고... -_-
참고로 2017/07/25 - [SQL] - [SQL] apmsetup으로 연습환경 구축하기, 데이터 넣기 Import 을 이용해
Access가 아닌 다른 환경에서 해당 쿼리를 실행하면 다음과 같이 잘 실행되는 것을 알 수 있다.
하지만 이가 없으면 잇몸으로라도 해야 하는 법. COUNT(DISTINCT)가 동작하지 않는 환경에서는 어떻게 원하는 결과를 낼까?
DISTINCT까지는 잘 적용되므로, 그 결과에서 개수를 세면 되겠다.
이전의 쿼리를 통채로 FROM 안에 넣어 보자.
SELECT
COUNT(manufacturer)
FROM
(
SELECT
DISTINCT manufacturer
FROM
product_data
)
;
괄호를 붙이고, 세미콜론을 붙이지 않는 것에 주의하자.
다행히 이번 명령은 잘 알아듣는다.
제조사의 총 수는 세 개라고
보면 FROM에서 선언할 '데이터를 가져올 테이블' 자체를 우리가 원하는 것으로 1차 필터링해 준 것을 볼 수 있다.
괄호 안의 부분 같은 것을 '서브 쿼리'라고 한다.
마지막으로, Expr1000 같은 컬럼명이 마음에 들지 않는다면 바꾸어 줄 수 있다.
as 명령을 사용하면 된다.
SELECT
COUNT(manufacturer) as "제조사 수"
FROM
(
SELECT
DISTINCT manufacturer
FROM
product_data
)
;
쨘!
'MySQL' 카테고리의 다른 글
[MySQL] 테이블에 데이터 입력하기 INSERT INTO (0) | 2017.12.10 |
---|---|
[MySQL] 테이블 이름 확인하기 SHOW TABLES (0) | 2017.12.08 |
[MySQL] DB에서 특정 행들만 가져오기(1) - WHERE 절의 "or"를 이용 (0) | 2017.09.08 |
[MySQL] 결과 테이블의 일부 조건만 출력하기 HAVING (0) | 2017.08.04 |
[MySQL] 일부 값만 음수로 계산하기 (조건문 CASE) (0) | 2017.07.28 |
[MySQL] apmsetup으로 연습환경 구축하기, 데이터 넣기 Import (0) | 2017.07.25 |
[MySQL] 다른 테이블에서 데이터 참조하기 JOIN (vlookup) (2) | 2017.06.15 |
[MySQL] 합 구하기 sum / 그룹별로 집계하기 group by / 정렬 order by (1) | 2017.05.05 |
[MySQL] 조건절 WHERE 사용하기(and, or, not, like) (0) | 2017.05.04 |
[MySQL] MS Access 에서 연습 환경 구축하기 (0) | 2017.05.02 |
댓글