728x90
이전 글
이전 글에 이어서 계속 문제를 풀려고 한다. 하루 2개씩이라도 꾸준히 하는 것이 목표이다! 문제들이 있는 링크는 아래와 같다.
https://school.programmers.co.kr/learn/courses/30/parts/17042
1. 재구매가 일어난 상품과 회원 리스트 구하기
SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC
- group by와 having, count를 안다면 어렵지 않게 풀 수 있다
2. 모든 레코드 조회하기
SELECT ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
- order by만 알면 되는 문제다
3. 역순 정렬하기
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
- 쉽다
4. 오프라인/온라인 판매 데이터 통합하기
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') as SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE MONTH(SALES_DATE) = 3 and YEAR(SALES_DATE) = 2022
UNION
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') as SALES_DATE, PRODUCT_ID, null, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE MONTH(SALES_DATE) = 3 and YEAR(SALES_DATE) = 2022
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC;
- union은 중복값을 포함하지 않는다. 동일한 날짜, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재한다고 하였으니 union을 사용하면 된다.
5. 아픈 동물 찾기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = "Sick"
ORDER BY ANIMAL_ID;
- 쉽다
6. 어린 동물 찾기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID ASC
- !=
7. 동물의 아이디와 이름
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
8. 여러 기준으로 정렬하기
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC
9. 상위 n개 레코드
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1
SELECT NAME
FROM (SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC )
WHERE ROWNUM =1;
- 오라클은 ROWNUM을 이용해서 첫 번째 값을 조회가능하다. limit사용이 안됨
10. 조건에 맞는 회원수 구하기
SELECT COUNT(*) as USERS
FROM USER_INFO
WHERE YEAR(JOINED) = 2021
AND AGE > 19 AND AGE < 30
- count를 사용하면 된다
728x90
'database' 카테고리의 다른 글
Programmers SQL 고득점 Kit 풀기(3) (0) | 2025.01.14 |
---|---|
Programmers SQL 고득점 Kit 풀기(1) (2) | 2025.01.10 |
[DB] Unique index와 pk (0) | 2023.09.15 |
위키만들기 - 글의 history를 저장하는 방법 (0) | 2023.08.08 |
[MySQL, MariaDB] procedure(프로시저) 생성, 수정, 삭제 (0) | 2023.02.06 |