코딩 나도 할 수 있다!!
2024.03.27 (수) SQL 같은답 다른풀이
혹시나도?
2024. 3. 27. 17:30
SQL 문제를 복습했다
이 문제를 다시 풀고 있었다
처음에 썼던 답은
SELECT i.animal_id,
i.animal_type,
i.name
from animal_ins as i
left join animal_outs as o on i.animal_id = o.animal_id
where i.sex_upon_intake <> o.sex_upon_outcome
order by i.animal_id
이거였다
다시 풀어본 답은
SELECT I.ANIMAL_ID,
I.ANIMAL_TYPE,
I.NAME
FROM ANIMAL_INS AS I
JOIN ANIMAL_OUTS AS O
USING(ANIMAL_ID)
WHERE I.SEX_UPON_INTAKE LIKE '%Intact%'
AND O.SEX_UPON_OUTCOME IN ('Neutered Male', 'Spayed Female')
ORDER BY I.ANIMAL_ID ASC
이렇게 나왔다
위에 답은 JOIN에 ON 절을 썼지만
밑에 답에는 USING 을 썼다는 게 차이점이다
또 WHERE에서 조금 다른데
위에 답은 I.SEX_UPON_INTAKE 와 O.SEX_UPON_OUTCOME 가 같지 않다는 걸 표시해서 답을 냈다면
밑에 답은 I.SEX_UPON_INTAKE에서 Intact 가 들어가고
O.SEX_UPON_OUTCOME에서 Neutered Male와 Spayed Female 이 들어있는 것에 대한 걸 답을 냈다
다른 문제도 살펴보았다
처음 답은
SELECT animal_id,
name,
sex_upon_intake
from animal_ins
where name like 'Lucy%' or name like 'Ella%' or name like 'Rogan%' or name like 'Sabrina%' or name like 'Mitty%' or name like 'Pickle%'
order by animal_id
이거였고
다시 풀어본건
SELECT ANIMAL_ID,
NAME,
SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
첫 번째 답은 WHERE에 LIKE를 써 하나하나 적었다면
두 번째 답은 IN을 사용하여 이름만 적어냈다
다른문제를 보자
처음은
SELECT book_id,
date_format(published_date, '%Y-%m-%d') as publiched_date
from book
where published_date between '2021-01-01' and '2021-12-31' and category like '%인문'
order by published_date asc
두 번째는
SELECT BOOK_ID,
DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE PUBLISHED_DATE LIKE '2021%' AND CATEGORY LIKE '%인문%'
ORDER BY PUBLISHED_DATE ASC
이렇게 풀었다
다른 점은
처음은 published_date between '2021-01-01' and '2021-12-31' 이렇게 BETWEEN을 사용하여 풀었고
두 번째는 PUBLISHED_DATE LIKE '2021%' 이렇게 LIKE를 사용하여 풀었다
내가 푼 문제들인데 다른 답이 나온다는 건 내가 그만큼 여러 가지 풀이들을 익혔다는 걸 의미한다
어느 상황에서 어떤 걸 쓸지 모르기 때문에 여러 가지를 익혀놔야 한다
그런 의미에서 복습은 정말 중요하고 꼭 해야 하는 것 같다
오늘의 느낀점
다다익선