kjh00n의 기록저장소
실습7 본문
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 |