일단 다른 사람들의 풀이들을 보니 대부분 join을 이용하여 풀었다.
그치만 나는 아직 join의 개념을 잘 몰라서 풀 수 있는 만큼 최대한 풀었다.
아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과
보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.
SELECT NAME, DATETIME
FROM ANIMAL_INS
WHERE ANIMAL_ID NOT IN(
SELECT ANIMAL_ID
FROM ANIMAL_OUTS)
ORDER BY DATETIME
LIMIT 3;
입양을 가지 못한 동물 중에서 가장 오래된 3마리를 뽑아야 하기 때문에
NOT IN을 통하여 입양을 간 동물들은 제외하였다.
2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES)
리스트를 출력하는 SQL문을 작성해주세요.
결과는 카테고리명을 기준으로 오름차순 정렬해주세요.
select b.category, sum(s.sales)
from booK_sales s , book b
where s.book_id = b.book_id and s.sales_date like '%2022-01%'
group by 1
order by 1
book_sales과 book 테이블에서 서로 일치하는 id를 가진 책들 중에서 2022 - 01에 판매된 책들의
카테고리와 총 판매량을 구했다.
PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량)
합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면
상품코드를 기준으로 오름차순 정렬해주세요.
SELECT a.product_code, sum(a.price * b.sales_amount) SALES
from product a, offline_sale b
where a.product_id = b.product_id
group by 1
order by 2 DESC, 1
각 테이블에서 서로 일치하는 id를 조건으로 a 테이블의 가격과 b 테이블의 판매량을 sum을 통하여 합계를 출력했다.
관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다.
보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요.
이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.
SELECT A.ANIMAL_ID , a.NAME
FROM ANIMAL_INS A, ANIMAL_OUTS B
WHERE a.animal_id = b.animal_id and a.datetime > b.datetime
order by a.datetime
단순하게 보호 시작일보다 입양일이 더 빠른 것을 찾기 위해 비교 연산자로 비교만 해주었다.
입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요.
이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
SELECT a.animal_id , a.name
from animal_ins a, animal_outs b
where a.animal_id = b.animal_id
order by datediff(b.datetime, a.datetime) desc
limit 2
여기서도 단순하게 시간의 차이를 구하고 내림차순하여 그 값이 가장 큰 2개를 조회했다.
DATEDIFF
단순히 일 차이를 가져올 때 사용하는 함수
- 기본 구조
DATEDIFF(날짜 1, 날짜 2)
간단히 말하자면 날짜1 - 날짜 2 방식으로 작동한다.
SELECT DATEDIFF('2018-03-28 23:59:59', '2017-03-01 00:00:00')
을 하게되면 392 출력
'코드카타' 카테고리의 다른 글
[SQL]프로그래머스 Lv3. 카테고리 별 도서 판매량 집계하기 (1) | 2023.12.21 |
---|---|
[SQL]프로그래머스 Lv.3 오랜 기간 보호한 동물(1) (0) | 2023.12.21 |
[코드카타/목표] (0) | 2023.12.20 |
[코드카타/2일] IFNULL, DATE_FORMAT, LIMIT, EXTRACT (0) | 2023.12.20 |
[코드카타/1일] NULL 값 다루기 (0) | 2023.12.19 |