코딩 나도 할 수 있다!!

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를 사용하여 풀었다

내가 푼 문제들인데 다른 답이 나온다는 건 내가 그만큼 여러 가지 풀이들을 익혔다는 걸 의미한다
어느 상황에서 어떤 걸 쓸지 모르기 때문에 여러 가지를 익혀놔야 한다
그런 의미에서 복습은 정말 중요하고 꼭 해야 하는 것 같다


오늘의 느낀점

다다익선