⭐
-- 코드를 입력하세요
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;
DATETIME이 가장 작은 동물의 이름을 출력해야하므로, 정렬하고 LIMIT
1을 사용해주었습니다.
⭐
USER_INFO 테이블에서
-- 코드를 입력하세요
SELECT COUNT(*) AS 'COUNT'
FROM USER_INFO
WHERE YEAR(JOINED) = '2021'
AND AGE BETWEEN 20 AND 29;
2021년에 가입하고 나이가 20세 이상 29세 이하의 조건은 WHERE
절에서 명시합니다.
필터링 된 행의 개수가 정답이므로 COUNT
함수를 사용해줍니다.
⭐⭐
-- 코드를 작성해주세요
WITH RARE AS
(SELECT ITEM_ID
FROM ITEM_INFO
WHERE RARITY = 'RARE')
SELECT I.ITEM_ID, I.ITEM_NAME, I.RARITY
FROM ITEM_INFO AS I JOIN ITEM_TREE AS T ON I.ITEM_ID = T.ITEM_ID
WHERE T.PARENT_ITEM_ID IN (SELECT * FROM RARE)
ORDER BY I.ITEM_ID DESC;
WITH
절을 활용해 RARE인 아이템을 필터링합니다. 사실 지금 생각해보니 간단한 쿼리문이라 서브쿼리에 바로 있어도 무관할 듯 합니다.
그 후, 자신이 RARE일 때 그 다음 아이템의 정보를 추출하는 것이기 때문에 PARENT_ITEM_ID가 RARE인 경우를 WHERE
절에서 필터링했습니다.
⭐
DEVELOPER_INFOS 테이블에서
-- 코드를 작성해주세요
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE SKILL_1 = 'Python'
OR SKILL_2 = 'Python'
OR SKILL_3 = 'Python'
ORDER BY ID;
SKILL1,2,3 중 Python이 있으면 되므로 WHERE
절에서 필터링해줍니다.
⭐⭐
DEVELOPERS 테이블에서
SELECT DISTINCT(D.ID), D.EMAIL, D.FIRST_NAME, D.LAST_NAME
FROM DEVELOPERS D JOIN SKILLCODES S ON D.SKILL_CODE & S.CODE
WHERE S.NAME = 'C#' OR S.NAME = 'Python'
ORDER BY ID;
비트 연산자 &를 사용해주어야 하는 어려운 문제였습니다.
저는 비트 연산자를 쿼리로 사용해본 적이 없어서 여러 해설들을 통해 답변을 작성했습니다.
만약 C#의 코드가 2(0010)이고 Python의 코드가 4(0100)라면, 둘다 가진 개발자는 6(0110)이 되므로 비트 연산자 &(AND)를 사용해주어야 합니다.