![](https://blog.kakaocdn.net/dn/beoS8U/btsB19AIIYv/PTeNzoLmz1LkqtJkZ41q80/img.png)
===
쿼리 만들기
조건 만들기
정렬 하기
![](https://blog.kakaocdn.net/dn/sntp9/btsB6iJ7Lhn/eikSbmeF4HPAprWOPfz2Ak/img.png)
[만들기]->[쿼리 디자인] 실행
![](https://blog.kakaocdn.net/dn/r7gIx/btsB7lGpYbj/FVY3kXqHRcUuBKynAD03Nk/img.png)
문제에서 요구하는 테이블(회원) 불러오기
![](https://blog.kakaocdn.net/dn/rSnh2/btsB5DVppcM/Km1AoRd5c0Ak28ZrXTRnnK/img.png)
보여줄 필드와 조건 필드 등을 다 불러오기
![](https://blog.kakaocdn.net/dn/ckFkbj/btsCav2BBXf/XNakA4iZ2WqimOAtb06Z41/img.png)
다음과 같이
문제에서 요구하는 정렬과 조건을 기입
![](https://blog.kakaocdn.net/dn/oxXEI/btsB3cYkmZl/i8jHPOic4VnQltuRZjXEJ1/img.png)
===
SELECT INTO 관련 쿼리 만들기
![](https://blog.kakaocdn.net/dn/DOzt5/btsB7kOi7iR/0yklH2KB4oD1QQYvn6TPE0/img.png)
회원 테이블 대상으로 다음과 같이 구성하고
[전화번호]필드의 조건을 다음과 같이 만든다.
1) is null은 문자열이 null(비어있는지) 체크해준다는 뜻이다.
2) 와일드 검색을 쓰되, 앞에 "Not"을 써준다.
![](https://blog.kakaocdn.net/dn/p5c2m/btsB2al4bF0/ITiGK7VGUrjg3LOeehqd0K/img.png)
그 다음 SELECT INTO 를 해줄 기능
[디자인]->[테이블 만들기]를 실행해서
문제에서 요구하는 테이블 이름을 써준다.
![](https://blog.kakaocdn.net/dn/dPMcUF/btsB7TXdWUh/SGoFXULOHbqm6YDO99mbu1/img.png)
위의 작업으로
자동으로 생성된 쿼리는
다음과 같다.
SELECT
회원.회원번호, 회원.성명, 회원.과목, 회원.전화번호
INTO
업데이트_대상회원
FROM
회원
WHERE
(
(
(회원.전화번호) Is Null
)
)
OR
(
(
(회원.전화번호) Not Like "010*"
)
);
===
크로스탭 : 무조건 "행 머리글", "열 머리글" 먼저 파악하기
행 머리글 : 프로그램, 소계(회원번호)
값 : 소계(회원번호)
열머리글 : 구분상세
![](https://blog.kakaocdn.net/dn/cvdaD6/btsB7dByItk/FsTKYEUemBh6D4bzzfLMnK/img.png)
먼저 문제에서 요구한 테이블 3개를 넣은 후,
[회원.과목] 필드와 [과목.과목코드] 필드가 연관이 있으므로
다음과 같이 드래그해서 연결 지어준다.
![](https://blog.kakaocdn.net/dn/yeZi1/btsB6msiiCj/ey8Axuicvwpv33Ltb4wH8K/img.png)
그리고 [디자인]->[크로스 탭] 실행
![](https://blog.kakaocdn.net/dn/9gHpu/btsB5GYQJSI/revZfKMpoINVD912LHJRl1/img.png)
파악된 행/열머리글/값을 넣기
행 머리글 : 프로그램, 소계(회원번호)
값 : 소계(회원번호)
열머리글 : 구분상세
![](https://blog.kakaocdn.net/dn/bKtRuL/btsB6nrdYIa/5QMJEkf4saPajQDG9YzlW1/img.png)
그런데
문제가 발생했다.
최우수란 항목이 있는 것..
![](https://blog.kakaocdn.net/dn/u5LLI/btsB5EUf35J/oadaNvQLnSmECG9lFsmUv1/img.png)
문제를 보니, 최우수를 우수회원에 포함시키는 조건을 쓰는 것 같다.
일반 : 일반회원
일반이 아니면 : 우수회원
TRANSFORM
Count(회원.회원번호) AS 회원번호의개수
SELECT
과목.과목명 AS 프로그램, Count(회원.회원번호) AS 소계
FROM 구분상세
INNER JOIN
(회원 INNER JOIN 과목 ON 회원.과목 = 과목.과목코드)
ON
구분상세.구분코드 = 회원.구분
GROUP BY
과목.과목명
PIVOT
구분상세.구분상세;
여기서 건드려도 될 것 같은게
"PIVOT 절"이다.
이곳에 SWITCH를 넣어보겠다.
![](https://blog.kakaocdn.net/dn/cKu41h/btsB5V9BlsR/U9TjriKfnep3mJMd8Z3t7k/img.png)
TRANSFORM
Count(회원.회원번호) AS 회원번호의개수
SELECT
과목.과목명 AS 프로그램, Count(회원.회원번호) AS 소계
FROM 구분상세
INNER JOIN
(회원 INNER JOIN 과목 ON 회원.과목 = 과목.과목코드)
ON
구분상세.구분코드 = 회원.구분
GROUP BY
과목.과목명
PIVOT
SWITCH (
구분상세.구분상세 = '일반' ,'일반회원',
true, '우수회원'
)
그리고
우수회원이 3번째 열이 아니라 4번째 열에서 나타나게 하려면
![](https://blog.kakaocdn.net/dn/DXcj6/btsB2tzhZVZ/Z5MQsjjI6dr9X4AaT7dWck/img.png)
다음과 같이 정렬 조건을 넣어준다.
TRANSFORM
Count(회원.회원번호) AS 회원번호의개수
SELECT
과목.과목명 AS 프로그램, Count(회원.회원번호) AS 소계
FROM 구분상세
INNER JOIN
(회원 INNER JOIN 과목 ON 회원.과목 = 과목.과목코드)
ON
구분상세.구분코드 = 회원.구분
GROUP BY
과목.과목명
ORDER BY
SWITCH (
구분상세.구분상세 = '일반' ,'일반회원',
true, '우수회원'
) DESC
PIVOT
SWITCH (
구분상세.구분상세 = '일반' ,'일반회원',
true, '우수회원'
)
완성된 쿼리는 위와 같다.
![](https://blog.kakaocdn.net/dn/Ivxmh/btsB5CB88wl/G3AzWc2rYD3rLAogIJmDwK/img.png)
===
매개변수 입력 받는 문제
![](https://blog.kakaocdn.net/dn/cKZXIL/btsB4S6oOkq/P2vaDXsNt9AQKRdSO3YSA1/img.png)
![](https://blog.kakaocdn.net/dn/rNoZo/btsB82Gi7qC/4z9va4OoUsxs6KmVhePFSk/img.png)
먼저 3개 테이블 세팅
![](https://blog.kakaocdn.net/dn/ZdL4z/btsB7dhhUvV/roR6YsMpIuBStXEeBNTvdK/img.png)
그리고
조회할 때 필요한 항목들을 모두 넣는다
![](https://blog.kakaocdn.net/dn/st0gm/btsB3vQORiK/Byp241lRTgTrXcYPedTlGk/img.png)
그리고 SQL로 보면 다음과 같은데
SELECT
과목.과목명 AS 프로그램, 회원.구분, 회원.성명, 과목.월회비, 구분상세.할인율, 회원.전화번호
FROM
(
구분상세
INNER JOIN
회원
ON
구분상세.구분코드 = 회원.구분
)
INNER JOIN
과목
ON
회원.과목 = 과목.과목코드;
여기서 쿼리를 다음과 같이 바꾼다.
(즉 화살표 방향 참고해서 2개의 열을 1개로 나타낸 항목으로 바꿔준다.)
![](https://blog.kakaocdn.net/dn/QhMgM/btsB6gS7kWK/OZosYYz3i6eyGBzUYChx1K/img.png)
즉 아래와 같이 나타내면 된다.
SELECT
과목.과목명 AS 프로그램, 회원.구분, 회원.성명,
(과목.월회비 * (1 - 구분상세.할인율)) AS 납부회비,
회원.전화번호
FROM
(
구분상세
INNER JOIN
회원
ON
구분상세.구분코드 = 회원.구분
)
INNER JOIN
과목
ON
회원.과목 = 과목.과목코드;
그런데
다음과 같이 소수점 까지 나타나게 되는데
문제에서 요구한 것은
1) 십 단위에서 올려서 나타내기
2) 오른쪽 정렬 + 맨 앞에 "\"단위 표시
위 서식을 적용시켜준다.
* \\#,#00
![](https://blog.kakaocdn.net/dn/cg6UPo/btsB8UIl1wC/QIi9HnC5fiAmvTR1RrvPK1/img.png)
그리고 매개변수 입력하는 것도 구현해야 한다.
대괄호[] 안에 문제에서 요구하는 문자열 넣으면 된다.
![](https://blog.kakaocdn.net/dn/0v9Y0/btsB7dhiqfE/C3VmK1ItjJ9LNVnFWFn9IK/img.png)
'컴퓨터활용(컴활) 공부' 카테고리의 다른 글
엑셀 컴활 실기 풀어보자 (차트 설정) (2) | 2023.12.17 |
---|---|
[스프레드시트] 컴활 실기 문제 풀어보자 (피벗테이블보고서, 부분합, 데이터유효성검사) (0) | 2023.12.16 |
스프레드시트 컴활 실기 문제 풀어보자 (사용자 정의 함수, MATCH INDEX 배열수식) (0) | 2023.12.15 |
[스프레드시트] 컴활실기 문제 풀어보기 (VLOOKUP, 배열수식) (0) | 2023.12.15 |
[스프레드시트] (고급검색, 시트 보호, 조건부 서식) 컴활 실기 문제 풀자 (0) | 2023.12.14 |