본문 바로가기
STUDY/ORACLE

Oracle 9일차(3)-문제

by Anne of Green Galbes 2019. 1. 18.

◈ 9일차 문제


1.고객정보를 입력받아 해당 고객이 지금까지 주문한 총 횟수 구하기

결과 : A001번 고객님의 총 주문횟수는 3번입니다.

▲CUSTOM 테이블

▲SALES 테이블


SCRIPT

SET SERVEROUTPUT ON

SET VERIFY OFF


ACCEPT ID PROMPT '검색할 아이디를 입력하세요:';


DECLARE

TYPE P_GOJUTOT IS RECORD

(A CUSTOM.USERID%TYPE,

B CUSTOM.USERNAME%TYPE,

C NUMBER(5));


CUS P_GOJUTOT;


BEGIN

SELECT A.USERID,USERNAME, NCOUNT INTO CUS

FROM CUSTOM A,(SELECT USERID, COUNT(*) NCOUNT FROM SALES GROUP BY USERID) B

WHERE A.USERID=B.USERID AND A.USERID='&ID';


DBMS_OUTPUT.PUT_LINE(CUS.B || '(' || CUS.A || ')고객님의 총 주문횟수는 ' || CUS.C || '번 입니다.');


END;

/



PROCEDURE

CREATE OR REPLACE PROCEDURE P_GOJUTOT

(V_GNO IN VARCHAR2)

IS

TOT NUMBER;

BEGIN

SELECT COUNT(*) INTO TOT FROM SALES

WHERE USERID=V_GNO;

DBMS_OUTPUT.PUT_LINE(V_GNO || '번 고객님의 총 주문횟수는 ' || TO_CHAR(TOT) || '번 입니다.');


END;


EXECUTE P_GOJUTOT('og6675');



2.직책을 입력받아 그 직책의 급여의 총액, 평균 월급, 인원수를 검색하기

결과

과장의 급여 총액 : XXXX

과장의 평균 월급 : XXXX

과장의 인원 수 : XX명

▲COMPANY 테이블


PROCEDURE

CREATE OR REPLACE PROCEDURE SEARCHJIK

(V_POSIT IN VARCHAR2)

IS

TOTPAY NUMBER;

AVGPAY NUMBER(10);

TOT NUMBER;


BEGIN

SELECT SUM(PAY), AVG(PAY), COUNT(*) INTO TOTPAY, AVGPAY, TOT

FROM COMPANY

WHERE POSIT=V_POSIT;

DBMS_OUTPUT.PUT_LINE(V_POSIT || '의 급여 총액:' || TOTPAY || '원');

DBMS_OUTPUT.PUT_LINE(V_POSIT || '의 평균 월급:' || AVGPAY || '원');

DBMS_OUTPUT.PUT_LINE(V_POSIT || '의 인원 수:' || TOT || '명');


END;


EXECUTE SEARCHJIK('과장');


'STUDY > ORACLE' 카테고리의 다른 글

Oracle 10일차(2)-문제  (0) 2019.01.21
Oracle 10일차(1)-DML PROCEDURE, 함수,반복문,예외처리  (0) 2019.01.21
Oracle 9일차(2)-PL/SQL  (0) 2019.01.18
Oracle 9일차(1)-INDEX, SEQUENCE  (0) 2019.01.18
Oracle 8일차  (0) 2019.01.16

댓글