코딩일기/자격증

[정보처리기사] 집계 함수와 GROUP BY를 활용하는 SQL 문제 | 2020년 4회 정보처리기사 실기 기출문제

jhy_2023 2024. 12. 3. 10:00
728x90
반응형

문제

<학생> 테이블을 대상으로 '요구사항'을 적용하여 아래 <결과> 테이블과 같이 출력하는 SQL문을 작성하시오.

1. <학생> 테이블

<학생>

2. <결과> 테이블

3. 요구사항
- WHERE 구문을 사용하지 않는다.
- GROUP BY구문과 집계 함수를 사용해야 한다.
- 별칭(AS)을 사용해야 한다.
- 인용 문구를 사용시 작은따옴표(') 서용 가능합니다.
- 대소문자를 구분하지 않는다.
- 세미콜론(;)은 생략 가능하다.

정답

SELECT
	학과, COUNT(*) AS 학과별튜플수
FROM 학생
GROUP BY 학과

 

반응형

해설

📌 기본 구문 개념

[ 참고 ]
▼ SQL 기본 구문 정리 select from where and/or group by having order by 

 

[정보처리기사] SQL 문법(구문) | SQL 기본 구문 정리 select from where and/or group by having order by

📌 SQL 기본 쿼리 형식SQL 기본 쿼리 형식 (종합) : SELECT 컬럼1, 컬럼2, 집계함수(컬럼명) AS 별칭FROM 테이블명WHERE 조건1 AND 조건2 OR 조건3GROUP BY 그룹화할_컬럼HAVING 집계함수_조건ORDER BY 정렬할_컬럼

august-jhy.tistory.com


1️⃣ SELECT 구문

SELECT 형식 : 
SELECT 컬럼1, 컬럼2, ..., 집계함수(컬럼명) AS 별칭
FROM 테이블명
  • SELECT 구문에서는 조회할 컬럼이나 계산식을 지정합니다.
    여러 개의 컬럼을 조회할 때는 쉼표로 구분합니다.
    집계 함수(SUM, MIN, MAX, AVG 등)를 사용하여 계산된 값을 구할 수 있으며, 
    AS를 통해 별칭을 지정할 수 있습니다.
  • FROM은 데이터를 조회할 테이블을 지정합니다. 
COUNT() 함수 형식 : 
SELECT COUNT(*) FROM 테이블명;
SELECT COUNT(컬럼명) FROM 테이블명;
  • SQL에서 COUNT() 함수는 테이블 또는 그룹 내에서 행의 개수를 계산하는 데 사용되는 집계 함수입니다.
  • COUNT(*)는 테이블의 모든 행을 계산합니다. NULL 값을 포함한 모든 행의 개수를 반환합니다.
  • COUNT(컬럼명)은 특정 열에서 NULL이 아닌 값만 계산합니다. NULL 값은 무시되며, 비어 있지 않은 데이터만 포함됩니다.
AS 형식 :
SELECT 컬럼명 또는 계산식 AS 별칭명
FROM 테이블명
  • SQL에서 별칭(Alias)은 테이블이나 컬럼에 임시 이름을 지정하는 기능으로, AS 키워드를 사용해 작성합니다.
    AS 키워드를 통해 컬럼 또는 테이블에 임시 이름을 지정하며, 이를 통해 쿼리의 가독성과 결과의 명확성을 높일 수 있습니다.
ORDER BY 형식 : 
SELECT 컬럼1, 컬럼2, ...
FROM 테이블명
ORDER BY 정렬할_컬럼 [ASC | DESC];
  • ORDER BY는 SQL에서 결과 데이터를 정렬하는 데 사용되는 구문입니다.
  • 정렬 기준이 되는 열(정렬할_컬럼)을 지정하고, ASC(오름차순) 또는 DESC(내림차순)를 선택하여 정렬 순서를 정의합니다
  • ASC: 기본값으로 작은 값 → 큰 값 순서로 정렬. DESC: 큰 값 → 작은 값 순서로 정렬.
728x90

 


2️⃣ GROUP BY 구문 

GROUP BY 형식 : 
SELECT 컬럼1, 집계함수(컬럼2), ...
FROM 테이블명
GROUP BY 그룹화할_컬럼
HAVING 조건;
  • GROUP BY는 쿼리의 SELECT에서 집계 함수가 사용될 때 반드시 필요한 구문입니다.  GROUP BY는 주로 집계 함수(MIN 최소 값, MAX 최대 값, AVG 평균 값 등)를 사용할 때 함께 활용됩니다. 
  • 데이터를 특정 컬럼으로 그룹화하면, 같은 값을 가진 데이터들이 하나의 그룹으로 묶입니다. 이 문제에서는 학과 열을 기준으로 그룹화하였습니다. 따라서 동일한 학과 값을 가진 데이터들이 한 그룹으로 묶입니다.
  • HAVING 구문은 WHERE과 유사하지만, 그룹화된 데이터에 조건을 걸기 위해 사용됩니다. 주로 집계 함수의 결과를 필터링하는 데 쓰입니다.
  • 일반적으로 WHERE 절은 개별 행을 필터링할 때 사용되지만, HAVING은 집계 결과에 대한 조건을 적용하는 데 사용됩니다.

📌 요구사항 분석 :

  1. WHERE 절 없이 처리:
    • WHERE 절은 특정 조건으로 데이터를 필터링하는 데 사용되지만, 여기서는 사용하지 않습니다.
    • 모든 데이터를 그룹화하고 집계해야 합니다.
  2. GROUP BY 구문과 집계 함수 사용:
    • GROUP BY: 특정 열(여기서는 학과)의 값을 기준으로 데이터를 그룹화.
    • 집계 함수: 각 그룹의 데이터를 계산. 여기서는 COUNT()를 사용하여 학과별 학생 수를 계산합니다.
  3. 별칭(AS) 사용:
    • 출력 열에 명확한 이름을 지정하기 위해 AS를 사용합니다.
    • 예: COUNT(*) AS 학과별튜플수


📌 문제 해설

이 SQL문은 다음과 같은 작업을 수행합니다:

  1. 학생 테이블에서 학과별로 데이터를 그룹화(GROUP BY 학과).
  2. 각 그룹에 속한 데이터 개수를 계산(COUNT(*))
  3. 출력 열은 학과와 학과별튜플수로 표시.

1️⃣ SELECT 학과, COUNT(*) AS 학과별튜플수

  • SELECT: 결과로 출력할 열(column)을 지정합니다.
    • 여기서는 학과와 COUNT(*)를 선택합니다.
  • 학과:
    • 학생 테이블에서 "학과" 열을 가져옵니다.
    • 이 열은 그룹화(Grouping)의 기준이 되며, 결과 테이블에도 포함됩니다.
  • COUNT(*):
    • 각 그룹(학과)에 포함된 행(row)의 개수를 계산합니다.
    • *는 해당 행에 있는 모든 열을 대상으로 개수를 셉니다.
    • 예를 들어, 학과가 "컴퓨터"인 데이터가 2개 있으면 결과는 2가 됩니다.
  • AS 학과별튜플수:
    • COUNT(*)의 결과 열에 별칭을 붙입니다.
    • 결과 테이블에서는 이 열이 "학과별튜플수"라는 이름으로 표시됩니다.

2️⃣ FROM 학생

  • FROM: 데이터를 가져올 테이블을 지정합니다.
    • 여기서는 학생 테이블이 대상입니다.

3️⃣ GROUP BY 학과

  • GROUP BY: 데이터를 그룹화(Grouping)합니다.
    • 여기서는 학과 열을 기준으로 그룹화됩니다.
    • 동일한 학과 값을 가진 데이터들이 한 그룹으로 묶입니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형