English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PostgreSQL HAVING 절

HAVING 절은 그룹화된 각 그룹의 데이터를 필터링할 수 있습니다.

WHERE 절은 선택된 열에 조건을 설정하며, HAVING 절은 GROUP BY 절에 의해 생성된 그룹에 조건을 설정합니다.

문법

HAVING 절이 SELECT 쿼리에서 위치는 다음과 같습니다:

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

HAVING 절은 GROUP BY 절 뒤, ORDER BY 절 앞에 위치해야 합니다. HAVING 절이 SELECT 문에서 기본 문법은 다음과 같습니다:

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

온라인 예제

COMPANY 테이블 생성(COMPANY SQL 파일 다운로드 ),데이터 내용은 다음과 같습니다:

w3codeboxdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim  |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

다음 예제는 NAME 필드 값에 따라 그룹화된 이름의 name(이름) 필드의 계산이 2 데이터:

SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) < 2;

다음과 같은 결과를 얻습니다:

  name
 -------
  Teddy
  Paul
  Mark
  David
  Allen
  Kim
  James
(7 rows)

테이블에 몇 가지 데이터를 추가합니다:

INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00);
INSERT INTO COMPANY VALUES (9, 'James', 44, 'Norway', 5000.00);
INSERT INTO COMPANY VALUES (10, 'James', 45, 'Texas', 5000.00);

이제 COMPANY 테이블의 기록은 다음과 같습니다:

 id | name  | age | address      | salary
 ----+-------+-----+--------------+--------
   1 | Paul  |  32 | California   |  20000
   2 | Allen |  25 | Texas        |  15000
   3 | Teddy |  23 | Norway       |  20000
   4 | Mark  |  25 | Rich-Mond    |  65000
   5 | David |  27 | Texas        |  85000
   6 | Kim  |  22 | South-Hall |  45000
   7 | James |  24 | Houston      |  10000
   8 | Paul  |  24 | Houston      |  20000
   9 | James |  44 | Norway       |   5000
  10 | James |  45 | Texas        |   5000
(10 rows)

다음 예제는 name 필드 값에 따라 그룹화된 이름의 계산이 1 데이터:

w3codeboxdb-# SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) > 1;

결과를 다음과 같이 얻습니다:

 name
-------
 Paul
 James
(2 rows)