정보처리기사 실기 2회차를 보고, 또 떨어지고 나서 느낀점은 '코딩 문제는 일단 다 맞아야 겠구나!' 였어요. 용어를 묻는 문제가 생각보다 너무 많이 나오기도 했고, 그 내용이 너무 지엽적이여서 모든 문제를 다 맞추기 위해 공부를 하는건 거의 불가능 하더라구요.
특히나 2020년도 이후에 ncs 기반으로 개편이 되고 나서, 프로그래밍 문제가 8문제 정도 나오고 있는데요. 60점이 합격점수에 12문제만 맞으면 되고, 프로그래밍 문제 8문제 다 맞추고 다른거 4개 더 맞겠다 라는 생각으로 접근해야 하는 것 같아요.
프로그래밍 문제는 C언어, 자바, 파이썬, SQL 이렇게 4개의 부분에서 나오는데요. 저는 정리하면서 공부를 하는 습관이 있어서 이렇게 블로그에 정리를 하면서, 하나 하나 기출문제를 분석해 보려고 합니다.
C언어와 관련된 기출문제 풀이는 제가 블로그에 따로 포스팅해 두었습니다!
정보처리기사 실기 SQL 기출 문제 (2020년~ 2022년도/ 9회분)
대부분의 문제가 결과값이나 빈칸에 들어갈 알맞은 말을 쓰는 것이여서 문제 부분은 생략 하겠습니다.
1. 2022년 2회차 4번
[TABLE]
index | col1 | col2 |
1 | 2 | Null |
2 | 3 | 6 |
3 | 5 | 5 |
4 | 6 | 3 |
5 | Null | 3 |
SELECT count(col2)
FROM TABLE
WHERE col1 in(2,3) or col2 in(3,5);
답) 4
집계함수 문제입니다. 집계 함수란 입력이 여러개의 로우이고, 출력이 하나인 결과인 것을 말합니다. 테이블의 전체 로우 수를 구하는 count, 평균(avg), 총합(sum), 최대값(max), 최소값(min) 등등이 이런 함수들 입니다
SQL문제를 볼땐, From절 -> Where절 - Select절 순으로 봅니다.
Where절에서 col1 in(2,3) -> 1행, 2행 / col2 in(3,5) -> 3행,4행 5행
Select 절을 보면, col2 즉 2열의 갯수를 세라는 문제입니다.
Count(*) = Null값을 포함한 모든 갯수/ Count(컬럼명)= Null값을 포함하지 않은 모든 갯수를 말합니다. 따라서 col2에서 Null값을 제외한 모든 행의 갯수를 세면 4 입니다.
2. 2022년 2회차 12번
Q) 다음 테이블에서 πTTL(employee)에 대한 연산 결과 값을 작성하시오.
[employee 테이블]
답) 1. TTL / 2. 부장 / 3. 대리 / 4. 과장 / 5. 차장
관계 해석 | |||
관계 대수 | 필수 | 단항 | selection 𝝈 <행> |
projection 𝛑 <열> | |||
이항 | union(합집합) | ||
차집합 | |||
cartesian product(카티션곱) 𝝬 | |||
편의 | 이항 | intersection(교집합) | |
join(조인)⋈ <연관된 칼럼끼리 통합> | |||
division |
𝛑 는 열에 대한 값을 계산하는 관계대수이다.
3. 2022년 1회차 4번
[성적테이블]
index | name | score |
1 | Kim | 95 |
2 | Gun | 90 |
3 | Son | 80 |
4 | Jung | 60 |
SELECT name, score FROM 성적 ( 1 ) BY ( 2 ) ( 3 )
답) 1. ORDER / 2. score / 3. DESC
SELECT --- FROM ----
WHERE---
GROUP BY---
HAVING---
ORDER BY---
가장 기본적인 형태
오름차순 : ASC
내림차순 : DESC
4. 2021년 3회차 13번
Q) 다음은, 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오.
4
Like연산자 : 특정 패턴을 포함할때 라는 의미
와일드카드 문자 (% 와 _)
'a%' | a로 시작하는 모든 값 |
'%a' | a로 끝나는 모든 값 |
'%a%' | a를 포함하는 모든 값 |
'a%y' | a로 시작, y로 끝나는 모든값 |
'[sdf]%' | s나 d나 f로 시작하는 모든 값 |
'[a-c]%' | : a,b,c로 시작하는 모든 값 |
Join - inner join/ left join/ right join
첫번째테이블 inner join 두번째 테이블 ON 조건
Cross join은 특정 기준 없이 모든 경우의 수에 대한 결합을 결과로 보여준다. 그래서 ON절이 필요없다.
NAME | RULE | |
SMITH | S% | O |
SMITH | %T% | O |
ALLEN | S% | X |
ALLEN | %T% | X |
SCOTT | S% | O |
SCOTT | %T% | O |
5. 2021년 2회차 5번
Q) 다음은 테이블을 수정할때의 상황입니다. SQL 보기에서 괄호안에 알맞는 문장을 작성하시오.
( 1 ) 테이블명 ( 2 ) 컬럼 = 값 WHRE 점수 >= 90;
1. UPDATE
2. SET
6. 2021년 2회차 6번
Q) 다음 SQL 보기에서 JOIN할 경우 괄호안에 알맞는 문장을 작성하시오.
SELECT .... FROM 학생정보 a JOIN 학과정보 b ( 1 ) a.학과 = b.( 2 )
1. ON
2. 학과
Join은 ON을 통해 조건을 설정한다.
또 공통된 요소를 통해 결합을 하기 때문에 2번에는 학과가 들어간다.
7. 2021년 2회차 10번
Q) '이름'이란 컬럼에 '이'로 시작하는 문자열을 '내림차순'하는 쿼리 결과 내용입니다. (실제 시험에는 결과 이미지가 있습니다.)
SELECT .... FROM ... WHERE 이름 LIKE ( 1 ) ORDER BY ( 2 )
1. 이%
2. DESC
'a%' | a로 시작하는 모든 값 |
'%a' | a로 끝나는 모든 값 |
'%a%' | a를 포함하는 모든 값 |
'a%y' | a로 시작, y로 끝나는 모든값 |
'[sdf]%' | s나 d나 f로 시작하는 모든 값 |
'[a-c]%' | : a,b,c로 시작하는 모든 값 |
오름차순 - ASC / 내림차순 - DESC
8. 2021년 1회차 6번
EMPNO | SAL |
100 | 1000 |
200 | 3000 |
300 | 1500 |
SELECT COUNT(*) FROM 급여
WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200;
답) 1
9. 2020년 4회차 16번
Q) 다음 조건을 만족하면서 학과별로 튜플 수가 얼마인지 구하는 SQL문을 쓰시오.
- 대소문자를 구분하지 않는다.
- WHERE 구문을 사용하지 않는다.
- GROUP BY 를 사용한다.
- 세미콜론(;)은 생략 가능하다.
- 별칭(AS)을 사용해야 한다. (별칭 사용 시 별칭은 작은 따옴표를 써야 함)
- 집계 함수를 사용해야 한다.
[학생]
학과 | 학생 |
전기 | 이순신 |
컴퓨터 | 안중근 |
컴퓨터 | 윤봉길 |
전자 | 이봉창 |
전자 | 강우규 |
[결과]
학과 | 학과별 튜플수 |
전기 | 1 |
컴퓨터 | 2 |
전자 | 2 |
SELECT 학과 ,COUNT(학과) AS 학과별튜플수 FROM 학생 GROUP BY 학과;
10. 2020년 3회차 8번
Q) <성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름' , '최소점수',' 최대점수' 검색
- 대소문자를 구분하지 않는다.
- WHERE 구분을 사용하지 않는다.
- GROUP BY, HAVING구문을 반드시 사용한다.
- 세미콜론(;)은 생략 가능하다.
- 별칭(AS)을 사용해야 한다.
[성적]
과목코드 | 과목이름 | 학점 | 점수 |
1000 | 컴퓨터과학 | A+ | 95 |
2000 | 운영체제 | B+ | 85 |
1000 | 컴퓨터 과학 | B+ | 85 |
2000 | 운영체제 | B | 80 |
[결과]
과목이름 | 최소점수 | 최대점수 |
컴퓨터과학 | 85 | 95 |
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적
GROUP BY 과목이름 HAVING AVG(점수) >= 90;
11. 2020년 3회차 9번
Q) 학생 테이블에서 이름이 민수인 튜플을 삭제하는 SQL문을 작성하시오
[학생]
학번 | 이름 | 점수 | 과목 이름 |
1000 | 김정미 | 90 | 알고리즘 |
2000 | 강은미 | 95 | 데이터베이스 |
3000 | 홍길동 | 90 | 전산수학 |
4000 | 민수 | 95 | 운영체제 |
DELETE FROM 학생 WHERE 이름 = '민수';
12. 2020년 3회차 20번
Q) 학생 테이블 주소 속성을 추가하는 SQL문을 작성하시오.
( 1. ) TABLE 학생 ( 2. ) 주소 VARCHAR(20);
1. ALTER / 2. ADD
13. 2020년 2회차 6번
Q) 학생 테이블은 학번, 이름, 학년, 수강과목, 점수, 연락처를 속성으로 가진다. 아래 조건을 만족하는 SQL문을 작성하시오.
- 학생 테이블에서 3,4학년인 학번, 이름을 조회한다.
- IN 연산자 사용해야 한다.
[학생]
학번 | 이름 | 학년 | 수강과목 | 점수 | 연락처 |
1000 | 김이름 | 1 | 수학 | 90 | 010-1111- 2222 |
2000 | 장이름 | 2 | 과학 | 95 | 010-2222-2222 |
3000 | 허이름 | 3 | 미술 | 90 | 010-3333-3333 |
4000 | 조이름 | 4 | 음악 | 95 | 010-4444-4444 |
답) SELECT 학번, 이름 FROM 학생 WHERE 학년 IN (3,4);
14. 2020년 2회차 12번
Q) 학생 테이블의 name 속성에 IDX_NAME 이름으로 인덱스 생성하는 SQL문을 작성하시오.
STID | NAME | SCORE | DEPTID |
1000 | 김이름 | 90 | 1 |
2000 | 허이름 | 95 | 2 |
3000 | 조이름 | 90 | 3 |
4000 | 장이름 | 95 | 4 |
CREATE INDEX IDX_NAME ON 학생(NAME)
15. 2020년 1회차 6번
Q) STUDENT 테이블에서 컴퓨터과 학생 50명, 인터넷과 학생 100명, 사무자동화과 학생 50명의 정보가 저장되어 있을 때, 다음 SQL문의 실행 결과에 따른 튜플의 수는? (단, DEPT 칼럼은 학과명이다.)
1) SELECT DERP FROM STUDENT;
2) SELECT DISTINCT DEPT FROM STUDENT;
3) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '컴퓨터과';
1. 200 / 2. 3/ 3. 1
DISTINCT 중복제거 함수
SELECT DISTINCT (컬럼명) FROM
'정보처리기사' 카테고리의 다른 글
정보처리기사 실기 프로그래밍 문제 파이썬 기출 풀이 모음 (7) | 2022.10.14 |
---|---|
정보처리기사 실기 프로그래밍 문제 Java 기출 풀이 모음 (3) | 2022.10.14 |
정보처리기사 실기 프로그래밍 문제 C언어 기출 모음 (19) | 2022.10.11 |
티스토리 코드 블럭 폰트 크기 변경 & 접은글 모양 변경 (4) | 2022.10.10 |