
- 보너스 테이블을 만듭니다. 각 열에는 고유한 이름이 있습니다.
- INSERT 문을 사용하여 BONUS 테이블에 값을 입력합니다.
- 표에서 “부서”별로 “보너스”의 평균을 찾으십시오.
. - “부서”당 튜플 수를 가져옵니다.
-테이블 오프 - 에서 봐
– “보너스”가 100 이상인 직원이 2명 이상인 “부서”의 튜플 수를 표로 작성하십시오. - 전화
– “보너스 세부 정보”에서 “보너스”의 일련 번호를 표로 표시합니다. - 에서 봐
– “Bonus History”별 “Bonus”의 순위를 표로 표시합니다(단, 순서는 내림차순이며 속성 이름은 “Bonus Rank”임). (팁: RANK() 사용)
위의 문제를 풀어봅시다.
6과 7은 조금 어려울 수 있습니다.
더보기
답변!!
1. 보너스 테이블을 만듭니다.
CREATE TABLE BONUS(
TEAM VARCHAR2(40) NOT NULL,
NAME VARCHAR2(40) PRIMARY KEY,
BONUS_LIST VARCHAR2(40) NOT NULL,
BONUS_TOTAL INTEGER NOT NULL
);
2. INSERT 문을 사용하여 BONUS 테이블에 값을 입력합니다.
INSERT INTO bonus VALUES ('기획','홍길동','연장근무',100);
INSERT INTO bonus VALUES ('기획','일지매','연장근무',100);
INSERT INTO bonus VALUES ('기획','최준호','야간근무',120);
INSERT INTO bonus VALUES ('기획','장길산','특별근무',90);
INSERT INTO bonus VALUES ('인터넷','강건달','특별근무',90);
INSERT INTO bonus VALUES ('인터넷','서국현','특별근무',90);
INSERT INTO bonus VALUES ('인터넷','박인식','연장근무',30);
INSERT INTO bonus VALUES ('편집','김선달','특별근무',80);
INSERT INTO bonus VALUES ('편집','황종근','연장근무',40);
INSERT INTO bonus VALUES ('편집','성춘형','야간근무',80);
INSERT INTO bonus VALUES ('편집','임꺽정','야간근무',80);
INSERT INTO bonus VALUES ('편집','황진이','야간근무',50);
3. 예) “부서”별 “보너스”의 평균을 구한다.
SELECT
team,
AVG(bonus_total) AS total
FROM bonus
GROUP BY team;
네 번째 예) 각 “부서”에 대한 튜플 수를 가져옵니다.
SELECT
team,
COUNT(team) AS team_count
FROM bonus
GROUP BY team;
5. 예시)
SELECT
COUNT(team) AS team
FROM bonus
WHERE bonus_total >= 100
GROUP BY team
HAVING COUNT(team) >= 2;
>> GROUP BY 절은 WHERE 절을 사용할 수 없습니다. HAVING을 사용해야 합니다.
6. 예) “Bonus History”에서 “Bonus”의 일련번호를 얻습니다.
SELECT
bonus_list,
bonus_total,
ROW_NUMBER() OVER(PARTITION BY bonus_list ORDER BY bonus_total DESC)
FROM bonus;
>> WINDOW 함수의 ROW_NUMBER()를 사용합니다.
창 기능: GROUP BY 절을 사용하지 않고 함수 인수로 지정된 속성 범위 내에서 속성 값을 집계할 수 있습니다.
7. 예) 표의 “보너스 내역”에서 “보너스”의 순위를 찾습니다.
SELECT
bonus_list,
bonus_total,
RANK() OVER(PARTITION BY bonus_list ORDER BY bonus_total DESC) AS bonus_rank
FROM bonus;
>> RANK()는 WINDOW 함수에서 사용됩니다. 순위를 나타내다
