kjh00n의 기록저장소

실습7 본문

DB

실습7

kjh00n 2024. 11. 22. 16:38

bns DB에서 sword,staff,market table 실습

1. 검 테이블의 가장 높은 레벨 아이템과 같은 레벨인 지팡이의 정보를 모두 출력하라

SELECT * FROM staff WHERE f_level = (SELECT MAX(s_level) FROM sword);

 

2. 지팡이 테이블의 가장 높은 레벨 아이템과 같은 레벨인 검의 정보를 모두 출력하라

SELECT * FROM sword WHERE s_level = (SELECT MAX(f_level) FROM staff);

 

3. 1,2번 문제에서 출력되는 아이템 중 가장 높은 공격력을 가진 아이템의 이름과 공격력을 출력하라

내가 사용한 방법↓

SELECT f_name,f_attack FROM (SELECT * FROM staff WHERE f_level = (SELECT MAX(s_level) FROM sword) UNION SELECT * FROM sword WHERE s_level = (SELECT MAX(f_level) FROM staff)) AS test ORDER BY f_attack DESC limit 1;

다른 방법↓ (진짜 정답)

SELECT s_name,s_attack FROM (SELECT * FROM sword UNION SELECT * FROM staff) AS test WHERE s_attack = (SELECT MAX(f_attack) FROM (SELECT * FROM staff WHERE f_level = (SELECT MAX(s_level) FROM sword) UNION SELECT * FROM sword WHERE s_level = (SELECT MAX(f_level) FROM staff)) AS test);

 

4. 지팡이 테이블의 모든 무기의 공격력 평균보다 높은 검의 이름과 공격력을 출력하라

SELECT s_name,s_attack FROM sword WHERE s_attack > (SELECT AVG(f_attack) FROM staff);

 

5. 공격력이 가장 높은 검과 지팡이의 정보를 출력하라

내가 사용한 방법

(SELECT * FROM sword ORDER BY s_attack DESC limit 1) UNION (SELECT * FROM staff ORDER BY f_attack DESC limit 1);

다른 방법

SELECT * FROM sword WHERE s_attack = (SELECT MAX(s_attack) FROM sword) UNION SELECT * FROM staff WHERE f_attack = (SELECT MAX(f_attack) FROM staff);

 

6. 검 테이블의 평균 무기 공격력보다 높은 검과 지팡이 테이블의 평균 무기 공격력보다 낮은 지팡이의 모든 정보를 공격력 기준 오름차순으로 출력하라

SELECT * FROM (SELECT * FROM sword WHERE s_attack > (SELECT AVG(s_attack) FROM sword) UNION SELECT * FROM staff WHERE f_attack < (SELECT AVG(f_attack) FROM staff)) AS test ORDER BY s_attack ASC;

 

7. 상점 테이블에서 merry와 evernick이 판매하는 아이템을 찾아 아이템의 이름과 공격력을 출력하라

SELECT s_name,s_attack FROM (SELECT * FROM sword UNION SELECT * FROM staff) AS test WHERE s_name IN (SELECT m_name FROM market WHERE m_seller = 'merry' OR m_seller = 'evernick');

SELECT s_name,s_attack FROM sword WHERE s_name IN (SELECT m_name FROM market WHERE m_seller = 'merry' OR m_seller = 'evernick') UNION SELECT f_name,f_attack FROM staff WHERE f_name IN (SELECT m_name FROM market WHERE m_seller = 'merry' OR m_seller = 'evernick');

8. 검 테이블에서 공격력이 지팡이 테이블의 두번째 아이템 공격력보다 낮은 아이템을 찾아 상점 테이블에서 판매하는 것을 출력하라

SELECT * FROM market WHERE m_name IN (SELECT s_name FROM sword WHERE s_attack < (SELECT f_attack FROM staff LIMIT 1,1));

 

9. 가장 레벨이 높은 지팡이와 같은 레벨의 검을 찾아 해당 검을 파는 판매자를 출력하라

SELECT m_seller FROM market WHERE m_name in (SELECT s_name FROM sword WHERE s_level = (SELECT MAX(f_level) FROM staff));

 

이거말고 방법은 많다~

'DB' 카테고리의 다른 글

실습8  (0) 2024.11.25
변수, 저장 프로시저, 제어문, 저장 함수  (0) 2024.11.25
데이터베이스 트랜잭션  (0) 2024.11.22
VIEW  (0) 2024.11.22
실습6  (0) 2024.11.22