Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL

SQL

SQL에는 데이터베이스에 대한 쿼리를 만드는 데 사용되는 다양한 유형의 작업이 있습니다. SQL의 HAVING 문은 초기 쿼리 위에 하위 쿼리처럼 작동합니다. 하나의 공통 값을 가진 항목이 압도적으로 많고 이를 추가로 필터링하려는 경우에 잘 작동합니다. 이 기사에서는 어떻게 작동하는지 살펴보겠습니다.

준비

MySQL을 사용하는 이 SQL Fiddle에서는 이러한 예제에 사용되는 샘플 스키마를 만들었습니다.

create table Cars (
	id INT PRIMARY KEY,
	year VARCHAR(50),
	car_make VARCHAR(50),
	car_model VARCHAR(50)
);

이렇게 하면 "Cars"라는 테이블이 생성되고 각 자동차의 제조사 모델과 연도를 살펴보는 스키마가 있습니다. 다음 블록은 해당 열에 값을 삽입합니다.

insert into Cars (id, year, car_make, car_model) values (1, 2011, 'Mazda', 'Miata MX-5');
insert into Cars (id, year, car_make, car_model) values (2, 1969, 'Ford', 'Mustang');
insert into Cars (id, year, car_make, car_model) values (3, 2007, 'Toyota', '4Runner');
insert into Cars (id, year, car_make, car_model) values (4, 2013, 'Porsche', '911');
insert into Cars (id, year, car_make, car_model) values (5, 1991, 'Buick', 'Coachbuilder');
insert into Cars (id, year, car_make, car_model) values (6, 2007, 'Kia', 'Sportage');
insert into Cars (id, year, car_make, car_model) values (7, 1997, 'Oldsmobile', 'Cutlass Supreme');
insert into Cars (id, year, car_make, car_model) values (8, 2003, 'BMW', '7 Series');
insert into Cars (id, year, car_make, car_model) values (9, 1996, 'Ford', 'F150');
insert into Cars (id, year, car_make, car_model) values (10, 1992, 'Suzuki', 'SJ');
insert into Cars (id, year, car_make, car_model) values (11, 2001, 'Jeep', 'Grand Cherokee');
insert into Cars (id, year, car_make, car_model) values (12, 2000, 'Ford', 'F250');
insert into Cars (id, year, car_make, car_model) values (13, 2003, 'Honda', 'Insight');
insert into Cars (id, year, car_make, car_model) values (14, 2006, 'Chevrolet', 'HHR Panel');
insert into Cars (id, year, car_make, car_model) values (15, 1987, 'Mercedes-Benz', 'S-Class');
insert into Cars (id, year, car_make, car_model) values (16, 2004, 'Chevrolet', 'SSR');
insert into Cars (id, year, car_make, car_model) values (17, 1990, 'Maserati', '228');
insert into Cars (id, year, car_make, car_model) values (18, 2005, 'Saturn', 'Ion');
insert into Cars (id, year, car_make, car_model) values (19, 1987, 'Audi', '5000CS');
insert into Cars (id, year, car_make, car_model) values (20, 1999, 'Chevrolet', 'S10');
insert into Cars (id, year, car_make, car_model) values (21, 2007, 'Jeep', 'Liberty');
insert into Cars (id, year, car_make, car_model) values (22, 2002, 'Lamborghini', 'Murciélago');
insert into Cars (id, year, car_make, car_model) values (23, 2000, 'Hyundai', 'Tiburon');
insert into Cars (id, year, car_make, car_model) values (24, 2011, 'Jeep', 'Patriot');
insert into Cars (id, year, car_make, car_model) values (25, 1985, 'Pontiac', 'Sunbird');

이 연습을 위해 자신의 데이터를 모의하려면 mockaroo.com을 사용하는 것이 좋습니다. 이 방법을 사용하면 아주 간단하게 데이터베이스 스키마를 구성할 수 있습니다.

HAVING 사용 방법

SELECT COUNT(id), car_make
FROM Cars
GROUP BY car_make
HAVING COUNT(id) > 0;

집계 함수를 사용해야 하고 WHERE 절을 사용할 수 없는 경우 HAVING을 사용합니다. 집계 함수는 일종의 연산을 수행하고 단일 값을 반환하는 함수입니다. COUNT, AVG 또는 SUM을 생각하십시오. 위의 코드는 다음을 반환합니다.

COUNT(id) 자동차 제작
1 아우디
1 BMW
1 뷰익
3 쉐보레
3 포드
1 혼다
1 현대
3 지프
1 기아
1 람보르기니
1 마세라티
1 마쓰다
1 메르세데스-벤츠
1 올즈모빌
1 폰티악
1 포르쉐
1 토성
1 스즈키
1 도요타

우리는 select 문을 사용하여 존재하는 car_make의 sql COUNT를 가져오고 car_make로 구분하는 group by 절을 사용합니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

그게 다야! 참고로 SQL 쿼리의 HAVING 절은 집계 함수를 사용하여 데이터베이스에 대한 추가 쿼리 작업을 수행하는 하위 필터입니다.

다른 집계 함수로 실험하여 이 고유한 절에 대한 지식을 높이십시오!