본문 바로가기

🌄SQL

[SQL] 홀짝홀짝 또 까먹었어요. SQL 홀/짝수, DISTINCT

리트코드 leetcode.com/problems/not-boring-movies/ 문제풀이 

X city opened a new cinema, many people would like to go to this cinema. The cinema also gives out a poster indicating the movies’ ratings and descriptions. Please write a SQL query to output movies with an odd numbered ID and a description that is not 'boring'. Order the result by rating.

1. 영화의 id가 홀수인 경우만 출력 / 2. description이 boring이 아닌 것만 출력 / 3. 출력 순서는 rating이 높은 순서대로 출력

SELECT *
FROM cinema
WHERE description <> 'boring' and id % 2 = 1
ORDER BY rating DESC

 

SQL 연산자

/ 나누기
% 나머지 연산자 (나머지가 1이면 홀수, 0이면 짝수)
= 같음
<>, =! 같지 않음
!< 느낌표를 먼저 쓴다. 왼쪽 값이 오른쪽 값보다 작지 않다. 
!> 오른쪽 값이 왼쪽 값보다 작지 않다.

==와 //는 파이썬에서 사용된다. SQL에선 잊자 잊어. 참고 사이트 : injun379.tistory.com/113

 

리트코드 leetcode.com/problems/duplicate-emails/ 문제풀이

Write a SQL query to find all duplicate emails in a table named Person.

중복된 이메일을 뽑아보라고? 오 DISTINCT 쓰면 되네! --> X 아무 생각없이 풀면 이렇게 풀게 된다...

DISTINCT를 사용하면 중복된 값을 제거하고 나오기 때문에 C@d.com도 출력된다. 

SELECT DISTINCT Email
FROM Person
GROUP BY Email 
HAVING COUNT(*)>1

이메일들을 서로 그룹으로 묶어주고, 그 그룹의 숫자가 한개 이상인 것을 뽑아서 그 이름을 출력하면 된다. 나는 DISTINCT를 썼지만 사실 안 써도 되고 그게 맞다. 중복된 값을 제거하는 것이 아닌 중복된 것의 이름을 출력할 때는 그룹으로 묶어주고 HAVING절을 써서 풀어주자! 

'🌄SQL' 카테고리의 다른 글

[Tutorial] SQL BETWEEN 용법  (0) 2021.01.27
[문제풀이] Contest Leaderboard  (0) 2021.01.20